RNN:いつBPTTを適用するか、重みを更新するか?
音素分類に関するGravesの2005年の論文(とりわけ)を使用して、シーケンスラベリングへのRNNの高レベルの適用を理解しようとしています。 問題を要約すると、個々の音素(無音、各オーディオファイルの各サンプルに音素記号が付けられるようにします。) この論文の主旨は、隠れ層にLSTMメモリセルを持つRNNをこの問題に適用することです。(彼はいくつかのバリアントと他のいくつかの手法を比較として適用しています。私は今のところ、物事を単純に保つために、単方向LSTMにのみ関心があります。) 私はネットワークのアーキテクチャを理解していると思います。オーディオ作業の標準的な方法で前処理された、オーディオファイルの10 msウィンドウに対応する入力レイヤー。LSTMセルの非表示層、およびすべての可能な61個の電話記号のワンホットコーディングを備えた出力層。 LSTMユニットを通過するフォワードパスとバックワードパスの(複雑ですが簡単な)方程式は理解できたと思います。それらは単なる微積分と連鎖規則です。 この論文といくつかの類似の論文を数回読んだ後、私が理解していないのは、バックプロパゲーションアルゴリズムを正確に適用するタイミングと、ニューロンのさまざまな重みを正確に更新するタイミングです。 2つのもっともらしい方法が存在します。 1)フレーム単位のバックプロップと更新 Load a sentence. Divide into frames/timesteps. For each frame: - Apply forward step - Determine error function - Apply backpropagation to this frame's error - Update weights accordingly At end of sentence, reset memory load another sentence and continue. または、 2)文ごとのバックプロップと更新: …