Point:
学習時の入力系列は 原文[エンコーダ]+シフト済み教師系列[デコーダ]であり,推論時の入力系列は 原文[エンコーダ]+逐次生成された系列[デコーダ]である.
学習時におけるエンコーダ入力[ソース系列]は,\[X = (x_1, x_2, \dots, x_{T_x}),\]ここで, $T_x$ は入力系列の長さである.ターゲット系列[教師データ]は\[Y = (y_1, y_2, \dots, y_{T_y}),\]ここで, $T_y$ は出力系列の長さである.このとき、デコーダへの入力は\[Y_{\text{in}} = (\langle \text{BOS} \rangle, y_1, y_2, \dots, y_{T_y-1}),\]学習目標[教師信号]は\[Y_{\text{out}} = (y_1, y_2, \dots, y_{T_y-1}, \langle \text{EOS} \rangle).\]
一方, 推論時におけるエンコーダ入力は学習時と同じく,\[X = (x_1, x_2, \dots, x_{T_x}).\]
しかし, デコーダへの入力は逐次生成され, 時刻 $t$ においては\[Y_{\text{in}}^{(t)} = (\langle \text{BOS} \rangle, \hat{y}_1, \hat{y}_2, \dots, \hat{y}_{t-1}),\]ここで $\hat{y}_i$ はモデルが予測したトークンである.
次の出力は\[\hat{y}_t = \arg\max_{v \in V} P(y_t = v \mid Y_{\text{in}}^{(t)}, X),\]ただし $V$ は語彙集合である.
「系列の開始」を示す特別な記号である.デコーダに入力を与える際, 最初の位置に置かれ, モデルに「ここから系列が始まる」という情報を与える.例えば翻訳モデルでは, ターゲット言語の文を生成するとき, 最初の入力として <BOS> を与える.
「系列の終端」を示す特別な記号である.モデルが出力を生成する際, ある位置で <EOS> を予測した時点で系列の終了を意味する.推論時はこれが出現した段階で生成を停止する.
実際のプログラミング環境では BOS や EOS は通常,語彙[Vocabulary]の中に特別トークン[special tokens]として登録され,文字列や ID[整数値]の形で扱われる.
Mathematics is the language with which God has written the universe.