SlideShare a Scribd company logo
1 of 70
Download to read offline
レポート:深層学習(前編 2)
要点
Section1:勾配消失問題
勾配消失問題とは
誤差逆伝播法が進んでいくに連れて、勾配が次第に緩やかになる。そのため、入力層付近
の中間層に到達するまでに勾配がなくなり、重みが最適値に収束しなくなる問題。
1-1 活性化関数
・シグモイド関数は出力の変化が微小のため、近年では Relu 関数が用いられる。
f(u) = �
u, (u > 0)
0, (u ≤ 0)
u>0 のとき微分値は 1 のため、入力層付近でも勾配は減衰されなくなる。
1-2 重みの初期値設定
下記の 2 つの方法により、勾配消失問題を解決できると言われている
・Xavier:重みの要素を前の層のノード数の平方根で除算した値
Relu 関数、シグモイド関数、tanh 関数に使用される
・He:重みの要素を前の層のノード数の平方根で除算した値に対し√2 を掛け合わせた
もの
Relu 関数で使用される。
1-3 バッチ正規化
・ミニバッチ単位で、入力値のデータの偏りを抑制する手法
・Affine 層と活性化関数の間で処理が行われる。
・ミニバッチのデータに対して、平均値:0、分散:1 がなるように正規化する処理
・勾配消失問題の抑制と計算の高速化を実現する
Section2:学習率最適化手法
(1) モーメンタム
・下記の式で w が最適化する
𝑉𝑉𝑡𝑡 = μ𝑉𝑉𝑡𝑡−1 − 𝜖𝜖∇𝐸𝐸
𝒘𝒘(𝑡𝑡+1)
= 𝒘𝒘(𝑡𝑡+1)
+ 𝑉𝑉𝑡𝑡
・勾配降下法として収束が速い
・局所的最適解にならず、大域的最適解となる
(2)AdaGrad
・学習が進むにつれて学習係数を小さくする手法
・下記の式で w が最適化する
ℎ𝑡𝑡 = (1 − α)ℎ𝑡𝑡−1 + 𝛼𝛼(∇𝐸𝐸)2
𝒘𝒘𝒕𝒕
= 𝒘𝒘𝒕𝒕− 𝟏𝟏
− 𝜖𝜖
𝟏𝟏
√𝒉𝒉𝒕𝒕+𝜽𝜽
∇𝐸𝐸
・勾配の緩やかな斜面に対して、最適値に近づける。
(3)RMSProp
・過去のすべての勾配を均一に加算していくのではなく、過去の勾配を徐々に忘れて、新し
い勾配の情報が大きく反映されように加算する手法(指数移動平均)
・下記の式で w が最適化する
ℎ0 = θ , ℎ𝑡𝑡 = ℎ𝑡𝑡−1 + (∇𝐸𝐸)2
𝒘𝒘𝒕𝒕
= 𝒘𝒘𝒕𝒕− 𝟏𝟏
− 𝜖𝜖
𝟏𝟏
√𝒉𝒉𝒕𝒕+𝜽𝜽
∇𝐸𝐸
・局所的最適解にならず、大域的最適解となる
・ハイパーパラメータの調整が必要な場合が少ない
(4)Adam
・モーメンタムと AdaGrad を融合したような手法
・ハイパーパラメータのバイアス補正が行われている
Section3:過学習
過学習とは
特定の訓練サンプルに対して、特化して学習を行い、テスト誤差と訓練誤差の学習
曲線が乖離すること。ネットワークのパラメータが多いほど過学習は起こりやすい。
3-1 L1 正則化、L2 正則化
・過学習を抑制する手法で、誤差関数に p ノルムを加える
このノルムの加算することで、大きな重みをもつことに対してペナルティを与える。
𝐸𝐸𝑛𝑛(𝒘𝒘) +
1
𝑃𝑃
𝜆𝜆‖𝒘𝒘‖𝑃𝑃
P=1 のとき L1 正則化、P2 のとき L2 正則化と呼ばれる。
λを大きくしすぎると、アンダーフィッティングになる恐れがある
・L1 正則化
一部のパラメータの値を 0 にすることで、過学習を抑制する
・L2 正規化
パラメータの大きさに応じて 0 に近づけることで、過学習を抑制する
3-2 ドロップアウト
・ノードが多いことにより、過学習が起こらないようにランダムに削除して学習させる
手法(点線の○がドロップアウトしたニューロン)
・アンサブル学習と同じ効果を一つのネットワークで実現
Section4:畳み込みニューラルネットワークの概念
全体像
・CNN は全結合層の前に畳み込み層とプーリング層が加わったネットワーク
・全結合層ではデータの形状が無視されてしまうが、CNN を導入することで形状を維持
することができる。画像の場合、入力データを 3 次元データして受け取り、同じく 3 次
元データとして、次のデータを出力する
4-1 畳込み層
畳み込み層の演算
・入力データに対して、フィルタ(全結合層でいう重み)のウィンドウを一定間隔でストラ
イドさせることで適用。フィルタ要素と入力に対する積和演算を行う
4-1-1 バイアス
バイアスは○であり、積和計算したものに加算される。
4-1-2 パディング
・畳み込み層の処理を行う前に、入力データの周囲に固定データ(0 を入れることが多い)を
埋める処理
・目的としては出力サイズを調整するため
4-1-3 ストライド
・フィルタを適用する位置の間隔
・入力サイズ(H,W)、フィルタサイズ(FH,FW)、パディング:P、ストライド:S としたと
き、出力サイズ(OH,OW)は下記のように表現できる。
𝑂𝑂𝑂𝑂 =
𝐻𝐻 + 2𝑃𝑃 − 𝐹𝐹𝐹𝐹
𝑆𝑆
+ 1
𝑂𝑂𝑂𝑂 =
𝑊𝑊 + 2𝑃𝑃 − 𝐹𝐹𝐹𝐹
𝑆𝑆
+ 1
4-1-4 チャンネル
・チャンネルを導入することにより、奥行きの特徴を表現
・フィルタもチャンネル数必要
4-2 プーリング層
・縦・横方向の空間を小さくする演算
・プーリングは Max プーリングと Average プーリングに分けられる。
・学習パラメータは存在しない。
・プーリング演算により、チャンネル数は変化しない
・微小な位置変化に対するロバスト性をもつ
Section5:最新の CNN
Alexnet
・2012 年の ILSVRC(画像認識コンベンション)で優勝したモデル。
・5 層の畳み込み層及びプーリング層など、それに続く 3 層の全結合層からなるモデル
・過学習対策としてサイズ 4096 の全結合層の出力にドロップアウトが使用されている
・これ以降、さらに深い層のネットワークにより、誤認識率が減少している
演習問題
(1) 連鎖率の原理を使い、dz/dx を求めよ。
z = 𝑡𝑡2
𝑡𝑡 = 𝑥𝑥 + 𝑦𝑦
𝑑𝑑𝑑𝑑
𝑑𝑑𝑑𝑑
=
𝑑𝑑𝑑𝑑
𝑑𝑑𝑑𝑑
𝑑𝑑𝑑𝑑
𝑑𝑑𝑑𝑑
= 2𝑡𝑡 ∙ 1 = 2(𝑥𝑥 + 𝑦𝑦)
(2) シグモイド関数を微分したとき、入力値が 0 のときに最大値をとる。
その値として正しいものを選択肢から選べ。
f(𝑥𝑥) =
1
1 + exp(−𝑥𝑥)
f′(x) = f(𝑥𝑥)(1 − f(𝑥𝑥))
f′(0) = f(0)�1 − f(0)� = 0.5(1 − 0.5)=0.25
よって、(2)0.25 である。
ドロップアウトを使用
(3) 重みの初期値に 0 を設定すると、どのような問題が発生するか。簡潔に説明せよ。
全ての値が同じ値で伝わるため、パラメータチューニングが行われなくなる。
そのため、学習の概念がなくなる。
0 に限らず、重みの初期値を同じ値に設定してはいけない。
(4) 一般的に考えられるバッチ正規化の効果を 2 点あげよ。
・計算の高速化
・勾配消失が起こりにくい
バッチ正規化は活性化関数に導入することで、効果が表れる。
(5) 下記の問題に解答せよ
配列を下記のように考える。
したがって、正解は(1)となる
(6) モメンタム・AdaGrad・RMSprop の特徴をそれぞれ簡潔に説明せよ。
・モメンタム:勾配降下法と比較して、収束までの時間が速い
・AdaGrad:徐々に学習率を小さくする手法で、最適値に近づきやすい
・RMSprop:パラメータの調整が少なくてよい
(7) 下記の問題に解答せよ。
リッジ回帰は L2 正則化であり、限りなくパラメータを 0 に近づける手法である。
L2 ノルムは誤差関数に加算される。
(b),(c)は明らかに異なることにより、正解は(a)となる。
(8) 下図について、L1 正規化を表しているグラフはどちらか答えよ。
L1 正則化はスパース化する(一部のパラメータの値を 0)にすることが目的である。
つまり、あるパラメータが 0 になっていることを示すグラフを選べばよい。
軸と交点があるグラフを選べばよいので、L1 正則化は右側となる
(9) 下記の問題に解答せよ。
L2 正則化は下記のように表現できる。
E𝐿𝐿2(𝒘𝒘) = E(𝒘𝒘) +
1
2
𝜆𝜆‖𝒘𝒘‖2
𝜕𝜕𝐸𝐸𝐿𝐿2
𝜕𝜕𝒘𝒘
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝒘𝒘
+ 𝜆𝜆𝒘𝒘
よって、(4)が正解となる。
(10)下記の問題に解答せよ。
L1 正則化は下記のように表現できる。
E𝐿𝐿2(𝒘𝒘) = E(𝒘𝒘) + 𝜆𝜆‖𝑤𝑤‖
𝜕𝜕𝐸𝐸𝐿𝐿2
𝜕𝜕𝒘𝒘
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝒘𝒘
+ 𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆(𝒘𝒘)
sign(a) = �
−1, x < 0
1, x > 0
よって、(3)が正解となる。
(11)下記の問題に解答せよ。
上記にように画像の切り取りを考えればよいので、(4)が正解となる。
(12)サイズ 6×6 の入力画像を、サイズ 2×2 のフィルタで畳み込んだ時の出力画像のサイ
ズを答えよ。なおストライドとパディングは 1 とする。
OW = OH =
6 + 2 × 1 − 2
1
+ 1 = 7
よって、出力画像は 7×7 である。
演習
2_1_network_dodified
2_2_1_vanishing gradient
【活性化関数を変化させたとき】
①sigmoid ②relu
③Xaviel – sigmoid ④He-relu
①活性化関数が sigmoid のとき、勾配消失により学習を進めても正解率が上がらない
②活性化関数を sigmoid→relu にすると、勾配消失が解消され、学習が進むにつれて、
正解率が上昇し、9 割程度になることを確認。
③初期値に Xaviel を導入することにより、学習が進むにつれて、正解率も上昇すること
を確認。
④初期値に He を導入することにより、学習が速くなり、250 回で 9 割を超える。
④、⑤より
重みの初期値により、学習の仕方が大きくかわることを確認
【隠れ層を増やしたとき(活性化関数:relu)】
隠れ層(40、20) 隠れ層(400、100)
・隠れ層を多くすることで表現力が高まり、学習後の正解率が上昇する
2_3_batch_normalization
batch normalization あり batch normalization なし
・batch normalization により、学習がうまく効率的に進むことを確認
【活性化関数変更】 【初期値変更】
Relu Xaviel-sigmoid
2_2_1_vanishing gradient と同様に、活性化関数を relu に変更、重みの初期値に Xaviel を
導入することにより、正解率は上昇している。
2_4_optimizer
・SGD
・SGD
①batch normalization を True にしたとき
SGD SGD+batch normalization
②活性化関数を sigmoid→relu に変更 ③初期値に Xaviel を導入
Relu Xaviel
SGD+活性化関数:sigmoid のとき、勾配消失または局所解に停留していることによ
り、学習を進めても正解率が上昇していない。
①batch normalization により、正解率は 6 割程度上昇
②活性化関数を relu に変更することにより、勾配消失が解消され、正解率が 8 割程度に上
昇する。
③今回は初期値に Xavier を導入せいているが、効果なし。
Momentum
AdaGrad
RSMprop
Adam
・Momentum ・AdaGrad
訓練正解率:0.93 訓練正解率:0.97
テスト正解率:0.93 テスト正解率:0.925
・RMS Prop ・Adam
訓練正解率:0.98 訓練正解率:0.95
テスト正解率:0.95 テスト正解率:0.94
最適化手法を SGD から Momentum, AdaGrad, RMS Prop や Adam に変えること
により、局所解に停留するなどの欠点を解消できるため、正解率が 9 割以上に上昇
2_5_overfitting
訓練正解率:1.0
テスト正解率:0.76
訓練正解率は 100%に対して、テスト正解率は 70%で 24%の差分があり、過学習している。
L1 ノルム、L2 ノルムやドロップアウト導入することで過学習が抑制できると言われてい
るため、以降で確認する。
L2 ノルム
λ=0.1 λ=0.3 λ=0.01
訓練正解率:0.88 訓練正解率:0.5 訓練正解率:1
テスト正解率:0.7 テスト正解率:0.4 テスト正解率:0.76
正解率差分:0.18 正解率差分:0.1 正解率差分:0.19
・λ=0.1 のとき、訓練正解率は落ちているが、訓練正解率とテスト正解率の差は 25%→18%
に低下しているため、L2 ノルム導入により、過学習が抑制されている。
・λ=0.3 のとき、正則化強度が大きすぎて学習がうまくできていない。
・逆にλ=0.01 のとき、正則化強度が小さすぎて、過学習を抑制する機能を果たしていない。
→最適な正規化強度λを設定することが重要
L1 ノルム
訓練正解率:0.99
テスト正解率:0.75
Dropout
【dropout_ratio の値変更】
・dropout ratio=0.15 ・dropout ratio=0.15
訓練正解率: 0.9 訓練正解率:0.3
テスト正解率: 0.69 テスト正解率:0.25
・dropout ratio=0.15 のとき過学習が抑制される。
・dropout ratio=0.3 にすると訓練正解率が 30%に落ち込むため、モデルによって最適な値
を設定する必要がある。
【最適化手法を変更したとき】
・Momentum ・AdaGrad ・Adam
訓練正解率:1 訓練正解率:1 訓練正解率:1
テスト正解率:0.79 テスト正解率:0.79 テスト正解率:0.79
最適化手法を変更したとしても、訓練正解率とテスト正解率の差は 20%程度。
【最適化手法と dropout ratio を変更したとき】
・Adam, dropout ratio=0.15 ・Adam, dropout ratio=0.15
訓練正解率:1 訓練正解率:1
テスト正解率:0.79 テスト正解率:0.715
Dropout+L1
訓練正解率:0.94
テスト正解率:0.75
2_6_simple_convolution_network
image to column
①filter_h=3, filter_h=3, stride=1, pad=0
②filter_h=2, filter_h=2, stride=2, pad=0
column to image
out_h, out_w = (4+2*0-3)/1+1=3
行:2×2×2=8
列:3×3×1=9
col : 8×9
out_h, out_w = (4+2*0-2)/2+1=2
行:2×2×2=8
列:2×2×1=4
col : 8×9
img2col の出力結果
Convolutions class
Simple convolution network class
【結果】
・訓練正解率:0.9938
・テスト正解率:0.96
CNN を導入したことにより、テスト正解率は 96%。
CNN の特徴の移動不変性の効果がでていると考えられる。
2_7_double_convolution_network
【結果】
①conv - relu - pool - conv - relu - pool - affine - relu - affine - softmax
・訓練正解率:0.981
・テスト正解率:0.948
②conv - relu - conv - relu - pool - affine - relu - affine – softmax(①から pool を外した場合)
・訓練正解率:0.988
・テスト正解率:0.943
2 層にしたとき、正解率は 94%程度で、①と②ではほとんど差異は見られない。
2_8_deep_convolution_network
【結果】
・訓練正解率:0.981
・テスト正解率:0.948
多層にすることにより、表現力があがったため、正解率は 98%程度。
ただし、多層化によりパラメータが増えたため、学習時間が長くなる。
レポート:深層学習(後編 1)
要点
Section1:再帰型ニューラルネットワークの概念
1-1 RNN 全体像
1-1-1 RNN とは
時系列データに対応可能なニューラルネットワーク
1-1-2 時系列データについて
・時間的順序に追って一定間隔毎に観察され、しかも相互に統計的依存関係が認められる
ようなデータの系列
・時系列データの例:音声データ、テキストデータ
1-1-3 RNN について
・RNN の全体像
時刻 t の中間層は過去の保持した時刻 t-1 の中間層を参照する(再帰構造)
・RNN は下記の数式により表現される
𝒖𝒖𝒕𝒕
= 𝑾𝑾𝒊𝒊 𝒊𝒊 𝒙𝒙𝒕𝒕
+ 𝑾𝑾𝒛𝒛𝒕𝒕− 𝟏𝟏
+ 𝒃𝒃 (活性化関数前の中間層)
𝒛𝒛𝒕𝒕
= 𝑓𝑓(𝑾𝑾𝒊𝒊 𝒊𝒊 𝒙𝒙𝒕𝒕
+ 𝑾𝑾𝒛𝒛𝒕𝒕− 𝟏𝟏
+ 𝒃𝒃) (活性化関数後の中間層)
𝒗𝒗𝒕𝒕
= 𝑾𝑾𝒐𝒐𝒐𝒐𝒐𝒐 𝒛𝒛𝒕𝒕
+ 𝒄𝒄 (活性化関数前の出力層)
𝒚𝒚𝒕𝒕
= 𝑔𝑔(𝑾𝑾𝒐𝒐𝒐𝒐𝒐𝒐 𝒛𝒛𝒕𝒕
+ 𝒄𝒄) (活性化関数前の出力層)
1-2 BPTT
1-2-1 BPTT
RNN においてのパラメータ調整法の一種
1-2-2 BPTT の数学的記述
・W(in), W(out),W, b, c は次式により、最適化される。
(1)更新量の算出 (2) W(in), W(out),W, b, c の更新式
Section2: LSTM
全体像
・RNN の欠点
(1) 時系列データの長期に依存関係をうまく学習することができない。
(2) 勾配消失または勾配爆発が起こりやすい
⇒(1) (2)の問題を解決するために、LSTM や GRU のレイヤーが使われる。
・RNN から LSTM の変化
下記の 2 点があげられる。
(1) 誤差を内部にとどませるためのセルの追加(CEC)
(2) 必要な情報を必要なタイミングで保持・消去させるためのゲートの追加
2-1 CEC
・勾配消失および勾配爆発を解決するために追加。
下記のように勾配が 1 になるような仕組みになっている。
𝜕𝜕𝜕𝜕
𝜕𝜕𝑐𝑐𝑡𝑡−1
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝑐𝑐𝑡𝑡
・入力データについて、時間依存性に関係なく一律であるため、NN の学習特性が
ない
⇒これを解決するために入力ゲートと出力ゲートを導入。
2-2 入力ゲートと出力ゲート
・CEC の時間依存性に関係なく一律であるため、NN の学習特性がない。
この問題を解決するために入力ゲートと出力ゲートを導入
𝒊𝒊(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒊𝒊 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒊𝒊 + 𝒃𝒃𝒊𝒊) ・・・①(入力ゲート)
𝒂𝒂(𝑡𝑡) = tanh(𝒙𝒙𝒕𝒕 𝑾𝑾𝒂𝒂 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒂𝒂 + 𝒃𝒃𝒂𝒂)・・・②
𝒐𝒐(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒐𝒐 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒐𝒐 + 𝒃𝒃𝒐𝒐)・・・③(出力ゲート)
𝒇𝒇(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒇𝒇 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒇𝒇 + 𝒃𝒃𝒇𝒇) ・・・④(忘却ゲート)
𝒄𝒄(𝑡𝑡) = 𝒇𝒇(t)⨀𝒄𝒄𝒕𝒕−𝟏𝟏 + 𝒊𝒊(t)⨀𝒂𝒂(𝑡𝑡)・・・⑤(CEC)
𝒉𝒉(𝒕𝒕) = 𝒐𝒐(𝑡𝑡)⨀tanh(𝒄𝒄(𝑡𝑡))・・・⑥(隠れ状態)
i(t):入力ゲート,o(t):出力ゲート a(t):CEC への入力層
・①~③、⑥式より、入力・出力ゲートを追加することで、それぞれのゲートへの
入力値の重みを、重み行列 W,U で可変可能のため、上記の CEC(⑤式)の問題を解決
できる
2-3 忘却ゲート
・CEC には過去の情報がすべて保管されるため、忘却ゲートを導入
𝒇𝒇(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒇𝒇 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒇𝒇 + 𝒃𝒃𝒇𝒇) ・・・(忘却ゲート)
𝒄𝒄(𝑡𝑡) = 𝒇𝒇(t)⨀𝒄𝒄𝒕𝒕−𝟏𝟏 + 𝒊𝒊(t)⨀𝒂𝒂(𝑡𝑡)・・・(CEC)
・過去の情報が要らなくなった場合、そのタイミングで情報を忘却することが忘却
ゲート導入より可能になった
2-3 覗き穴結合
・CEC 自身の値に重み行列を介して伝播可能にした構造
例:入力ゲート
𝒊𝒊(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒊𝒊 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒊𝒊 + 𝒄𝒄𝒕𝒕−𝟏𝟏 𝑽𝑽𝒊𝒊 + 𝒃𝒃𝒊𝒊)
ct-1Vi が覗き穴にあたり、Vi がその重みである
・覗き穴の導入により、CEC の情報を他のノードに伝播させる、あるいは任意のタイミン
グで忘却することが可能となる
Section3: GRU
・LSTM はパラメータが多く、計算負荷が高くなるという欠点がある。これらの欠点を解
消するための手法として GRU があげられる。
・LSTM は入力ゲート、出力ゲート、忘却ゲートの 3 つのゲートがあるが、GRU はリセ
ットゲート、アップデートである。
・全体像
・下記のように数式で表現できる
𝒛𝒛(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒛𝒛 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒛𝒛 + 𝒃𝒃𝒛𝒛) ・・・①(アップデートゲート)
𝒓𝒓(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒓𝒓 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒓𝒓 + 𝒃𝒃𝒓𝒓)・・・②(リセットゲート)
𝒉𝒉�𝒕𝒕 = tanh(𝒙𝒙𝒕𝒕 𝑾𝑾𝒙𝒙 + (𝒓𝒓(𝑡𝑡)⨀𝒉𝒉𝒕𝒕− 𝟏𝟏)𝑼𝑼𝒙𝒙 + 𝒃𝒃𝒙𝒙) ・・・③
𝒉𝒉𝒕𝒕 = (𝟏𝟏 − 𝒛𝒛)⨀𝒉𝒉𝒕𝒕− 𝟏𝟏 + 𝒛𝒛⨀𝒉𝒉�𝒕𝒕・・・④
・LSTM と GRU どちらを使うべきかの判断はタスクやハイパーパラメータの調整による
Section4: 双方向 RNN
・過去の情報でなく、未来の情報を加味することで未来の情報を向上させるためのモデル
・文章の推敲や機械翻訳などに応用される
・オンラインでの機械翻訳はできない
Section5: Seq2Seq
全体像
・入力の時系列データを別の時系列データ(出力)に変換するモデル
・Encorder-Decorder モデルとも呼ばれる
Encorder: 入力データをエンコードする
Decorder: エンコードされたデータをデコードする
・応用として機械対話や機械翻訳があげられる
5-1 Encorder RNN
・LSTM を利用して、時系列データを隠れ状態ベクトル(固定長ベクトル)に変換し、
Decorder にそのベクトルを渡す
上記の□が Decorder に渡される。
・Encorder は Embedding レイヤーと LSTM レイヤーからなる。
Embedding レイヤー
各時系列の文字データ(文字 ID)を文字ベクトルに変換する。
変換された文字ベクトルが LSTM に入力される。
5-2 Dncorder RNN
・Encorder から隠れ状態ベクトルを受け取り、目的とする別の文字列を出力
・Decorder は Embedding レイヤー、LSTM、Affine 層、softmax 関数(学習時)からな
る。生成時は softmax 関数でなく argmax ブロックとなる。
つまり生成時は Affine 層の出力するスコアを対象に、その中から最大の値を持つ文字
ID を取り出す
Encorder
Decorder
5-3 HRED
・Seq2Seq のエンコーダとデコーダに加えて、文脈を学習する RNN を追加した構造。
Seq2Seq は一問一答しかできなかったが、過去の n-1 個の発話から次の発話を生成でき
るようになり、過去の発話の履歴を加味した応答ができる。
⇒Seq2Seq+Context RNN
Context RNN:Encorder のまとめた各文章の系列をまとめて、これまでの会話コンテ
キスト全体を表すベクトルに変換する構造
・確率的な多様性が字面になく、会話の流れに多様性がないため、短く情報量に乏しい
返答をしがちである。
5-4 VHERD
・HERD の欠点の確率的な多様性が字面になく、会話の流れに多様性がないため、
短く報量に乏しい返答をしがちな問題を解決するために、VAE の潜在変数の概念を追加
した手法
5-5 VAE
5-5-1 オートエンコーダ
・教師なし学習の1つ
・入力データから潜在変数 z に変換するニューラルネットワークが Encorder。
潜在変数 z は入力データの特徴を低次元で表現する(次元削減)。
・潜在変数 z を入力として元画像を復元するニューラルネットワークが Decorder。
Decoeder の出力が入力データと同等となるように学習を進める。
オートエンコーダの構造
5-5-2 VAE
・オートエンコーダの潜在変数 z に確率分布 N(0,1) (ガウス分布で平均 0,分散 1)を導入
したもの
・潜在変数 z に確率分布に確率分布を導入することで、新しいデータを作成できる
Section6:word2vec
・RNN では単語のような可変長の文字列は NN で与えることができないため、
固定長形式で単語を表現できるように word2vec を導入
・単語を固定長のベクトルとして表現することにより、ベクトル間の距離やベクトル間の
距離や関係として単語の意味を表現
・word2vec の手法として、one-hot ベクトルがあげられ、ひとつの要素が 1 で、それ以外
は 0 となるベクトル
・大規模のデータの分散表現の学習が現実的な計算速度とメモリ量で実現可能にする
Section7:attention
・Seq2seq ではどんなに長い入力データでも Encorder の出力を固定長ベクトルにしなけ
ればならない課題があり、それを解決するために attention が導入される。
・Seq2Seq では LSTM の最後の隠れ状態を Decorder に渡していたが、attention の場
合、各時刻の隠れ状態ベクトルをすべて Decorder に渡す。このことにより、入力文に
比例した情報をエンコードすることが可能になる
・attention の応用として、Transformer があげられる。
演習問題
(1)サイズ 5×5 の入力画像を、サイズ 3×3 のフィルタで畳み込んだ時の出力画像のサイズ
を答えよ。なお、ストライドは 2、パディングは 1 とする。
OH = OW =
5+2×1−3
2
+ 1 = 3
よって出力画像は 3×3 である。
(2)RNN ネットワークには大きく分けて 3 つの重みがある。
1 つは入力から現在の中間層を定義する際にかけられる重み、1 つは中間層から出力を
定義する際にかけられる重みである。残り 1 つについて説明せよ
中間層から中間層にかけられる重み。
これが再帰型ニューラルネットワークの大きな特徴である。
(3)下記の問題を解答せよ。
W の次元が embed_size, 2*embed_size である。
node[‘left’], node[‘right’]の次元は embed_size である。
v を算出するための W と node[‘left’], node[‘right’]の行列計算させるためには、
node[‘left’], node[‘right’]を結合して、次元を 2*embed_size にする必要がある。
そのため、np.concatenate()を使用して結合する必要がある。
正解は(2) W.dot(np.concatenate([‘left’], [‘right’]))となる。
(4)下図の y1 を x・s0・s1・win・w・wout を用いて数式で表せ。
※バイアスは任意の文字で定義せよ。
※また中間層の出力にシグモイド関数 g(x)を作用させよ。
中間層の S1 は下記のように表現できる。
𝑆𝑆1 = 𝑔𝑔(𝑊𝑊(𝑖𝑖 𝑖𝑖) 𝑥𝑥1 + 𝑊𝑊𝑆𝑆0 + 𝑏𝑏0)
b0 は任意のバイアス項
出力 y1 は下記のように表現できる。
y1 = 𝑊𝑊𝑜𝑜𝑜𝑜𝑜𝑜 𝑆𝑆1 + 𝑏𝑏1
b1 は任意のバイアス項
(5)下記の問題に解答せよ。
𝜕𝜕𝜕𝜕
𝜕𝜕𝑢𝑢𝑡𝑡
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝑣𝑣𝑡𝑡
𝜕𝜕𝑣𝑣𝑡𝑡
𝜕𝜕𝑢𝑢𝑡𝑡
= 𝑓𝑓′(𝑢𝑢𝑡𝑡)𝑊𝑊(𝑜𝑜𝑜𝑜𝑜𝑜)
𝑇𝑇
𝛿𝛿 𝑜𝑜𝑜𝑜𝑜𝑜,𝑡𝑡
= 𝛿𝛿𝑡𝑡
上記の式は①にあたる。
今回、𝑓𝑓′(𝑢𝑢𝑡𝑡) = 1
𝜕𝜕𝜕𝜕
𝜕𝜕𝑢𝑢𝑡𝑡−1
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝑢𝑢𝑡𝑡
𝜕𝜕𝑢𝑢𝑡𝑡
𝜕𝜕𝑢𝑢𝑡𝑡−1
= 𝛿𝛿𝑡𝑡
{
𝜕𝜕𝑢𝑢𝑡𝑡
𝜕𝜕𝑧𝑧𝑡𝑡−1
𝜕𝜕𝑧𝑧𝑡𝑡−1
𝜕𝜕𝑢𝑢𝑡𝑡−1
} = 𝛿𝛿𝑡𝑡
{𝑊𝑊𝑓𝑓′(𝑢𝑢𝑡𝑡−1)}
今回、𝑓𝑓′(𝑢𝑢𝑡𝑡−1) = 1で、上記の問題で W は U に当たる。
したがって、②は delta_t と U の行列計算をすればよい。
正解は(2)delta_t.dot(U)となる。
(6) 下記の問題に解答せよ。
勾配のノルマが閾値を超えたら、閾値でガードする。
rate=閾値 / ノルムのため、
正解は(1)gradient*rate である。
①
②
(7)以下の文章を LTSM に入力し空欄に当てはまる単語を予測したいとする。
文中の「とても」という言葉は空欄の予測においてなくなっても影響を及ぼさないと考
えられる。このような場合、どのゲートが作用すると考えられるか。
忘却ゲート:不必要な情報を保存しないようにするためのゲート
(8)下記の問題に解答せよ。
記憶ゲートは下記のように表現できる。
𝒄𝒄𝑡𝑡 = 𝜎𝜎(𝒇𝒇⨀𝒄𝒄𝑡𝑡−1 + 𝒈𝒈⨀𝒊𝒊)
したがって、正解は(3)input_gate*a+forget_gate*c である。
(9)LSTM と CEC が抱える課題について、それぞれ簡潔に述べよ。
LSTM:パラメータが多く、計算負荷が高い。
CEC : 勾配 1 で伝えるため、重みの概念がなくなり、深層学習の意味をなさない。
そのため、忘却ゲートを導入する。
(10)下記の問題に解答せよ。
GRU の隠れ層は下記のように表現される。
𝒉𝒉� = tanh(𝒙𝒙𝑡𝑡 𝑊𝑊𝑥𝑥 + (𝒓𝒓⨀𝒉𝒉𝑡𝑡−1)𝑊𝑊ℎ + 𝒃𝒃)
𝒉𝒉𝑡𝑡 = (𝟏𝟏 − 𝐳𝐳)⨀𝒉𝒉𝑡𝑡−1 + 𝒛𝒛⨀𝒉𝒉�
r : リセットゲート, z : アップデートゲート
したがって、正解は(4)(1-z)*h + z*h_bar である。
LSTM と異なり、GRU はゲートが 2 つ。
モデルにより、LSTM か GRU を使ったほうが判断する必要あり。
(11)LSTM と GRU の違いを簡潔に述べよ。
・パラメータ数が異なる。 LSTM は多いが、GRU は少ない。
・ゲート数が異なる。
LSTM:入力ゲート、出力ゲート、忘却ゲート
GRU : リセットゲート、アップデートゲート
(12)下記の問題に解答せよ
V は順方向と逆方向の重みを組み合わせたもので、行列の次元は output_size×
2*hidden_size である。ys=hs.dot(V.T)のため、hs の次元は 1×2*hidden_size にする必要
があるため、正解は(4)となる。
(13)下記の問題に解答せよ。
Seq2seq は RNN を用いた Encoeder-Decorder モデルである。
正解は(2)である。
(1)は双方向 RNN、(4)は LSTM である。
(14)下記の問題に解答せよ。
w は one-hot ベクトルで Embedding 層により、別の特徴量に変換される。
Ew より変換されるため、正解は(1)E.dot(w)となる。
(15)seq2seq と HRED, HRED と VHRED の違いを簡潔に述べよ。
・seq2seq と HRED の違い
一問一答しかできないものを改善した。前回の文章に即して解答することが可能に
なった。
・HRED と VHRED の違い
同じ返答を防止するために、VAE の潜在変数に確率分布を導入。
(16)VAE に関する下記の説明文中の空欄にあてはまる言葉を答えよ・
自己符号器の潜在変数に__を導入したもの。
答え:確率分布
(17)RNN と word2vec, seq2seq と Attention の違いを簡潔に述べよ。
・RNN と woed2vec の違い
重みの生成ロジックが大きく異なる
RNN:ボキャブラリ×ボキャブラリの重み行列が必要
word2vec:ボキャブラリ×任意の単語ベクトルの重み行列
そのため、現実的な計算速度とメモリ量が実現可能となった。
・seq2seq と Attention の違い
長い文章、可変長の文章でも対応可能。
Attention では入力と出力のどの単語が関連しているかの関連度を学習する仕組みを
導入しているため、精度が向上する。
実装演習
3_1_simple_RNN
【結果】
①weight_ini_std の値を変更したとき
・weight_init_std=1 ・weight_init_std=0.3 ・weight_init_std=1.5
weight_ini_std の値によって収束の仕方が変わる。
適切なパラメータを与えることが重要。
②learning_rate を変える
・learning late=0.01 ・learning late=0.1 ・learning late=0.3
・学習率が小さい場合、学習が進まないため、loss が 0 に収束しない
・学習率=0.3 にしたとき、2000 回程度で収束するようになる。
学習率を大きくすると、発散する可能性があるので、適正なパラメータを設定する
必要がある。
③重みの初期化を変える
・Xavier ・He
④中間層の活性化関数を変える
・Relu ・tanh
今回のパラメータ設定では中間層の活性化関数を sigmoid から Relu、tanh に変更したこ
とによって、勾配爆発が生じた。
3_3_predict_sin
【結果】
①iters_num = 100
学習回数を 500 回から 100 回に減らしたことにより、精度が落ちる。
②maxlen=5 で iters_num=500, iters_num=3000 に変えたとき
・iters_num=500 ・iters_num=3000
学習回数を上げることにより、精度があがっていることを確認。
レポート:深層学習(後編 2)
Tensorflow の実習
1)Tensorflow とは
Tensorflow はニューラルネットワークのライブラリーであり、1 番ユーザが多い。
一般的に研究などではフルスクラッチで実装されることはなく、ライブラリー使われ
ことがほとんどである。
2)Tensorflow の基本事項
・tf.constant : 定数設定
・tf.variable : 変数定義 NN では重みで使用される。
・tf.placeholder : 値を収納する。自由自在に値の変更可能
・変数の初期化:tf.global_variables.initilizer()より、定義された変数が初期化される。
・Session を run しないと実行されない。
3)実装演習
4_1_tensorflow_codes
(1)Constant
・Session.run をしないと、値が更新されないことを確認。
(2)placeholder
(3)variables
(4)線形回帰
モデルの回帰:y=3x+2
実行結果
(4)-1 noise の値の変更
・noise=0.3, ・noise=1
・真値に対して、ノイズが大きいために外れ値が多くなり、noise=0.3 と比較して、
誤差が大きくなっていることを確認できた
(4)-2 d の値を変更したとき
・noise=0.3 にして、d を y=-8x+5 の値を変化させたとき
d を変更しても同様に、精度の高い回帰直線が得られることを確認できた。
(5)非線形回帰
モデルの回帰:y=-0.4x3+1.6x2-2.8x+1
(5)-1 noise の値を変更したとき
・noise=0.05, ・noise=0.5,
線形回帰と同様に、ノイズが大きくなることにより外れ値が多くなることにより、誤差が大
きくなっている。
(5)-2 d の値を変更したとき
・noise=0.05 にして、d を y=0.5x3-1.5x2-0.3x+1.5 の値を変化させたとき
線形回帰と同様に d を変更しても、精度の高い回帰直線が得られることを確認できた。
(5)-3 モデルを y=30x2+0.5x+0.2 にし、誤差が収束するように iters_num や learning_rate
を調整した場合
・iters_num=10000, learning_rate=0.001
真の値と非線形回帰により算出した曲線が不一致。
要因として、イテレーション回数が少ない もしくは 学習率が小さすぎることがあげら
れる。
・iters_num=10000 →50000 にした場合
イテレーション回数を増加させてことにより、真値と一致。
しかし、イテレーション回数を増加させると実行時間が長くなるため、学習率を大きくする
ことにより、収束時間が短縮されると考える。
次に、学習率を 0.001→0.01 に変化させてみる。
・learning_rate=0.001→0.01
学習率 0.001→0.1 にすることで、真値と回帰が一致。
2000 回で収束したことより、学習率を大きくすることは有効であることを確認できた。
(6)分類 1 層(mnist)
(6)-1 x:入力値, d:教師データ, W:重み, b:バイアス をそれぞれ定義しよう.
下記のように定義
1 層の場合、正解率は 86%程度である。
(7)分類 3 層
・隠れ層を 1→3 にしたとき
隠れ層を増やしたことにより、正解率が 86%→90%に上昇。
隠れ層を増やすことによる、精度アップができることがわかる。
・tf.train.GradientDescentOptimizer(0.2) ・tf.train.MomentumOptimizer(0.1,0.9)
・tf.train.AdagradOptimizer(0.5) ・tf.train.RMSPropOptimizer(0.001)
・tf.train.AdamOptimizer(1e-3)
・最適化手法変更により、正解率を向上できることを確認できた
(7)分類 CNN(mnist)
【結果】
・dropout:0.5
訓練正解率:0.96 テスト正解率:0.96
・dropout:0
訓練正解率:0.95 テスト正解率:0.94
今回のデータ、モデルでは正解率、汎化性能で違いは見られなかった。
一般的に dropout を導入することにより、汎化性能が上がると言われている。
4_3_keras_codes
(1)線形回帰
【結果】
(2)単純パーセプトロン
(2)-1 np.random.seed(0)を np.random.seed(1)に変更した場合
・乱数設定の変更により、初期値の重みが異なるため loss の値、テストの結果が異なる。
重みの初期値設定は精度を上げるのに重要なパラメータであることが確認できた。
(2)-2 エポック数を 100 に変更
学習回数を 30 から 100 に増やすことによって、loss の値も低下し、テストでも正しく判定
できていることを確認。
(2)-3 AND 回路、XOR 回路に変更
・OR 回路
・XOR 回路
AND 回路の場合、正しく判定できているが XOR 回路は正しく判定できない。
XOR 回路を正しく判定するには、多層にすることにより表現力を上げる必要がある。
(2)-4 OR 回路に変更して、バッチサイズを 10 に変更した場合
バッチで学習しても、正しく判定できることを確認できた
(2)-5 エポック数を 300 に変更したとき
loss の値はエポック回数:300 回 100 回で大差はないので、100 回で十分だと考えられる
(3)分類(iris)
(3)-1RNN の出力活性化関数を sigmoid に変更
・中間層を sigmoid に変化させたとき、特に訓練の正解率が relu と比較して低下
(relu:0.90, sigmoid:0.83)
・sigmoid を活性化関数したことにより、勾配消失が起こりやすくなるため、正解率が上昇
しなかったと考えられる。
・過学習の傾向がみられる。
(3)-2 SGD を import し optimizer を SGD(lr=0.1)に変更
学習率を大きくすることにより、テスト正解率は振動し、収束しない。
学習率を小さくしたならば、振動は低減できると考えられる。
あるいは最適化手法を SGD から Adagrad や Adam にすることにより、解消できると思わ
れる。
(4)分類(mnist)
(3)-1 load_mnist の one_hot_label を False に変更したとき
Error になること確認。
categorical_crossentropy は正解ラベルが one hot label をもとに計算するので Error が発生。
(3)-2 誤差関数を sparse_categorical_crossentropy, Adam の値を変更
・CCN、dropout, 最適化手法を Adam にすることにテスト正解率は 99%.
・dropout 導入により、過学習は見られない。
(4)RNN
(4)-1 RNN の出力ノード数を 128 に変更
(4)-2 RNN の出力活性化関数を sigmoid に変更
sigmoid にすることにより勾配消失が起こりやすくなり、テスト正解率は減少
(4)-3 RNN の出力活性化関数を tanh に変更
テスト正解率は 1 になり、sigmoid と比較して上昇。
(4)-4 最適化方法を adam に変更(活性化関数:sigmoid)
Adam にすることによって、テスト正解率が 63%から 92%に上昇。
(4)-5 RNN の入力 Dropout を 0.5 に設定(活性化関数:relu)
(4)-6 RNN の再帰 Dropout を 0.3 に設定(活性化関数:relu)
(4)-5,(4)-6 より、dropout を導入することで正解率が減少。RNN は 1 層で重みの数は少な
いため、正解率が減少したと考える。
(4)-7 RNN の unroll を True に設定(活性化関数:relu)
Unroll の導入により、正解率の上昇が確認できた。
強化学習
要点
(1)強化学習とは
ある環境下で、目的とする報酬(スコア)を最大化するかためにエージェントがどのような
結果をとっていけばよいか学習することである。
応用例として、囲碁の AlphaGo やロボットの歩行制御などで強化学習が使われている。
(2)探索と利用のトレードオフ
探索回数が少ない場合、報酬が最大となる行動が特定できない。
探索回数を増やした場合、最大となる行動を見つけることできるが、利用機会が減少して
しまう→トレードオフの関係
この問題を解決するための方法とすて、ε-greedy 法があげられる。
ε-greedy 法:確率εで無作為に行動を選択し、確率 1‐εで greedy 法より、行動
を選択する手法
(3)教師なし・教師あり学習と強化学習の違い
教師なし・教師なし学習あり学習
データに含まれるパターンを見つけ出す及びそのデータから予測するのが目的
強化学習
報酬が最大となる方策を見つけ出すのが目的
(4)強化学習の数式化
・状態価値関数:ある状態での価値を表す場合に使用される
𝑣𝑣𝜋𝜋(𝑠𝑠) = � 𝜋𝜋(𝑎𝑎|𝑠𝑠)
𝑎𝑎
� 𝑝𝑝(𝑠𝑠′|𝑠𝑠, 𝑎𝑎)[𝑟𝑟(𝑠𝑠, 𝑎𝑎, 𝑠𝑠′) + 𝛾𝛾𝑣𝑣𝜋𝜋(𝑠𝑠′)]
𝑠𝑠′
π(a|s):方策、①平均報酬 ②割引報酬和である。
・行動価値関数:状態と価値関数を組み合わせた価値を表す場合に使用される
𝑣𝑣𝜋𝜋(𝑎𝑎|𝑠𝑠) = � 𝑝𝑝(𝑠𝑠′|𝑠𝑠, 𝑎𝑎)[𝑟𝑟(𝑠𝑠, 𝑎𝑎, 𝑠𝑠′) + 𝛾𝛾𝑣𝑣𝜋𝜋(𝑠𝑠′)]
𝑠𝑠′
・方策勾配法
方策をモデル化して最適化する手法として、方策勾配法が用いられる。
𝜃𝜃(𝑡𝑡+1)
= 𝜃𝜃(𝑡𝑡)
+ 𝜖𝜖∇𝐽𝐽(𝜃𝜃)
繰り返し計算により、方策の最適を行う。
勾配部分は下記のように表現される。
∇𝜃𝜃 𝐽𝐽(𝜃𝜃) = E𝜋𝜋𝜃𝜃
��∇𝜃𝜃 𝑙𝑙𝑙𝑙 𝑙𝑙𝜋𝜋𝜃𝜃(𝑎𝑎|𝑠𝑠)𝑄𝑄𝜋𝜋(𝑠𝑠, 𝑎𝑎)��
① ②

More Related Content

Similar to Report2

RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習Masayuki Tanaka
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1hirokazutanaka
 
深層学習Day2レポート(小川成)
深層学習Day2レポート(小川成)深層学習Day2レポート(小川成)
深層学習Day2レポート(小川成)ssuser441cb9
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5sleepy_yoshi
 
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)wada, kazumi
 
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)Wataru Kishimoto
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムMiyoshi Yuya
 
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじPRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじsleepy_yoshi
 
ラビットチャレンジレポート 深層学習Day2
ラビットチャレンジレポート 深層学習Day2ラビットチャレンジレポート 深層学習Day2
ラビットチャレンジレポート 深層学習Day2HiroyukiTerada4
 
Deep learning chapter4 ,5
Deep learning chapter4 ,5Deep learning chapter4 ,5
Deep learning chapter4 ,5ShoKumada
 

Similar to Report2 (11)

RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
 
深層学習Day2レポート(小川成)
深層学習Day2レポート(小川成)深層学習Day2レポート(小川成)
深層学習Day2レポート(小川成)
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
 
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)
 
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)
Bishop prml 11.5-11.6_wk77_100606-1152(発表に使った資料)
 
PRML4.3.3
PRML4.3.3PRML4.3.3
PRML4.3.3
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
 
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじPRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
 
ラビットチャレンジレポート 深層学習Day2
ラビットチャレンジレポート 深層学習Day2ラビットチャレンジレポート 深層学習Day2
ラビットチャレンジレポート 深層学習Day2
 
Deep learning chapter4 ,5
Deep learning chapter4 ,5Deep learning chapter4 ,5
Deep learning chapter4 ,5
 

Recently uploaded

UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 

Recently uploaded (6)

UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 

Report2

  • 1. レポート:深層学習(前編 2) 要点 Section1:勾配消失問題 勾配消失問題とは 誤差逆伝播法が進んでいくに連れて、勾配が次第に緩やかになる。そのため、入力層付近 の中間層に到達するまでに勾配がなくなり、重みが最適値に収束しなくなる問題。 1-1 活性化関数 ・シグモイド関数は出力の変化が微小のため、近年では Relu 関数が用いられる。 f(u) = � u, (u > 0) 0, (u ≤ 0) u>0 のとき微分値は 1 のため、入力層付近でも勾配は減衰されなくなる。 1-2 重みの初期値設定 下記の 2 つの方法により、勾配消失問題を解決できると言われている ・Xavier:重みの要素を前の層のノード数の平方根で除算した値 Relu 関数、シグモイド関数、tanh 関数に使用される ・He:重みの要素を前の層のノード数の平方根で除算した値に対し√2 を掛け合わせた もの Relu 関数で使用される。 1-3 バッチ正規化 ・ミニバッチ単位で、入力値のデータの偏りを抑制する手法 ・Affine 層と活性化関数の間で処理が行われる。 ・ミニバッチのデータに対して、平均値:0、分散:1 がなるように正規化する処理 ・勾配消失問題の抑制と計算の高速化を実現する Section2:学習率最適化手法 (1) モーメンタム ・下記の式で w が最適化する 𝑉𝑉𝑡𝑡 = μ𝑉𝑉𝑡𝑡−1 − 𝜖𝜖∇𝐸𝐸 𝒘𝒘(𝑡𝑡+1) = 𝒘𝒘(𝑡𝑡+1) + 𝑉𝑉𝑡𝑡 ・勾配降下法として収束が速い ・局所的最適解にならず、大域的最適解となる
  • 2. (2)AdaGrad ・学習が進むにつれて学習係数を小さくする手法 ・下記の式で w が最適化する ℎ𝑡𝑡 = (1 − α)ℎ𝑡𝑡−1 + 𝛼𝛼(∇𝐸𝐸)2 𝒘𝒘𝒕𝒕 = 𝒘𝒘𝒕𝒕− 𝟏𝟏 − 𝜖𝜖 𝟏𝟏 √𝒉𝒉𝒕𝒕+𝜽𝜽 ∇𝐸𝐸 ・勾配の緩やかな斜面に対して、最適値に近づける。 (3)RMSProp ・過去のすべての勾配を均一に加算していくのではなく、過去の勾配を徐々に忘れて、新し い勾配の情報が大きく反映されように加算する手法(指数移動平均) ・下記の式で w が最適化する ℎ0 = θ , ℎ𝑡𝑡 = ℎ𝑡𝑡−1 + (∇𝐸𝐸)2 𝒘𝒘𝒕𝒕 = 𝒘𝒘𝒕𝒕− 𝟏𝟏 − 𝜖𝜖 𝟏𝟏 √𝒉𝒉𝒕𝒕+𝜽𝜽 ∇𝐸𝐸 ・局所的最適解にならず、大域的最適解となる ・ハイパーパラメータの調整が必要な場合が少ない (4)Adam ・モーメンタムと AdaGrad を融合したような手法 ・ハイパーパラメータのバイアス補正が行われている Section3:過学習 過学習とは 特定の訓練サンプルに対して、特化して学習を行い、テスト誤差と訓練誤差の学習 曲線が乖離すること。ネットワークのパラメータが多いほど過学習は起こりやすい。
  • 3. 3-1 L1 正則化、L2 正則化 ・過学習を抑制する手法で、誤差関数に p ノルムを加える このノルムの加算することで、大きな重みをもつことに対してペナルティを与える。 𝐸𝐸𝑛𝑛(𝒘𝒘) + 1 𝑃𝑃 𝜆𝜆‖𝒘𝒘‖𝑃𝑃 P=1 のとき L1 正則化、P2 のとき L2 正則化と呼ばれる。 λを大きくしすぎると、アンダーフィッティングになる恐れがある ・L1 正則化 一部のパラメータの値を 0 にすることで、過学習を抑制する ・L2 正規化 パラメータの大きさに応じて 0 に近づけることで、過学習を抑制する 3-2 ドロップアウト ・ノードが多いことにより、過学習が起こらないようにランダムに削除して学習させる 手法(点線の○がドロップアウトしたニューロン) ・アンサブル学習と同じ効果を一つのネットワークで実現 Section4:畳み込みニューラルネットワークの概念 全体像 ・CNN は全結合層の前に畳み込み層とプーリング層が加わったネットワーク ・全結合層ではデータの形状が無視されてしまうが、CNN を導入することで形状を維持 することができる。画像の場合、入力データを 3 次元データして受け取り、同じく 3 次 元データとして、次のデータを出力する 4-1 畳込み層 畳み込み層の演算 ・入力データに対して、フィルタ(全結合層でいう重み)のウィンドウを一定間隔でストラ イドさせることで適用。フィルタ要素と入力に対する積和演算を行う
  • 4. 4-1-1 バイアス バイアスは○であり、積和計算したものに加算される。 4-1-2 パディング ・畳み込み層の処理を行う前に、入力データの周囲に固定データ(0 を入れることが多い)を 埋める処理 ・目的としては出力サイズを調整するため 4-1-3 ストライド ・フィルタを適用する位置の間隔 ・入力サイズ(H,W)、フィルタサイズ(FH,FW)、パディング:P、ストライド:S としたと き、出力サイズ(OH,OW)は下記のように表現できる。 𝑂𝑂𝑂𝑂 = 𝐻𝐻 + 2𝑃𝑃 − 𝐹𝐹𝐹𝐹 𝑆𝑆 + 1 𝑂𝑂𝑂𝑂 = 𝑊𝑊 + 2𝑃𝑃 − 𝐹𝐹𝐹𝐹 𝑆𝑆 + 1 4-1-4 チャンネル ・チャンネルを導入することにより、奥行きの特徴を表現 ・フィルタもチャンネル数必要
  • 5. 4-2 プーリング層 ・縦・横方向の空間を小さくする演算 ・プーリングは Max プーリングと Average プーリングに分けられる。 ・学習パラメータは存在しない。 ・プーリング演算により、チャンネル数は変化しない ・微小な位置変化に対するロバスト性をもつ Section5:最新の CNN Alexnet ・2012 年の ILSVRC(画像認識コンベンション)で優勝したモデル。 ・5 層の畳み込み層及びプーリング層など、それに続く 3 層の全結合層からなるモデル ・過学習対策としてサイズ 4096 の全結合層の出力にドロップアウトが使用されている ・これ以降、さらに深い層のネットワークにより、誤認識率が減少している 演習問題 (1) 連鎖率の原理を使い、dz/dx を求めよ。 z = 𝑡𝑡2 𝑡𝑡 = 𝑥𝑥 + 𝑦𝑦 𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 = 𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 = 2𝑡𝑡 ∙ 1 = 2(𝑥𝑥 + 𝑦𝑦) (2) シグモイド関数を微分したとき、入力値が 0 のときに最大値をとる。 その値として正しいものを選択肢から選べ。 f(𝑥𝑥) = 1 1 + exp(−𝑥𝑥) f′(x) = f(𝑥𝑥)(1 − f(𝑥𝑥)) f′(0) = f(0)�1 − f(0)� = 0.5(1 − 0.5)=0.25 よって、(2)0.25 である。 ドロップアウトを使用
  • 6. (3) 重みの初期値に 0 を設定すると、どのような問題が発生するか。簡潔に説明せよ。 全ての値が同じ値で伝わるため、パラメータチューニングが行われなくなる。 そのため、学習の概念がなくなる。 0 に限らず、重みの初期値を同じ値に設定してはいけない。 (4) 一般的に考えられるバッチ正規化の効果を 2 点あげよ。 ・計算の高速化 ・勾配消失が起こりにくい バッチ正規化は活性化関数に導入することで、効果が表れる。 (5) 下記の問題に解答せよ 配列を下記のように考える。 したがって、正解は(1)となる (6) モメンタム・AdaGrad・RMSprop の特徴をそれぞれ簡潔に説明せよ。 ・モメンタム:勾配降下法と比較して、収束までの時間が速い ・AdaGrad:徐々に学習率を小さくする手法で、最適値に近づきやすい ・RMSprop:パラメータの調整が少なくてよい
  • 7. (7) 下記の問題に解答せよ。 リッジ回帰は L2 正則化であり、限りなくパラメータを 0 に近づける手法である。 L2 ノルムは誤差関数に加算される。 (b),(c)は明らかに異なることにより、正解は(a)となる。 (8) 下図について、L1 正規化を表しているグラフはどちらか答えよ。 L1 正則化はスパース化する(一部のパラメータの値を 0)にすることが目的である。 つまり、あるパラメータが 0 になっていることを示すグラフを選べばよい。 軸と交点があるグラフを選べばよいので、L1 正則化は右側となる (9) 下記の問題に解答せよ。 L2 正則化は下記のように表現できる。 E𝐿𝐿2(𝒘𝒘) = E(𝒘𝒘) + 1 2 𝜆𝜆‖𝒘𝒘‖2 𝜕𝜕𝐸𝐸𝐿𝐿2 𝜕𝜕𝒘𝒘 = 𝜕𝜕𝜕𝜕 𝜕𝜕𝒘𝒘 + 𝜆𝜆𝒘𝒘
  • 8. よって、(4)が正解となる。 (10)下記の問題に解答せよ。 L1 正則化は下記のように表現できる。 E𝐿𝐿2(𝒘𝒘) = E(𝒘𝒘) + 𝜆𝜆‖𝑤𝑤‖ 𝜕𝜕𝐸𝐸𝐿𝐿2 𝜕𝜕𝒘𝒘 = 𝜕𝜕𝜕𝜕 𝜕𝜕𝒘𝒘 + 𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆𝜆(𝒘𝒘) sign(a) = � −1, x < 0 1, x > 0 よって、(3)が正解となる。 (11)下記の問題に解答せよ。 上記にように画像の切り取りを考えればよいので、(4)が正解となる。
  • 9. (12)サイズ 6×6 の入力画像を、サイズ 2×2 のフィルタで畳み込んだ時の出力画像のサイ ズを答えよ。なおストライドとパディングは 1 とする。 OW = OH = 6 + 2 × 1 − 2 1 + 1 = 7 よって、出力画像は 7×7 である。 演習 2_1_network_dodified
  • 11.
  • 12. 【活性化関数を変化させたとき】 ①sigmoid ②relu ③Xaviel – sigmoid ④He-relu ①活性化関数が sigmoid のとき、勾配消失により学習を進めても正解率が上がらない ②活性化関数を sigmoid→relu にすると、勾配消失が解消され、学習が進むにつれて、 正解率が上昇し、9 割程度になることを確認。 ③初期値に Xaviel を導入することにより、学習が進むにつれて、正解率も上昇すること を確認。 ④初期値に He を導入することにより、学習が速くなり、250 回で 9 割を超える。 ④、⑤より 重みの初期値により、学習の仕方が大きくかわることを確認
  • 14. batch normalization あり batch normalization なし ・batch normalization により、学習がうまく効率的に進むことを確認
  • 15. 【活性化関数変更】 【初期値変更】 Relu Xaviel-sigmoid 2_2_1_vanishing gradient と同様に、活性化関数を relu に変更、重みの初期値に Xaviel を 導入することにより、正解率は上昇している。 2_4_optimizer ・SGD
  • 16. ・SGD ①batch normalization を True にしたとき SGD SGD+batch normalization ②活性化関数を sigmoid→relu に変更 ③初期値に Xaviel を導入 Relu Xaviel SGD+活性化関数:sigmoid のとき、勾配消失または局所解に停留していることによ り、学習を進めても正解率が上昇していない。 ①batch normalization により、正解率は 6 割程度上昇 ②活性化関数を relu に変更することにより、勾配消失が解消され、正解率が 8 割程度に上 昇する。 ③今回は初期値に Xavier を導入せいているが、効果なし。 Momentum
  • 18. ・RMS Prop ・Adam 訓練正解率:0.98 訓練正解率:0.95 テスト正解率:0.95 テスト正解率:0.94 最適化手法を SGD から Momentum, AdaGrad, RMS Prop や Adam に変えること により、局所解に停留するなどの欠点を解消できるため、正解率が 9 割以上に上昇 2_5_overfitting
  • 19. 訓練正解率:1.0 テスト正解率:0.76 訓練正解率は 100%に対して、テスト正解率は 70%で 24%の差分があり、過学習している。 L1 ノルム、L2 ノルムやドロップアウト導入することで過学習が抑制できると言われてい るため、以降で確認する。 L2 ノルム
  • 20. λ=0.1 λ=0.3 λ=0.01 訓練正解率:0.88 訓練正解率:0.5 訓練正解率:1 テスト正解率:0.7 テスト正解率:0.4 テスト正解率:0.76 正解率差分:0.18 正解率差分:0.1 正解率差分:0.19 ・λ=0.1 のとき、訓練正解率は落ちているが、訓練正解率とテスト正解率の差は 25%→18% に低下しているため、L2 ノルム導入により、過学習が抑制されている。 ・λ=0.3 のとき、正則化強度が大きすぎて学習がうまくできていない。 ・逆にλ=0.01 のとき、正則化強度が小さすぎて、過学習を抑制する機能を果たしていない。 →最適な正規化強度λを設定することが重要 L1 ノルム 訓練正解率:0.99 テスト正解率:0.75
  • 22. 【dropout_ratio の値変更】 ・dropout ratio=0.15 ・dropout ratio=0.15 訓練正解率: 0.9 訓練正解率:0.3 テスト正解率: 0.69 テスト正解率:0.25 ・dropout ratio=0.15 のとき過学習が抑制される。 ・dropout ratio=0.3 にすると訓練正解率が 30%に落ち込むため、モデルによって最適な値 を設定する必要がある。 【最適化手法を変更したとき】 ・Momentum ・AdaGrad ・Adam 訓練正解率:1 訓練正解率:1 訓練正解率:1 テスト正解率:0.79 テスト正解率:0.79 テスト正解率:0.79 最適化手法を変更したとしても、訓練正解率とテスト正解率の差は 20%程度。 【最適化手法と dropout ratio を変更したとき】 ・Adam, dropout ratio=0.15 ・Adam, dropout ratio=0.15 訓練正解率:1 訓練正解率:1 テスト正解率:0.79 テスト正解率:0.715
  • 24. ①filter_h=3, filter_h=3, stride=1, pad=0 ②filter_h=2, filter_h=2, stride=2, pad=0 column to image out_h, out_w = (4+2*0-3)/1+1=3 行:2×2×2=8 列:3×3×1=9 col : 8×9 out_h, out_w = (4+2*0-2)/2+1=2 行:2×2×2=8 列:2×2×1=4 col : 8×9
  • 29. 【結果】 ①conv - relu - pool - conv - relu - pool - affine - relu - affine - softmax ・訓練正解率:0.981 ・テスト正解率:0.948 ②conv - relu - conv - relu - pool - affine - relu - affine – softmax(①から pool を外した場合) ・訓練正解率:0.988 ・テスト正解率:0.943 2 層にしたとき、正解率は 94%程度で、①と②ではほとんど差異は見られない。
  • 31.
  • 33. レポート:深層学習(後編 1) 要点 Section1:再帰型ニューラルネットワークの概念 1-1 RNN 全体像 1-1-1 RNN とは 時系列データに対応可能なニューラルネットワーク 1-1-2 時系列データについて ・時間的順序に追って一定間隔毎に観察され、しかも相互に統計的依存関係が認められる ようなデータの系列 ・時系列データの例:音声データ、テキストデータ 1-1-3 RNN について ・RNN の全体像 時刻 t の中間層は過去の保持した時刻 t-1 の中間層を参照する(再帰構造) ・RNN は下記の数式により表現される 𝒖𝒖𝒕𝒕 = 𝑾𝑾𝒊𝒊 𝒊𝒊 𝒙𝒙𝒕𝒕 + 𝑾𝑾𝒛𝒛𝒕𝒕− 𝟏𝟏 + 𝒃𝒃 (活性化関数前の中間層) 𝒛𝒛𝒕𝒕 = 𝑓𝑓(𝑾𝑾𝒊𝒊 𝒊𝒊 𝒙𝒙𝒕𝒕 + 𝑾𝑾𝒛𝒛𝒕𝒕− 𝟏𝟏 + 𝒃𝒃) (活性化関数後の中間層) 𝒗𝒗𝒕𝒕 = 𝑾𝑾𝒐𝒐𝒐𝒐𝒐𝒐 𝒛𝒛𝒕𝒕 + 𝒄𝒄 (活性化関数前の出力層) 𝒚𝒚𝒕𝒕 = 𝑔𝑔(𝑾𝑾𝒐𝒐𝒐𝒐𝒐𝒐 𝒛𝒛𝒕𝒕 + 𝒄𝒄) (活性化関数前の出力層)
  • 34. 1-2 BPTT 1-2-1 BPTT RNN においてのパラメータ調整法の一種 1-2-2 BPTT の数学的記述 ・W(in), W(out),W, b, c は次式により、最適化される。 (1)更新量の算出 (2) W(in), W(out),W, b, c の更新式 Section2: LSTM 全体像 ・RNN の欠点 (1) 時系列データの長期に依存関係をうまく学習することができない。 (2) 勾配消失または勾配爆発が起こりやすい ⇒(1) (2)の問題を解決するために、LSTM や GRU のレイヤーが使われる。 ・RNN から LSTM の変化 下記の 2 点があげられる。 (1) 誤差を内部にとどませるためのセルの追加(CEC) (2) 必要な情報を必要なタイミングで保持・消去させるためのゲートの追加 2-1 CEC ・勾配消失および勾配爆発を解決するために追加。 下記のように勾配が 1 になるような仕組みになっている。 𝜕𝜕𝜕𝜕 𝜕𝜕𝑐𝑐𝑡𝑡−1 = 𝜕𝜕𝜕𝜕 𝜕𝜕𝑐𝑐𝑡𝑡 ・入力データについて、時間依存性に関係なく一律であるため、NN の学習特性が ない ⇒これを解決するために入力ゲートと出力ゲートを導入。
  • 35. 2-2 入力ゲートと出力ゲート ・CEC の時間依存性に関係なく一律であるため、NN の学習特性がない。 この問題を解決するために入力ゲートと出力ゲートを導入 𝒊𝒊(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒊𝒊 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒊𝒊 + 𝒃𝒃𝒊𝒊) ・・・①(入力ゲート) 𝒂𝒂(𝑡𝑡) = tanh(𝒙𝒙𝒕𝒕 𝑾𝑾𝒂𝒂 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒂𝒂 + 𝒃𝒃𝒂𝒂)・・・② 𝒐𝒐(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒐𝒐 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒐𝒐 + 𝒃𝒃𝒐𝒐)・・・③(出力ゲート) 𝒇𝒇(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒇𝒇 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒇𝒇 + 𝒃𝒃𝒇𝒇) ・・・④(忘却ゲート) 𝒄𝒄(𝑡𝑡) = 𝒇𝒇(t)⨀𝒄𝒄𝒕𝒕−𝟏𝟏 + 𝒊𝒊(t)⨀𝒂𝒂(𝑡𝑡)・・・⑤(CEC) 𝒉𝒉(𝒕𝒕) = 𝒐𝒐(𝑡𝑡)⨀tanh(𝒄𝒄(𝑡𝑡))・・・⑥(隠れ状態) i(t):入力ゲート,o(t):出力ゲート a(t):CEC への入力層 ・①~③、⑥式より、入力・出力ゲートを追加することで、それぞれのゲートへの 入力値の重みを、重み行列 W,U で可変可能のため、上記の CEC(⑤式)の問題を解決 できる 2-3 忘却ゲート ・CEC には過去の情報がすべて保管されるため、忘却ゲートを導入 𝒇𝒇(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒇𝒇 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒇𝒇 + 𝒃𝒃𝒇𝒇) ・・・(忘却ゲート) 𝒄𝒄(𝑡𝑡) = 𝒇𝒇(t)⨀𝒄𝒄𝒕𝒕−𝟏𝟏 + 𝒊𝒊(t)⨀𝒂𝒂(𝑡𝑡)・・・(CEC) ・過去の情報が要らなくなった場合、そのタイミングで情報を忘却することが忘却 ゲート導入より可能になった 2-3 覗き穴結合 ・CEC 自身の値に重み行列を介して伝播可能にした構造 例:入力ゲート 𝒊𝒊(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒊𝒊 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒊𝒊 + 𝒄𝒄𝒕𝒕−𝟏𝟏 𝑽𝑽𝒊𝒊 + 𝒃𝒃𝒊𝒊) ct-1Vi が覗き穴にあたり、Vi がその重みである ・覗き穴の導入により、CEC の情報を他のノードに伝播させる、あるいは任意のタイミン グで忘却することが可能となる
  • 36. Section3: GRU ・LSTM はパラメータが多く、計算負荷が高くなるという欠点がある。これらの欠点を解 消するための手法として GRU があげられる。 ・LSTM は入力ゲート、出力ゲート、忘却ゲートの 3 つのゲートがあるが、GRU はリセ ットゲート、アップデートである。 ・全体像 ・下記のように数式で表現できる 𝒛𝒛(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒛𝒛 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒛𝒛 + 𝒃𝒃𝒛𝒛) ・・・①(アップデートゲート) 𝒓𝒓(𝑡𝑡) = σ(𝒙𝒙𝒕𝒕 𝑾𝑾𝒓𝒓 + 𝒉𝒉𝒕𝒕− 𝟏𝟏 𝑼𝑼𝒓𝒓 + 𝒃𝒃𝒓𝒓)・・・②(リセットゲート) 𝒉𝒉�𝒕𝒕 = tanh(𝒙𝒙𝒕𝒕 𝑾𝑾𝒙𝒙 + (𝒓𝒓(𝑡𝑡)⨀𝒉𝒉𝒕𝒕− 𝟏𝟏)𝑼𝑼𝒙𝒙 + 𝒃𝒃𝒙𝒙) ・・・③ 𝒉𝒉𝒕𝒕 = (𝟏𝟏 − 𝒛𝒛)⨀𝒉𝒉𝒕𝒕− 𝟏𝟏 + 𝒛𝒛⨀𝒉𝒉�𝒕𝒕・・・④ ・LSTM と GRU どちらを使うべきかの判断はタスクやハイパーパラメータの調整による Section4: 双方向 RNN ・過去の情報でなく、未来の情報を加味することで未来の情報を向上させるためのモデル ・文章の推敲や機械翻訳などに応用される ・オンラインでの機械翻訳はできない
  • 37. Section5: Seq2Seq 全体像 ・入力の時系列データを別の時系列データ(出力)に変換するモデル ・Encorder-Decorder モデルとも呼ばれる Encorder: 入力データをエンコードする Decorder: エンコードされたデータをデコードする ・応用として機械対話や機械翻訳があげられる 5-1 Encorder RNN ・LSTM を利用して、時系列データを隠れ状態ベクトル(固定長ベクトル)に変換し、 Decorder にそのベクトルを渡す 上記の□が Decorder に渡される。 ・Encorder は Embedding レイヤーと LSTM レイヤーからなる。 Embedding レイヤー 各時系列の文字データ(文字 ID)を文字ベクトルに変換する。 変換された文字ベクトルが LSTM に入力される。 5-2 Dncorder RNN ・Encorder から隠れ状態ベクトルを受け取り、目的とする別の文字列を出力 ・Decorder は Embedding レイヤー、LSTM、Affine 層、softmax 関数(学習時)からな る。生成時は softmax 関数でなく argmax ブロックとなる。 つまり生成時は Affine 層の出力するスコアを対象に、その中から最大の値を持つ文字 ID を取り出す Encorder Decorder
  • 38. 5-3 HRED ・Seq2Seq のエンコーダとデコーダに加えて、文脈を学習する RNN を追加した構造。 Seq2Seq は一問一答しかできなかったが、過去の n-1 個の発話から次の発話を生成でき るようになり、過去の発話の履歴を加味した応答ができる。 ⇒Seq2Seq+Context RNN Context RNN:Encorder のまとめた各文章の系列をまとめて、これまでの会話コンテ キスト全体を表すベクトルに変換する構造 ・確率的な多様性が字面になく、会話の流れに多様性がないため、短く情報量に乏しい 返答をしがちである。 5-4 VHERD ・HERD の欠点の確率的な多様性が字面になく、会話の流れに多様性がないため、 短く報量に乏しい返答をしがちな問題を解決するために、VAE の潜在変数の概念を追加 した手法 5-5 VAE 5-5-1 オートエンコーダ ・教師なし学習の1つ ・入力データから潜在変数 z に変換するニューラルネットワークが Encorder。 潜在変数 z は入力データの特徴を低次元で表現する(次元削減)。 ・潜在変数 z を入力として元画像を復元するニューラルネットワークが Decorder。 Decoeder の出力が入力データと同等となるように学習を進める。 オートエンコーダの構造
  • 39. 5-5-2 VAE ・オートエンコーダの潜在変数 z に確率分布 N(0,1) (ガウス分布で平均 0,分散 1)を導入 したもの ・潜在変数 z に確率分布に確率分布を導入することで、新しいデータを作成できる Section6:word2vec ・RNN では単語のような可変長の文字列は NN で与えることができないため、 固定長形式で単語を表現できるように word2vec を導入 ・単語を固定長のベクトルとして表現することにより、ベクトル間の距離やベクトル間の 距離や関係として単語の意味を表現 ・word2vec の手法として、one-hot ベクトルがあげられ、ひとつの要素が 1 で、それ以外 は 0 となるベクトル ・大規模のデータの分散表現の学習が現実的な計算速度とメモリ量で実現可能にする Section7:attention ・Seq2seq ではどんなに長い入力データでも Encorder の出力を固定長ベクトルにしなけ ればならない課題があり、それを解決するために attention が導入される。 ・Seq2Seq では LSTM の最後の隠れ状態を Decorder に渡していたが、attention の場 合、各時刻の隠れ状態ベクトルをすべて Decorder に渡す。このことにより、入力文に 比例した情報をエンコードすることが可能になる ・attention の応用として、Transformer があげられる。 演習問題 (1)サイズ 5×5 の入力画像を、サイズ 3×3 のフィルタで畳み込んだ時の出力画像のサイズ を答えよ。なお、ストライドは 2、パディングは 1 とする。 OH = OW = 5+2×1−3 2 + 1 = 3 よって出力画像は 3×3 である。 (2)RNN ネットワークには大きく分けて 3 つの重みがある。 1 つは入力から現在の中間層を定義する際にかけられる重み、1 つは中間層から出力を 定義する際にかけられる重みである。残り 1 つについて説明せよ 中間層から中間層にかけられる重み。 これが再帰型ニューラルネットワークの大きな特徴である。
  • 40. (3)下記の問題を解答せよ。 W の次元が embed_size, 2*embed_size である。 node[‘left’], node[‘right’]の次元は embed_size である。 v を算出するための W と node[‘left’], node[‘right’]の行列計算させるためには、 node[‘left’], node[‘right’]を結合して、次元を 2*embed_size にする必要がある。 そのため、np.concatenate()を使用して結合する必要がある。 正解は(2) W.dot(np.concatenate([‘left’], [‘right’]))となる。 (4)下図の y1 を x・s0・s1・win・w・wout を用いて数式で表せ。 ※バイアスは任意の文字で定義せよ。 ※また中間層の出力にシグモイド関数 g(x)を作用させよ。 中間層の S1 は下記のように表現できる。 𝑆𝑆1 = 𝑔𝑔(𝑊𝑊(𝑖𝑖 𝑖𝑖) 𝑥𝑥1 + 𝑊𝑊𝑆𝑆0 + 𝑏𝑏0) b0 は任意のバイアス項 出力 y1 は下記のように表現できる。 y1 = 𝑊𝑊𝑜𝑜𝑜𝑜𝑜𝑜 𝑆𝑆1 + 𝑏𝑏1 b1 は任意のバイアス項
  • 41. (5)下記の問題に解答せよ。 𝜕𝜕𝜕𝜕 𝜕𝜕𝑢𝑢𝑡𝑡 = 𝜕𝜕𝜕𝜕 𝜕𝜕𝑣𝑣𝑡𝑡 𝜕𝜕𝑣𝑣𝑡𝑡 𝜕𝜕𝑢𝑢𝑡𝑡 = 𝑓𝑓′(𝑢𝑢𝑡𝑡)𝑊𝑊(𝑜𝑜𝑜𝑜𝑜𝑜) 𝑇𝑇 𝛿𝛿 𝑜𝑜𝑜𝑜𝑜𝑜,𝑡𝑡 = 𝛿𝛿𝑡𝑡 上記の式は①にあたる。 今回、𝑓𝑓′(𝑢𝑢𝑡𝑡) = 1 𝜕𝜕𝜕𝜕 𝜕𝜕𝑢𝑢𝑡𝑡−1 = 𝜕𝜕𝜕𝜕 𝜕𝜕𝑢𝑢𝑡𝑡 𝜕𝜕𝑢𝑢𝑡𝑡 𝜕𝜕𝑢𝑢𝑡𝑡−1 = 𝛿𝛿𝑡𝑡 { 𝜕𝜕𝑢𝑢𝑡𝑡 𝜕𝜕𝑧𝑧𝑡𝑡−1 𝜕𝜕𝑧𝑧𝑡𝑡−1 𝜕𝜕𝑢𝑢𝑡𝑡−1 } = 𝛿𝛿𝑡𝑡 {𝑊𝑊𝑓𝑓′(𝑢𝑢𝑡𝑡−1)} 今回、𝑓𝑓′(𝑢𝑢𝑡𝑡−1) = 1で、上記の問題で W は U に当たる。 したがって、②は delta_t と U の行列計算をすればよい。 正解は(2)delta_t.dot(U)となる。 (6) 下記の問題に解答せよ。 勾配のノルマが閾値を超えたら、閾値でガードする。 rate=閾値 / ノルムのため、 正解は(1)gradient*rate である。 ① ②
  • 42. (7)以下の文章を LTSM に入力し空欄に当てはまる単語を予測したいとする。 文中の「とても」という言葉は空欄の予測においてなくなっても影響を及ぼさないと考 えられる。このような場合、どのゲートが作用すると考えられるか。 忘却ゲート:不必要な情報を保存しないようにするためのゲート (8)下記の問題に解答せよ。 記憶ゲートは下記のように表現できる。 𝒄𝒄𝑡𝑡 = 𝜎𝜎(𝒇𝒇⨀𝒄𝒄𝑡𝑡−1 + 𝒈𝒈⨀𝒊𝒊) したがって、正解は(3)input_gate*a+forget_gate*c である。 (9)LSTM と CEC が抱える課題について、それぞれ簡潔に述べよ。 LSTM:パラメータが多く、計算負荷が高い。 CEC : 勾配 1 で伝えるため、重みの概念がなくなり、深層学習の意味をなさない。 そのため、忘却ゲートを導入する。
  • 43. (10)下記の問題に解答せよ。 GRU の隠れ層は下記のように表現される。 𝒉𝒉� = tanh(𝒙𝒙𝑡𝑡 𝑊𝑊𝑥𝑥 + (𝒓𝒓⨀𝒉𝒉𝑡𝑡−1)𝑊𝑊ℎ + 𝒃𝒃) 𝒉𝒉𝑡𝑡 = (𝟏𝟏 − 𝐳𝐳)⨀𝒉𝒉𝑡𝑡−1 + 𝒛𝒛⨀𝒉𝒉� r : リセットゲート, z : アップデートゲート したがって、正解は(4)(1-z)*h + z*h_bar である。 LSTM と異なり、GRU はゲートが 2 つ。 モデルにより、LSTM か GRU を使ったほうが判断する必要あり。 (11)LSTM と GRU の違いを簡潔に述べよ。 ・パラメータ数が異なる。 LSTM は多いが、GRU は少ない。 ・ゲート数が異なる。 LSTM:入力ゲート、出力ゲート、忘却ゲート GRU : リセットゲート、アップデートゲート (12)下記の問題に解答せよ V は順方向と逆方向の重みを組み合わせたもので、行列の次元は output_size× 2*hidden_size である。ys=hs.dot(V.T)のため、hs の次元は 1×2*hidden_size にする必要 があるため、正解は(4)となる。
  • 44. (13)下記の問題に解答せよ。 Seq2seq は RNN を用いた Encoeder-Decorder モデルである。 正解は(2)である。 (1)は双方向 RNN、(4)は LSTM である。 (14)下記の問題に解答せよ。 w は one-hot ベクトルで Embedding 層により、別の特徴量に変換される。 Ew より変換されるため、正解は(1)E.dot(w)となる。 (15)seq2seq と HRED, HRED と VHRED の違いを簡潔に述べよ。 ・seq2seq と HRED の違い 一問一答しかできないものを改善した。前回の文章に即して解答することが可能に なった。 ・HRED と VHRED の違い 同じ返答を防止するために、VAE の潜在変数に確率分布を導入。 (16)VAE に関する下記の説明文中の空欄にあてはまる言葉を答えよ・ 自己符号器の潜在変数に__を導入したもの。 答え:確率分布
  • 45. (17)RNN と word2vec, seq2seq と Attention の違いを簡潔に述べよ。 ・RNN と woed2vec の違い 重みの生成ロジックが大きく異なる RNN:ボキャブラリ×ボキャブラリの重み行列が必要 word2vec:ボキャブラリ×任意の単語ベクトルの重み行列 そのため、現実的な計算速度とメモリ量が実現可能となった。 ・seq2seq と Attention の違い 長い文章、可変長の文章でも対応可能。 Attention では入力と出力のどの単語が関連しているかの関連度を学習する仕組みを 導入しているため、精度が向上する。 実装演習 3_1_simple_RNN
  • 46.
  • 47. 【結果】 ①weight_ini_std の値を変更したとき ・weight_init_std=1 ・weight_init_std=0.3 ・weight_init_std=1.5 weight_ini_std の値によって収束の仕方が変わる。 適切なパラメータを与えることが重要。 ②learning_rate を変える ・learning late=0.01 ・learning late=0.1 ・learning late=0.3 ・学習率が小さい場合、学習が進まないため、loss が 0 に収束しない ・学習率=0.3 にしたとき、2000 回程度で収束するようになる。 学習率を大きくすると、発散する可能性があるので、適正なパラメータを設定する 必要がある。
  • 49.
  • 50. 【結果】 ①iters_num = 100 学習回数を 500 回から 100 回に減らしたことにより、精度が落ちる。
  • 51. ②maxlen=5 で iters_num=500, iters_num=3000 に変えたとき ・iters_num=500 ・iters_num=3000 学習回数を上げることにより、精度があがっていることを確認。
  • 52. レポート:深層学習(後編 2) Tensorflow の実習 1)Tensorflow とは Tensorflow はニューラルネットワークのライブラリーであり、1 番ユーザが多い。 一般的に研究などではフルスクラッチで実装されることはなく、ライブラリー使われ ことがほとんどである。 2)Tensorflow の基本事項 ・tf.constant : 定数設定 ・tf.variable : 変数定義 NN では重みで使用される。 ・tf.placeholder : 値を収納する。自由自在に値の変更可能 ・変数の初期化:tf.global_variables.initilizer()より、定義された変数が初期化される。 ・Session を run しないと実行されない。 3)実装演習 4_1_tensorflow_codes (1)Constant ・Session.run をしないと、値が更新されないことを確認。
  • 54. モデルの回帰:y=3x+2 実行結果 (4)-1 noise の値の変更 ・noise=0.3, ・noise=1 ・真値に対して、ノイズが大きいために外れ値が多くなり、noise=0.3 と比較して、 誤差が大きくなっていることを確認できた
  • 55. (4)-2 d の値を変更したとき ・noise=0.3 にして、d を y=-8x+5 の値を変化させたとき d を変更しても同様に、精度の高い回帰直線が得られることを確認できた。 (5)非線形回帰
  • 56. モデルの回帰:y=-0.4x3+1.6x2-2.8x+1 (5)-1 noise の値を変更したとき ・noise=0.05, ・noise=0.5, 線形回帰と同様に、ノイズが大きくなることにより外れ値が多くなることにより、誤差が大 きくなっている。 (5)-2 d の値を変更したとき ・noise=0.05 にして、d を y=0.5x3-1.5x2-0.3x+1.5 の値を変化させたとき 線形回帰と同様に d を変更しても、精度の高い回帰直線が得られることを確認できた。
  • 57. (5)-3 モデルを y=30x2+0.5x+0.2 にし、誤差が収束するように iters_num や learning_rate を調整した場合 ・iters_num=10000, learning_rate=0.001 真の値と非線形回帰により算出した曲線が不一致。 要因として、イテレーション回数が少ない もしくは 学習率が小さすぎることがあげら れる。 ・iters_num=10000 →50000 にした場合 イテレーション回数を増加させてことにより、真値と一致。 しかし、イテレーション回数を増加させると実行時間が長くなるため、学習率を大きくする ことにより、収束時間が短縮されると考える。 次に、学習率を 0.001→0.01 に変化させてみる。 ・learning_rate=0.001→0.01 学習率 0.001→0.1 にすることで、真値と回帰が一致。 2000 回で収束したことより、学習率を大きくすることは有効であることを確認できた。 (6)分類 1 層(mnist)
  • 58. (6)-1 x:入力値, d:教師データ, W:重み, b:バイアス をそれぞれ定義しよう. 下記のように定義 1 層の場合、正解率は 86%程度である。
  • 59. (7)分類 3 層 ・隠れ層を 1→3 にしたとき 隠れ層を増やしたことにより、正解率が 86%→90%に上昇。 隠れ層を増やすことによる、精度アップができることがわかる。
  • 62. ・dropout:0 訓練正解率:0.95 テスト正解率:0.94 今回のデータ、モデルでは正解率、汎化性能で違いは見られなかった。 一般的に dropout を導入することにより、汎化性能が上がると言われている。 4_3_keras_codes (1)線形回帰 【結果】
  • 63. (2)単純パーセプトロン (2)-1 np.random.seed(0)を np.random.seed(1)に変更した場合 ・乱数設定の変更により、初期値の重みが異なるため loss の値、テストの結果が異なる。 重みの初期値設定は精度を上げるのに重要なパラメータであることが確認できた。 (2)-2 エポック数を 100 に変更 学習回数を 30 から 100 に増やすことによって、loss の値も低下し、テストでも正しく判定 できていることを確認。 (2)-3 AND 回路、XOR 回路に変更 ・OR 回路
  • 64. ・XOR 回路 AND 回路の場合、正しく判定できているが XOR 回路は正しく判定できない。 XOR 回路を正しく判定するには、多層にすることにより表現力を上げる必要がある。 (2)-4 OR 回路に変更して、バッチサイズを 10 に変更した場合 バッチで学習しても、正しく判定できることを確認できた (2)-5 エポック数を 300 に変更したとき loss の値はエポック回数:300 回 100 回で大差はないので、100 回で十分だと考えられる (3)分類(iris)
  • 65. (3)-1RNN の出力活性化関数を sigmoid に変更 ・中間層を sigmoid に変化させたとき、特に訓練の正解率が relu と比較して低下 (relu:0.90, sigmoid:0.83) ・sigmoid を活性化関数したことにより、勾配消失が起こりやすくなるため、正解率が上昇 しなかったと考えられる。 ・過学習の傾向がみられる。 (3)-2 SGD を import し optimizer を SGD(lr=0.1)に変更 学習率を大きくすることにより、テスト正解率は振動し、収束しない。 学習率を小さくしたならば、振動は低減できると考えられる。 あるいは最適化手法を SGD から Adagrad や Adam にすることにより、解消できると思わ れる。
  • 66. (4)分類(mnist) (3)-1 load_mnist の one_hot_label を False に変更したとき Error になること確認。 categorical_crossentropy は正解ラベルが one hot label をもとに計算するので Error が発生。 (3)-2 誤差関数を sparse_categorical_crossentropy, Adam の値を変更 ・CCN、dropout, 最適化手法を Adam にすることにテスト正解率は 99%. ・dropout 導入により、過学習は見られない。
  • 68. (4)-2 RNN の出力活性化関数を sigmoid に変更 sigmoid にすることにより勾配消失が起こりやすくなり、テスト正解率は減少 (4)-3 RNN の出力活性化関数を tanh に変更 テスト正解率は 1 になり、sigmoid と比較して上昇。 (4)-4 最適化方法を adam に変更(活性化関数:sigmoid) Adam にすることによって、テスト正解率が 63%から 92%に上昇。 (4)-5 RNN の入力 Dropout を 0.5 に設定(活性化関数:relu) (4)-6 RNN の再帰 Dropout を 0.3 に設定(活性化関数:relu) (4)-5,(4)-6 より、dropout を導入することで正解率が減少。RNN は 1 層で重みの数は少な いため、正解率が減少したと考える。
  • 69. (4)-7 RNN の unroll を True に設定(活性化関数:relu) Unroll の導入により、正解率の上昇が確認できた。 強化学習 要点 (1)強化学習とは ある環境下で、目的とする報酬(スコア)を最大化するかためにエージェントがどのような 結果をとっていけばよいか学習することである。 応用例として、囲碁の AlphaGo やロボットの歩行制御などで強化学習が使われている。 (2)探索と利用のトレードオフ 探索回数が少ない場合、報酬が最大となる行動が特定できない。 探索回数を増やした場合、最大となる行動を見つけることできるが、利用機会が減少して しまう→トレードオフの関係 この問題を解決するための方法とすて、ε-greedy 法があげられる。 ε-greedy 法:確率εで無作為に行動を選択し、確率 1‐εで greedy 法より、行動 を選択する手法 (3)教師なし・教師あり学習と強化学習の違い 教師なし・教師なし学習あり学習 データに含まれるパターンを見つけ出す及びそのデータから予測するのが目的 強化学習
  • 70. 報酬が最大となる方策を見つけ出すのが目的 (4)強化学習の数式化 ・状態価値関数:ある状態での価値を表す場合に使用される 𝑣𝑣𝜋𝜋(𝑠𝑠) = � 𝜋𝜋(𝑎𝑎|𝑠𝑠) 𝑎𝑎 � 𝑝𝑝(𝑠𝑠′|𝑠𝑠, 𝑎𝑎)[𝑟𝑟(𝑠𝑠, 𝑎𝑎, 𝑠𝑠′) + 𝛾𝛾𝑣𝑣𝜋𝜋(𝑠𝑠′)] 𝑠𝑠′ π(a|s):方策、①平均報酬 ②割引報酬和である。 ・行動価値関数:状態と価値関数を組み合わせた価値を表す場合に使用される 𝑣𝑣𝜋𝜋(𝑎𝑎|𝑠𝑠) = � 𝑝𝑝(𝑠𝑠′|𝑠𝑠, 𝑎𝑎)[𝑟𝑟(𝑠𝑠, 𝑎𝑎, 𝑠𝑠′) + 𝛾𝛾𝑣𝑣𝜋𝜋(𝑠𝑠′)] 𝑠𝑠′ ・方策勾配法 方策をモデル化して最適化する手法として、方策勾配法が用いられる。 𝜃𝜃(𝑡𝑡+1) = 𝜃𝜃(𝑡𝑡) + 𝜖𝜖∇𝐽𝐽(𝜃𝜃) 繰り返し計算により、方策の最適を行う。 勾配部分は下記のように表現される。 ∇𝜃𝜃 𝐽𝐽(𝜃𝜃) = E𝜋𝜋𝜃𝜃 ��∇𝜃𝜃 𝑙𝑙𝑙𝑙 𝑙𝑙𝜋𝜋𝜃𝜃(𝑎𝑎|𝑠𝑠)𝑄𝑄𝜋𝜋(𝑠𝑠, 𝑎𝑎)�� ① ②