seq2seq RNNモデルをスコアリングするには、どの損失関数を使用する必要がありますか?
私は、seq2seqモデリング用のエンコーダー/デコーダーアーキテクチャーを紹介したCho 2014の論文を研究しています。 この論文では、長さ入力と長さ出力の損失関数として、与えられた入力(または負の対数尤度)の確率を使用しているようです。xxxMMMyyyNNN P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y_1, …, y_N | x_1, …, x_M) = P(y_1 | x_1, …, x_m) P(y_2 | y_1, x_1, …, x_m) \dots P(y_N | y_1, …, y_N-1, x_1, …, x_m) ただし、これを損失関数として使用することにはいくつか問題があると思います。 トレーニング中に教師が強制することを想定しているようです(つまり、次の反復への入力として位置のデコーダーの推測を使用する代わりに、既知のトークンを使用します。 長いシーケンスにペナルティを課しません。確率は出力のからであるため、デコーダーがより長いシーケンスを生成した場合、最初の後のすべてが損失に影響しません。111NNNNNN モデルが初期の文字列の終わりトークンを予測する場合でも、損失関数はステップを要求します。つまり、モデルのトレーニングされていない「多様体」に基づいて出力を生成しています。それはだらしないようです。NNN これらの懸念のいずれかは有効ですか?もしそうなら、より高度な損失関数への進展はありましたか?