ConvS2S
Less than 1 minute
ConvS2S
機械翻訳にRNNでは無くCNNを使う事を提唱した論文。別名: ConvolutionalSequenceToSequenceLearning
- arxiv:1705.03122 Convolutional Sequence to Sequence Learning
- fairseq/fairseq/models/fconv.py at 3d262bb25690e4eb2e7d3c1309b1e9c406ca4b99 · facebookresearch/fairseq 実装はこれか。
Transformerを踏まえた特徴
Transformerへとつながる数々のアイデアがある。
- Positional embedding
- Multi step attention
初期化は結構大変そう。
ノーテーション

CNNブロック

これをconvolutionしていく。
Encoder-Decoderの概略

cがAttention。Decoderの各レイヤにある。
アテンション

dはhとの線形和(decoder state summaryと呼んでいる)。このdecoderの状態要約とzの関係で求めるアテンションとなる。 オリジナルのアテンションと比べると、単純にhとのalignでは無くgiも含めた現時点のデコーダーのコンテキスト的なものを使うのと、元入力であるが入っていたりするのが違う。
Positional Embedding
論文では詳細は述べていないが、以下の実装を見ると
単なるintのindexにWを掛けて、そのWを学習する感じになっている。通常のembeddingと同じ計算だな。 上の実装にはTransformerで提唱されたsinの奴も入っているが。
なお、positional embedding無しでもそこそこスコアはでているので、これ無しでもそこそこは位置を扱えていそう。テーブル4に以下のスコアがある。
| 項目 | BLUE |
|---|---|
| 両方にpositional embedding | 21.7 |
| targetだけpositional embedding | 21.3 |
| sourceだけpositional embedding | 21.5 |
| 両方無し | 21.2 |
sourceの方が影響はでかそう。