We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【前提知識】 seq2seq モデル 自然言語処理(NLP)のタスクにおいて、{機械翻訳・対話・質問応答・文書要約}などのタスクは、ある系列(sequence)から別の系列(sequence)への変換処理であるとみなすことができる。 seq2seq モデルはこのような変換処理を、上図のような encoder-decoder 構造を持つ RNN ベースのアーキテクチャでモデル化したモデルになっている。具体的には、以下のような処理を行う。
Encoder 側処理 one-hot ベクトルで表現された入力系列のベクトル X を encoder 側の RNN(多くの場合はLSTMが採用される)ネットワークで符号化ベクトルに変換する。RNN の各層では以下のような処理が行われる
Decoder 側処理 上記 Encoder で変換した符号化ベクトルを decoder 側のRNN(多くの場合はLSTMが採用される)ネットワークで出力系列のベクトルに変換する。具体的には、以下のような処理を行う。
【前提知識】 attention 構造付き seq2seq モデル seq2seq モデルでは、RNN ネットワークで入力系列を出力系列に変換するが、長い系列データに対しては、LSTM のような長期記憶構造を用いても変換精度が低い問題が存在する。 これは、RNN 構造において入力系列の情報が出力系列まで伝搬しづらいことに起因する問題であるので、より直接的に入力系列が出力系列に影響を与えられるような attention 構造(=入力系列のどの要素を重要視するかの構造)を導入する。
上図は、attention 構造(soft attention)付き seq2seq モデルのアーキテクチャ図である。 一般的な seq2seq モデルでは、encoder 側の中間層の状態ベクトルを符号化ベクトルとしていたが、このモデルでは、入力系列の各要素の重要度を表す重み(attention)a を導入している。 そして、この attention 重み a による中間層の状態ベクトルの重みつき平均 を decoder 側に入力するようにしている。 また、Decoder 側の出力として、一般的な seq2seq モデルでの ではなく で出力を行うようにしている。 ここで、attention 重み a に関しても、(Ω には内積がよく使わえる)のように decoder 側の出力を参照して帰的に計算するようにすることで、attention 重みも学習できるようにしている。
【前提知識】 attention 構造と辞書操作の関係(memory network) 上記 attention 構造 seq2seq モデルでの attention 計算式を、辞書操作における Q (query), K (key), V (value) の概念で一般化すると、以下のような式で書き換えられる。
この計算式は、検索 query に一致する key に対応した value を取り出すといった辞書操作を行っていることと同値である。 それ故に、attention 構造は、辞書オブジェクトであると解釈できる。
尚、attention 構造には、大きく分けて以下の2種類が存在する。
Source-Target attention key と value が encoder の中間層出力(source)から得られて、Query が decoder の中間層出力(target)から得られる attention 構造。入力系列の全ての位置情報が decoder に伝搬されていることになる。 上記 attention 構造付き seq2seq モデルは、この Source-Target attention 構造になっている。
Self-Attention query, key, value 全てが自身のネットワークの下位層から得られる attention 構造。 下位層全てからの情報が、上位層に伝搬されることになる。
Transformer では、Source-Target attention と Self-Attention での attention 構造両方が採用されている。
Transformer の後発論文において、画像タスクにおいても CNN より優れた結果になっているのは、CNN では1回の畳み込み操作で隣接ピクセルの情報しか伝搬できないの対して、Self-Attention では下位層全てからの情報を伝搬できるのが大きいと考えれれる。
アーキテクチャの全体像 上図は、本モデル(Transfomer)のアーキテクチャ図を示した図である。 Transfomer は、左側の赤枠を encoder とし右枠の青枠を decoder とする encoder-decoder モデルになっており、encoder, decoder それぞれの内部構造は、以下のようになる。
encoder {self-attention (multi-head attention)・残差接続&Norm処理・Position-wise な全結合フィードフォワード型ネットワーク}のレイヤーを N=6 回積み上げたネットワークで構成されている
decoder encoder と同じく{self-attention (multi-head attention)・残差接続&Norm処理・Position-wise な全結合フィードフォワード型ネットワーク}のレイヤーを N=6 回積み上げたネットワークで構成されているが、multi-head attention への入力は、encoder 側からの出力になる。また、対象単語の次の単語の正解データをカンニングしてしまうことを防止するために、対象単語より次の単語に attention が加わらないようにする Masked Multi-Head Attention 層が追加されている。
Positional Encoding Transfomer では、RNN の構造をなくしたために、入力系列における単語の順番情報を表現できなくなってしまっている。 そのため、入力系列を埋め込みベクトルに埋め込む際に、単語位置を定めるための情報を埋め込みベクトルに埋め込む。
Multi-Head Attention attention 構造付き seq2seq モデルでは、attention による重み付き平均和を decoder 側に入力するが、この平均化処理により、異なる文字位置での情報が欠落してしまう。 そのため本手法では、Q (query),K (key),V (value) をそれぞれ重み行列 W で線形変換し、後述の Scaled Dot-Product Attention で attention した h=8 個の中間出力を concat して出力するようにする。
concat することで、平均和のときよりも異なる文字位置での情報が欠落しずらくなっていると思われる
Transfomer では、この Multi-Head Attention を以下の3つの場所で使用している。
encoder-ecoder のボトルネック部分での Multi-Head Attention encoder-ecoder のボトルネック部分の Multi-Head Attention は、Source-Target attention になる。 即ち、key と value が encoder の中間層出力(source)から得られて、Query が decoder の中間層出力(target)から得られる 。
encoder 内部での Multi-Head Attention encoder 内部の Multi-Head Attention は、Self-Attention になる。 即ち、query, key, value 全てが自身の encoder の下位層から得られる
decoder 内部での Multi-Head Attention decoder 内部の Multi-Head Attention は、Self-Attention になる。 即ち、query, key, value 全てが自身の decoder の下位層から得られる 但し、対象単語の次の単語の正解データをカンニングしてしまうことを防止するために、対象単語より次の単語に attention が加わらないようにする Masked Self-Attention にしている
Position-wise Feed-Forward Networks Position-wise Feed-Forward Networks は、単語系列データの位置度(Position-wise)にフィードフォワード型ネットワーク(MLPなど)での処理を行うネットワークで、以下の式で定式化できる。
Positional Encoding Transfomer では、RNN の構造をなくしたために、入力系列における単語の順番情報を表現できなくなってしまっている。 そのため、入力系列を埋め込みベクトルに埋め込む際に、単語位置を定めるための Positional Encoding の行列 P, E を埋め込みベクトルに加算する。ここで、Positional Encoding の行列 P, E の各要素は、以下の式で定義される。
この式により、単語の位置 pos に従って、埋め込み加算値が変化するので、間接的に単語の順番情報が加味されることになる?
正則化 過学習を抑制するために、学習時に以下の2つの正則化処理を行っている。
Residual Droputout 各残差接続の Add と normalization 処理の手前で dropout 処理を行う。 Positional Encoding での加算処理の後にも dropout を適用する。 dropout 率は 0.1
Label Smoothing xxx
学習用データセット
実験設定
既存の自然言語モデルとの定量的比較検証
BLUE スコア 機械翻訳の定量的品質評価スコアで、機械翻訳結果と正解翻訳との類似度を以下の式で計算することで計算される。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
0. 論文情報・リンク
1. どんなもの?
2. 先行研究と比べてどこがすごいの?
attention 構造付き seq2seq モデルでは、このような問題を解決するために、入力系列のどの要素を重要視するかという attention 構造を導入しているが、依然として RNN 構造は残っているモデルになっている。
本手法では、上記 attention 構造付き seq2seq モデルの RNN 構造を全て排除し、attention 構造のみをもつような Transfomer と呼ばれるモデルを提案し、翻訳タスクにおける変換精度と学習速度ともに大幅な向上を実現している。
3. 技術や手法の"キモ"はどこにある?
【前提知識】 seq2seq モデル
自然言語処理(NLP)のタスクにおいて、{機械翻訳・対話・質問応答・文書要約}などのタスクは、ある系列(sequence)から別の系列(sequence)への変換処理であるとみなすことができる。
seq2seq モデルはこのような変換処理を、上図のような encoder-decoder 構造を持つ RNN ベースのアーキテクチャでモデル化したモデルになっている。具体的には、以下のような処理を行う。
Encoder 側処理
one-hot ベクトルで表現された入力系列のベクトル X を encoder 側の RNN(多くの場合はLSTMが採用される)ネットワークで符号化ベクトルに変換する。RNN の各層では以下のような処理が行われる
Decoder 側処理
上記 Encoder で変換した符号化ベクトルを decoder 側のRNN(多くの場合はLSTMが採用される)ネットワークで出力系列のベクトルに変換する。具体的には、以下のような処理を行う。
推論時は、正解データとしての出力系列が与えられないので、上図の点線矢印のように、推論出力データに対して BOS(文頭)~ EOS(文末)まで再帰的に埋め込み処理を行う。
【前提知識】 attention 構造付き seq2seq モデル
seq2seq モデルでは、RNN ネットワークで入力系列を出力系列に変換するが、長い系列データに対しては、LSTM のような長期記憶構造を用いても変換精度が低い問題が存在する。
これは、RNN 構造において入力系列の情報が出力系列まで伝搬しづらいことに起因する問題であるので、より直接的に入力系列が出力系列に影響を与えられるような attention 構造(=入力系列のどの要素を重要視するかの構造)を導入する。
上図は、attention 構造(soft attention)付き seq2seq モデルのアーキテクチャ図である。
一般的な seq2seq モデルでは、encoder 側の中間層の状態ベクトルを符号化ベクトルとしていたが、このモデルでは、入力系列の各要素の重要度を表す重み(attention)a を導入している。
そして、この attention 重み a による中間層の状態ベクトルの重みつき平均 を decoder 側に入力するようにしている。
また、Decoder 側の出力として、一般的な seq2seq モデルでの ではなく で出力を行うようにしている。
ここで、attention 重み a に関しても、(Ω には内積がよく使わえる)のように decoder 側の出力を参照して帰的に計算するようにすることで、attention 重みも学習できるようにしている。
【前提知識】 attention 構造と辞書操作の関係(memory network)
上記 attention 構造 seq2seq モデルでの attention 計算式を、辞書操作における Q (query), K (key), V (value) の概念で一般化すると、以下のような式で書き換えられる。
この計算式は、検索 query に一致する key に対応した value を取り出すといった辞書操作を行っていることと同値である。
それ故に、attention 構造は、辞書オブジェクトであると解釈できる。
尚、attention 構造には、大きく分けて以下の2種類が存在する。
Source-Target attention
key と value が encoder の中間層出力(source)から得られて、Query が decoder の中間層出力(target)から得られる attention 構造。入力系列の全ての位置情報が decoder に伝搬されていることになる。
上記 attention 構造付き seq2seq モデルは、この Source-Target attention 構造になっている。
Self-Attention
query, key, value 全てが自身のネットワークの下位層から得られる attention 構造。
下位層全てからの情報が、上位層に伝搬されることになる。
Transformer では、Source-Target attention と Self-Attention での attention 構造両方が採用されている。
アーキテクチャの全体像
上図は、本モデル(Transfomer)のアーキテクチャ図を示した図である。
Transfomer は、左側の赤枠を encoder とし右枠の青枠を decoder とする encoder-decoder モデルになっており、encoder, decoder それぞれの内部構造は、以下のようになる。
encoder
{self-attention (multi-head attention)・残差接続&Norm処理・Position-wise な全結合フィードフォワード型ネットワーク}のレイヤーを N=6 回積み上げたネットワークで構成されている
decoder
encoder と同じく{self-attention (multi-head attention)・残差接続&Norm処理・Position-wise な全結合フィードフォワード型ネットワーク}のレイヤーを N=6 回積み上げたネットワークで構成されているが、multi-head attention への入力は、encoder 側からの出力になる。また、対象単語の次の単語の正解データをカンニングしてしまうことを防止するために、対象単語より次の単語に attention が加わらないようにする Masked Multi-Head Attention 層が追加されている。
Positional Encoding
Transfomer では、RNN の構造をなくしたために、入力系列における単語の順番情報を表現できなくなってしまっている。
そのため、入力系列を埋め込みベクトルに埋め込む際に、単語位置を定めるための情報を埋め込みベクトルに埋め込む。
Multi-Head Attention
attention 構造付き seq2seq モデルでは、attention による重み付き平均和を decoder 側に入力するが、この平均化処理により、異なる文字位置での情報が欠落してしまう。
そのため本手法では、Q (query),K (key),V (value) をそれぞれ重み行列 W で線形変換し、後述の Scaled Dot-Product Attention で attention した h=8 個の中間出力を concat して出力するようにする。
Transformer では、内積計算での attention を Scaled Dot-Product Attention と呼び、通常の内積計算での attention 計算式に、scale factor で正規化する処理を追加している。
※ scale factor の値が大きい場合に内積の値が大きくなり、誤差逆伝播される softmax 出力の勾配が極端に小さくなる可能性があるので、scale factor での正規化処理を行っている。
Transfomer では、この Multi-Head Attention を以下の3つの場所で使用している。
encoder-ecoder のボトルネック部分での Multi-Head Attention
encoder-ecoder のボトルネック部分の Multi-Head Attention は、Source-Target attention になる。
即ち、key と value が encoder の中間層出力(source)から得られて、Query が decoder の中間層出力(target)から得られる 。
encoder 内部での Multi-Head Attention
encoder 内部の Multi-Head Attention は、Self-Attention になる。
即ち、query, key, value 全てが自身の encoder の下位層から得られる
decoder 内部での Multi-Head Attention
decoder 内部の Multi-Head Attention は、Self-Attention になる。
即ち、query, key, value 全てが自身の decoder の下位層から得られる
但し、対象単語の次の単語の正解データをカンニングしてしまうことを防止するために、対象単語より次の単語に attention が加わらないようにする Masked Self-Attention にしている
Position-wise Feed-Forward Networks
Position-wise Feed-Forward Networks は、単語系列データの位置度(Position-wise)にフィードフォワード型ネットワーク(MLPなど)での処理を行うネットワークで、以下の式で定式化できる。
Positional Encoding
Transfomer では、RNN の構造をなくしたために、入力系列における単語の順番情報を表現できなくなってしまっている。
そのため、入力系列を埋め込みベクトルに埋め込む際に、単語位置を定めるための Positional Encoding の行列 P, E を埋め込みベクトルに加算する。ここで、Positional Encoding の行列 P, E の各要素は、以下の式で定義される。
正則化
過学習を抑制するために、学習時に以下の2つの正則化処理を行っている。
Residual Droputout
各残差接続の Add と normalization 処理の手前で dropout 処理を行う。
Positional Encoding での加算処理の後にも dropout を適用する。
dropout 率は 0.1
Label Smoothing
xxx
4. どうやって有効だと検証した?
学習用データセット
実験設定
既存の自然言語モデルとの定量的比較検証
5. 議論はあるか?
これは、CNN では1回の畳み込み操作で隣接ピクセルの情報しか伝搬できないの対して、Transfomer の Self-Attention では下位層全てからの情報を伝搬できるのが大きいと考えれれる。
6. 次に読むべき論文はあるか?
7. 参考文献
The text was updated successfully, but these errors were encountered: