Open wisteria2gp opened 4 years ago
いわずとしれたTransformerの提案論文 既存のattention機構を応用し、RNNなしで時系列データを取り扱うモデルを提案した。
~また、それに際してAttentionに分類を与えているようである。 Self-Attention Scaled Dot-Product Attention Multi-Head Attention あたりも提案したことになるのかな?~
だんだんわかってきた 個人的なポイントは次のあたり
+αその他種々の技法の提案
https://arxiv.org/abs/1706.03762
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
2017/06/27
Transformerの提案
実装するのでキーワードだけでも列挙しておく
基本のAttentionのイメージで、2つの入力がinput(query)とmemory(key,value)に分けられる。 queryとkeyの演算からattention_weighをとり、それを用いてvalueから情報を抜き出す。 意味的にはmemoryから抜き取る情報を各時間(単語)それぞれで位置の対応(単語の照応)まできめて取る。
さきのinput,memoryを1入力で行う。したがって入力自身で、どの時間(単語)がどの時間(単語)を参照するかをきめてとる感じ。
(Self-)Attentionに用いることができる改善手法。 もとのAttentionのかわりにquery,key,valueを一律にhead数(本論文では8)で分割してそれぞれでAttentionさせた後concatする。 実装的にはquery,key,valueを隠れ層次元が head x 分割後dim となるようにDenseレイヤで変換した後、headで分割して処理する。
attention_weightの算出においてsoftmaxはqとkのlogitが大きくなるとサチるらしく、それを緩和するためにlogitが大きくならないよう、query,keyの次元で正規化する。
参照してほしくない値のattention_weightを0にするためにかける。 attention_weightはSoftmaxの出力なので、Maskする値を-∞にすると無視することができる。 Maskするならすべてこの処理をすれば良いので対象の行列と同じ形状で値の型をboolにしたものをattention_maskとする。 対象となるのはPADやDecoderの未来の情報参照。
Self-Attentionを繰り返し重ねることを指す?みためAttentionでやる残差結合。
HopのあとにFFNを挟む。
FFN は2層で、第一層の次元は hidden_dim * 4 で ReLU, 第二層の次元は hidden_dim で Linear な activation function をもちます。
まぁ...そうなるな。TransformerはLayer派らしい。
Layer Normalization, Dropout, Residual Connectionの併用
Transformerは各時間入力(単語)の順序を学習に用いることができない。 それを緩和するために位置を示した行列を添加する。 詳しくは検索して
どうもこいつの登場以降、こいつを軸にして発展したモデルファミリーがあり、それらは俗に「Transformers」と呼ばれているようだ。
NLPには、本論文のターゲットである翻訳タスク以外にも文書分類やQ&Aなど様々なタスクが有り、多くのモデルが、構造を微調整するだけでタスクを跨ぐ事ができるようになっている。こうした状況を踏まえ、現在の深層学習での学習アプローチは次の二段階で行われるのがメジャーである。
事前学習には主に2種のアプローチがあるらしい。
(あまり理解していないので話半分で読んでほしいが) 1はLSTMベースのELMoで使われている(自己回帰型事前学習?)。2はGenerative Pre-trained Transformer(GPT)というTransformerベースのモデルで使用されている(自己符号化型事前学習?)。そしてBERTは2に対応する(Transfoormerベース)。
さきに言及したTransformersはおそらくここらへんで分けられていて、Transformerベースのモデルがそれに当たる。Ex. Transformer-XLやBERT
しかしながら、BERTの弱点を克服するとして提案されたXLNetは自己回帰モデルを使いつつ...という内容でTransformersに分けられている節があるので、もうなんか勝手に言った人の勝ちなのかもしれない。
とにかく、ここで出てきた論文についてもいずれ扱いたい。
BERTを超えたXLNetの紹介
作って理解する Transformer / Attention
一言でいうと
いわずとしれたTransformerの提案論文 既存のattention機構を応用し、RNNなしで時系列データを取り扱うモデルを提案した。
~また、それに際してAttentionに分類を与えているようである。 Self-Attention Scaled Dot-Product Attention Multi-Head Attention あたりも提案したことになるのかな?~
だんだんわかってきた 個人的なポイントは次のあたり
+αその他種々の技法の提案
論文リンク
https://arxiv.org/abs/1706.03762
著者/所属機関
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
投稿日付(yyyy/MM/dd)
2017/06/27
概要
Transformerの提案
新規性・差分
手法
実装するのでキーワードだけでも列挙しておく
Source Target-Attention
基本のAttentionのイメージで、2つの入力がinput(query)とmemory(key,value)に分けられる。 queryとkeyの演算からattention_weighをとり、それを用いてvalueから情報を抜き出す。 意味的にはmemoryから抜き取る情報を各時間(単語)それぞれで位置の対応(単語の照応)まできめて取る。
Self-Attention
さきのinput,memoryを1入力で行う。したがって入力自身で、どの時間(単語)がどの時間(単語)を参照するかをきめてとる感じ。
Multi-head Attention
(Self-)Attentionに用いることができる改善手法。 もとのAttentionのかわりにquery,key,valueを一律にhead数(本論文では8)で分割してそれぞれでAttentionさせた後concatする。 実装的にはquery,key,valueを隠れ層次元が head x 分割後dim となるようにDenseレイヤで変換した後、headで分割して処理する。
Scaled Dot-production
attention_weightの算出においてsoftmaxはqとkのlogitが大きくなるとサチるらしく、それを緩和するためにlogitが大きくならないよう、query,keyの次元で正規化する。
Mask
参照してほしくない値のattention_weightを0にするためにかける。 attention_weightはSoftmaxの出力なので、Maskする値を-∞にすると無視することができる。 Maskするならすべてこの処理をすれば良いので対象の行列と同じ形状で値の型をboolにしたものをattention_maskとする。 対象となるのはPADやDecoderの未来の情報参照。
Hopping
Self-Attentionを繰り返し重ねることを指す?みためAttentionでやる残差結合。
Position-wise Feedforward Network
HopのあとにFFNを挟む。
LayerNormalization
まぁ...そうなるな。TransformerはLayer派らしい。
ResidualNormalizationWrapper
Layer Normalization, Dropout, Residual Connectionの併用
Positional Encoding
Transformerは各時間入力(単語)の順序を学習に用いることができない。 それを緩和するために位置を示した行列を添加する。 詳しくは検索して
結果
コメント
どうもこいつの登場以降、こいつを軸にして発展したモデルファミリーがあり、それらは俗に「Transformers」と呼ばれているようだ。
NLPには、本論文のターゲットである翻訳タスク以外にも文書分類やQ&Aなど様々なタスクが有り、多くのモデルが、構造を微調整するだけでタスクを跨ぐ事ができるようになっている。こうした状況を踏まえ、現在の深層学習での学習アプローチは次の二段階で行われるのがメジャーである。
事前学習には主に2種のアプローチがあるらしい。
(あまり理解していないので話半分で読んでほしいが) 1はLSTMベースのELMoで使われている(自己回帰型事前学習?)。2はGenerative Pre-trained Transformer(GPT)というTransformerベースのモデルで使用されている(自己符号化型事前学習?)。そしてBERTは2に対応する(Transfoormerベース)。
さきに言及したTransformersはおそらくここらへんで分けられていて、Transformerベースのモデルがそれに当たる。Ex. Transformer-XLやBERT
しかしながら、BERTの弱点を克服するとして提案されたXLNetは自己回帰モデルを使いつつ...という内容でTransformersに分けられている節があるので、もうなんか勝手に言った人の勝ちなのかもしれない。
とにかく、ここで出てきた論文についてもいずれ扱いたい。
参考
BERTを超えたXLNetの紹介
作って理解する Transformer / Attention