Transformerの登場
Transformerの登場
今回は、意味の分散表現論の流れの中で、最も重要な技術的達成の一つであるTransformerの話です。この間、2回のInterludeを挟んで話題が飛んでいたので、これまでの投稿を振り返りから始めていきたいと思います。一部の議論の重複お許しください。
Interlude以前の投稿で、2014年のIlya Sutskever らによる「文の意味のベクトル表現の発見」が、意味の分散表現論の大きな転機となったことを紹介してきました。
「文の意味のベクトル表現の発見」
https://maruyama097.blogspot.com/2025/12/blog-post_30.html
そこでも述べましたが、特に重要な出来事は、この発見に刺激を受けてBengioのグループが、Attention メカニズムを提案したことです。(以前の資料では、Attentionメカニズムの提案は、2016年になっていますが、正確には、2014年です。詳しくは、このblogのAppendixをご覧ください。)
今回のテーマのTransformerは、このAttention メカニズムの集大成です。
そのことは、2017年のTransformerの論文タイトルの "Attention Is All You Need"
https://arxiv.org/pdf/1706.03762 によく表れています。
同時に、意味の分散表現論にとって、Transformerの登場は画期的なものでした。そのことは、翻訳モデルとして提起されたTransformer のアーキテクチャーが、大規模言語モデルの最も基本的なエンジンに姿を変えて、論文発表後9年たった今日も、生き続けていることを見ればわかると思います。
翻訳システムの進化
Transformer論文の出る一年前の2016年、当時のAI技術の中心領域であった機械翻訳の分野で、画期的な成果が世に出ます。前回のポストで紹介した、「Googleニューラル機械翻訳 GNMT」です。それは、2014年のIlya Sutskever の Sequence to Sequence の翻訳システムの進化系です、
Ilyaの翻訳システムでは、Encoderが、原文を構成するトークンのベクトル表現の並びから文の意味を抽出し、その文の意味ベクトルから Decoderが翻訳文のトークンのベクトル表現を生成すると言うシステムです。もちろん、ここでは文の意味もベクトルで表現できるという発見が決定的な役割を果たします。
GNMTとIlyaの翻訳システムとには一つ大きな違いがあります。Ilya の翻訳システムは、Encoderの出力とDecoderの入力を「文の意味ベクトル」を共有すると言う形で直結するものでしたが、GNMTは、この「直結」をやめます。その代わりにAttention メカニズムを利用して、Decoderでの翻訳の任意の時点で、Encode時の情報を参照できるようにします。
GNMTは、Bengioらによって提案されたAttention メカニズムを翻訳システムに取り込み、Attention メカニズムの有効性を翻訳システムの成功として示すことになりました。
翻訳システムの進化は、それにとどまりませんでした。
Googleの研究者達は、GNMTの抱える問題の分析を行い、その問題の解決に取り込むことを通じて、GNMTの性能を大幅に上まわる画期的な翻訳システムを作り上げることに成功します。それが Transformerです。
技術の継続的発展という視点から見ると、Transformerは先行したGNMTから多くのものを継承しています。Encoder−Decoder アーキテクチャー、Attentionメカニズム、Residual Connection とその後のLayer Normalizationの採用は、その例です。
Transformer は、どのような問題を解決しようとしたのか
ここではTransformerがどのような問題を解決しようとしたかを見ていきましょう。
当時のSequence to Sequenceの翻訳システムの処理の主流は、IlyaのシステムにしてもGNMTにしても、RNN(再帰型ニューラルネットワーク)の一種であるLSTMを利用したものでした。
RNNは、文の最初の単語から順番に一つずつ情報を処理していく仕組みです。前のトークンの情報を処理しそれを記憶しながら次のトークンへと進みます。この方法は人間の文章理解と同じスタイルなので理解しやすいのですが、Sequence to Sequenceの処理にRNNを使うには、大きくいって二つの問題がありました。
第一の問題は、RNNには情報が伝わる距離が長くなるほど、遠く離れたトークン同士の関係性を学習するのが難しくなるという問題です。
英語だと主語と動詞は近いところに位置しているのですが、日本語だと文が長くても動詞は文の最後にきます。英語を日本語に、あるいは、日本語を英語に翻訳するという時、RNNで構成された翻訳システムは苦戦します。
対照的に、SelfアテンションはSequence内の任意の2つのトークンを、それがどんなに離れていても、直接接続します。この短いパスが、文章の冒頭にある主語と文末にある述語の関係といった、長期的な依存関係の学習を容易にします。
第二の問題も、トークンを一つずつ先頭から順番に処理するというRNNの構造と関係しています。それは、計算が一つのトークンずつしか進められないため 計算の並列化が困難であるという問題です。
Transformer は、どのように問題を解決したのか
結論を先に述べれば、Transformerは、こうした問題をRNNの再帰的構造をシステムから完全に排除し、Attentionメカニズムのみに依拠することでこれらの課題を解決しました。
ここでは、先に見た「長距離の依存関係の学習の困難」「計算の並列化の困難」という問題をTransformerがどのように解決したのかを見ていこうと思います。
長距離の依存関係の学習の問題 −− 「位置encoding」の導入
Attentionメカニズムにも弱点があります。
逐次に処理を進めるRNNの場合、Sequence中のトークンの意味ベクトルを処理するRNNのユニットは、自分がSequence中のどの位置にいるかを知っています。そして自分が処理した情報を記憶して隣の、すなわち位置が一つ右側のRNNユニットに伝えます。
Self Attentionでは、Sequenceがn個の意味ベクトルの並びからなる時、その全ての意味ベクトルの関係を表す n x n の行列を、一挙に作成します。それが、先に述べた「SelfアテンションはSequence内の任意の2つのトークンを、それがどんなに離れていても、直接接続します。」の「直接接続する」ということの意味です。Self Attentionは、この行列を使って、入力として与えられた元のトークンの意味ベクトルを変形し出力します。
トークン間の距離を意識しないということはAttentionの強みであると同時に、そのメカニズム自体は、Sequence中のトークンの位置には興味がないことを意味します。Attentionメカニズムだけでは、「犬が猫を追いかけた」と「猫が犬を追いかけた」というSequenceの意味の違いを表現することは難しいのです。
Transformerでは、トークンを意味ベクトルに変換するencodingの最初の段階で、意味ベクトルにSequence中のトークンの位置情報を注入します。これを「位置encoding」と言います。これによって、Transformerの意味ベクトルは、RNNの意味ベクトルと同じように位置情報の記憶を持つことになります。
位置encodingの導入は、次にみるMulti−Head Attention の導入と比べると、少し地味に見えるかもしれませんが、RNNアーキテクチャーの完全排除を可能にしたTransformer のアーキテクチャーの大きな特徴の一つだと思います。
計算の並列化の問題 −− Multi−Head Attention の導入
二つ目の、計算の並列化が困難であるという問題に対して、TransformerはMulti−Head Attentionというメカニズムを導入することで対応します。
複数のヘッドを作ってAttentionを並列に実行するというのは、イメージとしては間違いではないのですが、TransformerのMulti−Head Attentionには、大きな工夫が組み込まれています。
BengioらのAttentionにしろGNMTのAttentionにしろ、Attentionは、入力に与えられた 例えば512次元の意味ベクトルの n個のSequenceをその対象として機能します。ところが、TransformerのMulti−Head Attentionの対象は、それとは違うものです。
もちろん、その対象となるSequenceは元の入力のSequenceと無関係なものではなく、次のようにして元のSequenceから作られたものです。元の512次元のベクトルは、 512 = 8 x 64 なので、8個の64次元のベクトルに分解(正確に言えば、「射影」)されます。計算としては、64 x 512 の行列に512次元のベクトルを掛ければ 64次元のベクトルが得られます。
TransformerのMulti−Head Attentionの対象は、この例では、先の操作で作られた、64次元のベクトルのn個の並び(このnは元のSequenceの長さと同じです)からなるそれぞれ異なる 8個のSequence です。
Attentionの対象が異なる8個のSequenceなので、並行してAttentionを計算することが可能になります。こうして8個の並行して計算されたAttentionは、計算が終わるとその8個の出力が束ねられて、再び、元の512次元のベクトルのSequenceに戻されます。
興味深いのは、Multi−Head Attentionの入力に与えられる512次元の意味ベクトルは、先に見た「位置encoding」で位置情報を持っているのですが、その情報は512次元から64次元に縮小・射映されたベクトルにも、8個の独立したAttention計算の後に64次元から512次元に復元したベクトルにも、引き継がれるということです。
Transformer を学ぼう
Transfomerのアーキテクチャーは複雑なもので、それらを短いblogで紹介するのは難しかったです。Transfome論文はそんなに長いものではないのですが、そこには素晴らしいアイデアがたくさん詰め込まれています。それは難しい論文だと思います。
ただ、解説記事もたくさん出ています。ぜひ、Transfome論文を読むことに挑戦されることをお勧めします。
発表後10年近く経っているのですが、Transformerの振る舞いについては、現在も活発に研究されています。最近 arXivをzapping していて、こんな論文を見つけました。日本の研究者のものです。
The Strong Lottery Ticket Hypothesis for Multi-Head Attention Mechanisms
https://arxiv.org/abs/2511.04217
著者の一人、ちょっと知っている若い人だったので、嬉しくなりました。
2016年 − 2018年に起きた変化は驚くべきもの
今から振り返ってみると、2014年の文の意味分散表現の発見から始まる、意味の分散表現論の発展の中で、2016年 − 2018年に起きた次のような変化は驚くべきものだと感じています。
2016年 9月 Google ニューラル機械翻訳 (v1)
2017年 6月 Transformer (v1)
2018年 10月 BERT (v1)
GNMTから一年も経たずにTransformerが生まれ、Transformerから一年少しでBERTが生まれるのですから。
この時期は、Transformerの登場を契機に、翻訳モデルから大規模言語モデルへの大きな転換が起きた時期に当たります。次回のセッションでは、この転換を取り上げます。
Appendix: Attention技術の受容についての補足
以下は、細かな議論です。読み飛ばしてもらって構いません。
以前に利用していた自分が作った「意味の分散表現論の系譜」をみていて、少し気になったことがありました。それは、Bengio達のAttention論が、GoogleのIlyaのSentence to Sentence 論へのツッコミとして始まったことは知っていたのですが、Google側でのGNMTでのAttention技術の受容、さらにTransformerでのAttentionの全面的な採用が、突然進んだような印象を持っていました。
今回、論文の履歴を調べてみて、IlyaのSentence to Sentenceの論文とBengioたちのAttention論文は、論文のバージョンアップを通じて、2014年から2016年まで、長い期間にわたって、継続的に議論を重ねていたことがわかりました。Attentionの有効性については、双方の陣営で共通の理解が深まっていたのだと思います。
2014年 9月 Sequence to Sequence (v1)
2014年 9月 Attention メカニズム (v1)
2014年 9月 Attention メカニズム (v2)
2014年 10月 Sequence to Sequence (v2)
2014年 10月 Attention メカニズム (v3)
2014年 12月 Sequence to Sequence (v3)
2014年 10月 Attention メカニズム (v4)
2015年 5月 Attention メカニズム (v5)
2015年 6月 Attention メカニズム (v6)
2016年 5月 Attention メカニズム (v7)
こうした議論の継続と深化が、次のような飛躍を準備したのだと思います。
2016年 9月 Google ニューラル機械翻訳 (v1)
2017年 6月 Transformer (v1)
2018年 10月 BERT (v1)
「分散表現論の系譜」修正版












コメント
コメントを投稿