Report2
- 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 畳込み層
畳み込み層の演算
・入力データに対して、フィルタ(全結合層でいう重み)のウィンドウを一定間隔でストラ
イドさせることで適用。フィルタ要素と入力に対する積和演算を行う
- 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
𝜕𝜕𝒘𝒘
=
𝜕𝜕𝜕𝜕
𝜕𝜕𝒘𝒘
+ 𝜆𝜆𝒘𝒘
- 9. (12)サイズ 6×6 の入力画像を、サイズ 2×2 のフィルタで畳み込んだ時の出力画像のサイ
ズを答えよ。なおストライドとパディングは 1 とする。
OW = OH =
6 + 2 × 1 − 2
1
+ 1 = 7
よって、出力画像は 7×7 である。
演習
2_1_network_dodified
- 12. 【活性化関数を変化させたとき】
①sigmoid ②relu
③Xaviel – sigmoid ④He-relu
①活性化関数が sigmoid のとき、勾配消失により学習を進めても正解率が上がらない
②活性化関数を sigmoid→relu にすると、勾配消失が解消され、学習が進むにつれて、
正解率が上昇し、9 割程度になることを確認。
③初期値に Xaviel を導入することにより、学習が進むにつれて、正解率も上昇すること
を確認。
④初期値に He を導入することにより、学習が速くなり、250 回で 9 割を超える。
④、⑤より
重みの初期値により、学習の仕方が大きくかわることを確認
- 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
- 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%程度で、①と②ではほとんど差異は見られない。
- 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 は任意のバイアス項
- 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
- 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 をしないと、値が更新されないことを確認。
- 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)
- 59. (7)分類 3 層
・隠れ層を 1→3 にしたとき
隠れ層を増やしたことにより、正解率が 86%→90%に上昇。
隠れ層を増やすことによる、精度アップができることがわかる。
- 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𝜋𝜋𝜃𝜃
��∇𝜃𝜃 𝑙𝑙𝑙𝑙 𝑙𝑙𝜋𝜋𝜃𝜃(𝑎𝑎|𝑠𝑠)𝑄𝑄𝜋𝜋(𝑠𝑠, 𝑎𝑎)��
① ②