E資格(JDLA Deep Learning for ENGINEER 2019 #2)対策として学習した深層学習の分野のうち、ゲート付きRNNのひとつGRU(Gated Reccurent Unit)を振り返ります。
GRU(Gated Reccurent Unit)
1.GRUとは何か
LSTMと同様にシンプルなRNNの勾配爆発や、勾配消失の欠点を補うために開発されたゲート付きRNNです。
LSTMよりゲート数が少ない構成となっており、その分パラメータ数も少なく計算量が少なくて済みます。
では、今回も全体像から構成要素まで、順に振り返っていきたいと思います。
2.GRU全体像
GRUの全体像は以下の図のような構成となっており、LSTMと違い、記憶セルもなく、ゲートも2つになっています。
では、構成要素を順に見ていきたいと思います。
3.リセットゲート(R)
過去の出力の要素を弱める程度を決めるゲートになります。
以下の式で程度が決まります。
入力()と、一つ前の出力()に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。
このことによって、過去の出力の要素を何割減にするかが決まります。
4.仮の出力()
入力()と一つ前の出力()にリセットゲートの値(R)をかけたものに重みをかけて、バイアスを足したものになります。
出力を求める前に一旦、仮の出力を求めます。
双曲線正接関数(tanh)を使い、正負に広がりを持った分布になります。
5.更新ゲート(Z)
出力する際に、一つ前の出力()と仮の出力()の混合の割合を決めるゲートになります。
以下の式で割合が決まります。
リセットゲートと同様、入力()と、一つ前の出力()に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。
6.出力する要素(ℎ𝑡)
最後に、 一つ前の出力()に更新ゲートの値(Z)をかけた値に、仮の出力()に1から更新ゲートを引いた値(1-Z)をかけた値を足して、出力を計算します。
以上が、GRUの振り返りになります。
つながりは、少し複雑ですが、LSTMよりパラメータも少なく計算量も少ないので、LSTMが理解した後では、比較的簡単に把握できました。
前回のLSTMとGRUは、E資格にもよく出題されるので、しっかり理解したうえで、試験に臨み、何とか攻略することができました。
今後、Kaggle等でも実際に試していきたいと思います。
2019年8月31日(土)にE資格を受験して、合格しました!
E資格対策として勉強の進め方や、参考書などをまとめました。
これから受験される方がいらっしゃいましたらご参考まで。
2019年3月9日(土)にG検定を受験し、見事合格できました!
受験の体験記や勉強法などを別のブログにまとめました。
これから受験される方がいらっしゃいましたらご参考まで。
【E資格対策に使った参考書】
- 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [ 松尾豊 ]
- 深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ]
- 徹底攻略ディープラーニングG検定ジェネラリスト問題集 [ 明松真司 ]
- 実践機械学習システム [ ウィリ・リチャート ]
- アルゴリズムクイックリファレンス 第2版 [ George T. Heineman ]
- 深層学習【電子書籍】[ 岩澤 有祐 ]
- 入門Python 3 [ ビル・ルバノビック ]
- PythonによるWebスクレイピング 第2版 [ Ryan Mitchell ]
- Think Stats第2版 プログラマのための統計入門 [ アレン・B.ダウニー ]
- 集合知プログラミング [ トビー・セガラン ]
- ITエンジニアのための機械学習理論入門 [ 中井悦司 ]