NIPS2017論文読みメモ: Tensorized LSTM(その0)

以下の論文を読む準備をします。論文の内容に入っていないのでその0です。

Zhen He, Shaobing Gao, Liang Xiao, Daxue Liu, Hangen He and David Barber. Wider and Deeper, Cheaper and Faster: Tensorized LSTMs for Sequence Learning. arXiv: 1711.01577, 2017. https://arxiv.org/abs/1711.01577
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。内容の誤りは本ブログ筆者に帰属します。
次回:まだ
f:id:cookie-box:20180108144114p:plain:w60

今日読むのはこの論文…。タイトルは…テンソル化したLSTM? LSTMというのは…Long Short-Term Memory…ロングでショート?

f:id:cookie-box:20180108144126p:plain:w60

「長く(long)保持できる短期記憶(Short-Term Memory)」だよ。最初のLSTMの論文は以下だね。

Sepp Hochreiter; Jürgen Schmidhuber. Long short-term memory. Neural Computation, 9 (8): 1735–1780, 1997. http://www.bioinf.jku.at/publications/older/2604.pdf
この論文のイントロダクションに、それまでの再帰ニューラルネットワークを短期記憶と表現して、入出力にタイムラグがあると全然学習できなかったりするって書いてあるよ。そうだね、まずRNN、再帰ニューラルネットワークの復習をしようか。RNNは  x_{1:n} を受け取って  y_n を返す箱だね。 x_n は文章の  n 文字目だったり、時刻 n の株価だったり、順番に観測されるデータであることが多いよね。その場合、 y_nn 文字目までの文章がポジティブな文章かネガティブな文章かの確率とか、時刻 n の株価まで観測した結果次の株価が上昇するか下落するかの確率なんかになるかもしれないね。

f:id:cookie-box:20180108144114p:plain:w60

RNN、聞いたことがある。出力したものを、次の入力へ…それが再帰。だから…順番に考えると…RNNはまず x_1 を受け取って  y_1 を出す。次に  x_2 を受け取るけど、このときさっき出力した  y_1 も受け取って、どっちのデータもつかって、 y_2 を出す。次は x_3y_2 を受け取って y_3 を出す。…これを繰り返すと、最後に  y_n が出てくる。 x_{1:n} を受け取って  y_n を出すことは、再帰のないニューラルネットワークでもできるけど…RNNは、各 i 番目のデータまでで、「ひとまずその時点での出力  y_i」をして、それを次に引き継いでいる。こうすると、どの時点でも出力が取り出せる…言い換えると、入力データの長さが変わってもいい。それに…順番に観測されるデータを受け取る度に情報が積み重なっていくのが上手く表現できるのかも…。

f:id:cookie-box:20180108144126p:plain:w60

でも、問題があるんだ。特に入力データ列が長いと、学習が不安定になったりできなくなったりすることがある。絵理さんがいま言ったように、RNNは再帰のないニューラルネットワークでもできる学習を、ネットワーク構造に制約を加えて、パラメータどうしを共有させて学習しようとするものだよね。例えば100ステップのある入力データ x_{1:100} でネットワーク学習するとするよ。ネットワークの重み  w_{ij} をどの方向に更新すべきかについて、100個のデータが全部注文をつけてくるんだ。それも、RNNの誤差逆伝播法では後ろのステップに伝播する度に掛け合わさる。だから、誤差の絶対値の組合せによっては、誤差が x_1 に伝播する頃には、発散するか、消滅しちゃう。

f:id:cookie-box:20180108144114p:plain:w60

じゃあ…どうすれば…。

f:id:cookie-box:20180108144126p:plain:w60

そこでLSTMが提案されたんだ。LSTMは下図のような構造をしているよ。あ、LSTMの原理については わかるLSTM ~ 最近の動向と共に - Qiita を参考にしているけど、下図が間違っていたらプロデューサーのせいだからね。
※ Output Gate と Input Gate のテキストが逆になっていたのを修正しました(2017-01-17)。

f:id:cookie-box:20180117204331p:plain:w600

(その1があれば)つづく