高校数学の「内積」はAIでどう使われる?|ChatGPTにつながるベクトルの話

AI
スポンサーリンク

はじめに

「内積って、AIと何か関係があるの?」

高校数学で学ぶ「内積」は、\(\vec{a}\cdot\vec{b}\) のようなベクトルの計算として登場します。

しかし実は、この内積の考え方は、ChatGPTのようなAIや検索、おすすめ機能など、現代のさまざまな技術につながっています。

たとえば、ChatGPTのようなAIは、

  • 「猫」と「犬」は関連が深い
  • 「猫」と「自動車」は、あまり関連がない

といった言葉同士の関係を扱うことができます。

でも、AIは人間のように、言葉の“意味”を感覚的に理解しているわけではありません。

では、AIはどうやって「言葉の意味が近い」という関係を扱っているのでしょうか?

そのヒントになるのが、言葉や情報を「ベクトル」として表し、その関係を計算するという考え方です。

そして、その中で重要な役割を果たす数学の一つが、内積ないせきです。

この記事では、

  • 内積とは何を表しているのか?
  • なぜベクトル同士の関係が分かるのか?
  • AIは言葉をどのようにベクトルとして扱うのか?
  • なぜChatGPTのようなAIでも内積が重要なのか?

を、できるだけ直感的に解説していきます。

この記事を読み終えるころには、

「高校数学で習った内積が、こんなところでAIにつながっているのか」

と感じてもらえるはずです。

そもそも「内積」とは?

内積は、簡単に言えば、「2つのベクトルがどのような関係にあるか」を調べるための計算です。

2つのベクトル \(\vec{a}\)、\(\vec{b}\) の内積は、次のように表せます。

\(\vec{a} \cdot \vec{b} = |\vec{a}| |\vec{b}| \cos\theta\)

ここで、

  • \(|\vec{a}|\):ベクトル \(\vec{a}\) の長さ
  • \(|\vec{b}|\):ベクトル \(\vec{b}\) の長さ
  • \(\theta\):2つのベクトルが作る角度

です。

この式を見ると、内積には、

  • ベクトルの長さ
  • ベクトル同士の角度

の2つが関係していることが分かります。

特に重要なのが、\(\cos\theta\) です。

\(\cos\theta\) は、

  • ベクトルが同じ向き → \(1\)
  • ベクトルが直角 → \(0\)
  • ベクトルが逆向き → \(-1\)

となります。

つまり内積は、ベクトルの長さと向きの両方を使って、2つのベクトルの関係を表しているのです。

向きが近いほど、内積は大きくなる

ここでは、2つのベクトルの長さが同じだと考えてみます。

すると、内積の大きさは主に \(\cos\theta\) によって決まります。

  • 同じ方向を向いている → 内積は大きい
  • 直角になっている → 内積は \(0\)
  • 逆方向を向いている → 内積は負になる

つまり、ベクトルの向きが近いほど、内積は大きくなるのです。

この性質は、AIでベクトル同士の関係を調べるときにも重要になります。

ただし、ここで一つ注意があります。

内積は、ベクトルの長さにも影響されます。

そのため、

「内積が大きい=必ず意味が近い」

とは限りません。

「方向の近さ」だけを比較したい場合には、あとで紹介するコサイン類似度がよく使われます。

AIは言葉を「ベクトル」として扱う

AIは、人間のように文字や言葉をそのまま扱うのではなく、計算できる数値に変換して処理します。

そこで、単語や文章などを、大量の数字の並び=ベクトルとして扱います。

たとえば、イメージとしては次のようなものです。

言葉 ベクトル(イメージ)
(0.8, 0.7, 0.2, …)
(0.7, 0.6, 0.3, …)
自動車 (-0.2, 0.1, 0.9, …)

もちろん、実際のAIではもっと多くの数字を持つベクトルを扱います。

数百次元や数千次元以上のベクトルを使うこともあります。

このように、単語や文章などを、AIが扱える数値のベクトルとして表すことを、埋め込み(Embedding)と呼びます。

「意味が近い」とは、似た方向に配置されること

AIが大量の文章を学習するとき、言葉が使われる文脈にもパターンがあります。

たとえば、

  • 「猫」
  • 「犬」

は、似た場面や文章の中で登場することが多い言葉です。

一方で、

  • 「猫」
  • 「自動車」

は、異なる文脈で使われることも多いでしょう。

AIは大量のデータを学習する中で、こうした関係を数値として表せるようになります。

その結果、ベクトル空間の中で、

  • 関連の深い言葉 → 似た方向に配置されやすい
  • 関係の薄い言葉 → 異なる方向に配置されやすい

という状態が生まれます。

このような、意味や関係をベクトルの位置や方向として表すイメージは、意味空間と呼ばれることがあります。

だから「猫」と「犬」は近くなる

ここで、もう一度「猫」「犬」「自動車」を考えてみます。

「猫」と「犬」は、似た文脈の中で使われることが多いため、AIが作るベクトル表現の中でも、関連のある位置や方向として表されやすくなります。

一方、「猫」と「自動車」は、異なる文脈で使われることが多いため、ベクトルの方向も離れやすくなります。

すると、

  • 「猫」と「犬」 → ベクトルの方向が近い
  • 「猫」と「自動車」 → ベクトルの方向が離れている

という関係を、数学的な計算で扱えるようになります。

つまりAIは、「意味」という抽象的なものを、そのまま扱っているのではなく、ベクトル同士の関係として扱っているのです。

図で見るとこんなイメージ

「猫」と「犬」は、ベクトルの方向が近い状態です。

一方で、「猫」と「自動車」は、異なる方向を向いています。

そのため、同じくらいの長さのベクトルであれば、「猫」と「犬」の方がより大きな内積になります。

内積とベクトルの類似度の図解

実際のAIでは「コサイン類似度」も使われる

ここまで説明したように、内積にはベクトルの長さも影響します。

そのため、「ベクトルの方向がどれくらい近いか」だけを比較したい場合には、コサイン類似度(cosine similarity)が使われることがあります。

数式で書くと、次のようになります。

\(\cos\theta = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}| |\vec{b}|}\)

これは、内積をそれぞれのベクトルの長さで割ることで、ベクトルの大きさの影響を取り除いています。

つまり、比較しているのは主に、

「どれくらい同じ方向を向いているか」

です。

コサイン類似度は、

  • \(1\) に近い → 方向が近い
  • \(0\) に近い → 直交している
  • \(-1\) に近い → 逆方向

という値になります。

そのため、ベクトルの大きさではなく、方向の近さを比較したい場合に便利です。

AIや検索の仕組みでは、ベクトル同士の関係を調べるために、こうした類似度の計算が使われています。

内積はAIの「判断」を支えている

ここが、内積の面白いところです。

内積は、ベクトル同士の「似ている」を調べるだけの計算ではありません。

AIでは、入力された情報に重みをかけて、一つの値にまとめるためにも使われています。

たとえば、ニューラルネットワークを考えてみましょう。

AIは、入力された情報を、複数の特徴量として扱います。

そして、それぞれの特徴に対して、

  • どの特徴を強く重視するか
  • どの特徴をあまり重視しないか

を表す重みを掛けていきます。

たとえば、

$$
x_1w_1+x_2w_2+x_3w_3
$$

という計算を考えてみます。

これは、ベクトルで書くと、

$$
\vec{x}\cdot\vec{w}
$$

という内積です。

つまり内積は、「入力された特徴量 × 重み」をまとめて計算するためにも使われています。

この計算によって、AIは入力されたさまざまな情報を、それぞれ異なる重みで扱うことができます。

もちろん、実際のニューラルネットワークは、内積だけで動いているわけではありません。

内積の結果に対して、

  • バイアスを加える
  • 活性化関数を適用する
  • 複数の層でさらに計算する

といった処理が組み合わされます。

それでも、その中では、入力された情報に重みをかけて計算するという内積の考え方が何度も登場します。

つまり内積は、AIの中で情報同士の関係を調べるためだけではなく、入力された情報を重みづけして計算するためにも使われているのです。

ChatGPTの中でも、内積は重要な役割を持つ

ChatGPTのような生成AIでも、内積は重要な役割を持っています。

大規模言語モデルでは、文章を処理するときに、文章の中にあるさまざまな情報について、

「どの情報に、どれくらい注目するべきか?」

を計算する仕組みがあります。

代表的なものが、Attentionと呼ばれる仕組みです。

Attentionでは、ベクトル同士の関係を計算しながら、

  • この単語と関係が深い情報はどれか?
  • 文章の中で、どの情報を重視するべきか?

といった関係を扱います。

このとき、ベクトル同士の内積を使って、情報同士の関係の強さを計算します。

つまり内積は、ChatGPTの中で「どの情報に注目するか」を考える仕組みにもつながっているのです。

その内部では、

  • 情報をベクトルとして表す
  • ベクトル同士の関係を計算する
  • 重要な情報を選びながら処理する

といった計算が行われています。

そして、その土台の一つに、高校数学で学ぶ内積があります。

なぜ内積でAIにつながるのか?

ここまで見てきたように、内積には大きく2つの重要な使われ方があります。

① ベクトル同士の関係を調べる

ベクトルの向きや大きさを使って、

  • どのくらい似た方向を向いているか
  • どのような関係にあるか

を計算できます。

AIでは、ベクトル検索やAttentionなど、さまざまな場面につながります。

② 情報に重みをつける

特徴量と重みの積を合計することで、

  • どの特徴を重視するか
  • どの情報が結果に影響するか

を計算できます。

ニューラルネットワークの基本的な計算にも、この考え方が使われています。

つまり内積は、単なる「ベクトルの計算」ではありません。

AIが情報同士の関係を調べたり、入力された情報を重みづけして計算したりするための、基本的な数学の一つなのです。

まとめ

高校数学で学ぶ「内積」は、実はAIの世界でも重要な役割を持っています。

特に、

  • ベクトル同士の関係や関連性を計算する
  • 情報同士の「近さ」を比較する
  • 入力された情報に重みをかけて計算する

といった場面で、内積の考え方が使われています。

AIは、人間のように言葉の意味を感覚的に理解しているわけではありません。

しかし、言葉や情報をベクトルとして表し、その関係を数学的に計算することで、

「どの情報が関連しているのか?」
「どの情報を重視するべきなのか?」

を扱えるようになります。

そして、その計算の土台の一つが「内積」です。

教科書の中では、ただの数式に見えた、

$$
\vec{a}\cdot\vec{b}
$$

という計算。

しかし、その考え方は今、AIの内部でも使われています。

そう考えると、内積が少し面白く見えてきませんか?

▶ 「数学って、実はAIにつながっているんだ」

そう感じた人には、内積やベクトルを“計算方法”だけではなく、“意味”から解説してくれる本もおすすめです。

妥協しないデータ分析のための 微積分+線形代数入門 定義と公式、その背景にある理由、考え方から使い方まで完全網羅! | 杉山 聡 |本 | 通販 | Amazon
Amazonで杉山 聡の妥協しないデータ分析のための 微積分+線形代数入門 定義と公式、その背景にある理由、考え方から使い方まで完全網羅!。アマゾンならポイント還元本が多数。杉山 聡作品ほか、お急ぎ便対象商品は当日お届けも可能。また妥協しな...

次に読むなら

「ChatGPTは文章の中で、どの言葉に注目しているの?」
「Attentionでは、内積がどのように使われているの?」

そんな疑問にも、実は今回紹介した「ベクトル」と「内積」がつながっています。

一方、

「そもそも、なぜ \(\cos\theta\) が出てくるの?」
「なぜ直角だと内積は \(0\) になるの?」

と感じた人は、まず内積そのものを理解すると、AIとのつながりがさらに見えやすくなります。

そんな“内積の本質”を、図解でわかりやすく解説した記事がこちらです。

内積とは何を計算しているのか?|「影」と「角度」でわかるベクトルの本質
ChatGPTでも使われている「内積」以前の記事では、ChatGPTのようなAIが、文章や単語の「意味の近さ」を扱うときに、ベクトルや内積の考え方がどのように使われているのかを解説しました。たとえば、「猫」と「犬」は近い「猫」と「自動車」は...

コメント

タイトルとURLをコピーしました