LongShortTermMemoryLayer
ベクトル列を取って各サイズが n のベクトル列を生成する,訓練可能な回帰層を表す.
LongShortTermMemoryLayer[n,opts]
重みやその他のパラメータについてのオプションを含む.
詳細とオプション
- LongShortTermMemoryLayer[n]は,ベクトル列を表す入力行列を取り,同じ長さの列を出力するネットを表す.
- 入力列の各要素はサイズ k のベクトルで,出力列の各要素はサイズ n のベクトルである.
- 入力ベクトルのサイズ k は,NetGraphやNetChain等の中では自動的に推測されることが多い.
- 次は,LongShortTermMemoryLayer[n]で表されるネットの入出力ポートである.
-
"Input" サイズ k のベクトル列 "Output" サイズ k のベクトル列 - LSTMは,入力列{x1,x2,…,xT}を与えられると,次の回帰関係を使って状態列{s1,s2,…,sT}を出力する.
-
入力ゲート it=LogisticSigmoid[Wix.xt+Wis.st-1+bi] 出力ゲート ot=LogisticSigmoid[Wox.xt+Wos.st-1+bo] 忘却ゲート ft=LogisticSigmoid[Wfx.xt+Wfs.st-1+bf] メモリゲート mt=Tanh[Wmx.xt+Wms.st-1+bm] セルの状態 ct=ft*ct-1+it*mt 状態 st=ot*Tanh[ct] - LongShortTermMemoryLayer[n]は次の状態ポートを持つ.
-
"State" サイズ n のベクトル "CellState" サイズ n のベクトル - NetGraph内では,src->NetPort[layer,"state"]の形の接続を使って,回帰関係における s0および c0に相当するLongShortTermMemoryLayerの"State"または"CellState"についての初期値を与えることができる.デフォルトの初期値は零ベクトルである.
- NetGraph内では,NetPort[layer,"state"]->dst の形の接続を使って,回帰関係における sTおよび cTに相当するLongShortTermMemoryLayerについての"State"または"CellState"の最終的な値を得ることができる.
- NetStateObjectを使って,ネットが入力に適用されたときに更新されるLongShortTermMemoryLayerの状態の値を記憶するネットを作ることができる.
- サイズ k のベクトルに作用する初期化されたLongShortTermMemoryLayer[…]は,訓練可能な次の配列を含んでいる.
-
"InputGateInputWeights" Wix サイズ n×k の行列 "InputGateStateWeights" Wis サイズ n×n の行列 "InputGateBiases" bi サイズ n のベクトル "OutputGateInputWeights" Wox サイズ n×k の行列 "OutputGateStateWeights" Wos サイズ n×n の行列 "OutputGateBiases" bo サイズ n のベクトル "ForgetGateInputWeights" Wfx サイズ n×k の行列 "ForgetGateStateWeights" Wfs サイズ n×n の行列 "ForgetGateBiases" bf サイズ n のベクトル "MemoryGateInputWeights" Wmx サイズ n×k の行列 "MemoryGateStateWeights" Wms サイズ n×n の行列 "MemoryGateBiases" bm サイズ n のベクトル - LongShortTermMemoryLayer[n,opts]では,"array"->value の形の規則を使って訓練可能な配列に初期値を与えることができる.
- 次の訓練パラメータも含めることができる.
-
"Dropout" None 単位が確率的にゼロに設定されているドロップアウト正規化 LearningRateMultipliers Automatic 訓練可能な配列の学習率乗数 - "Dropout"->Noneを指定して訓練中のドロップアウトを無効にする.
- "Dropout"->p を指定して,ドロップアウト確率 p で自動的に選択されたドロップアウトメソッドを使用する.
- "Dropout"->{"method1"->p1,"method2"->p2,…}の指定を使ってドロップアウトの特定のメソッドを対応するドロップアウト確率と結び付けることができる.
-
"VariationalWeights" 重み行列間の反復接続に適用されたドロップアウト(デフォルト) "VariationalInput" 連続する各ステップで単位の同じパターンを使って,入力からのゲートの寄与に適用されたドロップアウト "VariationalState" 連続する各ステップで単位の同じパターンを使って,前の状態からのゲートの寄与に適用されたドロップアウト "StateUpdate" 連続する各ステップで単位の異なるパターンを使って,前の状態に加えられる前に状態更新ベクトルに適用されたドロップアウト - ドロップアウトメソッドの"VariationalInput"および"VariationalState"は「Gal et al. 2016 method」に基づいているのに対し,"StateUpdate"は「Semeniuta et al. 2016 method」に,"VariationalWeights"は「 Merity et al. 2017 method」に基づいている.
- LongShortTermMemoryLayer[n,"Input"->shape]では,入力の形状を指定することができる.次は shape の可能な形である.
-
NetEncoder[…] ベクトル列を作成するエンコーダ {len,k} 長さ k の len ベクトル列 {len,Automatic} 長さが推測される len ベクトルの列 {"Varying",k} さまざまな数の,それぞれが長さ k のベクトル {"Varying",Automatic} さまざまな数の,それぞれの長さが推測されるベクトル - NumericArrayが入力として与えられると,出力はNumericArrayになる.
- Options[LongShortTermMemoryLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[LongShortTermMemoryLayer[…]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
- Information[LongShortTermMemoryLayer[…]]は層についてのレポートを与える.
- Information[LongShortTermMemoryLayer[…],prop]はLongShortTermMemoryLayer[…]の特性 prop の値を与える.使用可能な特性はNetGraphと同じである.
例題
すべて開くすべて閉じる例 (2)
長さ3のベクトル列を生成するLongShortTermMemoryLayerを作る:
長さ2のベクトル列を取って長さ3のベクトル列を生成する,ランダムに初期化されたLongShortTermMemoryLayerを作る:
スコープ (4)
文字列を取り長さ2のベクトル列を生成する,ランダムに初期化されたLongShortTermMemoryLayerを作る:
長さ2のベクトル列を取って長さ2の単一のベクトル列を生成する,ランダムに初期化されたネットを作る:
LongShortTermMemoryLayerの初期状態とセルの状態を設定することができるNetGraphを作る:
LongShortTermMemoryLayerの最終状態とセル状態が取得できるNetGraph を作る:
オプション (2)
"Dropout" (2)
ドロップアウトメソッドを指定してLongShortTermMemoryLayerを作る:
指定されたドロップアウト確率でランダムに初期化されたLongShortTermMemoryLayerを作る:
NetEvaluationModeを使ってドロップアウトの訓練動作を強制する:
アプリケーション (2)
2桁の足し算と対応する数値結果を表す文字列からなる訓練データを作る:
文字列を読んで入力し数値結果を予測する,積み重ねられたLongShortTermMemoryLayerを使ってネットワークを作る:
xとy,およびLess,Greater,Equalのいずれかを含む文字列に基づいて,xとyの数を比較することで訓練データを作る.訓練データは長さ8までの可能なすべての文からなる:
LongShortTermMemoryLayerを含むネットワークを作り,入力文字列を読んでLess,Greater,Equalのいずれかを予測する:
特性と関係 (1)
NetStateObjectを使って,LongShortTermMemoryLayerの状態を記憶するネットを作ることができる:
各評価によってNetStateObjectの中に保存された状態が変更される:
テキスト
Wolfram Research (2017), LongShortTermMemoryLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html (2020年に更新).
CMS
Wolfram Language. 2017. "LongShortTermMemoryLayer." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html.
APA
Wolfram Language. (2017). LongShortTermMemoryLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html