凄い凄いと言われてもピンとこない人向け。(という体の社内勉強会資料)
機械学習からの橋渡しです。
Deep Learning とは (as TL;DR)
- 機械学習(Machine Learning)の一種
- 多層(Deep)のニューラルネットワークを使う
- 特徴量抽出を自動化できる
- 学習コストは高いが、人間の労力を抑えられる
- ただし、訓練データは依然として手作業で作成する必要がある
機械学習の中での位置づけ
機械学習の構成要素
- 学習データ
- 特徴量
- アルゴリズム
「学習」方法は3通りある
- 教師あり学習(Supervised learning)
- 教師なし学習(Unsupervised learning)
- Deep Learningは主にこれ
- 強化学習(Reinforcement learning)
代表的なアルゴリズム
- 決定木
- サポートベクターマシン
- クラスタリング
- ニューラルネットワーク
- Deep Learningはこの一角
- ベイジアンネットワーク
- 強化学習
- 遺伝的アルゴリズム
ニューラルネットワークをもっと細かく
構成要素
- 入力層
- 隠れ層
- 出力層
層間の繋ぎ方
- 全結合
- 局所結合
※図はあくまで大雑把な概念です
代表的なアプローチ
- 畳み込みニューラルネットワーク(CNN)
- 画像認識に非常によく使われる
- 局所結合
- 再帰的ニューラルネットワーク(RNN)
- 音声認識によく使われる
- 全結合
- 長・短期記憶(LSTM)(RNNの一種)
- ボルツマンマシン
代表的なテクニック
- パーセプトロン(順伝播法)
- 直感的だが、計算量が膨大になりやすい
- 勾配降下法
- 誤差逆伝播法
- 事前学習
- いい塩梅の初期パラメータを設定する手法
- プルーニング
- 学習済みネットワークの結合を削って計算量を減らす
畳み込みニューラルネットワーク(Deep Learningの例として)
- Deep Learningとして世に広く知れ渡るきっかけになったアプローチ。
- 隠れ層が多い(深い)ネットワークの利用により、画像認識の成功率が飛躍的に向上した
- 画像認識に非常によく使われる
- (隠れ層で)異なるフィルターを次々に適用して画像処理をするイメージ
Deep Learningのメリット・デメリット
メリット
- 特徴量抽出をしなくてもよい
- 学習済みのモデルを認識に使うのは計算コストが小さい
デメリット
- 大量の学習データが必要
- 学習の計算コストが大きい
- 層が多いほどブラックボックス化しやすい
小ネタ
本当にブラックボックスなのか
CNNについては多少の意味づけが可能。
- 学習済みのネットワークが、人間が物を見る時の認識と酷似している
- (入力層に近い層が)視覚野のV2の活性化パターンと似ている
学習済みのパターンの例
https://devblogs.nvidia.com/parallelforall/deep-learning-computer-vision-caffe-cudnn/
Deep Learningを始めるには
ハードウェアが必要
- TESLA(NVIDIAのGPGPU)
- NVIDIAのGPUを使えるAWS
- TPU(Tensor Processing Unit)
GPUはAMDも出しているが、Deep LearningはCUDAの独壇場となっている。
TPUの利用が一般ユーザ向けに開放されるかは2016/06時点では不明。
ソフトウェアも必要
(学習用の)フレームワーク
- TensorFlow(C/Python)
- スケーラビリティ重視
- Chainer(Python)
- 柔軟性重視
- Torch7(Lua/C)
- 高速
- Caffe(C/Python/Matlab)
- CNN特化
学習済みネットワーク(実機用推論エンジン)
- 自身で学習を実施したネットワーク
- CLOUD VISION API(Google)(有償)
まずは入門から体験したい!
NVIDIA Deep Learning学習コース
- 日本語コンテンツ
- https://nvidia.qwiklab.com/focuses/preview/223 (登録ページだけは英語)
- 基本プレイ無料
- AWS上のGPUを無料で使える学習コース。
- フレームワークを選んで実際にDeep Learningを動かしてみるところまでが無料。
- もっと細かい内容は有償提供(だが、実質AWS利用料だけで学習できるとのこと)
参考
-
「はじめるDeep learning」
http://qiita.com/icoxfog417/items/65e800c3a2094457c3a0 -
「Deep learning」
http://www.slideshare.net/kazoo04/deep-learning-15097274 -
「いまさら聞けないDeep Learning超入門(1)」
http://www.atmarkit.co.jp/ait/articles/1510/27/news008.html -
「そもそもディープラーニングとは何か?」
https://thinkit.co.jp/story/2015/08/31/6364 -
「Deep learning」(wikipedia英語)
https://en.wikipedia.org/wiki/Deep_learning -
「機械学習」(wikipedia英語)
https://en.wikipedia.org/wiki/Machine_learning -
「一般向けのDeep Learning」
http://www.slideshare.net/pfi/deep-learning-22350063 -
マルレク2016「Convolutional Neural Network入門」
https://drive.google.com/file/d/0B04ol8GVySUuMUx2MHJUWjVGQ2s/view -
「NVIDIA Deep Learning Day 2016 Spring の個人的まとめ」
http://qiita.com/it__ssei/items/822101c25568229fd3cd -
「深層学習」(講談社 機械学習プロフェッショナルシリーズ)
http://www.kspub.co.jp/book/detail/1529021.html