以下の論文を読みます。
LSTM はシグモイド関数で活性化したゲート(ゲートというと「通る」or「通らない」という印象があるので、「何%だけ通る」という意味ではフィルターなどといった方がいいように感じますが)で
- 「特徴(※)をどれだけ記憶に取り入れるべきか」(Input Gate)
- 「記憶をどれだけ忘れるべきか」(Forget Gate)
※ ここで特徴とよんでいるのは下図の のこと。
いや、そう言っちゃうと関係ないように感じるけど、でも、入力ゲートが好きに「特徴を取り入れた方がいいな」と思って、忘却ゲートが好きに「忘却しない方がいいな」と思ったら、記憶はどんどん肥大してシフトしていっちゃいそうだよね。まあそれじゃ困るからそんな風には学習されないだろうけど、記憶を安定させるためには入力ゲートと忘却ゲートはある程度は連携した方がいいんじゃないのかな。あちらを生かしたらこちらは生かさないというようにね。
あちらを取り入れたらこちらが立たず…ああ、わかりました。「人の精神は伸縮のきかない容れ物です。より多くの真理と完全な正気の両方を容れることは出来ないのです」というやつですね。
違うかな。
イントロダクションに入ると、シグモイド関数ではゲートの値が実は0~1のうち狭い範囲しか動かず、ゲートが意図通りに機能していないのではという疑問が投げかけられていますね。ここで引用されている以下の論文のアブストラクトは、「ちゃんとゲート機能を実現するならゲートの値は 0 or 1 にすべきで、実際そのようにしてもパフォーマンスはよかった」というように読めますが、本当なんでしょうか。
この論文のイントロダクションの続きを読むと、上の論文ではシグモイド関数に温度パラメータを導入することでステップ関数に近くするようなこともしたんですかね? でも、ちゃんとしたゲート機能を実現するにはもっと抜本的な修正が必要だと。それで、やはり上の論文で G2-LSTM なる LSTM も提案されたようです。4枚目の右下ですかね。これは入力ゲートと忘却ゲートが確率的なのですかね。入力ゲートと忘却ゲートが抜本的に修正されていることは理解しますが、なぜこうした方がいいと思ったのかはこちらの論文を読まなければならないでしょうか。それが Figure 1 かな。これはセンチメント分類の例みたいだけど、入力ゲートと忘却ゲートに大きな負の相関(赤い棒グラフ)が出ているのは "but" や "not" という単語だ。"but" や "not" が来たら忘却ゲートをぐっと閉じて入力ゲートをぐっと開くというのはわかりやすいよね。それまでがネガティブな文章でも、そこからポジティブな文章に変わるかもしれないし。でも、"not" の次の "over-priced" では大きな正の相関(青い棒グラフ)になっている。これもわかりやすいかな。"not" の後の単語はちゃんと受け取らないといけないけど、だからといって直前が "not" であったことも忘れちゃ駄目だから、入力ゲートも忘却ゲートもぐっと開かないといけない。