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
初期化は結構大変そう。
ノーテーション

入力はmトークン、一つあたりV次元だが、embedによりこれがf次元となる(ただしfやVは以後あまり出てこない)。
CNNブロック

というのはk個の入力、という意味。一つあたりd次元。ちなみに5.1での実験のkは3とか。
入力は実際はm個あり、これをkずつconvolutionしていく。結果もm個となる。1個あたりの次元も最終的にはdになるので、入力と同じ個数、次元となる。
この2倍の次元を出力して、半分にsigmoidを掛けてpoint wise multiplyするのはGLU(gated linear unit)というものらしい。
Encoder-Decoderの概略

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

dはhとの線形和(decoder state summaryと呼んでいる)。このdecoderの状態要約とzの関係で求めるアテンションとなる。 オリジナルのアテンションと比べると、単純にhとのalignでは無くgiも含めた現時点のデコーダーのコンテキスト的なものを使うのと、元入力であるが入っていたりするのが違う。