Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Long Short-term Memory

26,634 views

Published on

Long Short-term Memory論文紹介

Published in: Education
  • Be the first to comment

Long Short-term Memory

  1. 1. Long Short-term Memory 2015-07-31 サイボウズラボ機械学習勉強会 西尾泰和
  2. 2. 不定長の入力 自然言語で書かれた文章とか お客さんがある操作をして別の操作をして… という操作ログとか そういう不定長の入力を扱いたい 2
  3. 3. Grid Long Short-term Memory 面白そうな論文 ”Grid Long Short-term Memory” [Kalchbrenner+ 2015] Long Short-term Memory(LSTM)を縦横につなげ てやるとWikipediaの文字予測タスクでNN界最強 中国語英語翻訳でもphrase-based reference systemよりはるかに性能がいい これを理解するために遡っていく… 3 http://arxiv.org/abs/1507.01526
  4. 4. LONG SHORT-TERM MEMORY 今回解説するのはこれ、LSTM元祖の論文 “LONG SHORT-TERM MEMORY” [Hochreiter&Schmidhuber 1997] Recurrent Neural Networkの問題点を指摘し、 LSTMを考案した 4 http://deeplearning.cs.cmu.edu/pdfs/Hochreiter97_lstm.pdf
  5. 5. Recurrent Neural Network 「不定長の入力を受け付けたい」 「ならばNNの中にループを作ろう」 直前の自分の活性を入力として受け取ることに よって「記憶」のあるNNを実現、時系列入力と して与えることで不定長入力を可能にする 5
  6. 6. Backpropagation Through Time ループのあるNNをどうやって学習するか? 時間軸方向に展開して 仮想の多層ネットワークの学習として扱う [Williams&Zipser 1992] 6
  7. 7. 問題 勾配を何度も掛け算→エラー情報が消滅or発散 振動したり、学習にとても時間がかかったりする エラー情報が消滅発散しないようにしよう! そこで… 7
  8. 8. Constant Error Carrousel(CEC) 1つのニューロンが自分の出力を受け取ることを 考える、エラー情報が一定であるためには ・ニューロンの活性化関数が線形 ・他の入力がないとき活性は一定 が必要。この論文では以下の設定を用いる: ・活性化関数は f(x) = x ・リカレント結合の重みは1.0 8 [Hochreiter&Schmidhuber 1997]
  9. 9. 問題: Input Weight Conflict (著者曰く勾配ベースの手法すべてにある問題) ある情報を、必要になるまで覚えておきたい つまり、その情報が来たときに ニューロンの活性は変わってほしい しかし、他の情報が来たときに ニューロンの活性は変わってほしくない 変わるか変わらないかが重みの値で表現されてい る仕組みでは、この衝突が学習の妨げになる 9
  10. 10. 問題: Output Weight Conflict 出力に関しても同様に 「覚えておいた値を使う」と 「必要になるまで使わない」とを 出力重みの値で表現するのはConflict 10
  11. 11. 解決策 書くのか書かないのか、読むのか読まないのか、 「記憶」に対する読み書きオペレーションが 重みという一つのスカラー値で決まるのではなく 入力に基づいてコントロールされるメカニズムが 必要である そこで… 11
  12. 12. LSTM 記憶をつかさどるCECの前後に 入出力を管理するゲート素子を配置 12
  13. 13. Memory Cell Block 1個のメモリセルは「ニューロン1個分」の1次元 の情報しか記憶できない →複数のメモリセルでゲートの重みを共有する 一時に複数の次元を記憶できるようになる 13
  14. 14. Abuse Problem 学習序盤は、メモリセルを使わなくても 誤差が減少する なのでメモリセルを記憶以外のこと (定数オフセットなど)に使ってしまう問題 が起きる 一度そういう変な学習をすると、 解放されるまでに時間がかかる 14
  15. 15. Abuse Problem 複数のメモリーセルが同じ内容を記憶してしまう 問題も起きる (Q: 出力に影響はないのでは? A: せっかくのメモ リセルが有効活用されないのが問題) 15
  16. 16. 解決策 (1)ネットワークの学習が止まった時に ちょっとずつメモリーセルを足す (2)出力ゲートをマイナスのオフセットで初期化 出力ゲートが「出力OK」のシグナルを出せるよ うになるまで学習ステップが余計に必要になる ことで序盤にメモリセルが使われることを防ぐ 16
  17. 17. Internal state drift メモリセルへの入力が正ばかり(または負) だと、メモリセルの値が一方的に大きくなり 勾配が消滅する(活性化関数がシグモイドとかだ と問題ないんだけど今回線形なんで) 序盤の間、入力ゲートの出力が0に近づくように バイアスする (学習がしばらく進むと他のニューロンがドリフ トを吸収するので、それまでの間耐え忍ぶ) 17
  18. 18. Forget Gate [Gers+ 1999] “Learning to Forget: Continual Prediction with” 従来のLSTMは手動で記憶をリセットしていたが それを自動でリセットできるようにしたよ、 という論文 http://citeseerx.ist.psu.edu/viewdoc/download?do i=10.1.1.55.5709&rep=rep1&type=pdf 18
  19. 19. Forget Gate ↑これを ↑こうする これがLSTMの基本形 [Gers+ 1999] 19
  20. 20. 実装 [Hochreiter&Schmidhuber 1997]のp.23から ALGORITHM DETAILS Tomonari MASADA先生による数式と実装* 実装はCで966行 Chainerでの実装** 228行 RNNLIBっていうC++実装もあるらしい。 単に使うだけならこれがよい?? 20 * http://diversity-mining.jp/wp/?p=407 ** https://github.com/pfnet/chainer/blob/master/chainer/functions/lstm.py
  21. 21. 数式読解 LSTMによる隠れ層がN層重なっている構造 21
  22. 22. 数式読解 Wは重み、下の添え字xιなどが「入力xから入力 ゲートιへの重み」をあらわしており、上の添え 字nが「n層目の重み」をあらわしている 𝑊ℎ− ι のハイフンはマイナスではなく「前の隠れ 層h-から入力ゲートιへの重み」という意味 22
  23. 23. 数式読解 𝜄 𝑡 𝑛 はn層目の時刻tの入力ゲートの出力で、Dn次元 のベクトル ι、φ、ωは重みが違うだけでほぼ同じ式。入力、 下の隠れ層の出力、自分の1時刻前の出力、CEC の出力、が使われている。 23
  24. 24. 数式読解 ωと小文字のwは別物。CECの出力ηを使う際に、 同じ層の他のLSTMのηは使わないので重み行列が 対角行列になり、その対角成分だけ取ってベクト ルになってるのでWが小文字になっている。 要素積してるのもベクトル形で書いたから。対角 行列なら普通の行列積になる。 24
  25. 25. 要するにこういうこと 元論文ではゲー トはメモリセル の外にある風 だったが、メモ リセル1個につ き1個ゲートが あって、そのメ モリセルの内部 状態(青線)だけ は見えるような ので中に描いた 25

×