機械学習:lstm
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
機械学習:lstm [2016/02/22 15:53] – asakawa | 機械学習:lstm [2016/12/02 14:41] (現在) – n.arakawa | ||
---|---|---|---|
行 1: | 行 1: | ||
==== LSTM ==== | ==== LSTM ==== | ||
- | # このページをみんなで修正しよう!(山川) | ||
- | LSTM は直訳すると「長い短期記憶」となります。長い?短い?どっちなの?と迷いますが,短期記憶とはすぐに忘却してしまうようなその場限りの記憶です。短期記憶の影響を長期に渡って保持する能力を持つリカレントネットワークモデルです。2010年代になってから,このリカレントネットワークモデルの学習時に必要となる実用的な手法の提案がなされ,現実的な問題を解くことが可能になりました。音声認識,機械翻訳,ロボット制御,手書き文字生成,など応用範囲が広がりました。 | + | LSTM は直訳すると「長い短期記憶」となります。長い?短い?どっちなの?と迷いますが,短期記憶とはすぐに忘却してしまうようなその場限りの記憶です。短期記憶の影響を長期に渡って保持する能力を持つ[[再帰型ニューラルネットワーク|リカレントネットワーク]]モデルです。2010年代になってから,このリカレントネットワークモデルの学習時に必要となる実用的な手法の提案がなされ,現実的な問題を解くことが可能になりました。音声認識,機械翻訳,ロボット制御,手書き文字生成,など応用範囲が広がりました。 |
以下に LSTM の概念図を示しました。 | 以下に LSTM の概念図を示しました。 | ||
行 11: | 行 10: | ||
LSTM はメモリセルと呼ばれる記憶素子と3つのゲート(門)から構成されています。3つもゲートには名前がついていて,入力ゲート,出力ゲート,忘却ゲートと言います。図では忘却ゲートは左から,入力ゲートと出力ゲートは右から中央に流れ込んできます。 | LSTM はメモリセルと呼ばれる記憶素子と3つのゲート(門)から構成されています。3つもゲートには名前がついていて,入力ゲート,出力ゲート,忘却ゲートと言います。図では忘却ゲートは左から,入力ゲートと出力ゲートは右から中央に流れ込んできます。 | ||
ゲートに2種類の記号が使われていることを確認してください。一つはギリシャアルファベットのシグマσ,もう一種類は英語のアルファベットのgとhです。 | ゲートに2種類の記号が使われていることを確認してください。一つはギリシャアルファベットのシグマσ,もう一種類は英語のアルファベットのgとhです。 | ||
- | どちらのゲートも非線形な変換ですが,シグマの方はロジスティック関数 f(x)=(1+exp(-x)^{-1}, | ||
- | どちらの関数もs字状曲線です。ロジスティック関数の方が値域が狭く0 =<f(x) =< 1 です。一方ハイパータンジェントは -1 =< tanh(x) =< 1で2倍に広がっています。大事なのは,ハイパータンジェントの方が原点(0, | ||
さらに,ゲートの流れと合流する点に2種類あることも確認してください。 | さらに,ゲートの流れと合流する点に2種類あることも確認してください。 | ||
行 26: | 行 23: | ||
もう一つの注意点として実線と点線の区別に注目してください。実線は即時的に働く流れです。一方点線は時間遅延を表します。次の時刻に影響を及ぼすことを示しています。 | もう一つの注意点として実線と点線の区別に注目してください。実線は即時的に働く流れです。一方点線は時間遅延を表します。次の時刻に影響を及ぼすことを示しています。 | ||
- | 最後に後回しにした青線で描かれたピープホールですが,セルの内容が直接ゲートを制御するために導入されました。セル自身がゲートを制御することで,より積極的にゲートの開平の効率向上を目指しています。実装では,TensorFlow ではピープホールはデフォルトではオフになっています。Chainer ではピープホールは仮定されいないようです。Theano ではLSTMセルを自作することになります。 | + | 最後に後回しにした青線で描かれたピープホールですが,セルの内容が直接ゲートを制御するために導入されました。セル自身がゲートを制御することで,より積極的にゲートの開平の効率向上を目指しています。 |
図では1つの LSTMブロックだけが描かれています。LSTMブロックが複数集まってLSTM層を構成します。LSTM層を多層化するとディープLSTMになります。多層のLSTMでは,時間的空間的に異なる抽象化が表象されると考えられます。 | 図では1つの LSTMブロックだけが描かれています。LSTMブロックが複数集まってLSTM層を構成します。LSTM層を多層化するとディープLSTMになります。多層のLSTMでは,時間的空間的に異なる抽象化が表象されると考えられます。 | ||
- | LSTMの学習についてはBPTTかRTRLが使われます。BPTTもRTRLも時間を遡って学習が行われます。完全な形でのBPTTは計算コストがかかるので,実現されいませんでした。時間的に完全な形でのBPTTによる学習が行われたのは2007年のグレーブスの論文からでした。実装では今でも時間的に完全なBPTTを解くよりも切断BPTTを使う場合があります。ChainerもTensorFlowもBPTTの時間幅はオプションで指定します。 | + | LSTMの学習についてはBPTTかRTRLが使われます。BPTTもRTRLも時間を遡って学習が行われます。 |
+ | [[機械学習:LSTについての中級者向け話題]] | ||
- | 学習時には,勾配消失問題,勾配爆発問題を回避するために,勾配正規化,勾配クリップという技法が使われます。 | + | === 外部サイト=== |
- | + | * [[http:// | |
- | + | * [[http:// | |
- | * [[http:// | + | |
- | * [[http:// | + |
機械学習/lstm.1456123994.txt.gz · 最終更新: 2016/02/22 15:53 by asakawa