バニラニューラルネットワークからリカレントニューラルネットワークに進む際の質問


8

私は最近、与えられた数の入力、非表示のノード、および入力と同じ数の出力で、バニラニューラルネットワークがどのように機能するかを学びました。

私はリカレントニューラルネットワークに関連するさまざまな投稿を見てきましたが、その背後にある概念は理解していますが、RNNの背後にあるロジックの特定の部分は理解できません。

ここに私が持っている4つの主な質問があります:

  1. 再帰型ニューラルネットワークで逆伝播はどのように機能しますか?
  2. 入力から非表示ノードにつながる重みは、他のすべてのステップで同じですか?非表示ノードから出力までの重みはどうですか?
  3. バイアスはリカレントニューラルネットワークでどのように機能するのですか?
  4. 活性化関数としてシグモイド関数の代わりにタン関数が通常使用されるのはなぜですか?

これらの質問のいくつかは非常に基本的であることに気づきましたが、基本は今まさに必要なものだと思います。

関連する動画や投稿へのリンクも非常に役立ち、正しい結果を示すGoogleキーワードも役立ちます。これら4つの質問は、サンプルのPythonコードを理解するのを妨げているため、本当に助けが必要です。


「入力と同じ数の出力」。待って、何?これに注意してください。ステートメントが真実であるNNに出くわすことはあまりありません。これらの数値は大幅に変動する可能性があり、入力と出力が正確に一致するNNで最後に作業したときは思いつきません。入力は、利用可能な機能に基づいて入力したいものであり、出力は、取得しようとしている答え(バイナリ、分類など)によって異なります。これら2つが一致することは非常にまれです。
I_Play_With_Data 2018

回答:


3

この質問は、RNNとDNNの一般的ないくつかの非常に重要な性質を理解します。同じ順序ではありませんが、それぞれのサブ質問に回答します(どこにあるかを強調します)

パラメータの共有

まず、RNNの最も重要な品質はパラメーター共有と呼ばれます。通常、シーケンシャルデータは個別のレイヤーに入力されます。長さが20の入力の場合、RNNネットワークは20層になります。各レイヤーに同じ内部パラメーターが使用されるため、20のレイヤーすべてが同じ重みとバイアスます。これを、20の個別の重みとバイアスを持つ多層パーセプトロンと比較してください。bWb

パラメータの共有にはいくつかの利点があります。

  • これで、パラメーターがはるかに少なくなりました。20の個別のレイヤーではなく、1つの繰り返しブロックがあります。20倍の削減!
  • これにより、トレーニングデータが効果的に乗算されます。反復層は、1つの例文のすべての単語から学習しますが、MLPの各層は、文ごとに1つの単語から学習します。
  • 私たちのネットワークははるかに柔軟になりました。20ワードまでの文でトレーニングし、ステップを追加するか動的RNNを使用して、25ワードの文に一般化できます。

ネットワークアーキテクチャー

あなたはtanhとシグモイドアクティベーションについて尋ねます。これに答えるには、特定のRNNアーキテクチャについて話す必要があります。上記で説明した単純なRNNには、単一のアクティブ化があります。単純なRNN は、同じ重みと活性化関数を繰り返し適用するため、勾配が消える(または爆発する)問題を引き起こす傾向があります。

ゲート付きRNNブロック(GRUやLSTMなど)は、ゲートメカニズムを使用して、アクティブ化をメモリ状態に出し入れし、メモリ状態を入力と組み合わせて各ブロックの出力を生成します。このため、ゲートは勾配の後方への伝播を停止できます。シグモイドはアクティブ化を(0,1)に押しつぶすのでゲートの一般的なアクティブ化関数です--- 0は完全にアクティブ化を停止し、1は通過させます。ただし、同様のスカッシュプロファイルを備えたまともなアクティベーション機能は機能します。事例的には、最近ではハードシグモイドが一般的です。

ゲートに加えて、ゲートRNNブロックには内部状態があり、アクティブ化はかなり変化します。ゲーティングはグラディエントバックプロップを制限するため、このアクティブ化には多くの柔軟性があります。たとえば、つぶす必要はありません。これは、整流のアクティブ化(relu、elu、isluなど)がよく見られる場所です。Tanhも完全に賢明な選択です。

バイアスと重みについては、RNNセルの各アクティブ化には通常、独自の重みとバイアスがあります。したがって、GRUには3つのアクティブ化(非表示、更新、およびリセット)があり、それぞれに独自の重みとバイアスがあります。ただし、RNNとして、これらのそれぞれがすべてのタイムステップで再利用されることを思い出してください。

後方パス

これは順方向パスをうまくカバーしていますが、エラーがどのように逆方向に伝播するかについても重要な質問をします。これに対処するには2つの方法があります。

教師強制

各タイムステップで予測を出力するRNN(次のステップの結果の予測、変換、音素認識など)の場合、教師の強制はRNNの各ステップを分離する方法です。これらの依存関係を削除することで、ティーチャーフォーシングはRNNがチェーンルールで従来のバックプロップを使用できるようにします。

しかし、それはどのように機能しますか?教師強制ネットワークには、個別のトレーニングアーキテクチャとテストアーキテクチャがあります。トレーニングでは、各タイムステップで、入力が前のターゲットと連結されます。次の特性を予測するタスクを課されたネットワークについてこれを想像してください。ネットワークは、前のタイムステップのキャラクターを予測しようとしました。ただし、代わりにそのタイムステップで観測されたキャラクターを使用します(これはトレーニングフェーズにいるのでわかります)。したがってタイムステップでの誤差だけで観測値に依存してとの入力。このようにして、時間をかけてネットワークから接続を削除しました。x t y t 1 t t 1 ttxtyt1tt1t

テストでは、各タイムステップでの真の値がわからないため、を前のレイヤーの出力でます。この場合、一時的な接続は戻りましたが、テスト段階でのみです。 o t 1yt1ot1

時間の経過による逆伝播

しかし、教師フォーシングに頼る必要はありません。時間を介した逆伝播により、逆伝播アルゴリズムをRNNに適用できます。タイムステップと、各タイムステップの入力、非表示状態、出力、観測値のネットワークを考えます。x h o ynxhoy

BPTTは次の手順で機能します。

  1. 各ペアの勾配を計算します。(これは一度にすべて実行できます。) O 、TY Totot,yt
  2. 最後のタイムステップから始めて、逆方向に繰り返し作業しながら、各タイムステップの勾配を計算します。(これは一度に1つずつ実行する必要があります。)ht
  3. これにより、RNNの内部パラメーターごとにエッジが得られます。パラメータを更新するコツは、各タイムステップの勾配の寄与を見つけ(たとえば、が1つしかない場合でも)、それらの勾配を合計して内部パラメーターを更新することです。W T Wn WtW

参考文献

RNNの詳細については、Goodfellow、Bengio、Courvilleのディープラーニングの第10章を強くお勧めします。さらに、GravesのRNNブックは、より詳細な詳細のために素晴らしいです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.