リカレントニューラルネットワーク(RNN)のレイヤーを忘れる-


13

私は忘却層のRNNの各変数の次元を把握しようとしていますが、正しい軌道に乗っているかどうかはわかりません。次の図と方程式は、Colahのブログ投稿「Understanding LSTM Networks」からのものです。

ここに画像の説明を入力してください

どこ:

  • xtはサイズm∗1ベクトルの入力です
  • ht−1はサイズn∗1ベクトルの隠れ状態です
  • 例えば、もしは(連結である X T = [ 1 、2 、3 ] 、時間T - 1 = [ 4 、5 、6 ]、次に [ X 、T、HのT - 1 ] = [ 1 、2 、3 、4 、5 、6 ])[xt,ht−1]xt=[1,2,3],ht−1=[4,5,6][xt,ht−1]=[1,2,3,4,5,6]
  • はサイズ k ∗ (m + n )行列の重みです。ここで kはセル状態の数です(上記の例で m = 3および n = 3の場合、3つのセル状態がある場合は w f = 3 ∗ 3マトリックス)wfk∗(m+n)km=3n=3wf=3∗3
  • はサイズ k ∗ 1ベクトルのバイアスです。ここで、 kはセル状態の数です(上記の例では k = 3であるため、 b fは 3 ∗ 1 ベクトルです)。bfk∗1kk=3bf3∗1

を次のように設定した場合: [ 1 2 3 4 5 6 5 6 7 8 9 10 3 4 5 6 7 8 ]wf

[1234565678910345678]

及びすべき:[ 1 、2 、3 ]bf[1,2,3]

その後、Wf.[ht−1,xt]=

[1234565678910345678].[123456]=[91175133]

次に、バイアスW fを追加します。[ h t − 1、x t ] + b f =Wf.[ht−1,xt]+bf=

[91175133]+[123]=[92177136]

次に、それらをシグモイド関数に送ります:、ここでx=[ 92 177 136 ]、したがってこの関数要素ごとに実行し、[ 1 1 1 ]を取得します。11+e−xx=[92177136]

[111]

つまり、各セル状態(k = 3のセル状態があります)に対して、次の層に渡すことができます。Ct−1k=3

上記の仮定は正しいですか?

これは、セル状態と非表示状態の数が同じであることも意味しますか?

回答:


14

いい質問です!

tl; dr:セルの状態と非表示の状態は2つの異なるものですが、非表示の状態はセルの状態に依存しており、実際には同じサイズです。

長い説明

この2つの違いは、次の図(同じブログの一部)から確認できます。

セルの状態は、上部を西から東に移動する太線です。

セルの状態は、上部を西から東に移動する太線です。緑色のブロック全体を「セル」と呼びます。

前のタイムステップの非表示状態は、現在のタイムステップでの入力の一部として扱われます。

ただし、完全なウォークスルーを行わずに2つの間の依存関係を確認するのは少し難しくなります。別の視点を提供するためにここでそれを行いますが、ブログの影響を大きく受けます。私の表記法も同じです。説明ではブログの画像を使用します。

操作の順序は、ブログでの表示方法とは少し異なると思います。個人的には、入力ゲートから開始するように。その観点を以下に示しますが、ブログがLSTMを計算的にセットアップする最良の方法である可能性があり、この説明は純粋に概念的なものであることに留意してください。

ここで何が起こっているのですか:

入力ゲート

ここに画像の説明を入力してください

txtht−1

xt=[1,2,3]ht=[4,5,6]

xtht−1[1,2,3,4,5,6]

WiWi⋅[xt,ht−1]+biWibi

6次元の入力(連結された入力ベクトルの長さ)から、更新する状態に関する3次元の決定に進むと仮定します。つまり、3x6の重み行列と3x1のバイアスベクトルが必要です。それらにいくつかの値を与えましょう:

W私=[111111222222333333]

b私=[111]

計算は次のようになります。

[111111222222333333]⋅[123456]+[111]=[224262]

私t=σ(W私⋅[バツt、ht−1]+b私)

σ(バツ)=11+eバツp(−バツ)バツ

σ([224262])=[11+exp(−22),11+exp(−42),11+exp(−62)]=[1,1,1]

英語では、これはすべての州を更新することを意味します。

入力ゲートには2番目の部分があります。

d) Ct~=tanh(WC[xt,ht−1]+bC)

このパートのポイントは、状態を更新する方法を計算することです。これは、このタイムステップでの新しい入力からセル状態への寄与です。計算は、上記で説明したものと同じ手順に従いますが、シグモイド単位ではなくタン単位を使用します。

Ct~it

itCt~

それから、あなたの質問の核心であった忘却の門が来ます。

忘却の門

ここに画像の説明を入力してください

忘却ゲートの目的は、関連性がなくなった以前に学習した情報を削除することです。ブログの例は言語ベースですが、スライディングウィンドウも考えられます。病気の発生中に地域の感染者の数など、自然に整数で表される時系列をモデル化する場合、おそらく地域で病気が死んだら、その地域を気にする必要はもうありません病気が次に移動する方法について考えます。

入力レイヤーと同様に、忘却レイヤーは前のタイムステップの非表示状態と現在のタイムステップの新しい入力を取得し、それらを連結します。ポイントは、何を忘れ、何を覚えるべきかを確率的に決定することです。前の計算では、すべて1のシグモイドレイヤー出力を示しましたが、実際には0.999に近く、切り上げました。

計算は、入力レイヤーで行ったこととよく似ています。

ft=σ(Wf[バツt、ht−1]+bf)

これにより、サイズが3で、値が0〜1のベクトルが得られます。

[0.5、0.8、0.9]

次に、これらの値に基づいて、これら3つの情報のどれを忘れるべきかを確率的に決定します。これを行う1つの方法は、uniform(0、1)分布から数値を生成し、その数値がユニットが「オン」になる確率(ユニット1、2、3の場合は0.5、0.8、0.9)より小さい場合です。それぞれ)、そのユニットをオンにします。この場合、それはその情報を忘れることを意味します。

クイックノート:入力レイヤーと忘却レイヤーは独立しています。私が賭けをする人であれば、それは並列化に適した場所だと思います。

セル状態の更新

ここに画像の説明を入力してください

これで、セルの状態を更新するために必要なものがすべて揃いました。入力と忘却ゲートからの情報の組み合わせを取得します。

Ct=ft∘Ct−1+私t∘Ct〜

∘

余談:アダマール製品

バツ1=[1、2、3]バツ2=[3、2、1]

x1∘x2=[(1⋅3),(2⋅2),(3⋅1)]=[3,4,3]

終わります。

このようにして、セル状態に追加したいもの(入力)とセル状態から取り去りたいもの(忘れる)を組み合わせます。結果は、新しいセルの状態です。

出力ゲート

ここに画像の説明を入力してください

これにより、新しい非表示状態が得られます。基本的に、出力ゲートのポイントは、後続のセルの状態を更新するときに、モデルの次の部分で考慮する情報を決定することです。ブログの例は、言語です。名詞が複数形の場合、次のステップでの動詞の活用が変わります。疾患モデルでは、特定の地域の個人の感受性が別の地域と異なる場合、感染を獲得する可能性が変わる場合があります。

出力層は再び同じ入力を受け取りますが、更新されたセルの状態を考慮します。

ot=σ(Wo[xt,ht−1]+bo)

繰り返しますが、これは確率のベクトルを提供します。次に、計算します:

ht=ot∘tanh(Ct)

したがって、現在のセルの状態と出力ゲートは、何を出力するかについて合意する必要があります。

tanh(Ct)[0,1,1]ot[0,0,1][0,0,1]

htyt=σ(W⋅ht)

ht

LSTMには多くのバリアントがありますが、それは必須事項を網羅しています!


ご回答有難うございます!もう1つ質問がありますが、気にしないでください。ディープニューラルネットワークが深くなる可能性があるのは、ReLUの導関数が1であるためです(出力が0より大きい場合)。これは、このセルでも同じですか?TanhとSigmoidが1の定数導関数をどのように持つことができるかわかりませんか?
— user1157751

どういたしまして!ニューラルネットワークは、複数の隠れ層がある場合、「深い」と見なされます。アクティベーション関数の派生物(tanh、sigmoid、ReLU)は、ネットワークのトレーニング方法に影響します。おっしゃるように、入力が0より大きい場合、ReLUの勾配は一定であるため、関数のその領域にいる場合、その導関数は1です。TanhおよびS字型ユニットは、活性化領域の中央にいる場合、1に近い導関数を持ちますが、導関数は一定ではありません。たぶん、デリバティブに関する別のブログ投稿をする必要があります
— ....-StatsSorceress

活性化領域で1に近いそれらの導関数の例を表示できますか?私は派生物について話す多くのリソースを見ましたが、数学は行われませんか?
— user1157751

良い考えですが、それについて適切な投稿を書くのに少し時間がかかります。それまでの間、tanh関数の形状を考えてみてください-それは細長い「S」です。真ん中にあるのは、微分係数が最も高い場所です。Sがフラット(Sのテール)の場合、導関数は0です。シグモイドの最大導関数は0.25であるが、tanhに相当する限界がないというソースを見ました。
— -StatsSorceress

私が理解できない部分は、x> 0である定数1導関数を持つReLUとは異なりますが、シグモイドとtanhはその導関数の両方で変数値を持ちました。これはどのようにして「一定」にできますか?
— user1157751
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.