みんなのAI
機械学習AI論文
読み込み中…

学ぶ

🏅マイ実績

Ch.02

ベクトルの内積と射影:データ間の角度と類似度

チャプター別 数学図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。中級数学の流れを一覧で確認できます。

座標平面:u, v, 正射影

xyuvproj
基準 u回転 v影残差 ⊥ u

方向・類似度・数値

方向
−10+1

内積 u·v

13.32

cos θ(方向)

0.969

|proj| / |v|

0.969

緑のベクトル vvv が一周すると θ\thetaθ が変わり、琥珀色の影(正射影)の長さと 内積・cos⁡θ\cos\thetacosθ が連動します。同じ向きに近いほど 内積は大きく、直交で 000、反対向きで 負になります。小さい円は vvv の 方向だけを切り出した図です。
内積(ドット積)は、2つのベクトルが「どれだけ同じ向きを向いているか」をひとつの数にまとめます。正射影は、あるベクトルを別のベクトルが張る直線(または部分空間)へ影のように移した結果です。Ch.01の Rn\mathbb{R}^nRn を土台に、類似・角度・距離を内積の言葉で読む訓練をし、機械学習・深層学習の類似度・アテンション・線形層へつなげます。

ベクトルの内積と正射影:似ている度合いを数値で測る

内積は「同じ位置の成分どうしを掛けて足す」という Ch.01 の成分表現をひとつの値にまとめたものです。幾何的には長さ2つと角 θ\thetaθ を含む ∥u∥∥v∥cos⁡θ\|\mathbf{u}\|\|\mathbf{v}\|\cos\theta∥u∥∥v∥cosθ で、正射影は内積を基準方向の長さで割って得る影のベクトルです。
直感的には、どれだけ同じ向きかを数で表したものが内積です。同じ向きなら大きな正、直交なら0、反対向きなら負になります。正射影は懐中電灯で壁にできる影を想像してください。
次の式が中心です。
1. 内積:u⋅v=∥u∥∥v∥cos⁡θ\mathbf{u} \cdot \mathbf{v} = \|\mathbf{u}\|\|\mathbf{v}\|\cos\thetau⋅v=∥u∥∥v∥cosθ(2つのベクトルの長さと、その間の角 θ\thetaθ を使う表し方)
2. コサイン類似度:cos⁡θ=u⋅v∥u∥∥v∥\cos\theta = \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{u}\|\|\mathbf{v}\|}cosθ=∥u∥∥v∥u⋅v​(大きさが違っても向きの似かただけを比べたいとき)
3. 正射影:projuv\mathrm{proj}_{\mathbf{u}}\mathbf{v}proju​v(基準ベクトル u\mathbf{u}u の向きへ、v\mathbf{v}v を落とした影)
4. 単位ベクトル:u^\mathbf{\hat{u}}u^ のハット(^)は「向きを強調する」記号としてよく使われます。単位ベクトルは長さが 1 の矢印(∥u^∥=1\|\mathbf{\hat{u}}\|=1∥u^∥=1)なので、長さは決まりきっていて、どちらを向くかだけが残ります。そこで v\mathbf{v}v を u^\mathbf{\hat{u}}u^ 上に落とした影(正射影)は、(v⋅u^) u^(\mathbf{v}\cdot\mathbf{\hat{u}})\,\mathbf{\hat{u}}(v⋅u^)u^ と一気に書けます。v⋅u^\mathbf{v}\cdot\mathbf{\hat{u}}v⋅u^ は「v\mathbf{v}v がその向きにどれだけそろっているか」を一つの数で表すスコアで、影の実際の長さはその大きさ、すなわち ∣v⋅u^∣|\mathbf{v}\cdot\mathbf{\hat{u}}|∣v⋅u^∣ です。(負なら逆向きの意味で、長さだけ見るときは絶対値を使います。)
ここで ∥u∥\|\mathbf{u}\|∥u∥ と ∥v∥\|\mathbf{v}\|∥v∥ はそれぞれのベクトルのノルム(長さ)です。コサイン類似度はこの長さの積で割るので、大きさの影響が消えて向きだけが残ります。
式はたくさんに見えますが、結局はコンピュータが「どれだけ似ているか」を数にするためのルールです。
深層学習では各層の線形変換が行ベクトルと入力の内積の積み重ねです。アテンションはクエリ・キー内積(または同等のスコア)で注目を決めます。推薦ではユーザー・アイテム埋め込みの内積/コサインで好みを表します。
まとめ: 内積は成分積の和であり長さと角を結びつけ、正射影はある方向への影のベクトルです。コサインは方向重視、射影は直交分解と相性が良いです。次の Ch.03 行列では多くの内積を一度に扱います。
Ch.01でベクトルを「数の箱」と見たなら、本章は箱同士を対にして1つのスコアを作る規則です。そのスコアが距離・角・類似度の共通語になり、行列・固有値・最適化へ続きます。
「似ている」をコンピュータに伝えるには測定が必要です。内積とコサインは高次元でも方向と大きさを分けて解釈でき、前処理(正規化)とも密接です。
機械学習:特徴ベクトル間の類似度で kNN、カーネルの出発点、線形/ロジスティックの線形項 w⋅x\mathbf{w}\cdot\mathbf{x}w⋅x などに使います。
幾何:最小二乗解は列空間への射影として解釈できます。PCA の主成分、Gram–Schmidt の「射影を引く」も同じ絵です。
下の表に、問題解決に必要な数式と記号の意味をまとめ、その直後の項目別の詳しい説明で定義の意図まで述べます。解説例では代表的な型の手順を示します。
| 数式 | 記号の意味 |
| :--- | :--- |
| u⋅v\mathbf{u}\cdot\mathbf{v}u⋅v | 同じインデックスの成分どうしを掛けて足した値;結果はスカラー |
| ∥u∥\|\mathbf{u}\|∥u∥ | ユークリッドノルム(長さ)u⋅u\sqrt{\mathbf{u}\cdot\mathbf{u}}u⋅u​ |
| cos⁡θ\cos\thetacosθ | u⋅v∥u∥∥v∥\dfrac{\mathbf{u}\cdot\mathbf{v}}{\|\mathbf{u}\|\|\mathbf{v}\|}∥u∥∥v∥u⋅v​ — なす角のコサイン(零ベクトル除く) |
| projuv\mathrm{proj}_{\mathbf{u}}\mathbf{v}proju​v | v\mathbf{v}v を u\mathbf{u}u の張る直線への正射影ベクトル |
| v−projuv\mathbf{v}-\mathrm{proj}_{\mathbf{u}}\mathbf{v}v−proju​v | 射影を引いた残差;常に u\mathbf{u}u と直交 |
| 単位ベクトル u^\mathbf{\hat{u}}u^ | ∥u^∥=1\|\mathbf{\hat{u}}\|=1∥u^∥=1;影の長さ =∣v⋅u^∣=|\mathbf{v}\cdot\mathbf{\hat{u}}|=∣v⋅u^∣
項目別の詳しい説明
① u⋅v\mathbf{u}\cdot\mathbf{v}u⋅v 同じ位置の成分どうしを掛けて足すスカラー。
② ∥u∥\|\mathbf{u}\|∥u∥ u⋅u\sqrt{\mathbf{u}\cdot\mathbf{u}}u⋅u​ で長さを表す。
③ cos⁡θ\cos\thetacosθ 二つのベクトルのなす角 θ\thetaθ に対し、内積をノルムで割った値。分母が 0 にならないよう注意。
④ projuv\mathrm{proj}_{\mathbf{u}}\mathbf{v}proju​v u⋅vu⋅uu\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{u}\cdot\mathbf{u}}\mathbf{u}u⋅uu⋅v​u。直線上への影のイメージ。
⑤ v−projuv\mathbf{v}-\mathrm{proj}_{\mathbf{u}}\mathbf{v}v−proju​v 残差で、常に u\mathbf{u}u と直交。
⑥ u^\mathbf{\hat{u}}u^ 単位ベクトルなら射影は (v⋅u^)u^(\mathbf{v}\cdot\mathbf{\hat{u}})\mathbf{\hat{u}}(v⋅u^)u^、長さは ∣v⋅u^∣|\mathbf{v}\cdot\mathbf{\hat{u}}|∣v⋅u^∣。

練習問題

以下は60問バンクから無作為に選んだ10問です(易4・中3・難3、提示順は易→中→難)。各問は選択式です。番号を選んでください。

ロジスティック回帰で z=w⋅x+bz=\mathbf{w}\cdot\mathbf{x}+bz=w⋅x+b のとき、w⋅x\mathbf{w}\cdot\mathbf{x}w⋅x は何に対応するか?
1 / 10