今回の記事は機械学習におけるRNNとLSTMの違いに関して初心者が初心者に対して送る最も簡単な記事になります。(正確には最も簡単を目指します笑。)
RNNに関してはリンク記事を要しているのでそちらからご確認ください。
今回出てくるLSTMの解説に関してはこの記事内で行い、そこでRNNとの違いも同時に解説を行っていきます。できるだけ簡単に伝わるように記載していきますので是非参考にして見てください。
ではメイン記事に進んでいきます。
LSTMとは?
LSTMとは、Long short-term memory、略称がLSTMです。深層学習(ディープラーニング)の分野において用いられる人工回帰型ニューラルネットワークのことを指しております。
出ましたね、これだけでは全く何かわからないもの笑。
以前解説したRNNやCNNに関しては覚えているでしょうか?覚えていない方はリンク記事から確認してください。CNNは画像などに対して畳み込みを行いつつ特徴点の抽出を行っていたと思いますが、RNNは時間的な流れを持つデータ、時系列データを学習できる時間に対応したものでしたね。
このRNNには実は弱点があります。それは「勾配消失」「勾配爆発」です。おそらく今言葉も初めて聞いたという方がいるかもしれませんので説明をしておきます。それを説明する前に「勾配」についても押さえておく必要があるので勾配がわからない方はリンクからかくにんしてください。
そしてこの勾配をできるだけ小さい方向に持っていくためにAI部分にあたるモデルを学習させています。
しかし、RNNの場合は順調に勾配最小法などで勾配を小さくして行ったところある点で勾配が非常に大きくなってしまったり、逆消えてしまったりという現象が起きます。既存の画像では下記のような図ですがわかりにくいのでこちらも補足で説明します。
この図を2次元の重さwとバイアスbのグラフに起こすとこのようになっています。
こんな感じにある点で勾配爆発が起きたさいと起きなかった際に、起きなかった場合はそのまま傾きの小さい点を探しておりますが、爆発が起きた場合は大きく傾きがついてしまっています。
勾配消失は逆にある点で勾配が急になくなてしまうことです。
よく使用されている図では3次元で表現しているのでかなり分かりづらい(初心者には)になっているものと思われます。
話をもとに戻します。
RNNにはこの二つの弱点があります。これはRNNの誤差逆伝播の際に入力出力付近の層で重みが掛けられる回数が非常に多くなってしまうことが原因で起きる現象なのですが、この辺りを紐解くと数式を持ち出す必要があり、RNNとLSTMの概念的な理解には必要がないため割愛します。
この弱点を克服したものがLSTMです。
ではRNNとの違いについてもっと詳細に解説していきます。
RNNとLSTMの違い
RNNの弱点は先ほどの章で説明しましたがその弱点を克服したものがLSTMです。
正確な解説をしていくとRNNは短期的な時系列データの場合は、先ほどの弱点である勾配爆発と勾配消失が起きません。しかし、データが多ければ多いほど発生確率が高くなります。理由として下記の情報入力が無限に発生するからです。
上記は1〜3で済んでいますが長いデータですとこれが1〜10000とかになります。その場合、全ての出力される重みを引き継ぐ形になり消失か爆発のどちらかが起きます。
これを防ぐためにLSTMは忘却という機能を持っています。人間に近づいてきています。ずにすると下記のようなものです。
この忘却システムのおかげで昔の記憶を完全に消去して新しい記憶に更新することやここだけは各実に覚えておくことが必要と言う箇所を記憶させ続けることも可能です。
そのため季節の変化など時系列データの中でも変化に対応させることができるAIモデルを作成可能になっております。
LSTMは非常に面白いので私もいくつか試していますので気になる方は是非そちらの関連記事もご参照ください。
そんなこんなで今回はRNNとLSTMの違いを踏まえたLSTMの解説を終了します。ご参考になっていれば幸いです。
コメント