マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Theano


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Theano」とは
「Theano」基本情報
■概要
Theano(テアノ)とは、Python用数値計算ライブラリです。多次元配列を効率的に使用する数式について定義/最適化/評価でき、ディープラーニング計算処理によく利用されます。
■基本説明
Theanoは、ディープラーニングを実装したライブラリではなく、Python用数値計算ライブラリです。「コンピュータ代数システム」と「最適化コンパイラ」の機能を有しています。
数学的表現(多次元配列など)を持つ数式に対して定義/最適化/評価を行います。PythonでTheanoの式を構築するプログラムを記述します。
Pythonにおける標準的数値計算ライブラリ「Numpy」では「計算手続き」を記述するのに対して、「Theano」では「数式そのもの」を記述します。そのため、計算対象となる行列などのプログラム内での処理に手間をかける必要がありません。
■経緯
Theanoは、モントリオール大学のBengio教授の研究室で開発されています。
この研究室はディープラーニングを研究対象としているため、ディープラーニング分野への応用を強く意識した設計になっています。
■オフィシャルサイト情報
オフィシャルサイト
ライセンス情報
Theanoのライセンスは「3条項BSDライセンス」です。
詳細について、こちらを参照ください。
→Theano →Docs →LICENSE
ダウンロード
→Theano →Docs →Installing Theano
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Numpy」「Pylearn2」「PyML」「PyBrain」など。
「Theano」の主な特徴
■実行時の最適化コンパイル(C++コード生成)
Theanoは、実行時に「動的C++コード生成」と「コンパイル」を行います。
この処理により、Pythonコードよりも遥かに高速なC++コードに匹敵する処理速度を実現します。
■コンパイラ
最適化コンパイルは、特に大規模で複雑な数学的表現に有用です。
Theanoコンパイラは、さまざまな最適化を適用します。次のような処理を行います。
・GPU使用対応
・定数折り畳み
・類似部分グラフのマージ(冗長な計算を避ける)
・算術簡素化
・効率的な行列/ベクトル関数群操作
・メモリエイリアシング
・要素単位部分式のループ融合
・数値的安定性の改善 など
■高速性
ベンチマークにおいて「TheanoはNumpyより1.8倍高速」「TheanoはMatlabより1.6倍高速」「Theano(GPU)はNumpy(CPU)より11倍高速」などの結果も出ています。
GPUサポートによる高速化
TheanoはGPU能力を使用することで、CPU上での処理に比べて遥かに高速化できます。少しのコード変更でGPUに対応できます。
GPUの使用のために、CUDA(Compute Unified Device Architecture)を利用します。
■解析的微分サポート
Theanoの解析的微分サポート機能で「数式そのものを記述することにより微分計算を解析的に実行できる」という点が大きな特徴です。
ディープラーニング処理では微分を多用するため、「微分の結果を自分で解く必要がない」のは大きなメリットです。また、「勾配法(関数の勾配に関する情報を解の探索に用いるアルゴリズム)」「非線形関数」などに対しても有用です。
煩わしい計算処理から解放されるため、スピーディーに自分が思い描く多層ニューラルネットワークを構築できます。
■ディープラーニング対応関数
ディープラーニングでよく使用される関数がサポートされています。
■テスト(自己検証)機能
エラーの多くの種類を検出し診断できます。
Theano参考情報①Theanoとは(入門編)
Theanoの概要について解説している参考となるサイトを紹介します。
■参考サイト(1) Theano解説
概要
Theanoの「概要」や「使い勝手」について紹介しています。簡単なコードについての解説もあります。
解説テーマ
・実行時におけるC++コードの生成とコンパイル
・メモ
ページリンク
■参考サイト(2) sage/Sageノートブックを使ったTheano入門
概要
Theanoの「インストール手順」「簡単な使い方」などについて紹介しています。「共有変数」や「自動微分」について解説されています。
解説テーマ
・theanoの参考サイト
・theanoのインストール
・Theanoの使い方
・必要なライブラリのimport
・変数宣言
・テンソル
・シグモイド関数の例
・共有変数
・線形回帰モデルの例
・Theanoの自動微分
・例1 2次関数
・例3 指数関数
・例4 多項式
・例6 偏微分
ページリンク
→PUKIWIKI →sage/Sageノートブックを使ったTheano入門
■参考サイト(3) Theano入門
概要
Theanoについて非常に細かく解説されています。技術リファレンスとして参照できます。
「Restricted Boltzmann Machine」の実装例を解説しています。
解説テーマ
・実行環境
・ソースコード
・Theano関数の生成
・微分
・共有変数
・乱数の使用
・Restricted Boltzmann Machine (RBM) の説明
・RBMの実装
・呼び出し側の関数
・実行結果
・まとめ
ページリンク
Theano参考情報②Theanoのインストール
環境別のTheanoインストール方法について紹介します。
■Linux(Ubuntu)編
概要
TheanoをUbuntu環境へインストールする方法を紹介しています。
「Theano」+「pylearn2のgpgpu環境」を導入しています。
導入環境
・OS=ubuntu14.04LTS
・GPU=GeForce GTX 970
解説テーマ
・CUDA入れる
・theanoでgpu設定
・Anaconda入れる
ページリンク
→備忘録とか日常とか →ubuntu14.04 theanoとかgpgpu環境構築メモ
■Windows編
概要
TheanoをWindows環境へインストールする方法を紹介しています。
「CPUとGPUのパフォーマンス比較」で、GPUの場合、約12倍高速化されたとしています。
導入環境
・OS=Windows
・GPU=GeForce GTX 760
解説テーマ
・Visual Studio Community 2013をインストール
・CUDA Toolkitをインストール
・Pythonをインストール
・MinGWをインストール
・Cygwinをインストール
・Python distutilsの修正
・PyCUDAをインストール
・Theanoをインストール
・Theanoの動作確認
・CPUとGPUのパフォーマンス比較
ページリンク
→人工知能に関する断創録 →TheanoをWindowsにインストール
■Mac編
概要
TheanoをMac環境へインストールする方法を紹介しています。
はまりポイントについての注意点もあります。
導入環境
・OS=Mac OS X 10.10.4
解説テーマ
1. pyenvをインストールする
2. pyenv経由でanacondaをインストールする
3. pip経由でtheanoをインストールする
ページリンク
→Qiita →TheanoをMac OS X 10.10にインストールする方法 (pyenv, anacondaを使用)
■クラウド(AWS)編
概要
TheanoをAWS環境へインストールする方法を紹介しています。
クラウドの場合は、お手軽に高性能Linuxマシンを使用できるようになります。
導入環境
・OS=Ubuntu14.04(64-bit)
解説テーマ
1. AWSでDeepLearning用マシンを用意する
1.1. インスタンスの要件
1.2. セキュリティグループの設定
1.3. Elastic IP の設定
1.4. インスタンスにSSH接続
2. GPUを使えるようにする
2.1. ドライバのインストール
2.2. CUDA-toolkitのインストール
2.3. cuDNNのインストール
3. Python関連をインストール
3.1. Anacondaをインストール
3.2. Theanoをインストール
3.3. openCVをインストール
4. GPUの動作確認
5. セットアップ完了
ページリンク
→Qiita →AWS(Ubuntu14.04)をDeepLearning用にセットアップする(CUDA, cuDNNをインストール)
■Docker編
概要
オフィシャルのDockerファイルが用意されています。
ページリンク
Theano参考情報③Theanoのチュートリアル
Theano参考情報③Theanoのチュートリアル
数多く用意されているチュートリアルの使い方や解説について紹介します。
■Theanoの基本的な使い方
概要
Theanoの基本的な使い方についてまとめられています。
解説テーマ
・事前準備
・NumPyのおさらい
・基本的な使い方
・微分の計算
・tensorのメソッド
・共有変数
・応用例:ロジスティック回帰
ページリンク
■チュートリアル基礎知識
概要
Theanoチュートリアルを行なうための準備方法、基礎知識、簡単な使い方についてまとめられています。
解説テーマ
・Theanoの超簡略チュートリアル
・まず常にImportしておく3つ
・これだけ知っておけば概ね大丈夫
・ロジスティック回帰の実装
ページリンク
■オフィシャルサイト チュートリアル
概要
Theanoオフィシャルサイトには多くのチュートリアルが登録されています。
ページリンク
■チュートリアル「LSTM Networks for Sentiment Analysis」
概要
チュートリアルコードについてコードリーディングを行っています。
解説テーマ
・訓練データの分類
・コードリーディング
・メインの関数
・その他ちょっと知っておくと良かった関数
・構築済みモデルの中身に何入っているか
ページリンク
→Qiita →TheanoのLSTM Tutorialで何やっているのかコードリーディングする
Theano参考情報④TheanoのPythonプログラミング
Theano参考情報④TheanoのPythonプログラミング
Theanoを使用したPythonプログラミング実装例を紹介します。
■MNIST手書き文字認識
概要
Theanoを使った畳み込みニューラルネットワーク(CNN)の実装についての解説です。
「Deep Learning Tutorial」に沿って、LeNetをベースにMNISTの手書き文字認識を行っています。
解説テーマ
・LeNet
・実装
・畳み込み層
・活性化関数
・プーリング層
・全結合層
・ロス関数
・LeNet
・データセット
・層の定義
・学習(評価)
ページリンク
→Qiita →Theanoを使ってdeep learningしてみた
■MNISTの手書き数字認識
概要
「Deep Learning Tutorial」の畳み込みニューラルネットワーク実装として、MNISTの手書き数字認識実装を行っています。
解説テーマ
・畳み込みニューラルネットワーク
・畳み込み層
・プーリング層
・LeNetConvPoolLayerクラス
・2つめの畳み込み層とプーリング層
・最後の多層パーセプトロン
・確率的勾配降下法によるモデル訓練
・実行時間の計測
・フィルタと畳み込み層の出力の可視化
ページリンク
→人工知能に関する断創録 →Theanoによる畳み込みニューラルネットワークの実装 (1)
■自己符号化器
概要
Theanoによる「自己符号化器」実装をまとめられています。
「自己符号化器(オートエンコーダ)」とは、機械学習において、ニューラルネットワークを使用した次元圧縮のためのアルゴリズムのことです。情報量を小さくした特徴表現を獲得するために使用されます。
解説テーマ
・自己符号化器
・重み共有の実装
・符号化・復号化処理の実装
・交差エントロピー誤差関数の実装
・モデル学習の実装
・実験結果
・重みの可視化
・入力画像の再構築
ページリンク
→人工知能に関する断創録 →Theanoによる自己符号化器の実装
■積層自己符号化器
概要
積層自己符号化器の実装について解説しています。
「積層自己符号化器(ディープ・オートエンコーダ)」とは、2層以上の中間層を構築する方法です。「中間層1層のみで作る」→「出力層を取り除く」→「中間層を入力層と見なして、もう1層積み上げる」の手順を繰り返して構築します。
解説テーマ
・積層自己符号化器の2つの側面
・ネットワークの構成・重みの共有
・pre-training関数の作成
・fine-tuning関数の作成
・積層自己符号化器の訓練と評価
・ネットワークの構築
・pre-training
・fine-tuning
ページリンク
→人工知能に関する断創録 →Theanoによる積層自己符号化器の実装
■RNN(再帰型ニューラルネットワーク)実装
概要
Theanoチュートリアル「Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano」に沿って、RNN(再帰型ニューラルネットワーク)実装方法について解説しています。
解説テーマ
・言語モデル
・データの訓練と前処理
・RNN を構築する
・初期化
・フォワード・プロパゲーション (Forward Propagation)
・損失を計算する
・SGD と Backpropagation Through Time (BPTT) により RNN を訓練する
・勾配チェック
・SGD 実装
・ネットワークを Theano と GPU で訓練する
・テキストを生成する
ページリンク
→クラスキャット →RNN →Recurrent Neural Networks (2) – Python, Numpy と Theano による RNN の実装 (翻訳/要約)
Theano参考情報⑤Theanoベースラッパーライブラリ「Keras」とは
Theano参考情報⑤Theanoベースラッパーライブラリ「Keras」とは
「Keras」の概要について紹介します。
■「Keras」概要
Keras(ケラス)とは、高水準ニューラルネットワークライブラリです。
Python実装で、「Theano」または「TensorFlow」上で動作します。
コンパクトなコーディングにより、迅速な実験を可能にすることを重点に設計されています。
CPUとGPUに対応しています。
■ラッパーライブラリ
Kerasは、バックエンドとして「Theano」と「Tensorflow」を選択して使用できるラッパーライブラリです。
もともとは、バックエンドテンソル計算ライブラリとして「Theano」のみを採用していたのですが、「TensorFlow」も選択できるようになりました。
「Theano」「Tensorflow」はKerasフロントから完全に隠蔽されています。そのため、プログラムの変更を必要とせずに、「Theano」と「Tensorflow」の切り替えを行えます。
■コンパクトなコーディング
Kerasでは、処理を直感的にコンパクトに記述できます。
入力層から出力層への処理の流れ通り(ネットワーク図に描かれる順番通り)に、必要なノード定義や活性化関数を定義して、ネットワークを構成できます。さまざまな深層学習アルゴリズム表現が可能です。
「Theanoによる実装」と比べて、「Kerasによる実装」は、大幅にシンプルに記述できます。冗長要素を排除できるため、「Theanoでは数十行必要な処理」を「Kerasでは数行」で記述できるパターンもあります。
■Python実装
モデルはPythonコードで記述します。別個の宣言形式モデル設定ファイルは必要ありません。
容易なデバッグと拡張が可能です。
■対応ニューラルネットワーク
以下の2つのニューラルネットワークをサポートしています。
・畳み込みニューラルネットワーク (CNN:Convolutional Neural Networks)
・再帰型ニューラルネットワーク(RNN:Recurrent Neural Network)」
これらの2つの組み合わせもサポートします。
■2種類のモデル
Kerasは、2種類の方法でディープラニング構造を記述できます。
・「Sequential」=層をシンプルに重ねていく構造に適しています
・「Functional」=複雑なモデル(複数出力、有向非巡回グラフなど)に適しています
■モデルのモジュール性
「ニューラルネットワーク層」「損失関数」「最適化」「初期化」「活性化関数」「正規化」などの各機能は、それぞれ完全に独立したモジュールになっています。モデル作成時に結合して利用できます。
■モデルの最小主義(ミニマリズム)
それぞれのモジュールは、短くシンプルに構成されています。ブラックボックス化されている部分はありません。
■拡張性
新しいモジュールを追加する場合には、クラス/関数として、簡単に追加できます。
既存モジュールには多くの実装例があるため、活用しやすくなっています。
参考元サイト
- Keras Documentation
- 人工知能に関する断創録 →深層学習ライブラリ Keras
- amacbee”s blog →Python製深層学習ライブラリ「Keras」の紹介 (with TensorFlow)
- VIZASQ TECKBLOG →エンジニア勉強会でChainerとKerasの比較をしてみました
- Qiita →Deep LearningライブラリKerasとKeras.jsの紹介
- クラスキャット →Keras →Keras: Theano と TensorFlow のための深層学習ライブラリ
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク2位🏆
【OSS情報アーカイブ】NetBSD - 🏆ランク3位🏆
【OSS情報アーカイブ】nano - 🏆ランク4位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク5位🏆
【OSS情報アーカイブ】K-9 Mail - 🏆ランク6位🏆
【OSS情報アーカイブ】fping - 🏆ランク7位🏆
【OSS情報アーカイブ】Snort - 🏆ランク8位🏆
【OSS情報アーカイブ】Concourse CI - 🏆ランク9位🏆
【OSS情報アーカイブ】JBoss Enterprise Application Platform - 🏆ランク10位🏆
【OSS情報アーカイブ】Cyrus IMAP