【講義：深層学習2(欠席日：12/8/日)】

##(0)深層学習2(欠席日：12/8/日)のまとめ：
#S1)勾配消失問題：
大きな値では出力の変化が微小のため「勾配」消失問題を引き起こすことがある。これを解決するために「活性化関数の選択(ReLu関数)」や「重みの初期値設定(Xavier、He)」、「バッチの正規化(メリット：(1)計算の高速化、(2)勾配消失が起きにくくなる）」を検討することになる。

#S2)学習率最適化手法について：
「勾配降下法」を利用してパラメータを最適化するが、適切な「学習率」を設定しないと、大域局所最適値に収束しづらくなったり、時間がかかったり、はたまた発散したりする。学習率最適化手法には(1)モメンタム、(2)AdaGrad、(3)RMSProp、(4)Adamがある。

#S3)過学習について：
「過学習」とはテスト誤差と訓練誤差とで学習曲線が乖離すること。原因としては、(1)パラメータ数が多いこと、(2)パラメータの値が適切でないこと、(3)ノードが多いこと等、つまり、「ネットワークの自由度(層数、ノード数、パラメータの値)が高い」ことによる。この対策として「正則化」により、ネットワークの自由度を制約し、過学習を抑制する。
代表的手法に、(1)L1正則化、(2)L2正則化、(3)ドロップアウトがある。

#S4)畳み込みニューラルネットワークについて：
CNNの構造の一例としては、「入力層(入力画像)→畳み込み層→畳み込み層→プーリング層→畳み込み層→畳み込み層→プーリング層→全結合層→出力層(出力画像)」となる。畳み込み層における演算概念として、(1)バイアス、(2)パディング、(3)ストライド、(4)チャンネルがある。プーリング層の演算概念として、対象領域の最大値もしくは平均値をとるものがある。最新のCNNの一例としてAlexNetモデルがあり、5層の畳み込み層およびプーリング層など、それに続く3層の全結合層から構成される。過学習を防ぐセ策として、サイズ4096の全結合層の出力にドロップアウトを使用している。

##(I)深層学習全体像の復習-学習概念
深層学習1(11/24/日、前回)講義の復習。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/95188b9f-00f3-b101-2627-70f57ea627b5.png)
1.入力層に値を入力。
2.重み、バイアス、活性化関数で計算しながら値が伝わる。
3.出力層から値が伝わる。
4.出力層から出た値と正解値から、誤差関数を使って誤差を求める。
5.「誤差を小さくするため」に重みやバイアスを更新する。
6.上記1-5の操作を繰り返すことにより、出力値を正解値に近づけてゆく。

##(II)深層モデルのための学習テクニック
#Section1)勾配消失問題について
全体像(前回の流れと課題全体像のビジョン)
誤差逆伝播法の復習
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/a2da34f5-a8da-2d0e-5471-8e0f1566a7cd.png)

計算結果から微分を逆算することで、不要な再帰的計算を避けて微分を算出できる。

#P12(映像番号：DN19)確認テスト
連鎖率の原理を用いて、dz/dxを求める。
Z=t^2
t=x+y
→dz/dx=(dz/dt)×(dt/dx)=2t×1=2(x+y)

#誤差逆伝播法の復習
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/1c49c901-69bf-cef4-e473-6d4ed8520cee.png)

誤差逆伝播法のまとめ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/7fa6b8af-ecb6-1eb9-c1a6-ecc2cc8d7d25.png)

#勾配消失問題の復習(DN20)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/e0a2303f-0ba5-b9a4-8c23-c88e8edd7a93.png)
左図：発散、収束していない
右図：収束している

#勾配消失問題のビジョン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/eea776f9-bf6d-7745-fa1e-92a715070fc0.png)

#活性化関数：シグモイド関数
サンプルコード
def sigmoid(x):
    return 1/(1+np.exp(-x))
数式
f(u)=1/(1+exp(-u))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/5167eb08-402d-2c6b-9bcc-22af160ed905.png)


特徴
0-1の間を緩やかに変化する関数
課題
大きな値では出力の変化が微小なため、「勾配消失問題」を引き起こすことがある。

＃P20確認テスト(DN20):
シグモイド関数を微分したとき、入力値が0の時に最大値をとる。その値として正しいものはどれか？
f(x)=sigmoid(x)
f'(x)=(1-sigmoid(x))×sigmoid(x)
f'(0)=(1-sigmoid(0))×sigmoid(0)=(1-0.5)×0.5=0.25→(2)

#勾配消失問題のビジョン(DN21):
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c39ced5c-b24d-a515-1ba2-0a07176ef6f7.png)

上述の確認テストからdz/duの最大値は0.25。これが乗じられることから勾配はさらに小さくなってゆく。

#勾配消失の解決方法
1.活性化関数の選択
2.重みの初期値設定
3.バッチ正規化

#1-1：活性化関数
ReLU関数
サンプルコード
def relu(x):
    return np.maximum(0,x)
数式
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/29032b90-44b6-0eca-5814-af0985465ac8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/53d4a114-4d73-de3c-bb5e-c69384788d41.png)

・「勾配消失問題の回避」と「スパース化」に貢献。

#1-2：重みの初期値設定
(1)Xavierの初期値を設定する際の活性化関数
・ReLU関数
・シグモイド(ロジステック)関数
・双曲線正接関数

Xavierコード例：
network['W1']=np.random.randn(input_layer_size,hidden_layer_size)/np.sqrt(input_layer_size)
network['w2']=np.random.randn(hidden_layer_size,output_layer_size)/np.sqrt(hidden_layer_size)

・初期値の設定方法：
・重みの要素：前の層のノード数の平方根で除算した値

(2)Heの初期値を設定する際の活性化関数
・ReLU関数

Heのコード例
network['W1']=np.random.randn(input_layer_size,hidden_layer_size)/np.sqrt(input_layer_size)*np.sqrt(2)
network['W2']=np.random.randn(input_layer_size,output_layer_size)/np.sqrt(hidden_layer_size)*np.sqrt(2)

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

#確認テスト(P28、DN21)
重みの初期値に0を設定すると、どのような問題が発生するか。簡潔に説明せよ。
→全ての値が同じ値で伝わるため、パラメータのチューニングが行われなくなる。

#1-3:バッチ正規化
・ミニバッチ単位で入力値のデータの偏りを抑制する方法。
・バッチ正規化の使うところ
→活性化関数に値を渡す前後に、バッチ正規化処理を孕んだ層を加える。
→バッチ正規化層への入力値：
(1) U(ℓ)=W(ℓ)z(ℓ-1)+b(ℓ)　または、(2)Z

#確認テスト(P32、DN22)
一般に考えられるバッチ正規化の効果とは？(2つ)
→(1)計算の高速化、(2)勾配消失が起きにくくなる。

#バッチ正規化の数学的記述
・数学的記述
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/0086e6cb-4f36-36f0-d03c-a7d0675ef2b7.png)
・処理及び記号の説明
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/589dd1d2-d900-3d9d-6730-9e36a45b4a77.png)

バッチ正規化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/2b341b12-ef09-f33f-ba47-16607dd3aa50.png)

#Jupyter演習(DN23)
(1)2_2_1_vanishing gradient
・sigmoid-gauss:
Generation: 2000. 正答率(トレーニング) = 0.11
                : 2000. 正答率(テスト) = 0.1135
・ReLU-gauss:
Generation: 2000. 正答率(トレーニング) = 0.95
                : 2000. 正答率(テスト) = 0.9225
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/1a4431f5-b70c-1a0a-1ece-1266554b1283.png)

・sigmoid-Xavier:
Generation: 2000. 正答率(トレーニング) = 0.85
                : 2000. 正答率(テスト) = 0.7942
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/dda77b1b-555a-f579-7127-e177a5297aa9.png)

・ReLU-He:
Generation: 2000. 正答率(トレーニング) = 0.95
                : 2000. 正答率(テスト) = 0.9553
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c6c671f1-f52d-813e-d7d2-641a9b3dfec0.png)

(2)2_4_optimizer:
・SGD：
Generation: 1000. 正答率(トレーニング) = 0.14
                : 1000. 正答率(テスト) = 0.1135
・Momentum：
Generation: 1000. 正答率(トレーニング) = 0.05
                : 1000. 正答率(テスト) = 0.1135
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/43ee0cea-2772-f9af-e3d6-e087fbaf6473.png)

・MomentumをもとにAdaGrad作成：

        if i == 0:
            h[key] = np.full_like(network.params[key], 1e-4)
        else:
            h[key] += np.square(grad[key])
        network.params[key] -= learning_rate * grad[key] / (np.sqrt(h[key]))

Generation: 1000. 正答率(トレーニング) = 0.96
                : 1000. 正答率(テスト) = 0.9218
←learing_rateを」0.01から0.1にすることでaccuracyが向上。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/44c68813-9bca-7ede-35e6-64132260c440.png)

・RSMProp:
Generation: 1000. 正答率(トレーニング) = 0.99
                : 1000. 正答率(テスト) = 0.9414
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/e1bbcc27-d314-cb82-9b4c-3ee1be675fc4.png)

・Adam
Generation: 1000. 正答率(トレーニング) = 0.94
                : 1000. 正答率(テスト) = 0.9465
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/456251a2-f9df-2daf-86b9-24d077c4ac77.png)


#例題チャレンジ：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/a03053fc-ae36-1d37-ddf5-2e6908cd474d.png)
・回答：
（1）data_x[i:i_end],data_t[i:i_end]
バッチサイズだけデータを取り出す処理。

#勾配降下法の復習(P39、40)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/27c59ce2-3545-84da-15a2-ace38c897cb8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/b80c7ce0-bf99-8ba7-a451-fa5c96d5fb8a.png)

#学習率の復習(P41)
・学習率の値が大きい場合：最適値にいつまでもたどり着かず発散してしまう。

・学習率の値が小さい場合：
・発散することはないが、小さすぎると収束するまでに時間がかかってしまう。
・大域局所最適値に収束しづらくなる。

#学習率の決め方(P42)
・初期学習率設定方法の指針：
・初期の学習率を大きく設定し、徐々に学習率を小さくしてゆく。
・パラメータ毎に学習率を可変させる。
→「学習率最適化手法を利用」して学習率を最適化。

#学習率最適化手法(P43)
・モメンタム
・AdaGrad
・RMSProp
・Adam

#モメンタム(P45、46)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/04e73ab0-616e-a2fb-bedd-780dc507a513.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/0f7c8170-327c-d621-f52d-a04520bea341.png)

#AdaGrad(P49、50)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/dbd094d0-768b-72cc-7751-d0b4054b171e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/621d829b-80b2-1475-a057-7491910e2014.png)

#RMSProp(P51、53)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/dd5c4d82-25ae-a0ad-7a21-f5d5c377af1c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/5c187011-383d-6194-d9b9-f5e6168e8270.png)


#シンギュラリティ(P57、DN27)
・レイ・カールツワイツ博士は「2029年にAIが人間並みの知能を備え、2045年に技術的特異点が来る」と提唱。
・AIには「欲」がない。現時点「欲」の定義もよくわかっていない。
・しかしながら、「脳」の各パーツは「モジュール」としてモデルは作成されており、ある動作はどういうモジュールの組み合わせで実現できるか等は研究段階。

＃過学習復習(P59,DN28)
・テスト誤差と訓練誤差とで学習曲線が乖離すること。
→特定の訓練サンプルに対して特化して学習する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/3203a09c-7d34-f4aa-f048-9c4bfd76f050.png)

#正則化(P61)
・ネットワークの自由度(層数、ノード数、パラメータの値等)を制約すること。
→「正則化手法」を利用して、過学習を抑制する。

・正則化手法：
・L1正則化、L2正則化
・ドロップアウト

#確認テスト(P63、DN27)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c186eb1a-3310-ce59-821b-3494d9fa83ce.png)
・解答：
(a)ハイパーパラメータを大きな値に設定すると、全ての重みが限りなく0に近づく。
→これが「リッジ回帰」の特徴。

・ほかの選択肢で間違っている点：
(b)非線形でなく「線形回帰」になる。
(c)バイアス項については、正則化されない。
(d)リッジ回帰の場合、「隠れ層」ではなく、「誤差関数」に対して正則化を加える。

#Weight decay(荷重減衰、二重減衰)(P64、DN29)
・過学習の原因：重みが大きい値をとることで、過学習が発生することがある。
→学習させてゆくと重みにばらつきが発生する。重みが大きな値は、学習において重要な値であり、重みが大きいと過学習が起こる。
・過学習の解決策：誤差に対して、正則化項を加算することで重みを抑制する。
→過学習が起こりそうな重みの大きさ以下で重みをコントロールし、かつ、重みの大きさにばらつきを出す必要がある。

#L1、L2正則化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/719bb6ae-2b18-371a-03e9-8ed879b10995.png)
・P=3、P=4…がないわけではないが、計算のリソースを使うことになる。
#正則化の計算
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/87907d54-a32f-ede8-71b1-fbac3e792fe8.png)

#数式とコード(P67)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/0785a131-8718-015c-bcaa-9de6ff664eb6.png)

#確認テスト(P68)
L1正則化を表しているグラフはどちらか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/12c0d2d2-8932-8cc0-9634-964b1076acfe.png)
・解答：
右の「Lasso推定量」。

#例題チャレンジ(P69,DN30)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/ad0253ca-b89c-e59f-bbf5-6649542cc2d2.png)
(解答)
(4)param
(解説)
L2ノルムは||param||^2なのでその勾配が誤差の勾配に加えられる。(正則化係数)* 2*param=(1/2)*2*param=param

#例題チャレンジ(P71)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/1bd0259e-1365-122f-7aec-832e882e8b28.png)
(解答)
(3)np.sign(param)
(解説)
L1ノルムは|param|なのでその勾配が誤差の勾配に加えられる。sign(param)。
*符号関数sign：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/91c2853d-fe73-5673-06f8-edde1bc1cf52.png)

#例題チャレンジ(p73)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/5b62610c-0a36-38ca-bd4a-b86f41f65dfe.png)
(解答)
(4)image[top:bottom,left:right,:]
(解説)
imageの形式が(縦幅、横幅、チャンネル)。
(3)と(4)の違い。(4)はプログラムと同じく起点がtop、leftになっている。

#ドロップアウト(P76,DN31)
・過学習の課題：ノード数が多い。
・ドロップアウト：ランダムにノードを削除して学習させること。
・メリット：データ量を変化させずに、異なるモデルを学習させていると解釈できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/2c268778-93be-6853-2524-fc3dd2ef123b.png)

#演習：
Generation: 1000. 正答率(トレーニング) = 1.0
                : 1000. 正答率(テスト) = 0.7663
過学習の状態。

・Weight Decay:L2正則化
weight_decay += 0.5 * weight_decay_lambda * np.sqrt(np.sum(network.params['W' + str(idx)] ** 2))
・正則化強度設定：
weight_decay_lambda = 0.1

Generation: 1000. 正答率(トレーニング) = 0.9133333333333333
                : 1000. 正答率(テスト) = 0.6962
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c057aaf9-e9d5-1298-57f2-a1f492cb43e4.png)

・Weight Decay：L1正則化
weight_decay += weight_decay_lambda * np.sum(np.abs(network.params['W' + str(idx)]))
・正則化強度設定：
weight_decay_lambda = 0.005
Generation: 1000. 正答率(トレーニング) = 0.9833333333333333
                : 1000. 正答率(テスト) = 0.709
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/f267362c-2d25-4fef-bc33-714343abea7c.png)

・weigth_decay_lambdaを変更：
・L2、正則化強度設定を変更
weight_decay_lambda = 0.01
Generation: 1000. 正答率(トレーニング) = 1.0
                : 1000. 正答率(テスト) = 0.7659
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/8c9508da-2397-a1b6-5dd4-430022d7adb3.png)

weight_decay_lambda=1.0
Generation: 1000. 正答率(トレーニング) = 0.13
                : 1000. 正答率(テスト) = 0.1135
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/10fb39e8-4aef-68fc-bceb-971bfd82fd02.png)

・L1、正則化強度設定を変更
weight_decay_lambda = 0.01
Generation: 1000. 正答率(トレーニング) = 0.62
                : 1000. 正答率(テスト) = 0.475
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/1ad03a6a-178d-df4a-d976-584abd449fba.png)

weight_decay_lambda = 0.0001
Generation: 1000. 正答率(トレーニング) = 1.0
                : 1000. 正答率(テスト) = 0.794
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c8ad2267-a41a-8028-fdb4-bb99d5fd1a51.png)

#jupyther演習(DN32)
・drop out設定：
use_dropout = True
dropout_ratio = 0.15
Generation: 1000. 正答率(トレーニング) = 0.9
                : 1000. 正答率(テスト) = 0.7313
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/e8907e16-3827-eaee-1888-eb08410581cd.png)

use_dropout = True
dropout_ratio=0.5
Generation: 1000. 正答率(トレーニング) = 0.13
                : 1000. 正答率(テスト) = 0.1135
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/c82e19af-a3ad-5179-9278-764f791f1be2.png)

・use_dropoutをfalseにしてみる
use_dropout = False
dropout_ratio = 0.15
Generation: 1000. 正答率(トレーニング) = 1.0
                : 1000. 正答率(テスト) = 0.7681
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/35498c49-ad8f-0144-ce4f-6d9d1295fe85.png)

・Dropout+L1
Generation: 1000. 正答率(トレーニング) = 0.9566666666666667
                : 1000. 正答率(テスト) = 0.748
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/07c63370-8793-2c89-a57c-4c9287452c26.png)

#自分で課題設定(DN33)
・論文検索のやり方。
・自分で設定した課題を周囲に伝えるとともに、その課題方策を議論。

#CNNの構造図(P80、DN34)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/7794930d-e256-f739-7e7d-2b72b63c015e.png)

・代表的CNN：LeNetの構造図(P81)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/601b7823-ee59-de05-825a-40891d8946ca.png)

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

・畳み込みの演算概念：
・バイアス
・パディング
・ストライド
・チャンネル

#全結合で画像を学習した際の課題(P95)
・全結合層のデメリット：
画像の場合、縦、横、チャンネルの3次元のデータだが、1次元のデータとして処理される。
→RGBの各チャンネル間の関連性が学習に反映されないということ。

・プーリング層の演算概念(P99):
・対象領域のMax値または平均値を取得。

#Jupyther演習(DN35)
・im2col
・メリット：行列計算に落とし込むことで、多くのライブラリを活用できるから。
・col2im処理：
img = col2im(col, input_shape=input_data.shape, filter_h=filter_h, filter_w=filter_w, stride=stride, pad=pad)
print(img)

[[[[ 27. 110.   4.  46.]
   [ 88.  76.  12.  84.]
   [  0. 140. 344. 176.]
   [ 79.  22.   2.  43.]]]

 [[[ 13.  42.  22.  54.]
   [ 72. 132.  48. 158.]
   [136.  88. 380.  40.]
   [ 48. 128.  82.  84.]]]]

#プーリング層(p100、DN36)
#確認テスト(P100)
サイズ６×６の入力画像を、サイズ２×２のフィルタで、畳み込んだ時の出力画像のサイズは？なお、ストライドとパディングは1とする。
OH=(H+2p-FH)/s+1=(6+2×1-2)/1+1=7→OWも同じ。→７×7

・sinple convolution network class
Generation: 1000. 正答率(トレーニング) = 0.9962
                : 1000. 正答率(テスト) = 0.955

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/80383181-0508-089b-0802-bdcc2f2b634d.png)

#9Storry(シラバス、DN38)
・認定プログラムはシラバスの項目を網羅＆実装に不足部分を追加。
・全体理解に必須→講義で重点解説
・演習必須→実装演習
・網羅的な細項目→演習問題で解説、キーワード解説

・応用数学：
・講義の内容を理解していれば、シラバス範囲（筆記試験）は問題なし。
・誤差逆伝播法で用いる、偏微分などはシラバスに含まれないが追加。

・機械学習：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/cb7ba185-8b47-44c7-c015-2c44b6bbdc1d.png)

・NN:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/a3ded9e6-0ace-4722-43c9-99ba2aa456fa.png)

・正則化：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/8b352a71-d993-6491-8a29-9cfd52295cd9.png)

・最適化；
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/2d750e8a-c1b3-3cc3-0a6a-84cc473ea128.png)

・CNN：
★最重要★
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/6074e801-982b-3374-91d3-a11ee99318fc.png)

・RNN：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/a62c1d16-efed-7e97-8b63-06e07ca75e1f.png)

・高度な内容：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/51445f71-c10d-2a24-72b9-a2538b4b994b.png)

#AlexNetモデル(P116、DN39)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/43a683c1-427c-12db-cf40-e6727bf73a19.png)

#クローラー(DN40)
Crawler.ipynbを動作するもエラーが出て、これのバグ取りをトライしましたが、いったん、中止したいと思います。これについては試験までの検討事項としたいと思います。
（Colaboratoryでもトライしましたが違うエラーがでました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493086/296f4f3a-75af-59d0-a096-02778c013989.png)


以上