デジタルゲームのための自然言語処理 第6回 Transformer とは②:Self-attention とは

2024年1月23日 21:00

 前回は、特に Transformer の登場前夜となる時期に焦点を当てて、「なぜ、Transformer は大きなインパクトとなったのか」の前提をお話ししました。 今回は、特に Self-attention を取り上げながら、Transformer の技術的な詳細に踏み込んでいきたいと思います。


・なぜ、Transformer は大規模言語モデルの技術的基礎となりえたか?

 Transformerアーキテクチャについては、語るべきことが山のようにあります。Multi-head Attention, Scaled-dot Product Attention, Positional Encoding (Position Embedding), Residual Connectionなどなど。とはいえ、Transformer と結び付きの強い単語としてまず挙げられるのは、やはり、Self-attention でしょう。 そもそも、Transformer を提案した論文のタイトルが "Attention Is All You Need" ですから、 "Attention" と Transformer の結び付きの強さが見て取れます。


 この後は難しい話が続くので、まずは一服。本題であるSelf-attentionの説明に入る前に、「Transformerの理解が、どうして生成AIや大規模言語モデルを活用する上で役立つのか?」を考えていきたいと思います。これについて考えることで、「なぜ、Self-attention が Transformer において重要であるのか」についてもイメージしやすくなると思います。

 図1 参考文献 [1] の Fig. 2 を参考に作成


 今日の大規模言語モデルや、いわゆる「生成AI」は、大量のデータで学習されたニューラルネットワークです。

 それまで、ニューラルネットワークを用いた自然言語処理では、その時々で解きたいタスク、たとえば翻訳や要約などに対して、専用のニューラルネットワークを学習させていました。

 しかし、大量のデータを学習させることで、「様々なタスクに共通して必要になる能力」をモデルが獲得できることが明らかになりました。大量のデータで「事前学習」させたモデルを、解きたいタスクに合わせて少量のデータで「ファインチューニング」することで、単一のモデルを、様々なタスクに適用できるようになったのです。
 
  自然言語処理の分野において、このアプローチを可能にしたのが、Transformer でした。 Transformer は、再帰的な処理に代えてSelf-attention (自己注意)を用いることで、処理の高速化を可能にしました(注1)。従来の手法の10分の1以下の計算コストで済むことが、Transformer を提案した論文で示されています(注2、参考文献 [2])。 


 大まかにいえば、Transformer は、ディープラーニングにおいて当時既に主流のハードウェアになっていたGPUの能力を、自然言語処理においても存分に発揮できるようにした点で大きなインパクトを持ちました。こうしたソフトウェアの進歩による計算の効率化、ハードウェアの進歩による計算リソースの確保、そして大量のデータセットの整備などによって、大規模言語モデルへの道が拓かれました。



・Transformer と Self-attention

 では、Self-attention とは何かについて、詳しく見ていきましょう。


 図2 Transformer について、Attention 部分に注目した概念図


 図2は、Transformer について、特にAttention 部分に注目して模式した図です。実際には Encoder や Decoder がそれぞれ何層も積み重なっている(深層)などの情報を捨象しているため、実装と一致しないところがありますので、ご注意ください。

 また、図2では、同じ色ブロック同士が線でつながれているところ(青いブロック同士、黄色のブロック同士)、異なる色のブロックが線でつながれているところ(青と黄色のブロック)があります。これらはいずれも Attention ですが、特に、同じ色のブロック同士が繋がれている部分が、Self-attention です。厳密には区別して語るべきですが、ここでは Self-attention に注目して話を進めていきましょう。

 図3 Self-attention の概念図


 さて、RNN を使った場合の課題として、順番に処理をするため、並列化ができないということを上げました。ごく単純に言ってしまえば、「順番に処理するのではなく、全部の要素との関係を一挙に処理してしまえばよい」というのが、attention の考え方です。

 図4 Key-Query-Value Attention の基本的な考え方


 より詳しくは、図4に示すような、Key-Query-Value Attention というアプローチが使われています。

 まず、Query (図3を例にすると、「ゲーム」に相当。(注3))が、どの Key (図3での、入力文の各トークンに相当)と関わりの深いものであるのか(注意しているか)を計算します。この計算結果は、トークンのペア(例えば、「ゲーム」と「好き」)だけによらず、文脈によって変化します。この計算結果を基にして、Key と対応つけられた Value の値を、重み付けして加算し、出力を得ます。

 これが、Transformer の一つの層の中で行われる、Self-attention の処理の概要です。一つの層の中で処理が終わったら、次の層でまた Self-attention の処理を重ねていきます。このようにすることで、Transformer では、入力した文の情報を効果的に、そして並列化によって効率よく、処理していくことができるのです。

 ところで、Self-attention は、なぜ「Self-attention」と言うのでしょうか? ここまで、Query, Key, Value の3つがあることを述べてきましたが、Self-attentionでは、この3つ全てが、同じ文に由来する情報から作られます。つまり、ある文自身(Self)について、その中の関係性を見ていくことになります。図3の例を改めて見てみると、「私はゲームがとても好きです。」という文について、そこに含まれるトークン同士の関係(たとえば、「ゲーム」と「好き」)が計算されることになります。これによって、ネットワークは「文をどのように表現するか」を学んでいきます。



・Self-attention をより活かすための工夫

 Transformer においては、Attention にいくつかの工夫が加えられています。その一つが、Multi-Head Attention です。これについては、例を用いて、ざっくりとイメージを示してしまいましょう。たとえば、頭が一つのドラゴンは、一つの方向に注意を向けて攻撃することができます。もしもヤマタノオロチのように、頭が八つあれば、八つの方向を向いて攻撃することができます。このときに、合計の攻撃力が同じであっても、複数の頭があったほうが、様々な方向に注意を振り分けられるので、効果的に動ける、ということになります。

 また、学習を行う過程で「参考にしてはいけない情報」をマスキングする工夫が取り入れられています。これについて、少し詳しくイメージしていきましょう。

 まず、機械学習には、「学習(Training)」と「推論(Inference)」のステップがあります。「学習」の際に多様なデータから学んでおくことで、「推論」の際に、はじめて見るデータに対しても対応することができるようになります。たとえば、九九を八の段まで学んだモデルがあったとしましょう。九の段は学んでいないモデルですが、推論の際に「9x9」について尋ねられたときに、それまでの学習結果を応用して「81」と答えてほしいわけです(注4)。学習に使ったデータだけではなく、見たことのないデータにどれだけ対応できるのかというのが、機械学習モデルにおいては重要です。このような、未知の情報に適応できる能力のことを、モデルの「汎化性」と呼びます。

 学習のときには、「推論のとき、モデルがどう動くのか」を想定する必要があります。先ほど、Transformer は、Attention で並列化した処理が行えるのが特徴であることを述べました。しかし、Transformer の推論のときの(Decoder の)動きを考えると、これは少しおかしなことになります。


 たとえば、図3で例示した「私はゲームがとても好きです。」というテキストを出力させたいとします。このとき、「ゲーム」という単語は、「私は」に続いて出力されます。言い換えれば、生成しようとしている単語以降の情報(「がとても好きです。」)は、「ゲーム」を生成する上では参考にできないのです。


 Transformer では、こうした「学習時にモデルには見せていけない情報」を隠して、学習の効率化をうまく成立させていることが分かります。

 学習(Training)時は並列化を行いつつ、マスキングによって、推論(Inference)の時と同様の状況を作る


図6 Decoder 側の Attention では、まだ生成されていない部分の情報を学習にも使わないよう、注意する必要がある


 今回は、前回に引き続き Transformer について扱い、特に Self-attention について概説しました。  

 ただ、ここで、以下の点について疑問を持たれているかもしれません。「Self-attention では、すべてのトークンを同様に扱っているけれど、単語の位置関係は本当に要らないのか?」

 これについて、Transformer ではpositional encoding というアプローチを行っています。次回は、このpositional encoding に関してご説明していきたいと思います。




(注1)Transformer の論文では、Recurrent とSelf-Attentionの計算量のオーダーの違いが取り上げられています。これによると、長さnの入力に対する処理の回数について、Recurrent ではO(n) となるところ、Self-attention では O(1) となります。処理の回数だけではなく、実行される処理の複雑さを考えたときにも、Self-attention にはメリットがあります。入力の長さnと、特徴を表現するベクトルの次元数 d を比較したとき、n < d であれば、Self-attention は Recurrentよりも計算がシンプルになります。 n が d よりも大きくなる場合についても、工夫を加えることで対処可能なことが説明されています。なお、この論文における比較では Convolutional についても記述があります。これは畳み込みニューラルネットワークの仕組みで、画像でよく使われてきたものですが、自然言語処理に応用する手法もあります。


(注2)学習に用いられる計算リソースは、FLOPs という単位で表されます。最後の小文字の「s」が、second、つまり秒を表しており、1秒間あたりにどれだけの演算ができるのかを表現した量です。「従来の手法の10分の1以下の計算コスト」というのは、この指標におけるものです。


(注3)実際には、トークン(単語)がそのまま処理されるわけではなく、ベクトル化したものが扱われます。

(注4)「九の段でも、たとえば9x3は、3の段に含まれているのでは?」と思われるかもしれません。ただし、「3x9と9x3は、数値の上では同じである」という法則を与えていない場合は、この法則を新たに学んでいる可能性があります。このように、「モデルの性能をテストするために使っているデータが、実は学習データに含まれているのではないか?」と考えることは、重要なことです。



参考文献
[1]  
論文タイトル:"On the Opportunities and Risks of Foundation Models"
著者:Rishi Bommasani and Drew A. Hudson and Ehsan Adeli and Russ Altman and Simran Arora and Sydney von Arx and Michael S. Bernstein and Jeannette Bohg and Antoine Bosselut and Emma Brunskill and Erik Brynjolfsson and S. Buch and Dallas Card and Rodrigo Castellon and Niladri S. Chatterji and Annie S. Chen and Kathleen A. Creel and Jared Davis and Dora Demszky and Chris Donahue and Moussa Doumbouya and Esin Durmus and Stefano Ermon and John Etchemendy and Kawin Ethayarajh and Li Fei-Fei and Chelsea Finn and Trevor Gale and Lauren E. Gillespie and Karan Goel and Noah D. Goodman and Shelby Grossman and Neel Guha and Tatsunori Hashimoto and Peter Henderson and John Hewitt and Daniel E. Ho and Jenny Hong and Kyle Hsu and Jing Huang and Thomas F. Icard and Saahil Jain and Dan Jurafsky and Pratyusha Kalluri and Siddharth Karamcheti and Geoff Keeling and Fereshte Khani and O. Khattab and Pang Wei Koh and Mark S. Krass and Ranjay Krishna and Rohith Kuditipudi and Ananya Kumar and Faisal Ladhak and Mina Lee and Tony Lee and Jure Leskovec and Isabelle Levent and Xiang Lisa Li and Xuechen Li and Tengyu Ma and Ali Malik and Christopher D. Manning and Suvir P. Mirchandani and Eric Mitchell and Zanele Munyikwa and Suraj Nair and Avanika Narayan and Deepak Narayanan and Benjamin Newman and Allen Nie and Juan Carlos Niebles and Hamed Nilforoshan and J. F. Nyarko and Giray Ogut and Laurel Orr and Isabel Papadimitriou and Joon Sung Park and Chris Piech and Eva Portelance and Christopher Potts and Aditi Raghunathan and Robert Reich and Hongyu Ren and Frieda Rong and Yusuf H. Roohani and Camilo Ruiz and Jack Ryan and Christopher R'e and Dorsa Sadigh and Shiori Sagawa and Keshav Santhanam and Andy Shih and Krishna Parasuram Srinivasan and Alex Tamkin and Rohan Taori and Armin W. Thomas and Florian Tram{\`e}r and Rose E. Wang and William Wang and Bohan Wu and Jiajun Wu and Yuhuai Wu and Sang Michael Xie and Michihiro Yasunaga and Jiaxuan You and Matei A. Zaharia and Michael Zhang and Tianyi Zhang and Xikun Zhang and Yuhui Zhang and Lucia Zheng and Kaitlyn Zhou and Percy Liang
発表学会もしくは論文誌:ArXiv (preprint), 2021.
URL: https://crfm.stanford.edu/assets/report.pdf

[2] 
論文タイトル:"Attention is all you need"
著者:Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin
発表学会もしくは論文誌: In Proceedings of the 31st International Conference on Neural Information Processing Systems, 2017.