SlideShare a Scribd company logo
1 of 32
深層学習
Day2
Day2
01 勾配消失問題
02 学習率最適化
03 過学習
04 CNN
05 最新のCNN
01 勾配消失問題
 活性化関数によるもの
Day1でも記載をしたが、誤差逆伝番にて連鎖率で微分の積を繰り返していくと、
この微分の最大値が0.25(次ページで補足)であるシグモイド関数が多数存在するとき勾
配がゼロに近づきなくなってしまう。
勾配がなくなれば、その勾配分を減算することでパラメータ更新を行っていたため、パラ
メータの更新がなくなる(学習がそこで止まる)。
 重みの初期値隔たりによるもの
NNは入力値と重みの積から始まり活性化関数を通過後に出力されるが、重みが隔たるとニ
ューロンをいくつも持っている意味はなくなる(なるべく重みは分散させたい)。また、偏
っていればある程度勾配が進んだところでそれぞれの重みに違いはなくなり勾配はなくなっ
てしまう。
重みの偏りを無くすため、XavierとHeがある。(次の次のページ)
 入力データの隔たりによるもの
NNは入力値と重みの積から始まり活性化関数を通過後に出力されるが、入力値が隔たると
ニューロンをいくつも持っている意味はなくなる(なるべく重みは分散させたい)
01 勾配消失問題
 【補足】シグモイドの微分の最大値が0.25(確認テストでも問われた)
シグモイドの微分はsigmoid(a) ( 1 – sigmoid(a))だった。
sigmoid(a) = Xとすると、
X(1-X)となり、
= X – X^2
= -(X – ½)^2 + ¼
これはX = ½ のときに最大値をとる上に凸の二次関数。
つまりsigmoid(a) = ½ のときにsigmoid(a) ( 1 – sigmoid(a))は最大値をとる。
したがって、 ½ ( 1 - ½ ) = ¼ = 0.25
01 勾配消失問題
 重みの初期値隔たりによるもの(つづき)
①Xavier
重みを前の層のノード数の平方根で割ったもの(標準偏差で割るイメージ)
シグモイド関数のように点対称のグラフに効果的。
②He
重みを前の層のノード数/2の平方根で割ったもの。
つまり逆数で考えると、ノード数の平方根で割ったものに√2をかけたもの。
ReLu関数に効果的。(ReLu関数は横軸が0以上から傾きが表れてくるのでちょうど右半分
を標準偏差で割れば(ノード数/2で割れば)分散できそうなイメージ
01 勾配消失問題
 入力データの隔たりによるもの(つづき)
バッチ正規化を用いると、SGDでランダムなバッチ選択を行うことを通じて,学習する固定
分布にもランダム性(ノイズ)が追加される。従って,元のデータセットの分布と異なる分
布に,各中間層の特徴分布を学習していくので,正則化(regularization)の効果も生まれる。
1. 平均を求める
2. 分散を求める
3. 入力値から平均を引き、標準偏差で割る
(ゼロで割らないようごく少数のΘを足している)
4. 上記で求めた入力値を調整する
γ、βはパラメータ
ここにβパラメータが存在しているのでNNでバイアス項は不要となる
02 学習率最適化
 学習率最適化
重みの更新は以下で行っていたが、
W = W - Π∇E
するどいくぼみがあるとき、更新量が大きすぎて振動してしまうことがあるので、
これまでの∇Eの変化の状況に応じて変化させたい。
(急激な変化に左右されず移動平均で確認したい)
これを考慮した学習率最適化手法で、モメンタムというものがある。
W = W + Vt
Vt = μVt-1 – Π∇E
⇒ W = W – Π∇E + μVt-1
02 学習率最適化
 学習率最適化(つづき)
同じく、するどいくぼみがあるとき、更新量が大きすぎて振動してしまうことがあるので、
今までの更新量が大きなパラメータは更新されにくく、今までの更新量が小さなパラメータ
は更新されやすくなるよう学習率を調整したい。
これを考慮した学習率最適化手法で、AdaGradというものがある。
h0 = 0
ht = ht-1 + (∇E)^2
W = W – Π×(1/(√ht + Θ))×∇E ← Πにかける分母は(∇E)^2が大きくなるほど小さくなる
(これまでの更新量が大きければ学習率は小さくなる)
02 学習率最適化
 学習率最適化(つづき)
AdaGradでは急な勾配のあとの緩やかな勾配では、これまでの更新量が大きいため∇Eの変化
が小さくなり、ほとんど更新されなくなってしまう。
AdaGradに加えて移動平均を考慮して急激な変化に左右されないようにしたPMSPropという
ものが考えられた。
ht = αht-1 + (1 - α)(∇E)^2
W = W – Π×(1/(√ht + Θ))×∇E
その後、以上に登場したモメンタムとPMSPropを組み合わせたいいとこどりのAdamというも
のが考えられた。
03 過学習
 過学習への対策(①正則化)
パラメータが多い、ノード数が多いなどNNの表現の自由度が高いと過学習を起こす可能性が
あり、誤差関数に正則化項(罰則項)を追加することで制限を設ける。
下図の左がL2正規化(Ridge)、右がL1正規化(Lasso)(確認テストでも問われた)。
L1のほうが厳しくて説明変数が減るが、その分、計算は大変・説明変数が少ないときに減りすぎて困るといったデメリットあり。
03 過学習
 過学習への対策(①ドロップアウト)
ノードをランダムに削除して学習させる。異なるモデルで学習させるということになる。
04 畳み込みニューラルネットワーク(CNN)
 畳み込みとプーリング(ざっくり)
特徴を一度に抽出するのではなく、特徴ごとに上手に切り分けるようにしようというのが
「畳み込み」、特徴を残して情報を減らすのが「プーリング」
輪郭だけに反応
目だけに反応
口だけに反応
プーリング
04 畳み込みニューラルネットワーク(CNN)
 畳み込みとプーリング
畳み込みネットワークは人間の視覚をモデルに考案された。
物の光の反射を目で捉えるが、特定の部分をスキャンするように認識(局所受容野)。
電気信号になって脳に伝えられ、特定の形状(フィルタ)に反応する。(単純型細胞)
広い範囲で単純型細胞同士でとらえた形状のずれを吸収する。(複雑型細胞)
単純型細胞 ・・・ 畳み込み層 として実現
複雑型細胞 ・・・ プーリング として実現
入力層 畳み込み層
→フィルタで反応
プーリング層
→結合する畳み込み層
のニューロンの出力値の
なかで最大となる値を
設定
全結合層
→プーリング層か
らの出力をまとめる
出力層
→0~9までの
確率を出力
04 畳み込みニューラルネットワーク(CNN)
 パディング、スライド(例として確認テストより)
以下のとき、
入力画像・・・6×6
フィルタ・・・2×2
スライド・・・1
パディング・・・1
入力画像
フィルタ
パディング 1
1つずつずらして(スライド1)、
フィルタが横に7つ、縦に7
つかけることができる
このフィルタ単位でのスキャ
ンとなるので、
出力画像は
7×7
公式としては、縦について(横についても同様)
(入力縦 + 2 × パディング縦 – フィルタ縦) / スライド + 1
→ (6 + 2 × 1 – 2) / 1 + 1 = 7
05 AlexNet
 AlexNet
2012年に、ImageNetコンペティションで優勝したトロント大学SuperVisionチームの開発
したネットワーク。
論文の筆頭著者Alex Krizhevskyの名前から、AlexNetと名づけられている。畳み込み層5層
にプーリング層3層という構造になっている。1400万以上のカラー画像を1万カテゴリに分類
するというコンペティション向けに開発されたため、高い認識能力を誇るが、学習時にチュ
ーニングすべきパラメータ数も多く、実装には高いスペックをもつハードウェアが必要とな
る。サイズ4096の全結合層の出力にドロップアウトを使用している。
演習
01 勾配消失問題
02 学習率最適化
03 過学習
04 CNN
01 勾配消失問題
 Vashing sample(勾配消失(sigmoid関数)のサンプル)
下図のsigmoidを使用して勾配消失が発生しているも
のについて、右の図のようにそれぞれ活性化関数や初
期化方法を行うと明らかに性能が向上している
この結果だと、ReLu & Heが良さそう
ReLu
Sigmoid & Xavier
ReLu & He
01 勾配消失問題
 中間層を40, 20から100, 100へ変更してみると・・・少し良くなっているようだ
ReLu
01 勾配消失問題
 中間層を5, 5へ変更してみると・・・勾配消失時の図とあまり変わらず、ReLu
関数のグラフのように右側だけ少し右上がり
ReLu
01 勾配消失問題
 他も中間層を5, 5へ変更してみると・・・ReLu & Heは結構優秀
Sigmoid & Xavier
ReLu & He
01 勾配消失問題
 Sigmoid & XavierからSigmoid & Heとしてみると・・・この場合はHeのほうが
良さそうな気が。
01 勾配消失問題
 ReLu & HeからReLu & Xavierとしてみると・・・あまり変わらず。なんとなくHeの
ほうが良さそうには見える
01 勾配消失問題
 バッチ正規化
ReLUにすると0.8より大きくなってよくなっている
Sigmoid & Xavier
ReLUでHeだとさらによくなっている
02 学習率最適化
 ①SGD、②Momentum、③AdaGrad、④RSMProp、⑤Adam
① ② ③
④ ⑤
確かに徐々に良くなってAdamが良さそう
02 学習率最適化
 ①SGD、②Momentum、③AdaGrad、④RSMProp、⑤Adam
① ② ③
④ ⑤
確かに徐々に良くなってAdamが良さそう
03 過学習
 正則化(weight_decay_lambda = 0.1)
L2
L1
03 過学習
 正則化( weight_decay_lambda = 0.05)
 正則化( weight_decay_lambda = 0.005)
L2
L1
03 過学習
 正則化( weight_decay_lambda = 0.0005)
 正則化( weight_decay_lambda = 0.001) L1
ここまで来るとL1はL2と変わらないようだ。
0.005あたりが良さそう。
L2は正則化が効いてそうなのは最初の0.1かな。
03 過学習
 ドロップアウト
dropout_ratio = 0.15
dropout_ratio = 0.5
さすがに半分もドロップアウトすると
ダメダメのようだ。
04 CNN
 Simple CNNの実行
Filterを4, 4にすると、すこーしだけ下がった
参考
参考
 学習率最適化
・モメンタムなど
https://qiita.com/ZoneTsuyoshi/items/8ef6fa1e154d176e25b8
https://qiita.com/omiita/items/1735c1d048fe5f611f80
・バッチ正規化
https://cvml-expertguide.net/2021/08/24/batch-normalization/
・Xavier, He
https://www.takapy.work/entry/2018/06/14/221633
 CNN
https://www.imagazine.co.jp/畳み込みネットワークの「基礎の基礎」を理解す/
https://www.sbbit.jp/article/cont1/58131

More Related Content

More from ssuserf4860b (6)

ラビットチャレンジレポート 深層学習Day4
ラビットチャレンジレポート 深層学習Day4ラビットチャレンジレポート 深層学習Day4
ラビットチャレンジレポート 深層学習Day4
 
【最新ではありません。再度URL送付しています→https://www.slideshare.net/ssuserf4860b/day-250965207...
【最新ではありません。再度URL送付しています→https://www.slideshare.net/ssuserf4860b/day-250965207...【最新ではありません。再度URL送付しています→https://www.slideshare.net/ssuserf4860b/day-250965207...
【最新ではありません。再度URL送付しています→https://www.slideshare.net/ssuserf4860b/day-250965207...
 
ラビットチャレンジレポート 深層学習Day3
ラビットチャレンジレポート 深層学習Day3ラビットチャレンジレポート 深層学習Day3
ラビットチャレンジレポート 深層学習Day3
 
ラビットチャレンジレポート 深層学習 Day1
ラビットチャレンジレポート 深層学習 Day1ラビットチャレンジレポート 深層学習 Day1
ラビットチャレンジレポート 深層学習 Day1
 
ラビットチャレンジレポート 機械学習
ラビットチャレンジレポート 機械学習ラビットチャレンジレポート 機械学習
ラビットチャレンジレポート 機械学習
 
ラビットチャレンジレポート 応用数学
ラビットチャレンジレポート 応用数学ラビットチャレンジレポート 応用数学
ラビットチャレンジレポート 応用数学
 

ラビットチャレンジレポート 深層学習Day2