web-dev-qa-db-ja.com

誰かがkeraslstmレイヤーの初期化で渡されたアクティベーションと繰り返しアクティベーション引数の違いを説明できますか?

誰かがkeraslstmレイヤーの初期化で渡されたアクティベーションと繰り返しアクティベーション引数の違いを説明できますか?

私の理解によると、LSTMには4つの層があります。 LSTMコンストラクターにアクティベーション引数を渡さない場合の各レイヤーのデフォルトのアクティベーション関数は何ですか?

14
Mayank Uniyal

オン コード

1932年からのライン

i = self.recurrent_activation(z0)
f = self.recurrent_activation(z1)
c = f * c_tm1 + i * self.activation(z2)
o = self.recurrent_activation(z3)
h = o * self.activation(c)

recurrent_activationは、入力/忘れ/出力ゲートをアクティブにするためのものです。

アクティベーションセル状態と非表示状態の場合。

11
peikuo

LSTMユニットには、候補の非表示状態(g)と出力の非表示状態(c)に加えて、入力ゲート、忘却ゲート、出力ゲートと呼ばれる3つのゲートがあります。

LSTMCellクラスのbuildメソッドには、これらのアクティベーションが呼び出される実装が含まれています( https://github.com/keras-team/keras/blob/master/keras/layers/recurrent.py#L1892 )。

recurrent_activation引数は、入力ゲート、忘却ゲート、および出力ゲートに適用されます。この引数のデフォルト値は、ハードシグモイド関数です。 activation引数は、候補の非表示状態と出力の非表示状態に適用されます。この引数のデフォルト値は、双曲線正接関数です。

10
SR_ml

したがって、 LSTM レイヤーが呼び出されると、次の2種類の操作が実行されます。

  • 内部メモリセルを実現する内部反復アクティベーション計算-このためにrecurrent_activationが使用されます(デフォルト値はhard_sigmoid)。
  • レイヤーの最終出力が計算されます。ここでは、activation関数を適用しています(デフォルト値はtanhです)。

ここ 詳細を読むことができます。

3
Marcin Możejko

このビデオのAndrewNgによる説明 1 によると、update、forget、outputゲートの3つのゲートには、シグモイド型の活性化関数が必要です。したがって、kerasドキュメントの活性化はこれらの活性化値を参照しています。

更新候補と出力に必要なアクティベーションはtanhです。したがって、繰り返しのアクティベーションは、Kerasドキュメントのこれらのアクティベーションに対応します。 RA-繰り返しのアクティベーション、Act.-アクティベーション

0