Transformer
「さて、ここまでで、ふたつのことがわかりました」アレックスが言う。
「単語をベクトルで表すことができる、Attentionによって、文中のほかの単語から必要な情報を取り出して利用できること、のふたつね」
「そうです、単語をベクトルであらわすことができるのは、2013年の word2vecによって広く知られるようになりましたが、Attention でも単語をベクトルで表現してりようできるだろうと予想はできます」
「ここまでのまとめとして、ルオン(Luong)の『計算グラフ』を見ておきましょう」
「デコーダー側の『Score = h_t · h̄_s』のところで、両者の類似度(score)を計算し、『Softmax α_t"』のところで0から1までの数字にまとめます。合計は1です。そして『Context c_t』のところが情報の集約です。この3つの部分がアテンションになります」
「それはわかった」マルコが言う。
「ここまでが2016年の最前線でした。そして2017年に『Attention Is All You Need』[3]という有名な論文が出ました。アシシュ・ヴァスワニ(Ashish Vaswani)他7名の共著です。Transformerを初めて提案した論文です」
「有名なの」
「はい、とても。この論文を一言で表現すると、『Attentionを中心とする仕組みで、(LS
TMのような)逐次処理は必要なくなった』ということです。つまり『アッテンションさえあればいい』です」
「そして、公開から40年近く使われ続けている ChatGPT の GPT は Generative Pre-trained Transformer 、つまり『生成的な、事前学習済みの、Transformer』のことです」
「40年後にも名前が残っているのなら、たいした論文なのね。『生成的な』って、何なの」
「訓練データの規則性や構造を、訓練において学習し、訓練データには含まれていなかった新しいデータを生成する」という意味です。
「いよいよ『生成AI』、つまりチャットボットがでてくるんだな」
「『生成AI』はチャットボットだけではありませんが、まあ、そうです」
「Transformerを理解するには、2つの側面から見なければなりません。一つ目は計算の仕組み、つまり『計算グラフ』です。そして二つ目は学習の方法です」
「まず、計算の仕組みですが、これがTransformerの計算グラフです」
「見てすぐにわかるとおり、これは機械翻訳機です。エンコーダー・デコーダー・モデルになっています」
「左がエンコーダーね」
「そうです。右の列の上から3番目に Masked Self-Attention という箱があります。これが Attention になります。それから、LSTM が無くなっているところが注目されるところです。この『計算グラフ』は逐次的な処理が入っていません。並列で、一気にフォワード処理(上から下に計算)して、下から上にバックプロパゲーションできます」
「並列で計算できるって、どういうことだ」
「GPUって、聞いたことありますか」
「あるぞ、グラフィックが高速になるプロセッサのことだ。3Dゲームが滑らかに動く」
「そうです。3Dゲームでは敵や武器などのメッシュは細かい3次元ポリゴンでできています。それらが平行移動や、回転したりしますが、すべて3次元の行列計算でおこなっています」
「それは聞いたことがある」
「例えば、単位ベクトル (1, 0, 0) をz軸回りに90度回転させるためには、以下のような行列計算を行います」
「いま、(1, 0, 0) を(x軸成分, y軸成分, z軸成分) と呼ぶことにします。回転行列を使うと、回転後のx、y、zの各成分を計算できます。このとき、回転後の各成分を求める計算は、必要な入力値がそろっていれば、それぞれ独立して進めることができますす」
「独立って」
「それぞれの軸成分の計算に、他の計算結果や途中経過が入っていないということです。例えて言えば、3人にこの回転問題を手計算してもらうときに、3人は互いに話し合うことをしなくとも計算できるということです」
「なるほど、そういうことか」
「GPUは、多数の計算を並列に実行するのが得意なプロセッサです。ベクトルや行列を使った大量の計算では、CPUより効率よく処理できる場合があります。数字が3つくらいではご利益はありません。ただ、数千、数万もの要素を持つベクトルならば、GPUに同時並行計算してもらう方が速くなるでしょう」
「それでゲームがなめらかになるのか。で、TransformerはLSTMのような逐次計算じゃないので、より高速に計算できるということか」
「そうです。翻訳性能が同程度なら、学習時に並列計算を活用できるTransformerのほうが、学習時間を短縮できる可能性があります」
「Masked Self-Attetion って、なんだ」
「Masked の部分は一旦置いておきましょう。まず Self-Attention について説明します」




