LongShortTermMemoryLayer

LongShortTermMemoryLayer[n]

ベクトル列を取って各サイズが n のベクトル列を生成する,訓練可能な回帰層を表す.

LongShortTermMemoryLayer[n,opts]

重みやその他のパラメータについてのオプションを含む.

詳細とオプション

  • LongShortTermMemoryLayer[n]は,ベクトル列を表す入力行列を取り,同じ長さの列を出力するネットを表す.
  • 入力列の各要素はサイズ k のベクトルで,出力列の各要素はサイズ n のベクトルである.
  • 入力ベクトルのサイズ k は,NetGraphNetChain等の中では自動的に推測されることが多い.
  • 次は,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単位が確率的にゼロに設定されているドロップアウト正規化
    LearningRateMultipliersAutomatic訓練可能な配列の学習率乗数
  • "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}長さ klen ベクトル列
    {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,およびLessGreaterEqualのいずれかを含む文字列に基づいて,xとyの数を比較することで訓練データを作る.訓練データは長さ8までの可能なすべての文からなる:

LongShortTermMemoryLayerを含むネットワークを作り,入力文字列を読んでLessGreaterEqualのいずれかを予測する:

ネットワークを訓練する:

訓練されたネットワークを入力リストに適用する:

訓練集合全体の確度を測定する:

特性と関係  (1)

NetStateObjectを使って,LongShortTermMemoryLayerの状態を記憶するネットを作ることができる:

各評価によってNetStateObjectの中に保存された状態が変更される:

Wolfram Research (2017), LongShortTermMemoryLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html (2020年に更新).

テキスト

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

BibTeX

@misc{reference.wolfram_2024_longshorttermmemorylayer, author="Wolfram Research", title="{LongShortTermMemoryLayer}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html}", note=[Accessed: 23-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_longshorttermmemorylayer, organization={Wolfram Research}, title={LongShortTermMemoryLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html}, note=[Accessed: 23-November-2024 ]}