Open cfiken opened 4 years ago
GLUE, SuperGLUE での実験では、SYNTHESIZER では基本的に精度が上がらなかった。 理由としては、一部のタスクで Machine Comprehension や Entailment など、2つの文を入力するケースが存在し、その場合は self-attention が実質 cross-attention となるため。 その場合でも Random Synthesizer を Vanilla に加えることが精度向上につながっていることも確認した。
実際の attention weights の分布を確認する。6 layers の Transformer と SYNTHESIZER で学習し、可視化。
上記のように、分布において3つは区別できるような違いがあった。
Appendix で他のものを使った Synthesizer も試していた。
「ランダム行列でも同等のスコア」とあって最初は驚いたが、self-attention ではなく attention weights を直接学習する、かつ初期値がランダム行列、という話だった。 とはいえランダム行列で固定でもそこそこの性能が出ているとのことだが、これは比較しないとなんとも...。attention weights 部分がなくなっても FFN は残っておりパラメータは多いので、ある程度の性能は出そう。 確かに token-token の関係性だけで判断する dot-product が主流となっていたが、タスクによっての global な attention weights があっても良いのは自然。
0. 論文
1. どんなもの?
Transformer の self-attention 機構の attention weight について調査・実験を行った研究。通常の self-attention では、dot-product により入力文の token ごとの相互作用で計算され、結果として入力サンプルごとに異なるものとなる。これが本当に意味があるのか検証を行うため、attention weight を別のもので置き換えたモデル SYNTHESIZER を定義し実験。 結果として、token 同士の作用とは無関係に attention weight を学習させたもの (Dense Synthesizer) でも Transformer と同等の性能となり、かつまたランダム行列を attention weight に用いたもの(Random Synthesizer)でも一部タスクでは十分良い性能となること確認した。
2. 先行研究と比べてどこがすごい?
Transformer の self-attention の効果に関する内容は珍しく、かつその効果がほぼないという結果は目新しいもので驚きが大きい。
3. 技術や手法のキモはどこ?
2つの Synthetic Attention を提案・実験。
[length, dim]
->[length, length]
となる関数を用意するG(X)
をかけた次になる。F(X)
は2層の FFN を使う (記号が同じだが実際は違う重みかと思われる? shape 合わないので)Transformers を含めた違いの一覧は表1に載っている。
4. どうやって有効だと検証した?
提案した複数のモデル(組み合わせ含む)を WMT (翻訳), LM1B (LM), CNN/Dailymail (要約), PersonaChat (対話) で実験を行い、Vanilla Transformer 比較した。 結果は下記表。全体として、vanilla transformer でなくても性能が大差なく、random matrix (fixed) でも多少劣るがそこそこの性能が出る。また、attention 部分を Vanilla + Dense など組み合わせることで Vanilla Transformer を超える性能になっている。
その他の実験はコメントで。
5. 議論はある?
6. 次に読むべき論文は?