以前transformerについてこのような質問をしたものです。
https://teratail.com/questions/171734
親切に回答していただいたのですが、いまだにわからない部分2つあります。
1つ目は推測時のデコーダーへの入力データのshapeです。
日本語から英語への翻訳タスクとして、学習時には複数の単語IDが含まれた文章をベクトルに変換し
(バッチサイズ,バッチ内での文章の最大単語数,ベクトルサイズ)
の形で入力データとして用いると思います。
また、self-attensionの時にはまだ出ていない先の単語を学習しないようにmaskingすることも理解しています。
しかし、推測するときはどのような入力データを与えているのでしょうか?
私の考えでは最初の入力として<bos>タグのベクトルだけを渡してエンコーダーの値と合わせることで次の単語を予測するのではと思っています。
しかし、ここで私の2つ目のわからない部分が出てくるのですが、もしそのように<bos>タグだけを入力データとして渡すとすると<bos>タグのベクトルだけでself-attensionが行われ、その後も予測された各単語を入力値とした時にはエンコーダーで計算された値は固定されたまま、各単語ベクトルごとにSourceTarget-Attentionが行われるのでしょうか?
質問の内容がわかりづらい部分があると思うので、そのときは躊躇なく聞いてください。
よろしくお願いします。
あなたの回答
tips
プレビュー