俺人〜OREGIN〜俺、バカだから人工知能に代わりに頑張ってもらうまでのお話

俺って、おバカさんなので、とっても優秀な人工知能を作って代わりに頑張ってもらうことにしました。世界の端っこでおバカな俺が夢の達成に向けてチマチマ頑張る、そんな小さなお話です。現在はG検定、E資格に合格し、KaggleやProbSpaceのコンペに参画しながら、Pythonや機械学習、統計学、Dockerなどの勉強中です。学習したことをブログにアウトプットすることで、自分の身に着けていきたいと思います。まだまだ道半ばですが、お時間がありましたら見て行ってください。

E資格対策振り返り(深層学習-ゲート付きRNN-GRU)

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つになっています。

GRU
では、構成要素を順に見ていきたいと思います。

3.リセットゲート(R

過去の出力の要素を弱める程度を決めるゲートになります。
以下の式で程度が決まります。

リセットゲート
入力(f:id:kanriyou_h004:20200131000154p:plain)と、一つ前の出力(f:id:kanriyou_h004:20200131000249p:plain)に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。

このことによって、過去の出力の要素を何割減にするかが決まります。

4.仮の出力(

入力(f:id:kanriyou_h004:20200131000154p:plain)と一つ前の出力(f:id:kanriyou_h004:20200131000249p:plain)にリセットゲートの値(R)をかけたものに重みをかけて、バイアスを足したものになります。

出力を求める前に一旦、仮の出力を求めます。
双曲線正接関数(tanh)を使い、正負に広がりを持った分布になります。

 5.更新ゲート(Z

出力する際に、一つ前の出力(f:id:kanriyou_h004:20200131000249p:plain)と仮の出力()の混合の割合を決めるゲートになります。

以下の式で割合が決まります。

リセットゲートと同様、入力(f:id:kanriyou_h004:20200131000154p:plain)と、一つ前の出力(f:id:kanriyou_h004:20200131000249p:plain)に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。

6.出力する要素(ℎ𝑡)

最後に、 一つ前の出力(f:id:kanriyou_h004:20200131000249p:plain)に更新ゲートの値(Z)をかけた値に、仮の出力()に1から更新ゲートを引いた値(1-Z)をかけた値を足して、出力を計算します。

 

以上が、GRUの振り返りになります。

つながりは、少し複雑ですが、LSTMよりパラメータも少なく計算量も少ないので、LSTMが理解した後では、比較的簡単に把握できました。

前回のLSTMとGRUは、E資格にもよく出題されるので、しっかり理解したうえで、試験に臨み、何とか攻略することができました。

今後、Kaggle等でも実際に試していきたいと思います。

 

2019年8月31日(土)にE資格を受験して、合格しました!

E資格対策として勉強の進め方や、参考書などをまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

oregin-ai.hatenablog.com 

 

 2019年3月9日(土)にG検定を受験し、見事合格できました!

受験の体験記や勉強法などを別のブログにまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

g-kentei.hatenablog.com

 【E資格対策に使った参考書】