AIを動かしているのは線形代数だ!ChatGPTを支える数学的仕組み
ChatGPTと会話していると、本当に人間と話しているみたいで驚きますよね。話の流れも理解して、難しい質問にもちゃんと答えてくれます。でも、本当に私たちの言葉を「理解」しているのでしょうか?
実は、ChatGPTのすごい能力の裏には、私たちが高校や大学で勉強した数学—特に「線形代数」が関係しています。今回は、AIがどうやって人間のような会話をしているのか、その数学的な仕組みを紹介します。
言葉を数字に変える魔法:ベクトル化
ChatGPTが言葉を処理するには、まず言葉を数字に変える必要があります。コンピューターは基本的に0と1の数字しかわからないので、「愛」とか「平和」みたいな複雑な言葉も、数字で表現しないといけません。
この変換に使うのがベクトルです。例えば、こんな風に単語を2つの数字のペアで表してみましょう:
- 「王様」 = (0.8, 0.2)
- 「女王」 = (0.7, 0.9)
- 「男性」 = (0.9, 0.1)
- 「女性」 = (0.2, 0.8)
この例では、それぞれの数字が単語の異なる意味的な特徴を表しています。「王様」と「女王」は第1要素が高く、「女性」は第2要素が高いといった具合に、単語の持つ複雑な属性を数値で表現します。
本当のChatGPTでは、もっとたくさんの数字(数百個から数千個)を使いますが、基本的な考え方は同じです。それぞれの数字が単語の違う側面を表すことで、単語が持つ複雑な意味を数字で表現できるようになります。
この方法を使うと、「猫」と「犬」は似たような数字の組み合わせ(どちらも動物でペットだから)になって、「猫」と「自動車」は全然違う数字の組み合わせになります。言葉の意味や関係が、数字の組み合わせとして表現されるわけです。
ベクトルを含めた線形代数の概要と重要性について解説した以下の記事もご覧ください。
ベクトルの内積:関連性を測るものさし
高校で習った、ベクトルの内積を覚えていますか?2つのベクトル A = (a₁, a₂) と B = (b₁, b₂) の内積は次のように計算します。

この内積が、ChatGPTにとって非常に重要な役割を果たします。内積の値で、2つのベクトルがどのくらい似ているかがわかるからです。
さっきの例で実際に計算してみましょう。

「王様」は「女王」により近くて(内積が0.74)、「女性」とはそれほど近くない(内積が0.32)ことがわかります。これは感覚的にも納得できる結果ですよね。
この内積の計算で、ChatGPTは単語同士がどのくらい関係があるかを数字で把握して、文脈に合った単語を選ぶことができます。「王様が住んでいるのは?」という質問に対して、「城」や「宮殿」みたいな関係の深い単語を選び出すのも、この内積計算のおかげなのです。
行列で効率アップ:大量処理の仕組み
ChatGPTは一度にたくさんの単語を処理しなければなりません。しかし、ベクトルを一つずつ計算していたら、とても実用的な速度は出ません。そこで登場するのが行列です。
複数のベクトルを行列として並べることで、コンピューターは並列処理で高速計算ができるようになります。例えば、こんな行列を考えてみましょう。

この行列に対して一度の計算で、すべての単語同士の内積を一気に求めることができます。これが行列の掛け算です。
行列計算のメリットは計算効率だけじゃありません。今のGPU(グラフィックス処理装置)は、まさにこの行列計算を高速に処理するために作られています。元々は3Dゲームのグラフィックスを描画するために開発されたGPUですが、その並列処理の能力がAIの学習と推論に革命を起こしました。
ChatGPTみたいな大規模な言語モデルが実用的な速度で動くのは、この行列計算とGPUの組み合わせがあるからこそです。
Transformerの核心:Attentionは内積の応用
ChatGPTの基盤技術であるTransformerの一番重要な仕組みがAttentionです。Attentionは、文の中のどの単語に「注意」を向けるべきかを決める仕組みで、その計算の中心にあるのが、さっき説明した内積です。
Attentionの具体的な計算例
「彼は公園でボールを蹴った」という文を例に、実際の数字で計算してみましょう。それぞれの単語を2つの数字で表現します。
- 「彼」 = (0.1, 0.8)
- 「は」 = (0.0, 0.1)
- 「公園」 = (0.6, 0.3)
- 「で」 = (0.0, 0.2)
- 「ボール」 = (0.9, 0.4)
- 「を」 = (0.0, 0.1)
- 「蹴った」 = (0.7, 0.6)
「蹴った」という動詞を理解するために、他の単語との関係の強さを内積で計算します。

この結果、「蹴った」は「ボール」(0.87)、「公園」(0.60)、「彼」(0.55)の順で、強く関係していることがわかります。「は」「で」「を」みたいな助詞は、関係が薄い値になっています。
これらの内積の値を、パーセントに直すとこんな感じです。

3つの単語との関係の強弱を示す数値
こうやって、「蹴った」を理解するために一番大事な情報である「ボール」に、一番多くの注意を向けることができるのです。
Attentionのさらに詳しい仕組みについて解説した以下の記事もご覧ください。
Multi Head Attentionでもっと豊かな理解を実現
実際のChatGPTでは、Multi Head Attentionという仕組みを使っています。これは、一つのAttentionだけじゃなくて、いろんな角度からAttentionを計算する方法です。
例えば、さっきの文「彼は公園でボールを蹴った」を違う視点で分析してみましょう。

それぞれのHeadは違う重みを使うので、同じ内積計算でも違う結果になります。この複数の視点からの分析結果を組み合わせることで、単語の意味をもっと豊かで多面的に理解できるのです。
ChatGPTでは、12個とか24個とかたくさんのAttention Headが同時に動いていて、それぞれが違う言語の特徴(文法の関係、意味の似ている度合い、文脈での依存関係など)を捉えています。
最初はパラメーターがランダムな状態からスタートして、大量の文章データを使った学習を通じて、それぞれのHeadが特定の言語パターンを捉えられるように調整されていきます。学習を繰り返すことで、単語同士の複雑な関係を多角的に理解する能力が身について、最終的に人間みたいな自然な文章が作れるようになるのです。
線形代数がつなぐ数学とAIの世界
ChatGPTのすごい能力の裏には、私たちが学校で習った数学、特に線形代数の考え方が深く関わっていることがわかりました。高校で学んだベクトルの内積が、AIの「理解」と「推論」の中心的な役割を果たしているのです。
言葉をベクトルに変換することで、コンピューターは人間の言語の複雑な意味を数字として処理できるようになります。そして内積計算で単語同士の関係の強さを測って、行列計算で並列処理して高速化を実現しています。TransformerのAttentionの仕組みは、これらの技術を統合した画期的な方法なのです。
数学は単なる勉強科目ではなくて、現代のAI技術を支える実用的な道具です。ChatGPTと話すたびに、その裏で無数の内積が計算され、線形代数の力で自然な会話が実現されていることを思い出してみてください。私たちが学んだ数学の知識が、最先端の技術を理解する鍵になっているのです。
参考文献
・Vaswani, Ashish, et al. “Attention is all you need.” Advances in neural information processing systems 30 (2017). https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
・本質を捉えたデータ分析のための分析モデル入門 統計モデル、深層学習、強化学習等 用途・特徴から原理まで一気通貫! (杉山聡, 2022)
https://amzn.asia/d/gEViDOs
『そんな学問が一体何の役に立つのか?』…ある程度時間が経過して初めて、それが分かることが当たり前なのが研究分野。BlueMemeでは、次世代IT技術に欠かせない量子コンピューターやバイオテクノロジーなどにも、積極的に関わっています。ぜひ、リープリーパーのソーシャルメディアアカウントをフォローして、最新情報と解説をゲットしてください!

