Transformer
【 Attention こそすべて 】
Transformer は、2017年にGoogleが発表したアーキテクチャーです。
それは、GoogleのBERTやOpenAIのGPTといった現代の大規模言語モデルほとんど全ての基礎になっています。BERTの最後の文字 'T' も、GPTの'T'も"Transformer" アーキテクチャーを採用していることを表しています。
Googleの論文のタイトルは、"Attention is all you need" というものでした。「Attentionこそすべて」ということで、Attention Mechanism さえあれば、RNNもCNNもいらないと思い切ったことをいっています。これは、大規模言語モデル成立への大きな飛躍だったと思います。
このセッションでは、Google BrainのAshish Vaswani らの"Attention is all you need" 論文の紹介をしたいと思います。
まず最初に確認したいのは、見かけはずいぶん違って見えますが、Transformer アーキテクチャーは、大きな成功を収めた2016年のGoogle ニューラル機械翻訳のアーキテクチャーから多くを学んでいるということです。
ポイントをあげれば、Encode-Decoder アーキテクチャーの採用、EncoderとDecoderの分離、両者をつなぐAttention Mechanismの採用、等々。
こうした、Google ニューラル機械翻訳のアーキテクチャーの特徴は、そのまま、Transformerのアーキテクチャーに引き継がれています。それらの中で、Attentionこそが一番重要なのだというのが、Vaswani らの分析なのだと思います。
Attention Mechanismに注目すると、そこには特にパフォーマンスの面で課題があることも浮かび上がってきます。それは、シーケンシャルに実行され並列化されていません。また、Attentionが注目する二つの点の距離が離れると離れるほど計算量が増大します。
"Attention is all you need" 論文は、Attention Mechanismのパフォーマンス改善の提案なのです。"Multi Head Attention" は、まさに、そうしたものです。もう一つ、この論文の大事な提案は、Self Attentionの重要性の指摘です。
意味の分散表現論との関係で、といっても全く現実的な話なのですが、この論文を読む際に、基本的なデータがベクトルで表現されていることに留意すると、特にそのベクトルの次元に注目するとわかりやすくなります。
蛇足かもしれませんが、セッションの最後に、head関数の引数のベクトルの次元を整理してみました。参考までに。
以下は、論文の紹介を離れた個人的な感想です。読み飛ばしてもらって構いません。
CNNやRNNもういらないと言っているのですが、これらの「旧来」のアーキテクチャーは、ノードとノードの関係がレイヤーの積み方によって、いわば「ハードコード」されているわけで、任意のノードの関係を「ソフト」で構成できるAttentionが、それらをシミレートできるのは、ある意味、当然なのかもしれません。
また、Transformer のEncoderとDecoderが、1-clock シフトしている構造は、 RNNが導入した基本的構造と同じものだと思います。
空想的なことを言えば、遠く離れたものの相関が、「意味」の解釈に影響を与えるという観察は、Bob Coeckeらの「量子論的自然言語処理モデル」の一つのテーマになっています。たぶん、Attention 計算のパフォーマンスの問題だけではないのかもしれません。
-------------------------------------
コメント
コメントを投稿