Open12

深層学習超入門2視聴メモ

ta.toshiota.toshio

3 CNN(Convolutional Neural Network)

畳み込み層(Convolutional Layer)

位置情報を維持したまま学習することが可能
主に画像認識で使用される
畳み込みNN (CNN: Convolu+onal Neural Network)の主要構成要素

畳み込み層の操作

フィルタ(カーネル)と呼ばれる小さな行列を入力データ上をスライドし,フィ
ルタと入力データの要素ごとの積の総和(畳み込み)を計算する

ストライド(stride)とパディング(padding)

ストライド

フィルタをスライドする際のステップ数

パディング

畳み込み層において,入力データの周囲に一定の幅の枠を追加する
一般的には追加した枠は0(黒)とする(ゼロパディング)
パディングにより出力のサイズを入力と一致させることが可能(大きさを維持)
端数(画像の端)部分が失われるのを伏せぐ

CNN構築

CNNと全結合層の関係

ta.toshiota.toshio

4 プーリング層(Pooling Layer)

CNNにおいて,特徴マップのサイズを縮小する目的で使う
小さなカーネルをスライドさせ,その中の最大値(Max Pooling)や平均(Average Pooling)を出力することでサイズを小さくする

Max Pooling層の実装

Global Average Pooling層 (GAP)

入力の各channelに対してそのchannelの全ての値の平均値(1つのスカラー)を計算 し出力する
空間的な次元(H, W)を除去し,各channelの情報を集約する

GAP層を使わない通常のCNN(最終層に全結合を用いたCNN)では,入力サイズが固定されてしまう
全結合層の手前にGAP層を挿入することで入力サイズが変動しても対応できるようになる
最後の畳み込み層の出力channel数をクラス数と一致させれば,全結合層をGAP層に置き換えることも可能

GAP実装

CNNにGAP層を適用

ta.toshiota.toshio

6 正則化(regularization)

深層学習はモデルは複雑であるが故に過学習しやすい
正則化は過学習を避けるための一つの手法

  • L2正則 (重み減衰)
  • ドロップアウト
ta.toshiota.toshio

7 正規化層 (バッチ正規化とレイヤー正規化)

バッチ正規化(Batch Normalization)

深層学習モデルの学習を安定化させてより高速にするテクニック
各層の活性化関数の入力( )の平均と分散を正規化する
内部共変量シフトの問題を緩和する

内部共変量シフト

学習が進むにつれ,前層のパラメータが更新されることで各層の入力分布が変化 する
入力分布が変化することで再び適応しなければならず,特に深いネットワークで 問題になり学習速度が低下する

Activationの分布

各層の活性化関数の出力(Ac+va+on)の分布を確認することで学習の進行状況を理 解できる
トラブルシューティングの際に重要な情報となる

Hook

Hookを使ってAc6va6onの情報を取得する

NNモデルの層(nn.Module)やtensorに対して勾配計算時などのタイミングで特定の関数を実行すること が可能

Activation分布の可視化

register_forward_hookを使って各ReLU層の出力の平均と標準偏差を記録する
実際に学習ループを回して,それぞれのReLU層の出力(ac+va+on)の平均/標準
偏差がどのように推移しているかを可視化する

バッチ正規化

畳み込み層におけるバッチ正規化

バッチ正規化と正則化

レイヤー正規化

ta.toshiota.toshio

8 重み初期化

勾配消失/勾配爆発

勾配消失 (Vanishing Gradient)
• 層が深くなるにつれ勾配が非常に小さくなり,重みの更新が行われ ない
勾配爆発 (Exploding Gradient)
• 層が深くなるにつれ勾配が非常に大きくなり,重みの更新が大きく
なり値が発散してしまう

Xavier初期化

Kaiming初期化

ta.toshiota.toshio

9 応用的なOptimizer

SGDの問題点とMomentum

SGDの問題点

  • 局所最適解や鞍点に比較的お陥りやすい(何も対策をしていない
  • 学習率への依存度が高い
  • 適切な学習率を設定するのが難しい
  • 損失関数の形状によっては収束速度が極端に遅くなる場合がある

指数移動平均(EMA)

RMSProp

バイアス補正

Adam