Seq2Seqとは
Sequence-to-Sequence
入力系列を、長さの異なる別の系列へ変換するEncoder-Decoder型のニューラルネットワークアーキテクチャ
ひとことで言うと
ある系列のデータを、別の長さの系列に変換するAIモデルの型。翻訳などに使われる。
概要
Seq2Seq(Sequence-to-Sequence)とは、可変長の入力系列を受け取り、それとは異なる長さの出力系列を生成するニューラルネットワークアーキテクチャ。 入力系列を内部表現へ圧縮するEncoderと、その内部表現をもとに出力系列を1要素ずつ生成するDecoderの2つの構成要素からなる。 機械翻訳(異なる言語間の文の変換)、文章要約(長い文章から短い要約への変換)、音声認識(音声から文字列への変換)など、入力と出力の系列長が一致しないタスクに広く応用されてきた。
背景
従来のニューラルネットワークは固定長の入出力を前提とすることが多く、翻訳や要約のように入力と出力の長さが一致しない、あるいは事前に決まらないタスクを直接扱うのが難しかった。 Seq2Seqは、Encoderで入力を可変長のまま内部表現へ変換し、Decoderで別の可変長系列を生成することで、こうした系列変換タスクを統一的に扱うために考案された。
歴史
2014年: SutskeverらがLSTMを用いたEncoder-Decoder構成のSeq2Seqモデルを機械翻訳タスクに適用し、高い性能を報告。 2014年: Bahdanauらが、SeqSeqにAttention機構を組み合わせることで、長い系列における性能低下を緩和する手法を提案。 2017年: Transformerの登場により、Seq2SeqのEncoder・Decoderの内部構造がRNNから自己注意機構ベースへ置き換わっていった。
アーキテクチャ
Encoderが入力系列全体を読み込み、内部表現(コンテキストベクトル、またはAttentionを使う場合は隠れ状態の系列)を生成する。 Decoderはその内部表現と、それまでに自身が生成した出力を手がかりに、次の1要素を逐次的に予測していく。 学習時には、Decoderの入力として実際に生成した値ではなく正解データを与えるTeacher Forcingという手法がよく使われ、学習を安定させる。
ワークフロー
入力系列をEncoderへ入力し内部表現を得る → Decoderの初期状態にその内部表現を渡す → 開始トークンからDecoderが1要素ずつ出力を生成 → 各ステップの出力を次の入力として与えながら終了トークンが出るまで繰り返す。
利点
- 入力と出力の系列長が異なるタスクを、統一的なアーキテクチャで扱える
- 機械翻訳・要約・音声認識など、幅広い系列変換タスクに応用できる
- Attention機構と組み合わせることで、長い入力系列でも性能低下を抑えられる
欠点
比較
- Encoder — EncoderはSeq2Seqモデルを構成する2つの要素のうち、入力側を処理する部分
- Attention — Attention機構は、Seq2Seqモデルが長い入力系列を扱う際の情報損失を緩和するために組み合わされた
- Transformer — TransformerはSeq2Seqの発展形で、RNNの代わりに自己注意機構でEncoder・Decoderを構成する
関連用語
よくある質問
Seq2SeqとTransformerの関係は?
TransformerはSeq2Seqの発展形で、EncoderとDecoderという基本構造は引き継ぎつつ、内部の処理をRNNから自己注意機構ベースへ置き換えたアーキテクチャ。
Teacher Forcingとは?
学習時にDecoderへ、直前の自分自身の出力ではなく正解データを入力として与える手法。学習を安定・高速化できるが、推論時との入力の与え方の違いが性能差を生むことがある。
参考文献
- Research PaperSequence to Sequence Learning with Neural Networks