行列 | 数学
ベクトルの大きさ( L2 ノルム)
\[|\vec{x}| = \sqrt{x_1^2+x_2^2} \qquad \text{※ 2 次元のときはピタゴラスの定理}\]内積
ベクトル $\vec{x} = \begin{pmatrix}x_{1} & x_{2}\end{pmatrix}$ と ベクトル $\vec{y} = \begin{pmatrix}y_{1} & y_{2}\end{pmatrix}$ の内積は以下のとおり。
2 ベクトルの内積は線形空間でのベクトルの近さ(類似度)を計算する場合にも使われます。
ベクトルの内積は「要素による定義(ドット積)」と「コサイン類似度による定義」があります。
要素による定義(ドット積)
\[\langle{\vec{x}}, {\vec{y}}\rangle = x_{1}y_{1} + x_{2}y_{2}\]コサイン類似度による定義
\[\langle{\vec{x}}, {\vec{y}}\rangle = |\vec{x}||\vec{y}|cosθ \quad ※ |\vec{x}| \text{はベクトルの大きさ}\]定義より明らかなようにベクトルの向きが近い(類似している)ときに大きくなります。
コサイン類似度を使った行列積の解釈
行列の積はベクトルの内積を使って定義されます。 内積はベクトルの要素を使って定義する方法が一般的ですが cos 類似度を使った定義もあります。
LLM(大規模言語モデル)の文脈では単語(正確にはトークン)の Embedding Matrix における 2 ベクトルの近さを内積で計測するため cos 類似 を使った解釈も重要です。
\[\begin{aligned} \begin{pmatrix} x_1 & x_2 \end{pmatrix} \cdot \begin{pmatrix} w^1_{11} & w^1_{12} & w^1_{13} \\ w^1_{21} & w^1_{22} & w^1_{23} \end{pmatrix} \\ = \begin{pmatrix} x_1 w^1_{11} + x_2 w^1_{21} & x_1 w^1_{12} + x_2 w^1_{22} & x_1 w^1_{13} + x_2 w^1_{23} \end{pmatrix} \\ = \begin{pmatrix} |\vec{x}||\vec{w}^1|\cos\theta_1 & |\vec{x}||\vec{w}^2|\cos\theta_2 & |\vec{x}||\vec{w}^3|\cos\theta_3 \end{pmatrix} \end{aligned}\]ここで $\vec{w}^1$、$\vec{w}^2$、$\vec{w}^3$ はそれぞれ $W$ の1列目・2列目・3列目のベクトルを表します。
2 つのベクトルの内積
定義より 2 ベクトル間の内積は 各ベクトルの絶対値が大きく、同じ方向を向いているほど大きくなります。
行列の積
行列の積( $\cdot$ 積)は行と列の内積を使って計算します。
[!NOTE] Python では行列の積を @ 演算子でも計算できます。