【ラビットチャレンジ】深層学習day2

#Sectinon1：勾配消失問題
●勾配消失問題
　・誤差逆伝播法が下位層に進んで行くに連れて
　　勾配がどんどん緩やかになっていく。
　　勾配降下法による更新では下位層のパラメータはほとんど変わらず、
　　訓練は最適値に収束しなくなる。

●勾配消失の解決法
　・活性化関数の選択
　・重みの初期値設定
　・バッチ正規化

●活性化関数：ReLU関数
　・今最も使われている活性化関数
　・勾配消失問題の回避とスパース化に貢献することで良い成果をもたらしている。

●重みの初期化設定-Xavier
　・重さの要素を前の層のノード数の平方根で除算した値を初期値とする。

●重みの初期設定-He
　・重みの要素を前の層のノード数の平方根で除算した値に対し、√2をかけ合わせた値。

●バッチ正規化
　・ミニバッチ単位で入力値のデータの偏りを抑制する手法
　・活性化関数に値を渡す前後に、バッチ正規化の処理を孕んだ層を加える

[確認テスト]
●シグモイド関数を微分した時、入力値が0の時に最大値をとる。
　その値として正しいものを選択肢から選べ。
　・0.25

[実装演習結果]
![Unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/ab39a2e5-376e-4e42-15ae-a16a1227fbc1.png)

![Unknown1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/b5c5eaed-7d2f-cfda-b5c8-6c873000d7f8.png)

![Unknown2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/1f8e818c-376f-4f07-81a5-8f86db01b8ca.png)

![Unknown3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/5777d4b2-c127-34f4-9083-01fb61c5222e.png)

![Unknown4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/f70175c5-726b-df3b-ad12-65e6a27072ea.png)

![Unknown5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/7d2b75fd-db22-e200-551b-859a4a6260bd.png)

#Sectinon2：学習率最適化手法
●モメンタム
　・誤差をパラメータで微分したものと学習率の積を減算した後、
　　現在の重みに前回の重みを減算した値と慣性の積を加算する。
　・局所的最適解にはならず、大域的最適解となる。
　・谷間についてから最も低い位置にいくまでの時間が早い。

●AdaGrad
　・誤差をパラメータで微分したものと再定義した学習率の積を減算する。
　・勾配の緩やかな斜面に対して、最適値に近づける。
　・学習率が徐々に小さくなるので、鞍点問題を引き起こす事があった

●RSMProp
　・誤差をパラメータで微分したものと再定義した学習率の積を減算する。
　　※AdaGradにαを追加したもの。αが小さいと過去の勾配をある程度無視できる。
　・局所的最適解にはならず、大域的最適解となる。
　・ハイパーパラメータの調整が必要な場合が少ない。

●Adam
　・下記を孕んだアルゴリズム
　　→モメンタムの過去の勾配の指数関数的減衰平均
　　→RMSPropの過去の勾配の2乗の指数関数的減衰平均

[実装演習結果]
![Unknown11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/a3cf81bd-e76e-bb79-6598-02bf9c9421ee.png)

![Unknown12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/462a6d97-20b3-9553-1905-bb18e1736922.png)

![Unknown13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/a2745d94-c987-67cd-3625-498c199d9a16.png)

![Unknown14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/49e98aa7-f381-bf49-bd93-8f849f68b5b1.png)

![Unknown15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/89ed1714-e50e-bb21-034c-f3e458590136.png)

#Sectinon3：過学習
●過学習が起きやすい状況
　・入力が少なく、ニューラルネットワークが大きい場合。

●正則化手法について
　・L1正則化、L2正則化
　・ドロップアウト

●Weight decay(荷重減衰)
　・過学習の原因
　　→重みが大きい値をとることで、過学習が発生することがある。
　・過学習の解決策
　　→誤差に対して、正則化項を加算することで、重みを抑制する。

●L1、L2正則化
　・ラッソ回帰、リッジ回帰とも呼ぶ。
　・ベクトルの大きさを利用した正則化手法。
　・誤差関数にpノルムを加える。
　　p1ノルムはマンハッタン距離、p2ノルムはユーグリッド距離。

●ドロップアウト
　・ランダムにノードを削除して学習させること。
　・データ量を変化させずに、異なるモデルを学習させていると解釈できる。

[確認テスト]
●L1正則化を表しているグラフはどちらか答えよ。
　・L1はマンハッタン距離のため、右図。

[実装演習結果]
![Unknown21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/7ef423c6-2543-a9d3-3cab-d592aaecde63.png)

![Unknown22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/0fd0905b-3f7d-e501-f939-fddd01ec8914.png)

![Unknown23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/52c15a99-3b16-6e31-bde8-a61d8ad400d7.png)

![Unknown24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/d2eba97a-d64e-03c6-7b1c-ceb0180bffd4.png)

![Unknown25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/3086f313-6474-3727-a269-e8e241b3ced8.png)

#Sectinon4：畳み込みニューラルネットワークの概念
●CNNで扱えるデータの種類
　・CNNでは次元間で繋がりのあるデータを扱える。

●畳み込み層
　・画像の場合、縦、横、チャンネルの3次元のデータをそのまま学習し
　　次に伝えることができる。
　・3次元の空間情報も学習できるような層が畳み込み層。

●全結合で画像を学習した際の課題
　・画像の場合、縦、横、チャンネルの3次元のデータだが、
　　1次元のデータとして処理される。
　　つまり、RGBの各チャンネル間の関連性が学習に反映されない。

●プーリング層
　・対象領域の最大値または平均値を取得する。

[確認テスト]
●サイズ6×6の入力画像を、サイズ2×2のフィルタで畳み込んだ時の
　出力画像のサイズを答えよ。
　なおストライドとパディングは1とする。
　・7×7

[実装演習結果]
![Unknown31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895575/f7d0db92-ec2d-044c-a3c8-c3d4d3de5ee8.png)

#Sectinon5：最新のCNN
●AlexNet
　・5層の畳み込み層およびプーリング層など、
　　それに続く3層の全結合層から構成される。
　・Global MaxPoolingやGlobal Avg Poolingが用いられている。
　　※Frattenよりも性能が良く、特徴をうまく抽出できる。
　・過学習を防ぐ工夫として、
　　サイズ4096の全結合層の出力にドロップアウトを使用している。