学習時と推論時の入力系列

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$ は語彙集合である.

備考

EOS[Beginning Of Sequence]

「系列の開始」を示す特別な記号である.デコーダに入力を与える際, 最初の位置に置かれ, モデルに「ここから系列が始まる」という情報を与える.例えば翻訳モデルでは, ターゲット言語の文を生成するとき, 最初の入力として <BOS> を与える.

EOS[End Of Sequence]

「系列の終端」を示す特別な記号である.モデルが出力を生成する際, ある位置で <EOS> を予測した時点で系列の終了を意味する.推論時はこれが出現した段階で生成を停止する.

プログラミング上での取り扱い

実際のプログラミング環境では BOSEOS は通常,語彙[Vocabulary]の中に特別トークン[special tokens]として登録され,文字列や ID[整数値]の形で扱われる.

Mathematics is the language with which God has written the universe.





















SLURM $l$ 層における多頭自己注意機構 Transformer LASSO ピアソンの積率相関係数 リンター