GatedRecurrentLayer

GatedRecurrentLayer[n]

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

GatedRecurrentLayer[n,opts]

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

詳細とオプション

  • GatedRecurrentLayer[n]は,ベクトル列を表す入力行列を取って同じ長さの列を出力するネットを表す.
  • 入力列の各要素はサイズ k のベクトルで,出力列の各要素はサイズ n のベクトルである.
  • 入力ベクトルのサイズ k は,NetGraphNetChain等の中で自動的に推測されることが多い.
  • 次は,GatedRecurrentLayer[n]で表されるネットの入出力ポートである.
  • "Input"サイズ k のベクトル列
    "Output"サイズ n のベクトル列
  • 入力列{x1,x2,,xT}が与えられると,GatedRecurrentLayerは次の回帰関係を使って状態列{s1,s2,,sT}を出力する.
  • 入力ゲートit=LogisticSigmoid[Wix.xt+Wis.st-1+bi]
    リセットゲートrt=LogisticSigmoid[Wrx.xt+Wrs.st-1+br]
    メモリゲートmt=Tanh[Wmx.xt+rt*(Wms.st-1)+bm]
    状態st=(1-it)*mt+it*st-1
  • GatedRecurrentLayerの上記定義は「Chung et al., Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling, 2014」で説明された異形に基づいている.
  • GatedRecurrentLayer[n]は,単一状態のポート,"State"も持つ.これは,サイズ n のベクトルである.
  • NetGraph内では,src->NetPort[layer,"State"]の形の接続を使って,再帰関係における s0に相当するGatedRecurrentLayerの状態についての初期値を与えることができる.デフォルトの初期値は零ベクトルである.
  • NetGraph内では,NetPort[layer,"State"]->dst の形の接続を使って,再帰関係における sTに相当するGatedRecurrentLayerの状態についての最終的な値を得ることができる.
  • NetStateObjectを使って,ネットが入力に適用されると更新されるGatedRecurrentLayerの状態値を記憶するネットを作ることができる.
  • サイズ k のベクトルに作用する初期化されたGatedRecurrentLayer[]は,次の訓練可能配列を含む.
  • "InputGateInputWeights"Wixサイズ n×k の行列
    "InputGateStateWeights"Wisサイズ n×n の行列
    "InputGateBiases"biサイズ n のベクトル
    "ResetGateInputWeights"Wrxサイズ n×k の行列
    "ResetGateStateWeights"Wrsサイズ n×n の行列
    "ResetGateBiases"brサイズ n のベクトル
    "MemoryGateInputWeights"Wmxサイズ n×k の行列
    "MemoryGateStateWeights"Wmsサイズ n×n の行列
    "MemoryGateBiases"bmサイズ n のベクトル
  • GatedRecurrentLayer[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」に基づいている.
  • GatedRecurrentLayer[n,"Input"->shape]では,入力の形を指定することができる.次は shape の可能な形である.
  • NetEncoder[]ベクトル列を作成するエンコーダ
    {len,k}長さ klen ベクトル列
    {len,Automatic}長さが推測される len ベクトル列
    {"Varying",k}さまざまな数の,それぞれが長さ k のベクトル
    {"Varying",Automatic}さまざまな数の,それぞれの長さが推測されるベクトル
  • NumericArrayが入力として与えられると,出力はNumericArrayになる.
  • Options[GatedRecurrentLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[GatedRecurrentLayer[]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
  • Information[GatedRecurrentLayer[]]は層についてのレポートを与える.
  • Information[GatedRecurrentLayer[],prop]GatedRecurrentLayer[]の特性 prop の値を与える.使用可能な特性NetGraphと同じである.

例題

すべて開くすべて閉じる

  (2)

長さ3のベクトルの列を作るGatedRecurrentLayerを作る:

長さ2のベクトルの列を入力として取り,長さ3のベクトルの列を生成する,ランダムに初期化されたGatedRecurrentLayerを作る:

この層を入力列に適用する:

スコープ  (5)

引数  (1)

長さ3のベクトルのシーケンスを生成するGatedRecurrentLayerを作成する:

ポート  (4)

文字列を取って長さ2のベクトルの列を作る,ランダムに初期化されたGatedRecurrentLayerを作る:

この層を入力文字列に適用する:

この層を入力バッチに縫い込む:

長さ2のベクトルの列を取って長さ2の単一のベクトルを作る,ランダムに初期化されたネットを作る:

この層を入力に適用する:

この層を入力バッチに縫い込む:

GatedRecurrentLayerの初期状態の設定を許すNetGraphを作る:

GatedRecurrentLayerの最終状態の取得を許すNetGraphを作る:

最終状態は出力列の最終要素である:

オプション  (2)

"Dropout"  (2)

ドロップアウトメソッドを指定してGatedRecurrentLayerを作る:

指定されたドロップアウト確率で,ランダムに初期化された GatedRecurrentLayerを作る:

この層をベクトル列について評価する:

ドロップアウトは評価中は影響を与えない:

NetEvaluationModeを使ってドロップアウトの訓練動作を強制する:

同じ入力を複数回評価すると異なる結果が与えられることがある:

アプリケーション  (2)

2桁足し算と対応する数値結果を記述する,文字列からなる訓練データを作る:

入力文字列を読んで数値結果を予測する積み重ねられたGatedRecurrentLayerを使ってネットワークを作る:

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

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

xとyの数を比較することで,xとyおよびLessGreaterEqualのいずれかを含む文字列に基づいた訓練データを作る.訓練データは長さ8までの可能なすべての文からなる:

入力を読んでLessGreaterEqualの一つを予測するGatedRecurrentLayerを含むネットワークを作る:

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

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

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

特性と関係  (1)

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

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

Wolfram Research (2017), GatedRecurrentLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/GatedRecurrentLayer.html.

テキスト

Wolfram Research (2017), GatedRecurrentLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/GatedRecurrentLayer.html.

CMS

Wolfram Language. 2017. "GatedRecurrentLayer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/GatedRecurrentLayer.html.

APA

Wolfram Language. (2017). GatedRecurrentLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GatedRecurrentLayer.html

BibTeX

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

BibLaTeX

@online{reference.wolfram_2024_gatedrecurrentlayer, organization={Wolfram Research}, title={GatedRecurrentLayer}, year={2017}, url={https://reference.wolfram.com/language/ref/GatedRecurrentLayer.html}, note=[Accessed: 22-November-2024 ]}