はじめに
「内積って、AIと何か関係があるの?」
高校数学で学ぶ「内積」は、\(\vec{a}\cdot\vec{b}\) のようなベクトルの計算として登場します。しかし実は、この内積の考え方は、ChatGPTのようなAIや検索、おすすめ機能など、現代のさまざまな技術につながっています。
たとえば、ChatGPTのようなAIは、
- 「猫」と「犬」は関連が深い
- 「猫」と「自動車」は、あまり関連がない
といった言葉同士の関係を扱うことができます。でも、AIは人間のように、言葉の“意味”を感覚的に理解しているわけではありません。
では、AIはどうやって「言葉の意味が近い」という関係を計算できるのでしょうか。
そのヒントになるのが、言葉や情報を「ベクトル」として表し、その関係を計算するという考え方です。そして、その中で重要な役割を果たす数学の一つが、内積です。
この記事でわかること
この記事では、次の内容の理解を目指します。
- 内積が2つのベクトルの関係をどう表しているのか
- AIが言葉や文章をベクトルとして扱うとはどういうことか
- 内積とコサイン類似度がどうつながっているのか
- ニューラルネットワークで内積がどう使われるのか
- ChatGPTのAttentionと内積がどうつながっているのか
この記事を読み終えるころには、「高校数学で習った内積が、こんなところでAIにつながっているのか」と感じてもらえるはずです。
1.そもそも「内積」とは?
内積は、簡単に言えば、「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つのベクトルの関係を1つの数値として表す計算です。
ここではAIとのつながりを見るために概要だけ紹介します。なぜ内積の公式に \(\cos\theta\) が現れるのか、内積が何を計算しているのかについては、次の記事で「影」と「角度」から詳しく考えます。

2.向きが近いと、内積はどう変わる?
ここでは、2つのベクトルの長さが同じだと考えてみます。この条件なら、内積の値は主に \(\cos\theta\) によって変化します。
- 同じ方向を向いている → 内積は正で大きくなる
- 直角になっている → 内積は \(0\)
- 逆方向を向いている → 内積は負になる
つまり、ベクトルの長さをそろえて考えれば、内積から2つのベクトルの向きの関係を見ることができます。
ただし、ここで一つ注意があります。内積はベクトルの長さにも影響されるため、単純に「内積が大きい=方向が近い」とは限りません。
ベクトルの方向の近さだけを比較したいときには、長さの影響を取り除いたコサイン類似度を使うことができます。
この性質が、AIでベクトル同士の関係を調べるときにも重要になります。
3.AIは言葉を「ベクトル」として扱う
AIは、単語や文章などの情報を計算できる数値へ変換して処理します。その方法の一つが、単語や文章などを大量の数字の並び=ベクトルとして表すことです。
たとえば、イメージとしては次のようなものです。
| 言葉 | ベクトル(イメージ) |
|---|---|
| 猫 | (0.8, 0.7, 0.2, …) |
| 犬 | (0.7, 0.6, 0.3, …) |
| 自動車 | (-0.2, 0.1, 0.9, …) |
もちろん、これは説明のために単純化した例です。実際には、もっと多くの成分を持つベクトルが使われます。
このように、単語や文章などの情報を、AIが計算できるベクトルとして表現することを、埋め込み(Embedding)と呼びます。
これによって、「意味」や「文脈」といった、そのままでは計算しにくいものを、ベクトル同士の関係として扱えるようになります。
4.「意味の近さ」をベクトルの関係として表す
AIが大量のデータから学習すると、単語や文章の使われ方にはさまざまな関係があることが分かります。たとえば、「猫」と「犬」は似た文脈で登場することがあります。
一方、「猫」と「自動車」では、使われる文脈や意味的な関係が異なる場合が多いでしょう。
こうした関係を学習した埋め込みでは、意味や文脈の似た情報が、ベクトル空間の中でも互いに関連した位置や方向として表現されることがあります。そのため、ベクトル同士の距離や角度、内積などを使って、情報同士の関係を数値として調べられます。
つまり、AIでは「意味」や「文脈」の関係をベクトル空間上の関係として表し、数学的に計算できるようにしているのです。
5.だから「猫」と「犬」の関係を計算できる
ここで、もう一度「猫」「犬」「自動車」を考えてみます。
「猫」と「犬」は意味や使われ方に共通する部分があるため、学習されたベクトル表現でも互いに関連したベクトルになることがあります。一方、「猫」と「自動車」では、その関係が異なる可能性があります。
すると、
- 「猫」と「犬」 → ベクトル同士の関係が近い
- 「猫」と「自動車」 → ベクトル同士の関係がそれほど近くない
といった違いを、数値として比較できるようになります。
AIでは、言葉そのものを直接比較するのではなく、言葉や文章を表すベクトル同士の関係を計算することで、意味や文脈の近さを扱うことができます。
6.図で見るとこんなイメージ
たとえば、「猫」と「犬」のベクトルが近い方向を向き、「猫」と「自動車」のベクトルがそれとは異なる方向を向いているとします。
ベクトルの長さが同じくらいなら、方向の近い「猫」と「犬」の方が大きな内積になります。このように、ベクトルの方向と内積を使って、情報同士の関係をイメージできます。

ただし、実際に「方向の近さ」を比較するときには、ベクトルの長さの影響を取り除いたコサイン類似度を使う方法があります。
7.実際のAIでは「コサイン類似度」も使われる
ここまで説明したように、内積にはベクトルの長さも影響します。そのため、「ベクトルの方向がどれくらい近いか」を比較したい場合には、コサイン類似度(cosine similarity)が使われることがあります。
数式で書くと、
$$
\cos\theta =
\frac{\vec{a}\cdot\vec{b}}
{|\vec{a}||\vec{b}|}
$$
です。
これは、内積をそれぞれのベクトルの長さで割ることで、ベクトルの大きさの影響を取り除いています。つまり、比較しているのは「どれくらい同じ方向を向いているか」です。
コサイン類似度は、
- \(1\) に近い → 同じ方向に近い
- \(0\) → 直交している
- \(-1\) に近い → 逆方向に近い
という値になります。
コサイン類似度は、ベクトルの大きさの影響を取り除き、方向の近さを比較するための指標です。
検索や情報検索などでは、このようなベクトル同士の類似度を使って、入力された情報と関連する情報を探すことができます。
8.内積はAIの「計算」も支えている
ここが、内積のさらに面白いところです。内積は、ベクトル同士の関係を調べるためだけの計算ではありません。
AIでは、入力された情報に重みをかけて、一つの値にまとめるためにも内積が使われます。
たとえば、ニューラルネットワークを考えてみましょう。入力された情報を、
$$
\vec{x}
=
\begin{pmatrix}
x_1\\
x_2\\
x_3
\end{pmatrix}
$$
重みを、
$$
\vec{w}
=
\begin{pmatrix}
w_1\\
w_2\\
w_3
\end{pmatrix}
$$
とすると、
$$
x_1w_1+x_2w_2+x_3w_3
$$
という計算が現れます。
これは、
$$
\vec{x}\cdot\vec{w}
$$
という内積そのものです。
つまり内積は、「入力された特徴量 × 重み」をまとめて計算するためにも使われています。
ニューラルネットワークでは、このような計算にバイアスや活性化関数などの処理を組み合わせ、さらに多くの層を通して情報を変換していきます。
内積だけでAIが動いているわけではありませんが、複数の入力を重みづけしてまとめるという基本的な計算の中に、内積が何度も登場します。
9.ChatGPTのAttentionにも内積が登場する
ChatGPTのような大規模言語モデルでは、文章を処理するときに、文章の中にある情報同士の関係を計算する仕組みが使われます。その代表的なものが、Attentionです。
Attentionでは、情報から作られたベクトルを使って、
- この情報と関係が深いのはどれか?
- どの情報をどれくらい重視するか?
といった関係を計算します。
そのときに登場するのが、Query(クエリ)とKey(キー)と呼ばれるベクトルです。基本となる考え方では、QueryとKeyの内積を使って、情報同士の関係の強さを計算します。
$$
\vec{q}\cdot\vec{k}
$$
内積が大きければ、それらのベクトルが強く対応していると判断する材料になります。実際のAttentionでは、内積をそのまま使うのではなく、値を調整したうえでSoftmaxなどの処理を行い、どの情報をどれくらい重視するかを決めていきます。
高校数学で学ぶ「2つのベクトルの関係を内積で数値にする」という考え方が、Attentionで情報同士の関係を計算する仕組みにもつながっています。
もちろん、ChatGPTの仕組み全体が内積だけで説明できるわけではありません。しかし、情報をベクトルとして表し、ベクトル同士の関係を計算するという考え方は、その重要な土台の一つです。
10.なぜ内積がAIにつながるのか?
ここまで見てきたように、内積には大きく2つの使われ方があります。
10-1.ベクトル同士の関係を調べる
内積や、そこから求められるコサイン類似度を使うことで、
- ベクトル同士がどのような関係にあるか
- どのくらい似た方向を向いているか
を数値として扱えます。
AIでは、埋め込みを使った情報検索や、Attentionで情報同士の関係を計算するときなどに、こうした考え方が登場します。
10-2.情報に重みをつける
一方、特徴量と重みの積を足し合わせれば、
$$
x_1w_1+x_2w_2+\cdots+x_nw_n
$$
となります。
これは、
$$
\vec{x}\cdot\vec{w}
$$
という内積です。
この計算によって、複数の入力をそれぞれ異なる重みでまとめることができます。
つまり内積は、単なる「ベクトルの計算」ではありません。AIが情報同士の関係を調べたり、複数の入力を重みづけして計算したりするための、基本的な数学の一つなのです。
まとめ
高校数学で学ぶ「内積」は、実はAIの世界にもつながっています。今回見てきたポイントをまとめると、
- 内積は、ベクトルの長さと向きの関係を1つの数値として表せる
- AIでは、言葉や文章などの情報をベクトルとして表すことがある
- ベクトル同士の関係を計算することで、情報の関連性を扱える
- コサイン類似度を使えば、ベクトルの方向の近さを比較できる
- ニューラルネットワークでは、入力と重みの計算に内積が登場する
- Attentionでも、ベクトル同士の関係を調べるために内積が登場する
ということになります。
高校数学で習う \(\vec{a}\cdot\vec{b}\) は、教科書の中だけで終わる計算ではありません。「情報をベクトルとして表し、その関係を数値として計算する」という考え方を通して、AIの数学へとつながっています。
ただし、この記事では「AIで内積がどう使われるのか」を中心に見てきたため、そもそもなぜ内積でベクトルの向きの関係が分かるのかについては、まだ詳しく説明していません。
次の記事ではAIからいったん離れて、高校数学の内積そのものに戻ります。内積を「影」と「角度」から考えることで、なぜ
$$
\vec{a}\cdot\vec{b}
=
|\vec{a}||\vec{b}|\cos\theta
$$
という式になるのか、その意味を直感的に見ていきます。
関連記事


シリーズ全体を理解する
ベクトルや内積の基本から、余弦定理、直線・平面のベクトル方程式まで、各テーマがどのようにつながっているのかを整理したい人は、こちらの記事も参考にしてください。

関連書籍
「数学って、実はAIにつながっているんだ」と感じた人には、内積やベクトルを“計算方法”だけではなく、“意味”から理解できる本もおすすめです。



コメント