E資格(JDLA Deep Learning for ENGINEER 2019 #2)対策として学習した深層学習の分野のうち、ゲート付きRNNのひとつLSTM(長短期記憶- Long short-term memory)を振り返ります。
LSTM(長短期記憶- Long short-term memory)
1.LSTMとは何か
系列を扱うシンプルなRNNでは、入力に同じ処理を繰り返すために、伝播する勾配が1より大きい場合は発散(勾配爆発)してしまい、1より小さい場合は0(勾配消失)してしまう欠点があります。
LSTMは、その欠点を補うための手法になります。
ゲートという、データを通過させる程度を決めるノードがあり、水道の蛇口のような役割を果たし、過去の情報をどこまで影響させるかを調整します。
調整には、シグモイド関数が使われます。
といっても、なかなかわかりづらいので、順を追って振り返っていきたいと、思います。
2.LSTM全体像
LSTMの全体像は以下の図のような構成となっており、過去の情報を記憶しておく記憶セル(C)とデータを通過させる程度を決める三つのゲートで構成されます。
では、構成要素を順に見ていきたいと思います。
3.入力ゲート(𝒊)
記憶セルに入力する要素を弱める程度を決めるゲートになります。
以下の式で程度が決まります。
入力()と、一つ前の出力()に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。
このことによって、入力する要素を何割減にするかが決まります。
4.入力する要素(𝒈)
入力する要素は、入力()と一つ前の出力()に重みをかけて、バイアスを足したものになります。
入力ゲートとは違い、活性化関数にシグモイド関数ではなく双曲線正接関数(tanh)を使い、正負に広がりを持った分布になります。
5.忘却ゲート(𝒇)
記憶セル(𝐶𝑡)に入力する記憶セル過去の記憶(𝐶𝑡−1)を忘れる程度を決めるゲートになります。
以下の式で程度が決まります。
入力ゲートと同様、入力()と、一つ前の出力()に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。
6.記憶セル(𝐶𝑡)
過去の記憶を蓄積する値となります。入力ゲートで弱められた入力(g・i)と、忘却ゲートで忘れられた過去の記憶(𝐶𝑡−1・f)を足し算することで求められます。
この記憶セルの内容が出力に伝わることで過去の情報を引き継いでいきます。
7.出力ゲート(𝒐)
記憶セル(𝐶𝑡)の内容を出力(ℎ𝑡)に反映する程度を決めるゲートになります。
以下の式で程度が決まります。
入力ゲート、忘却ゲートと同様に、入力()と、一つ前の出力()に、それぞれ重みをかけたものにバイアスを足して、最後にシグモイド関数で、0~1に閉じ込めます。
8.出力する要素(ℎ𝑡)
最後に、 記憶セルの内容を双曲線正接関数(tanh)で変換した後、出力ゲートの値(出力する程度)をかけて出力を計算します。
以上が、LSTMの振り返りになります。
全体像を一度に把握しようとすると、なかなかに難解なのですが、一つ一つの構成要素はそんなに難しくはないので、順に追いかけて理解を進めました。
これからE資格を受験される方の参考になれば幸いです。
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エンジニアのための機械学習理論入門 [ 中井悦司 ]