▼ 2015/06/10(水) チュートリアル2 Deep-Learningによる画像認識革命 –歴史・最新理論から実践応用まで-
発表スライド
概要:Deep Learningの歴史や現在の立ち位置の説明
画像認識での性能や今までの手法(BoVW)との比較しての説明を受けた
CNN内でどのようなことが起こっているかの説明
もうすでにかなり研究が進んでおり、全結合層やプーリング層が必要ないのではという見方も存在している
どんな対象にもうまくいくわけでもなく本当に自分のやりたいことがDeep Learningに適しているのか考える必要がある。
実装を行う際にはどのようなところに気を付けるのか 学習率など
最新の研究ではセグメンテーションやパターン生成などにも用いられている
以下スライド概要
画像認識分野におけるDeep-Learningの歴史
一般物体認識において非常に良い精度を示している
ニューラルネットワークを用いた人工知能の構築技術の総称
脳の働きを模した学習アルゴリズム
深く大規模な構造を備えていることが特徴
ニューラルネットワークは脳神経系を模した数学モデル
人工ニューロンのシナプス結合強度を変化させて問題解決能力を獲得する
2010年ごろまではあまり良い精度は示されていなかった
2012年に大ブレーク!
現在では人間同等の精度
また静止画に限らず動画、画像処理などにも用いられる
畳み込みニューラルネットワーク
脳の視覚野の構造を模倣した多層パーセプトロン
ニューロン間の結合を局所に限定(パラメータ数の大幅な削減)
局所領域の畳み込みとプーリングを繰り返す多層ネットワーク
様々なフィルタをかけ出力を求める
プーリングでは一定領域内の畳み込みフィルタの反応をまとめる
領域内での平行移動普遍性を獲得
層が上がるにつれてクラスの分離性能が上がる
ニューラルネットではすべてを学習で決める
End-toEndでパラメータを最適化
誤差逆伝搬法
非線形変換の(活性化関数)の設計が重要
基本的な構造は今までの画像認識と変わらないが深さなどの違いにより精度が非常に向上している
より一般的な全結合・局所結合ネットワークなどは今一つ
Deep-Learningの数理
ある一定の表現能力を得ようとした場合、深いモデルの方が必要なパラメータが少なくて済むと考えられている
結論は出てない 反論もある
最近ではできるだけ少ないパラメータで深い非線形性を与える
一つのレイヤー内のパラメータを増やすのは効率が悪い
全結合層もいらない?
CNNのパラメータの大半は全結合層に集中
あくまで1層内でのパラメータなので、そこを増やすよりも深さを増やした方がよい
良い結果を示しているネットワークでも全結合層は存在していない
DeepModelの計算コストは“相対的には軽い”
FisherVector:2億6000万
AlexNet:6000万
Network in Network:750万
同じ性能をShallowで出そうとしたらもっと大変な計算!
今まではできるだけ作りこみ表現能力をあげ、パラメータを増やすことが必要だった
Deepではできるだけ余計なことはせず1層は「シンプルにしパラメータを減らす
多層化し、すべてデータに任せる
なんで今できるようになったか
根本的には変わってない
マシンパワーももちろん大きい
昔は
Vanishing gradient:誤差のせいでパラメータが更新されにくかった
過学習のせい
0:マシンパワー
1:活性化関数の発明
2:過学習回避手法
3:その他の最適化のノウハウ
すでに時代遅れになっている技術もある。
全結合層、プーリング層もいらないといわれている
Rectified Linear Units(ReLU)
プラスならばどこでも一定の勾配
すべての入力データが負になるとパラメータが2度と更新されなくなる
負の側にも少し勾配を与えたReLUも考えられている
DropOut
各訓練データのフィードバックの際に一定確率で中間ニューロンを無視
訓練時は全ニューロンを使うが結合重みを半分にする
L2正規化に近い効果を示し以前と比べ大幅な精度向上→ほぼ必須なテクニック!!
実際には学習を実行するのは非常に困難
設定すべきハイパーパラメータが極めて多い
実践するにあたって
どのようにDeep Learningを使うか
教師付大規模データが必要
Fine-tuning
出力層だけを取り換えそこを元に再学習を行う
Pre-trained network
中間層の値を取り出しその値をSVMなどで分類を行う
必ずしもDeep Learningがよい結果を示すわけでもない
Fgcomp2013
教師付データが十分あるのか?
ImageNetに含ませるタスクか?
上記2点を判断して使用するタスクを判別する
ImageNetから離れた領域では圧倒的ではない
ハードウェア
GPU必須 Titan Black
オープンソース
Caffe;画像メイン Torch7:汎用的 Theano:ロジックレベル
学習を始める前に
基本的にはコミュニティで共有されているネットワークを使用する
訓練誤差・予測誤差・過学習・正規化についての理解が重要
よくあるトラブル
訓練誤差が減ってない→学習が破綻→学習率を小さくする
学習率の設定は一番重要
訓練誤差は減っているが、予測誤差が大きい→過学習→正規化を強くする→(dropoutの割合を増やす)、ネットワークを小さくする
訓練誤差と予測誤差がほとんど変わらない→アンダーフィッテング→ネットワークを大きくする
まとめ
一層ごとの基本的な構造は同じ
作りこみからデータ任せへ
構造を深くすることで少ないパラメータで強い非線形変換を表現
とにかく1層はシンプルにし積み重ねるのが近道
実践方法
学習率に気にしながら調整
まだまだ新タスクへの適用は続く
本質的にはCNNの構造に依存している
より汎用的な人工知能に近づくことができるのか・・・?
▼ コメント(0件)
- TB-URL http://mm.cs.uec.ac.jp/adiary/adiary.cgi/yanailab/08/tb/