「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
深層学習(deep learning)について纏める。
- 人間の神経回路を真似した学習モデルを多層化した学習モデル。
- 強み
- 特徴量を自動抽出できる
- (が、特に非構造化データではベクトル化がポイントになる)
- 弱み
- 大量のデータが必要になる ≒ 計算量が膨大になる。
- 結果の解釈ができない(ブラック・ボックス)
特徴 †
ニューラルネットワークを多層にして、
誤差逆伝播法(バックプロパゲーション)?
と呼ばれる方法を用いて学習
- 多層構造のニューラルネットワークに画像などのデータを入力すると、
情報が第1層からより深くへ伝達されるうちに、各層で学習が繰り返される。
- 手動で設定していた特徴量の選択とパラメタの調整が自動化される。
対象 †
構造化データも対象にできるが、機械学習と比べ、優位性はそれほど高くない。
機械学習では精度が出なかった非構造化データを対象にできる。
目視作業の自動化 †
フロントオフィス業務で画像認識を使うケースが多い。
異常検知の自動化 †
上記を使った異常検知など。
- 老朽化診断
- 品質管理、不良品検品(不良品を認識して弾く
歴史 †
※ 参考:AIの歴史
1943 †
ニューラルネットワークの基礎
1951 †
世界初のニューラルネットワーク学習マシン(SNACR
1957 †
パーセプトロン
1967 †
誤差逆伝播法(バックプロパゲーション)?
1982 †
ポップフィールドネットワーク
1985 †
ボルツマンマシン
2006 †
オートエンコーダー
2012 †
画像認識(CNN)
- 2012:
2010年から始まった大規模画像認識競技会(ILSVRC)で
トロント大学のジェフリー・ヒントン率いるSuperVision?(チーム名)の
AlexNet?(CNN)が圧倒的な勝利を収めた。
- 2015:
Microsoft ResearchのResNet?(CNN)が、
初めて人間のエラー率 5% を上回る精度を達成。
- ≒ 機械が目を獲得した。機械のカンブリア爆発(飛躍的進化)が予測されている。
違い †
階層的な特徴量の学習が、機械学習と決定的に異なる点。
- ベイズ法はトップダウン方式
AIが類例を認識すれば、様々なパターンに対応できるようになる。
詳細 †
言語・ライブラリ †
言語 †
R言語 †
ライブラリ †
フレームワーク †
Theano †
- MILAのOSS(3条項BSD)で2007年に初版リリース
- 2017年以降、メンテナンス・フェーズ
言語 †
Python(コンパイラ、ライブラリ)
特徴 †
Numpyのように計算手続きを記述するのではなく, 数式そのものを記述.
- このことによって, 計算対象となる行列等の実体のプログラム内での
引き回しを考える事なく, 最適化やGPUによる高速化の恩恵が受けられる.
- また, 微分を (数値的ではなく) 解析的に実行する事が出来る.
参考 †
Caffe †
Yangqing Jiaら当時Berkeleyのメンバーが中心に2013年頃
開発したOSS(BSD)のディープラーニングフレームワーク
- Convolutional Architecture for Fast Feature Embedding.
- 前身はDeCAF (Deep Convolutional Activation Feature)
言語 †
C++で実装、Pythonのインターフェイスあり。
特徴 †
- コードを書かなくても設定ファイルだけで動かせる
- 容易に拡張できるコード設計
- PythonとMatlabからも使える
- 高速(C++実装、GPUをシームレスに使い分け)
- Githubの活発な開発コミュニティ
- 画像認識向き
参考 †
Chainer †
- 2015年に株式会社Preferred Networks(PFN)からリリース。
- 2019年12月5日、PyTorchに順次移行すると発表。
言語 †
Python
特徴 †
特⻑:様々なNNを直感的に記述可能
- NNの構築をPythonのプログラムとして記述
- CuPy?によるCPU/GPU agnosticなコード記述
- 動的なNN構築(Define-by-Run)
参考 †
- Facebookの人工知能研究グループ(FAIR)により開発された。
- 2016年にOSS(修正BSD)としてリリースされた。
- Lua言語で利用されていたTorchライブラリのPython版
- Chainerに強く影響を受けている。
- Define-by-Runを踏襲
- 記法もかなりChainerに近い
- PDB、PyCharm?などのデバッガが使える。
- 動的な計算グラフ(計算の過程をグラフで視覚化して表したもの
言語 †
インターフェイス
- Pythonインターフェイス
洗練されており、活発に開発が行われている。
特徴 †
- 強力なGPUサポートを備えた(NumPyのような)テンソル演算ができる
- テープベースの自動微分システムの上に構築された深層ニューラルネットワークが利用できる。
参考 †
CNTK †
(Microsoft Cognitive Toolkit)
- 2015年にMicrosoftからリリース。
- 2016年にMITライセンスでGitHubに公開。
言語 †
C++、Python、.NET、BrainScript?
特徴 †
- リソース効率が良い。
- ONNXを初めてサポート
- コミュニティ発展が課題
参考 †
Googleの †
専用項を設けた。
専用項を設けた。
専用項を設けた。
ファースト・ステップ †
開発環境 †
アルゴリズム †
参考 †
Wikipedia †
One Learning Theory †
- 脳科学の世界には
「One Learning Theory(たった一つの学習理論)」
と呼ばれる仮説がある。
- それは「視覚野」、「聴覚野」、「感覚野」など、大脳皮質の異なる領域が、
実は同一の認知機構に従って動作している、とする仮説である。
- これが正しければ、視覚野の認知機構に基づくスパース・コーディングは、
単に画像認識のみならず、例えば聴覚(つまり音声認識)など他の分野にも応用できる。
スパース・コーディング †
- 入力の一部または全体を、辞書に含まれる要素の組み合わせで表現しようというもの。
- スパースなデータ表現とは、
- データを表現するための辞書を用意し、
- その要素のできるだけ少ない組み合わせでデータを表現すること。
ゼロから作るDeep Learning †
https://www.oreilly.co.jp/books/9784873117584/
サンプル †
https://github.com/oreilly-japan/deep-learning-from-scratch