幾何と三角
この章では、ベクトルの「方向 + 長さ」という直観を身につけ、基本三角関数を理解し、座標系の空間直観を線形代数の「ベクトル空間」を学ぶための土台とします。
単語の embedding、推薦システムの類似度計算、Transformer の位置エンコーディングは、すべてこの章の幾何学的直観の上に成り立っています。
平面ベクトル:方向 + 長さ
ベクトルとは何か
普通の数(スカラー)は「大きさ」という 1 つの情報だけを持ちます。たとえば「気温は 25 度」のようなものです。
ベクトルは 2 つの情報を同時に持ちます:方向と長さ(ノルム)。
平面直交座標系では、ベクトルは座標形式で書かれます、つまり「原点から出発し、x 方向に x 単位、y 方向に y 単位進んだ」位置を表します。矢印自体が方向と長さを符号化しています。
ベクトルの長さ(ノルム)
これは三平方の定理です。ベクトルの長さは、x 軸と y 軸上の成分が作る直角三角形の斜辺です。
ベクトルの加法とスカラー倍
| 演算 | 代数の規則 | 幾何学的な意味 |
|---|---|---|
| 加法 | 首尾をつなぐ:2 番目のベクトルの始点を 1 番目のベクトルの終点に接続する | |
| スカラー倍 | 長さだけを変える(k が負なら向きを反転)。方向が通る直線は変えない。 |
ベクトルの内積:「2 つの方向がどれだけ近いか」を測る
ここでは 2 つのベクトルのなす角です。内積の符号には明確な幾何学的意味があります:
| 内積の符号 | なす角の範囲 | 幾何学的な意味 |
|---|---|---|
| 方向がおおむね同じ | ||
| 2 つのベクトルが垂直(直交) | ||
| 方向がおおむね反対 |
なぜベクトルが AI にとって極めて重要なのか
機械学習において、1 件のサンプルデータ(1 枚の画像、テキストの embedding、1 人のユーザーの特徴量)は、本質的に高次元空間の中の1 つのベクトルです。
2 つの単語の embedding ベクトルの内積(またはなす角のコサイン)が大きいほど、通常はこれら 2 つの単語の意味が似ていることを表します。これは単語ベクトルや推薦システムの「類似度計算」の数学的基盤です。
ニューラルネットワークの各層が行うの本質は、重みベクトルと入力ベクトルの内積です。
実例
import math
# 2 つの「単語ベクトル」:2 つの単語の embedding と仮定(2 次元に簡略化)
king = (3, 4)
queen = (4, 3)
# ノルム |v| = sqrt(x² + y²)
norm_king = math.sqrt(3**2 + 4**2) # 5
norm_queen = math.sqrt(4**2 + 3**2) # 5
print(norm_king, norm_queen)
# 内積 a·b = a₁b₁ + a₂b₂
dot = king[0] * queen[0] + king[1] * queen[1]
print(dot)
# なす角のコサイン cos θ = (a·b) / (|a||b|)。1 に近いほど 2 つのベクトルの方向が近い
cos_theta = dot / (norm_king * norm_queen)
print(cos_theta)
上記のコードを実行すると、出力結果は次のとおりです:
5.0 5.0 24 0.96
コサイン類似度 0.96 は、2 つのベクトルの方向が非常に近いことを意味します。これはまさに「意味が似ている」ことの幾何学的な表現です。
練習:ベクトルの長さを求めよ。
クリックして解答を見る
基本三角関数:sin と cos
直角三角形から単位円へ
三角関数を学び始めるとき、まず直角三角形の辺の長さの比から始めることが多いです:
より汎用的で、AI の場面にも適した理解の仕方は単位円による定義:半径 1 の円上で、x 軸の正方向から反時計回りに角度に対応する点の座標は。
このように定義する利点は次のとおりです:任意の角度を取れる(0°〜90° に限らない)。sin と cos は θ の変化に応じて「ぐるぐる回り」、周期性(1 周 360°、すなわち2π ラジアンごとに値が繰り返されます)。
「再生」をクリックすると、単位円上の点がどのように正弦波を描くかを見られます。
重要な性質
| 性質 | 式 | 意味 |
|---|---|---|
| 有界性 | 角度がどれだけ大きくても、値は常に [-1, 1] の範囲に収まる | |
| 周期性 | 1 周するごとに値が繰り返される | |
| 平方の関係 | 単位円の半径が 1 であることからの直接の帰結(三平方の定理) |
sin、cos と位置エンコーディング
Transformer モデルは一連のテキストを処理するとき、本来「単語の前後関係」を知りません(すべての単語を並列処理するため)。
モデルに「位置」情報を符号化するために、Transformer は次のような式を使います:
ここでは sin/cos の 2 つの核となる性質を使っています:
有界性:系列がどれだけ長くても、位置エンコーディングの値は爆発せず、常に [-1, 1] の間に収まり、他の数値計算を妨げません。
周期性 + 異なる周波数の重ね合わせ:異なる次元で異なる周波数の sin/cos 波形を使うことで、モデルは「隣接する位置」を区別でき(高周波の波形は変化が速い)、「遠い位置の関係」も捉えられます(低周波の波形は変化が遅い)。
この背後には、信号処理におけるフーリエ変換と通じる考え方があります:どんな複雑な信号も、一連の異なる周波数の正弦波の重ね合わせで表現できます。
実例
import math
d = 16 # エンコーディングの総次元(例示用、実際のモデルは 512+)
# 次元 2i の角周波数は 1 / 10000^(2i/d)
# 低次元は周波数が高く(隣接位置の区別)、高次元は周波数が低い(遠距離の感知)
for i in [0, 2, 4]:
freq = 1 / (10000 ** (i / d))
print(i, round(freq, 6))
# pos=3 の次元 0 における sin エンコーディング値:sin(3 * 1.0)
print(round(math.sin(3 * 1.0), 6))
上記のコードを実行すると、出力結果は次のとおりです:
0 1.0 2 0.316228 4 0.1 0.14112
次元 0 の周波数は 1.0 で、次元 4 では 0.1 に減衰します。周波数は次元に沿って指数関数的に減衰しており、まさに「高周波が前、低周波が後ろ」という配置です。
座標系と空間の直観
2 次元の座標系は「高次元空間」を理解する出発点
平面直交座標系互いに直交する 2 本の数直線を使って、平面上のすべての点に一意の「住所」を与えます。
この直観的な考え方はそのまま拡張できます:3 次元空間では z 軸を追加し、n 次元空間とは。
n 次元空間は直接描くことはできませんが、代数上の扱いはまったく同じです。各座標軸(「次元」)は依然として互いに独立した 1 つの方向です。
これは線形代数の「ベクトル空間」を理解するうえで何を意味するか
| 2 次元での直観 | 高次元への拡張 | AI での応用 |
|---|---|---|
| 射影:ベクトルのある軸上の成分 | 高次元ベクトルの任意の方向への射影 | 内積 / 直交分解は次元削減アルゴリズムの基盤 |
| 直交:2 つの方向が垂直で、互いに干渉しない | 高次元空間の「直交基底」 | PCA の次元削減は互いに直交する主方向を探す |
| 基底:x軸とy軸は最も基本的な参照方向です | 任意のベクトルは基底ベクトルの組み合わせとして書かれます | embedding空間の次元は基底の数です |
多くの言語モデルのembedding次元は数百から数千(例えば768次元)です。この空間を紙上に描くことはできませんが、2次元・3次元でおなじみの操作を借りて「想像」することができます。
具体的な類比(アナロジー)
映画を説明するとき、「アクションシーンの多さ」「面白さ」「プロットの複雑さ」など、多くの次元で点数をつけることを想像してみてください。
各映画はこの「多次元スコア空間」内の1つの点(ベクトル)に対応します。
2つの映画が似ているほど、対応するベクトルは空間内で「近く」(内積が大きく、なす角が小さい)なります。
これはまさにレコメンドシステムの「類似コンテンツ推薦」の背後にある幾何学的直感であり、この直感の源は、2次元座標系における「2つの点が近いかどうか」という空間感覚です。
練習:あるベクトルのx軸方向の射影が大きく、y軸方向の射影がほぼ0である場合、このベクトルの方向はおおよそどちらを向いていることになりますか?
クリックして答えを見る
方向はほぼx軸に沿っています。y方向への「寄与」が小さいため、y軸にほぼ垂直で、x軸にほぼ平行であることを示しています。
章のまとめ
| テーマ | 一言で言うと核心 |
|---|---|
| 平面ベクトル | 「方向」と「長さ」の2つの情報を同時に持ち、高次元データ(embedding)の基本単位です |
| 内積 | 2つの方向が「どれだけ近いか」を測るもので、類似度計算の数学的基盤です |
| sin / cos | 単位円上の座標は周期性と有界性を持ち、位置エンコーディングの数学的ツールです |
| 座標系 | 2次元/3次元の空間直感は、n次元ベクトル空間、射影、直交などの概念を理解する出発点です |