ラビットチャレンジ Day3 day4レポート
- 1. 深層学習 Day3Day4 レポート
深層学習 Day3
1:再帰型ニューラルネットワークの概念
再帰型ニューラルネットワークは、各入力は独立したものであると考える従来のニュー
ラルネットワークの仕組みに加え、中間層からの出力を再度入力として処理することで、
時間的なつながりを維持した状態で処理を可能にしたもの。RNN は自然言語分野で特に
よく用いられる。
確認テスト:サイズ 5×5 フィルタサイズ 3×3 ストライド 2 パディング 1 の畳み込
み出力サイズ
3×3
確認テスト:RNN の重みの 3 種類目は?
中間層から中間層に戻す際の重み
演習チャレンジ
(2)
確認テスト:dz/dx を求めよ
dz/dt =2t, dt/dx=1,
dz/dt・dt/dx = dz/dx = 2t = 2(x+y)
確認テスト:y1 を数式で表せ
y1=g(Wout・Win・x1+W・S0+b +c)
コード演習問題:
(2) delta_t.dot(U)
実装演習:leaning rate の違いによる変化を確認した
考察:learning rate を大きく設定した場合、非常に早く収束した。問題設定が
単純であったからか、発散することは無かった。
learning
rate
0.1 0.5 0.9
- 4. 形式で単語を記述する必要があったが、学習データからボキャブラリを作成し、ボキャブ
ラリ×任意の単語のベクトル次元数の重み行列を作成することにより、大規模データの分
散表現の学習が現実的な計算速度とメモリ量で実現可能にした。
7:Attention Mechanism
Seq2Seq では単語の数に関わらず固定次元ベクトルの中に入力しなければならなかったた
め、長い文章への対応が難しかった。そこで Attension Mechanism では「入力と出力のど
の単語が関連しているのか」の関連度を学習する事で、一文の中で何が重要かを見つけ不
要なものを排除した。
確認テスト:RNN と word2vec、seq2seq、Attention の違い
RNN:時系列データを処理するのに適したネットワーク
word2vec:単語の分散表現ベクトルを得る手法
seq2seq:一つの時系列データから別の時系列データを得るネットワーク
Attention:時系列データの中身に対して関連性に重みを付ける手法
深層学習 Day4
1:強化学習
長期的に報酬を最大化できるように環境の中で行動を選択できるエージェントを作るこ
とを目標とする機械学習の一分野。行動の結果として与えられる利益(報酬)をもとに、行
動を決定する原理を改善していくことを目的とする。ある方策をとった時の価値を評価す
る為、方策関数と価値関数を学習させる。
2:AlphaGo
AlphaGo は囲碁に対して教師あり学習+強化学習を適用したもの。AlphaGo Lee は
PolicyNet(方策関数)と ValueNet(価値関数)を組み合わせ、探索法としてモンテカルロ木探
索を採用している。PolicyNet は囲碁のマス数(19*19)と 48 チャンネルの入力を畳み込
み、活性化関数(ReLU)、出力の活性化関数は SoftMax を利用し、19*19 のマスのどこの
マスに打つのが良いのかを出すネットワーク。ValueNet は 19*19 と 49 チャンネル。手番
についてのチャンネルが PolicyNet から増えている。出力は現局面での勝率を-1~1 で表し
たものを出力する。そのため、畳み込みのあとに全結合層を 2 つ挟み、1 次元の出力とし
ている。
AlphaGo Zero は、PolicyNet と ValueNet を 1 つのネットワークとし、ResidualNet を導
入、モンテカルロ木探索の中から RollOut シミュレーションをなくしたもの。ResidualNet
はネットワークにショートカットを作成し、勾配爆発、勾配消失を抑える効果を狙ってい
る。このことで 100 層を超えるネットワークでの安定した学習が可能になった。
- 5. 3:軽量化・高速化技術
深層学習は多くのデータを使用したり、パラメータ調整の為に多くの時間を使用する
為、高速な計算が求められる。高速化技術としては、モデル並列、データ並列等の並列化
処理を行い、並列化したデータを並列処理が得意な GPU で処理させる GPGPU、モデル
の軽量化技術として、量子化(大量の重みパラメータの精度を落とす)、蒸留(学習済みの精
度の高いモデルの知識を軽量なモデルへ継承させる)、プルーニング(モデルの精度に寄与
が少なりニューロンを削減することでモデルの軽量化、高速化を行う)があげられる。
4:応用モデル
MobileNets:ディープラーニングのモデル軽量化、高速化、高精度化を目指した手法。
畳み込みレイヤーの計算量が多いことを解決する為、Depthwise
Convolution(入力マップのチャネルごとに特定のフィルタで畳み込みを実
施し、出力マップをそれらと結合。フィルタが減る分計算量が減る)と
Pointwise Convolution(1*1 のカーネルで畳み込む)を利用している。
DenseNet:DenseBlock で出力層に前の層の入力を足し合わせている。ResNet とよく似
ているが、ResNet はある層に与えられた信号をそれよりも少し上位の層の
出力に追加するスキップ接続により深いネットワークを訓練できるように
したもので、DenseNet は前方の層からの出力すべてが後方の層への入力
として用いられる。
Wavenet:音声生成モデル。時系列データに対して畳み込みを適用し、Dilated
convolution(層が深くなるにつれて畳み込むリンクを離し受容野を増やす)
を採用している。
確認問題:MobileNets の(い)と(う)に入る言葉
(い)H*W*C*K*K
(う)H*W*C*M
確認問題:Wavenet の(あ)、(い)に入る言葉
(あ)Dilated causal convolution
(い)パラメータ数に対する受容野が広い
5:Transformer
Seq2seq:系列を入力として系列を出力するモデル。
RNN のモデルでは間違いが起こると誤差が連鎖的に大きくなっていき、学
習が不安定になったり収束されなくなる問題があるが、TeacherForcing によ
って正解ラベルを直接 Decoder の入力にする等の工夫が考えられる。また
TeacherForcing では学習時と評価時に分布が異なってしまうデメリットがあ
- 6. るが、Scheduled Sampling 等と混ぜ合わせることで改善できる。
Transformer:エンコーダ、デコーダに RNN を使用せず、Attention のみを使用する
Attention は翻訳先の各単語を選択する際に翻訳元の文中の各単語の隠れ
状態を利用したもので、クエリに一致するキーを検索し、対応するバリ
ューを取り出す操作であるとみなすことができる。
実装演習:Seq2seq
Wheel のバージョン違いで動作しなかったようなので 0.34.1 に修正して実行した。
考察:プログラムを追っていくことで、Seq2seq による言語翻訳の動作の流れが非常に
よく理解できた。出来上がったものは、英語から全く別の日本語になってしまう
こともあるので信頼度は低いが、基本的な動きが理解できた点は良かった。
確認事項:
登録単語の確認
結果