Pervasive Attention: 2D Convolutional Neural
Networks for Sequence-to-Sequence Prediction
DEEP LEARNING JP
[DL Papers]
Atsushi Kayama M3, Inc
書誌情報・概要
❏ Pervasive Attention : 2D Convolutional Neural Networks for
Sequence-to-Sequence Prediction
❏ Maha Elbayad, Laurent Besacier, Jacob Verbeek (Univ. Grenoble)
❏ The SIGNULL Conference on Computational Natural Language Learning 2018
❏ Pytorch実装:https://github.com/elbayadm/attn2d
❏ 英独翻訳タスクにおいて,Densenet Architecture を用いて SoTA達成
❏ 2D CNNで入力・出力文を畳み込み
❏ encoder, decoder まとめた一つのアーキテクチャになっている
❏ 従来の Encoder-Decoder 構造に比べて少パラメータ
Neural 翻訳モデルおさらい
❏ RNN (LSTM, GRU) + Attention 2014 ~
❏ CNN + Attention 2016 ~
❏ Attention のみ 2017 ~
Neural 翻訳モデルおさらい
❏ RNN (LSTM, GRU) + Attention
❏ encoder各ステップの隠れ状態を重み付き総和(Attention)した context をdecoder 各ス
テップにおいて求め,単語の生成に使用.
❏ Attention の計算・利用方法にはいくつかパターンが存在
❏ 計算パターン
❏ 内積注意 : encoder隠れ状態・decoder隠れ状態 の内積
❏ FFN注意:[encoder隠れ状態;decoder隠れ状態] を入力とする1層FFN
D. Bahdanau et. al 2015. Neural machine translation by jointly learning to align and translate. In ICLR
Neural 翻訳モデルおさらい
❏ CNN + Attention (Convs2s)
❏ 並列計算できるため,RNN比で計算の
高速化が可能
❏ CNNのカーネルが未来を参照しないよ
うにマスク
❏ Attention (Transformer)
❏ 自身の系列に適用する
Self-Attention のみで翻訳生成
❏ 単語の位置情報は別途付与
❏ Attentionが未来を参照しないようにマ
スク
A. Vaswani, et.al 2017. Attention is all you need. In NIPSJ. Gehring et.al 2017. Convolutional sequence to sequence learning. In ICML.
先行研究との差分
❏ 一つのDensenet Architecture で翻訳を実現
❏ 従来のニューラル翻訳ではEncoder-Decoder 構造がデファクトスタンダード
❏ 入力・出力系列をCNNで畳み込むことで Attention を実現
❏ 入力文とそれまでに生成した単語を用いて特徴量を計算し直すことができる
❏ 従来Attention は最初に encoder で計算した隠れ状態を繰り返し用いており, decoding しな
がらその表現を変更していくことはできない
❏ 訓練時は全ての単語をまとめて生成でき,訓練にかかる時間が少ない
❏ IWSLT 2014 German-to-English, English-to-German タスクでSoTA
モデル概要
1. 入力テンソルの作成
2. 畳み込みカーネルサイズの設定
3. DenseNet での畳み込み
4. Pooling・線形変換&Softmax
入力: S x T x (dt + ds) S x T x fl
T x fl 出力 :T x V
DenseNet 畳み込み Pooling FFN&Softmax
モデル概要
1. 入力テンソル |S| x |T| x (ds +dt) の作成
❏ 入力センテンスS ( |S| x ds)
出力センテンスT ( |T| x dt )
を出現位置で組合せ,入力テンソルを作成
2. 畳み込みのカーネルサイズを 5 x 3 に設定
❏ 右図青色領域がカーネルに対応する領域
❏ 未来の情報(右図灰色部分)は用いない
入力テンソルと畳み込みカーネル
モデル概要
3. DenseNet で畳み込み
❏ 各ブロック内での処理
❏ BatchNorm -> ReLU -> 1x1 Conv -> BatchNorm
-> 5x3 Conv -> Dropout
❏ gated linear unit を ReLU の代わりに使用
❏ l 番目のブロックの入・力feature 次元
❏ f0
+ (l - 1)g ー> 4g (1x1Conv) ー> g (5x3Conv)
❏ f0
= ds + dt
❏ 1ブロック毎に g 次元増加
モデル概要
4. Pooling ( 3パターン) S x T x fL
ー> T x fL
❏ max pooling
❏ average pooling ( センテンス長の平方根で割る)
❏ self attention pooling
❏ 重み付け足し合わせで pooling
❏ max pooling もしくは average pooling で得られたテンソルと concat するか,
単独で用いる
❏ w : fL
次元ベクトル
実装詳細
❏ Optimizer : Adam
❏
❏ 学習率:5e^-4,減衰率:0.8
❏ 8k update 毎に validation Loss を確認,0.01 以上の改善が見られなければ学習率を減衰
❏ 40epoch 学習
❏ 幅5 のビームサーチで翻訳し,評価
実験結果
❏ Pooling方法・活性化関数の比較
❏ Max pooling を用いるのが良い
❏ ベストはmax pooling と self attention pooling
を concat する方法
❏ 最適なembedding, g, L の値を探索
❏ 下記で他のモデルと比較
❏ embedding =128
❏ g = 32
❏ L = 24
実験結果
❏ カーネルサイズ:5,L (depth) = 20 程度がパフォーマンスが良い
❏ 同じ深さでは k が小さい方が良かった( L = 16 での比較 )
❏ ほぼ全てのセンテンス長で提案手法がトップのBLEUスコアを記録
❏ 69単語以上のケースではCovS2S, Transformer 優位
実験結果
❏ 少ないパラメータ数で高いBLEUスコアを記録
❏ Transformer に比べてパラメータ数は1/8
❏ 学習に掛かった時間は ConvS2S < Pervasive(本論文) = Transformer
実験結果
❏ Alignment を確認
❏ 生成したBP w の生成確率へ,どの入力BP i が影響を与えていたか可視化
❏ max pooling オペレーション後に残る特徴量Bij
の内,入力 i の由来のものの,
出力 j (BP w ) に対する入力値αij
を計算
❏ 出力 j (BP w ) に対する αij
の値を確認することで,どの入力 i が BP の生成に効いていたの
かがわかる
実験結果
❏ 翻訳に必要な単語の情報を参照できている
❏ for some time <ー> seit einiger zeit
❏ 名前もBPEに分解した後に再現できてる(camer@@onrus@@)

[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-Sequence Prediction

  • 1.
    Pervasive Attention: 2DConvolutional Neural Networks for Sequence-to-Sequence Prediction DEEP LEARNING JP [DL Papers] Atsushi Kayama M3, Inc
  • 2.
    書誌情報・概要 ❏ Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-Sequence Prediction ❏ Maha Elbayad, Laurent Besacier, Jacob Verbeek (Univ. Grenoble) ❏ The SIGNULL Conference on Computational Natural Language Learning 2018 ❏ Pytorch実装:https://github.com/elbayadm/attn2d ❏ 英独翻訳タスクにおいて,Densenet Architecture を用いて SoTA達成 ❏ 2D CNNで入力・出力文を畳み込み ❏ encoder, decoder まとめた一つのアーキテクチャになっている ❏ 従来の Encoder-Decoder 構造に比べて少パラメータ
  • 3.
    Neural 翻訳モデルおさらい ❏ RNN(LSTM, GRU) + Attention 2014 ~ ❏ CNN + Attention 2016 ~ ❏ Attention のみ 2017 ~
  • 4.
    Neural 翻訳モデルおさらい ❏ RNN(LSTM, GRU) + Attention ❏ encoder各ステップの隠れ状態を重み付き総和(Attention)した context をdecoder 各ス テップにおいて求め,単語の生成に使用. ❏ Attention の計算・利用方法にはいくつかパターンが存在 ❏ 計算パターン ❏ 内積注意 : encoder隠れ状態・decoder隠れ状態 の内積 ❏ FFN注意:[encoder隠れ状態;decoder隠れ状態] を入力とする1層FFN D. Bahdanau et. al 2015. Neural machine translation by jointly learning to align and translate. In ICLR
  • 5.
    Neural 翻訳モデルおさらい ❏ CNN+ Attention (Convs2s) ❏ 並列計算できるため,RNN比で計算の 高速化が可能 ❏ CNNのカーネルが未来を参照しないよ うにマスク ❏ Attention (Transformer) ❏ 自身の系列に適用する Self-Attention のみで翻訳生成 ❏ 単語の位置情報は別途付与 ❏ Attentionが未来を参照しないようにマ スク A. Vaswani, et.al 2017. Attention is all you need. In NIPSJ. Gehring et.al 2017. Convolutional sequence to sequence learning. In ICML.
  • 6.
    先行研究との差分 ❏ 一つのDensenet Architectureで翻訳を実現 ❏ 従来のニューラル翻訳ではEncoder-Decoder 構造がデファクトスタンダード ❏ 入力・出力系列をCNNで畳み込むことで Attention を実現 ❏ 入力文とそれまでに生成した単語を用いて特徴量を計算し直すことができる ❏ 従来Attention は最初に encoder で計算した隠れ状態を繰り返し用いており, decoding しな がらその表現を変更していくことはできない ❏ 訓練時は全ての単語をまとめて生成でき,訓練にかかる時間が少ない ❏ IWSLT 2014 German-to-English, English-to-German タスクでSoTA
  • 7.
    モデル概要 1. 入力テンソルの作成 2. 畳み込みカーネルサイズの設定 3.DenseNet での畳み込み 4. Pooling・線形変換&Softmax 入力: S x T x (dt + ds) S x T x fl T x fl 出力 :T x V DenseNet 畳み込み Pooling FFN&Softmax
  • 8.
    モデル概要 1. 入力テンソル |S|x |T| x (ds +dt) の作成 ❏ 入力センテンスS ( |S| x ds) 出力センテンスT ( |T| x dt ) を出現位置で組合せ,入力テンソルを作成 2. 畳み込みのカーネルサイズを 5 x 3 に設定 ❏ 右図青色領域がカーネルに対応する領域 ❏ 未来の情報(右図灰色部分)は用いない 入力テンソルと畳み込みカーネル
  • 9.
    モデル概要 3. DenseNet で畳み込み ❏各ブロック内での処理 ❏ BatchNorm -> ReLU -> 1x1 Conv -> BatchNorm -> 5x3 Conv -> Dropout ❏ gated linear unit を ReLU の代わりに使用 ❏ l 番目のブロックの入・力feature 次元 ❏ f0 + (l - 1)g ー> 4g (1x1Conv) ー> g (5x3Conv) ❏ f0 = ds + dt ❏ 1ブロック毎に g 次元増加
  • 10.
    モデル概要 4. Pooling (3パターン) S x T x fL ー> T x fL ❏ max pooling ❏ average pooling ( センテンス長の平方根で割る) ❏ self attention pooling ❏ 重み付け足し合わせで pooling ❏ max pooling もしくは average pooling で得られたテンソルと concat するか, 単独で用いる ❏ w : fL 次元ベクトル
  • 11.
    実装詳細 ❏ Optimizer :Adam ❏ ❏ 学習率:5e^-4,減衰率:0.8 ❏ 8k update 毎に validation Loss を確認,0.01 以上の改善が見られなければ学習率を減衰 ❏ 40epoch 学習 ❏ 幅5 のビームサーチで翻訳し,評価
  • 12.
    実験結果 ❏ Pooling方法・活性化関数の比較 ❏ Maxpooling を用いるのが良い ❏ ベストはmax pooling と self attention pooling を concat する方法 ❏ 最適なembedding, g, L の値を探索 ❏ 下記で他のモデルと比較 ❏ embedding =128 ❏ g = 32 ❏ L = 24
  • 13.
    実験結果 ❏ カーネルサイズ:5,L (depth)= 20 程度がパフォーマンスが良い ❏ 同じ深さでは k が小さい方が良かった( L = 16 での比較 ) ❏ ほぼ全てのセンテンス長で提案手法がトップのBLEUスコアを記録 ❏ 69単語以上のケースではCovS2S, Transformer 優位
  • 14.
    実験結果 ❏ 少ないパラメータ数で高いBLEUスコアを記録 ❏ Transformerに比べてパラメータ数は1/8 ❏ 学習に掛かった時間は ConvS2S < Pervasive(本論文) = Transformer
  • 15.
    実験結果 ❏ Alignment を確認 ❏生成したBP w の生成確率へ,どの入力BP i が影響を与えていたか可視化 ❏ max pooling オペレーション後に残る特徴量Bij の内,入力 i の由来のものの, 出力 j (BP w ) に対する入力値αij を計算 ❏ 出力 j (BP w ) に対する αij の値を確認することで,どの入力 i が BP の生成に効いていたの かがわかる
  • 16.
    実験結果 ❏ 翻訳に必要な単語の情報を参照できている ❏ forsome time <ー> seit einiger zeit ❏ 名前もBPEに分解した後に再現できてる(camer@@onrus@@)