ゼロから作るDeep Learning学習備忘録(5〜8章)
ゼロから作るDeep Learning学習備忘録(1〜4章) - OKKAH NETの続きです。
5章 誤差逆伝播法
・順伝播: 入力→出力へと計算 ・逆伝播: 出力→入力へと計算
・誤差逆伝播法(Backpropagation): 損失関数を誤差と見立てて、
逆伝播によって重みとバイアスを修正していくアルゴリズム。
連鎖律で逆伝播を行い、最急降下法で誤差を最小にする。
・連鎖律(chain rule): 合成関数の微分はそれぞれの導関数の積で与えられる。
・最急降下法(gradient discent): 関数の傾きのみから関数の最小値を探索する。
・勾配確認: 数値微分と誤差逆伝播法の結果を比較することで、
誤差逆伝播法の実装に謝りがないことを確認できる。
6章 学習に関するテクニック
・パラメータの更新: 4章のSGD(確率的勾配降下法)の欠点を改善する手法3つ。
・Momentum: 慣性力を利用。関連性のある方向へSGDを加速させ振動を抑制する。
・AdaGrad: 学習係数を各パラメータ毎にその勾配の大きさに従って減らしていく。
・RMSProp: 過去の更新を徐々に忘れることで、いずれ更新量が0になる点を補う。
・Adam: MomentumとAdaGradの融合。
・Batch Normalization: NNの学習を加速させる汎用的で強力な手法。
2015年にGoogleのLoffeさんらによって提案された。
各層でのアクティベーションの分布を、適度な広がりを持つように調整する。
具体的には、各ミニバッチごとにデータ分布を平均0、分散1になるように正規化。
これにより、学習効率が上がり、初期値依存性も小さく、かつ過学習を抑制する。
・正規化: モデルの表現力が高い時、訓練データが少ない時は、過学習の対策が必要。
・Weight decay(荷重減衰): 大きな重みを持つことに対してペナルティを課す。
L2正則化。複雑なニューラルネットワークには対応しきれない。
・Dropout: ニューロンをランダムに消去しながら学習する。
Weight decayだけでは対応が困難なときに使用する。
・ハイパーパラメータ: 学習を行う際に人が予め設定しておく必要のあるパラメータ。
例)ニューロンの数、バッチサイズ、学習係数、Weight decay
・検証データ: ハイパーパラメータの調整用のデータ。
・ハイパーパラメータの最適化
⑴ハイパーパラメータの範囲を指定する。
⑵指定した範囲から、ランダムにサンプリングする。
⑶学習を行い、検証データで認識精度を評価(epochは小さく設定)。
⑷⑵⑶をある程度繰り返し、認識精度からハイパーパラメータの範囲を狭める。
他にはベイズの最適化で行う方法もある。
7章 畳み込みニューラルネットワーク
・全結合: 隣接する層の全てのニューロン間で結合がある。
問題点はデータの形状が無視されてしまう点。
・畳み込みニューラルネットワーク(CNN):
これまでの全結合のネットワークに畳み込み層とプーリング層が加わる。
画像処理や音声認識など至るところで使われている。
・畳み込み層(Convolutionレイヤ): データの形状を維持することができる。
・特徴マップ: 畳み込み層の入出力データ。
・畳み込み演算: 画像処理でいうところのフィルター演算
フィルターという用語はカーネルという言葉で表現されることもある。
フィルターのウィンドウを一定の感覚でスライドさせながら適用していく。
それぞれで、フィルターと入力の対応する要素を乗算し、その和を求める。
バイアス項の加算は、フィルター適用後のデータに対して行われる。
・パディング: 入力データの周囲に固定データ(例えば0)を埋めること。
・ストライド: フィルターを適用する位置の間隔。
例)ストライド=2 → フィルターを適用する窓の間隔が2要素ごとになる。
・3次元の畳み込み演算→直方体のブロックで考えるとわかりやすい。
・バッチ処理→N回分の処理を1回にまとめて行う。
・プーリング層(poolingレイヤ): 縦・横方向の空間を小さくする演算。
学習するパラメータがない、チャンネル数不変、
微小な位置変化に対してロバスト、といった特徴がある。
例) 領域の最大値をとるMaxプーリング、平均値をとるavarageプーリング
・im2col(image to column):
フィルター(重み)によって都合の良いように入力データを展開する関数。
・代表的なCNN
・LeNet: 最初のCNN。手書き数字認識を行うネットワーク。
シグモイド関数、サブサンプリングによる中間データの縮小を採用。
(現在はReLU、Maxプーリングが主流)
・AlexNet: ディープラーニング・ブームの火付け役。
ReLU、LRN、Dropoutを採用している点以外はLeNetとあまり変わらず。
・ディープラーニングの発展に、ビッグデータとGPUが大きく貢献している。
8章 ディープラーニング
・Data Augmentation: 訓練画像を回転、平行移動、切り出し(crop)、
左右反転(flip)、輝度変化などによって、人工的に増やす手法。
・ネットワークを深くすることの利点
・より少ないパラメータで同レベル以上の表現力を達成できる。
・各層がより簡単なタスクに取り組むことになるので効率的。
・ImageNet: ILSVRC(2012)で使われた100万枚を超える画像データセット。
・ディープラーニングのフレームワーク
・VGG(2014):
畳み込み層とプーリング層から構成される基本的なCNN。
3x3の小さなフィルターによる畳み込み層を連続して行い、
重みのある層(畳み込み層や全結合層)は16~19層。
・GoogLeNet(2015):
ネットワークが横方向にも幅を持つインセプション構造。
サイズの違うフィルター(とプーリング)を複数適用し、その結果を適合。
1x1のフィルターの畳み込み層を多くの場所で使用する事で、
チャンネル方向にサイズを減らし、パラメータを削減。
・ResNet(2015):
畳み込み層の一部をまたぐスキップ構造(ショートカット、バイパス)で
学習時のBPの勾配消失問題を軽減できる(微分が1に近くなる)。
これにより150層以上を繋げることができるようになった。
・転移学習: 学習済みの重み(の一部)を別のNNにコピーして再学習を行う。
手元にあるデータセットが少ない場合において特に有効な手法。
・GPUや分散学習、ビット精度の削減などによって学習の高速化を実現。
・ディープラーニングの実用事例
・物体検出: 画像中から物体の位置の特定を含めてクラス分類を行う。
R-CNN、Faster R-CNNの手法が有名。
・セグメンテーション: 画像のピクセルレベルでのクラス分類を行う。
FCNという全てが畳み込み層からなるネットワークが使われる。
・画像キャプション設定: 入力画像の説明文を自動で生成する。
代表的な手法はNIC(画像を理解するディープなCNNと、
自然言語や時系列データを扱うRNNから構成)と呼ばれる。
・画像スタイル変換: アーティストのような画像を描かせる。
・画像生成: 画像をゼロから生成。DCGAN。
・自動運転: SegNet(CNNベース)
・強化学習: Deep Q-Network。最適価値行動関数。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る