「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 深層学習(deep learning)について纏める。
- 多層構造のニューラルネットワークを用いた機械学習
- ニューラルネットワークの多層化(特に3層以上のもの)に対し、
によるスパース・コーディング理論を
基にしたアルゴリズムが実装されたもの。
詳細 †
- 多層構造のニューラルネットワークに画像などのデータを入力すると、
情報が第1層からより深くへ伝達されるうちに、各層で学習が繰り返される。
- この過程で、画像や音声などのデータの
研究者、技術者が手動で設定していた特徴量が自動で計算される。
- この階層的な特徴量の学習が、機械学習と決定的に異なる点。
- この技術は、画像認識や音声認識等の分野に活用される。
歴史 †
- 2012年には、Googleの開発したグーグル・ブレインが、猫の概念を学習することに成功した。
- 先駆的な概念・手法は1980年前後からあった。
- 2006年にニューラルネットワークの代表的な研究者であるジェフリー・ヒントンらの研究チームが
制限ボルツマンマシンによるオートエンコーダの深層化に成功し、
発表した論文において深層学習(deep learning)という用語を使用した。
この研究成果が、現在の深層学習(deep learning)に直接繋がる技術的ブレイクスルーと見られている。
- 2012年からは急速に研究が活発になり、第三次人工知能ブームが到来したとされている。
第三次人工知能ブーム以後は、機械学習は単なる一時的な流行を超えて社会インフラとして広く定着して行っているようである。
技術的特異点に至るロードマップに関しても真面目に議論されるようになった。
- これはAI研究に関する大きなブレイクスルーであり、学習方法に関する技術的な革新である、とも指摘されている。
言語 †
ライブラリ †
フレームワーク †
Caffe †
Yangqing Jiaら当時Berkeleyのメンバーが中心に2013年頃
開発したオープンソースのディープラーニングフレームワーク
- Convolutional Architecture for Fast Feature Embedding.
- 前身はDeCAF (Deep Convolutional Activation Feature)
言語 †
Python, C++
特徴 †
- コードを書かなくても設定ファイルだけで動かせる
- 容易に拡張できるコード設計
- PythonとMatlabからも使える
- 高速(C++実装、GPUをシームレスに使い分け)
- Githubの活発な開発コミュニティ
- 画像認識向き
TensorFlow? †
- Googleによって開発された。
- 現在は、Googleのサービスの研究と生産に使用されており、
クローズドソースのDistBelief?の役割をほぼ置き換えている
言語 †
Python, C++
特徴 †
人間が用いる学習や論理的思考と似たように、
パターンや相関を検出し解釈する
ニューラルネットワークを構築、訓練の要求を満たす。
Chainer †
言語 †
Python
特徴 †
特⻑:様々なNNを直感的に記述可能
- NNの構築をPythonのプログラムとして記述
- CuPy?によるCPU/GPU agnosticなコード記述
- 動的なNN構築(Define-by-Run)
Theano †
言語 †
Python
特徴 †
- Numpyのように計算手続きを記述するのではなく, 数式そのものを記述.
- このことによって, 計算対象となる行列等の実体のプログラム内での
引き回しを考える事なく, 最適化やGPUによる高速化の恩恵が受けられる.
- また, 微分を (数値的ではなく) 解析的に実行する事が出来る.
ファースト・ステップ †
インストール †
アルゴリズム †
参考 †
One Learning Theory †
- 脳科学の世界には「One Learning Theory(たった一つの学習理論)」と呼ばれる仮説がある。
- それは「視覚野」、「聴覚野」、「感覚野」など、大脳皮質の異なる領域が実は同一の認知機構に従って動作している、とする仮説である。
- これが正しければ、視覚野の認知機構に基づくスパース・コーディングは単に画像認識のみならず、例えば聴覚(つまり音声認識)など他の分野にも応用できる。
スパース・コーディング †
- 入力の一部または全体を、辞書に含まれる要素の組み合わせで表現しようというもの。
- スパースなデータ表現とは、
- データを表現するための辞書を用意し、
- その要素のできるだけ少ない組み合わせでデータを表現すること。
特徴量 †
- 問題の解決に必要な本質的な変数
- 特定の概念を特徴づける変数
である。
- この特徴量を発見できれば、
- あらゆる問題の解決につながったり、
- パターン認識精度の向上や、
- フレーム問題の解決につながったりする
と期待されている。
ゼロから作るDeep Learning †
https://www.oreilly.co.jp/books/9784873117584/
サンプル †
https://github.com/oreilly-japan/deep-learning-from-scratch