アクション予測のためにLSTM-RNNへの入力として使用する時系列のデータセットがあります。時系列は、30 fps(つまり、150データポイント)で5秒の時間を含み、データは顔の特徴の位置/動きを表します。
データセットに冗長性を追加し、過剰適合を減らすために、データセットからより短い長さの追加のサブシーケンスをサンプリングします。この場合、私はサブシーケンスの開始フレームと終了フレームを知っています。
モデルをバッチでトレーニングするには、すべての時系列が同じ長さである必要があり、文献の多くの論文によると、パディングはネットワークのパフォーマンスに影響を与えないはずです。
例:
元のシーケンス:
1 2 3 4 5 6 7 8 9 10
サブシーケンス:
4 5 6 7
8 9 10
2 3 4 5 6
私のネットワークがアクションを予測しようとしていることを考えると(つまり、P(action)> t = 0からT = tmaxになり、アクションが予測されます)パディングがどこに行くかは重要ですか?
オプション1:ゼロは元の値に置き換えられます
0 0 0 4 5 6 7 0 0 0
0 0 0 0 0 0 0 8 9 10
0 2 3 4 5 6 0 0 0 0
オプション2:最後にすべてゼロ
4 5 6 7 0 0 0 0 0 0
8 9 10 0 0 0 0 0 0 0
2 3 4 5 0 0 0 0 0 0
さらに、一部の時系列にはいくつかのフレームがありませんが、どのフレームであるかはわかりません。つまり、60フレームしかない場合、0秒から2秒、1秒から取得されているかどうかはわかりません。サブシーケンスを取得する前に、これらをパディングする必要があります。この場合のパディングのベストプラクティスは何ですか?
前もって感謝します。
一般にLSTMとRNNの最も強力な属性は、それらのパラメーターが時間枠に沿って共有されることです(パラメーターrecurは時間枠にわたって)が、パラメーター共有は依存します同じパラメータを異なるタイムステップに使用できると仮定すると、つまり、前のタイムステップと次のタイムステップの関係はtに依存しません説明したように ここでは388ページの2番目の段落 。
要するに、最後にゼロを埋めると、理論的にモデルの精度が変わることはありません。副詞を理論的に使用しました。これは、各タイムステップで、LSTMの決定が他の要因の中でもセルの状態に依存し、このセルの状態が過去のフレームの短い要約のようなものであるためです。私の知る限り、あなたの場合、過去のフレームが欠落している可能性があります。ここにあるのは少しトレードオフだと思います。
RNNの基本的な仮定と完全に矛盾せず、実装して追跡する方が便利なため、最後にゼロを埋めたいと思います。
実装側では、各サンプルのシーケンスと実際のシーケンスサイズを指定すると、tensorflowが損失関数を計算することを知っています(たとえば、4 5 6 7 0 0 0 0 0 0の場合は、実際のサイズも指定する必要があります。 4ここで)オプション2を実装していると仮定します。ただし、オプション1の実装があるかどうかはわかりません。
このペーパーが示唆しているように、最初はゼロのパディングを選択することをお勧めします LSTMおよびCNNに対するパディングの影響 、
ポストパディングモデルは6エポックで効率がピークに達し、その後オーバーフィットし始めましたが、精度はプレパディングよりもはるかに低くなっています。
表1を確認してください。ここでは、プレパディング(最初にゼロをパディング)の精度は約80%ですが、ポストパディング(最後にゼロをパディング)の精度は約50%にすぎません。