Seq2seq
Seq2seqは、ある配列(sequence)を別の配列に変換することができる(配列変換(英語版))。この変換には、回帰型ニューラルネットワーク(RNN)や、勾配消失問題を避けるために長期・短期記憶(LSTM)やゲート付き回帰型ユニット(GRU)が使用される。各項目のコンテキストには前のステップの出力が使われる。主な構成部位は、一組のエンコーダーネットワークとデコーダーネットワークである。エンコーダーは、各項目を、その項目とコンテキストを含んだ対応する隠れベクトルに変換する。デコーダは、このプロセスを逆転させ、前の出力を入力コンテキストとして使用しながら、ベクトルを出力項目に変換する。
最適化には次のような手法がある。
アテンション
デコーダへの入力は、コンテキスト全体を格納する単一ベクトルである。アテンションにより、デコーダが入力配列を選択的に調べることを可能にする。
ビームサーチ
出力として単一の単語を選択するのではなく、いくつかの確率が高い選択肢を保持したツリーとして構造化する(アテンションスコアの集合に対してSoftmaxを使用)。エンコーダーの状態は、アテンション分布により重み付けされ、平均化される。
バケット化
入力と出力のそれぞれに0を付け足して、配列を可変長にすることができる。ただし、配列長が100で入力がわずか3項目の場合、高価なスペースが無駄になる。バケットはさまざまな長さを取り、入力と出力の両方の長さを指定することができる。
訓練では通常、クロスエントロピー損失関数が使用され、ある出力は後続の出力の確率が1未満になるようペナルティが課せられる。