向量和矩阵基础知识

本篇讲清向量与矩阵的定义、运算和判定,并落到三维图形里的 4×4 变换。这些是后续理解注意力点积、Embedding、以及模型里大规模矩阵乘法的底座。

向量

向量既有大小又有方向,例如速度 5m/s 向东、力 10N 向上。只有大小、没有方向的叫标量,例如 5kg、30℃、10m。

  • 几何表示:用有向线段表示,如 $\vec{AB}$(起点 A,终点 B)。
  • 代数表示:在坐标系里用坐标表示。二维 $\vec{a}=(x,y)$,三维 $\vec{b}=(x,y,z)$。

在 AI 里,一段文本、一张图会被编成 Embedding(嵌入向量):用一长串数字表示它的语义,使「意思接近」的内容在空间里靠得更近。这串数字通常有成百上千个分量,相对二维、三维来说就是高维向量。相似度、注意力分数,都建立在这种向量运算上。

向量表示

平面二维向量

原点 $\vec{O}(0,0)$,点 $\vec{P}(x,y)$,则 $\vec{OP}=(x,y)$。

例:$\vec{v}=(2,3)$ 表示向右 2 个单位、向上 3 个单位。

两点求向量

已知 $\vec{A}(x_1,y_1)$,$\vec{B}(x_2,y_2)$,则 $\vec{AB}=(x_2-x_1,\, y_2-y_1)$。

例:$\vec{A}(1,2)$,$\vec{B}(4,6)$,$\vec{AB}=(4-1,\,6-2)=(3,4)$。

向量模长(长度)

符号:$|\vec{a}|$。

  • 二维:$\vec{a}=(x,y) \implies |\vec{a}|=\sqrt{x^2+y^2}$
  • 三维:$\vec{a}=(x,y,z) \implies |\vec{a}|=\sqrt{x^2+y^2+z^2}$

例:$\vec{a}=(3,4)$,$|\vec{a}|=\sqrt{3^2+4^2}=5$。

特殊向量

  • 零向量:$\vec{0}$,大小为 0,没有确定方向
  • 单位向量:$\vec{e}_a=\dfrac{\vec{a}}{|\vec{a}|}$($\vec{a}\neq\vec{0}$),大小为 1,常用来表示方向。
  • 相反向量:$-\vec{a}$,大小相同,方向相反。

向量运算

设二维向量 $\vec{a}=(x_1,y_1)$,$\vec{b}=(x_2,y_2)$。三维运算把对应分量照同样规则加上 $z$ 即可;叉积除外,见下文。

加法(三角形法则、平行四边形法则)

把第二个向量的起点接到第一个向量的终点,和向量从第一个起点指向第二个终点。

$$\vec{a}+\vec{b}=(x_1+x_2,\, y_1+y_2)$$

减法

两向量共起点时,$\vec{a}-\vec{b}$ 从 $\vec{b}$ 的终点指向 $\vec{a}$ 的终点(指向被减数)。

$$\vec{a}-\vec{b}=(x_1-x_2,\, y_1-y_2)$$

数乘(实数 × 向量)

$$k\vec{a}=(kx_1,\, ky_1)$$

  • $k>0$:方向不变,长度变为原来的 $k$ 倍。
  • $k<0$:方向反向,长度变为原来的 $|k|$ 倍。
  • $k=0$:得到零向量。

点积(数量积,结果是标量)

坐标公式:$\vec{a}\cdot\vec{b}=x_1x_2+y_1y_2$(三维再加 $z_1z_2$)。

几何定义:$\vec{a}\cdot\vec{b}=|\vec{a}|\,|\vec{b}|\cos\theta$,其中夹角满足 $0\le\theta\le 180^\circ$。

常用结论

  • $\vec{a}\perp\vec{b}$(垂直)当且仅当 $\vec{a}\cdot\vec{b}=0$。
  • $\theta<90^\circ$,点积 $>0$(锐角、同侧)。
  • $\theta>90^\circ$,点积 $<0$(钝角、反向)。
  • 自身点积:$\vec{a}\cdot\vec{a}=|\vec{a}|^2$。

点积衡量两个向量在方向上的同向程度,结果是数字。用来做功、求投影、求夹角,以及算相似度。

投影:$\vec{a}$ 在 $\vec{b}$ 方向上的投影长度是 $\dfrac{\vec{a}\cdot\vec{b}}{|\vec{b}|}$。

余弦相似度(AI 检索、RAG 里常用):

$$\mathrm{cosine}(\vec{a},\vec{b})=\frac{\vec{a}\cdot\vec{b}}{|\vec{a}|\,|\vec{b}|}=\cos\theta$$

取值 $[-1,1]$。只看方向、不看长短,两个 Embedding 越同向,分数越接近 1。

叉积(向量积)

三维里,叉积的结果仍是向量。设 $\vec{a}=(x_1,y_1,z_1)$,$\vec{b}=(x_2,y_2,z_2)$:

$$\vec{a}\times\vec{b}=(y_1z_2-z_1y_2,\; z_1x_2-x_1z_2,\; x_1y_2-y_1x_2)$$

用行列式记忆:

$$ \vec{a}\times\vec{b} =\begin{vmatrix} \boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \ x_1 & y_1 & z_1 \ x_2 & y_2 & z_2 \end{vmatrix} =\boldsymbol{i}(y_1z_2-z_1y_2)-\boldsymbol{j}(x_1z_2-z_1x_2)+\boldsymbol{k}(x_1y_2-y_1x_2)

$$

模长:$|\vec{a}\times\vec{b}|=|\vec{a}|\,|\vec{b}|\sin\theta$,等于两向量张成的平行四边形面积。

方向:$\vec{a}\times\vec{b}$ 同时垂直于 $\vec{a}$、$\vec{b}$,也就是所在平面的法向。方向由右手定则决定:右手四指从 $\vec{a}$ 弯向 $\vec{b}$,拇指指向叉积方向。

叉积衡量两个向量的垂直关系,并给出垂直于二者的新方向。用来求面积、力矩、旋转轴。

注意:得到向量的叉积定义在三维。二维里常把 $x_1y_2-x_2y_1$ 当作标量叉积,数值等于对应三维向量 $z$ 分量,也等于有向平行四边形面积。

向量平行、共线判定

$\vec{a}\parallel\vec{b}$ 当且仅当存在实数 $k$,使 $\vec{a}=k\vec{b}$(零向量与任意向量平行)。

二维坐标判定:$x_1y_2=x_2y_1$。

例:$\vec{a}=(2,4)$,$\vec{b}=(1,2)$,$\vec{a}=2\vec{b}$,互相平行。

矩阵

矩阵是数字按行列排成的数表,用来批量变换向量、写线性方程组。记作大写字母:$A$、$B$、$M$。

$m$ 行 $n$ 列叫 $m\times n$ 矩阵。例如:

$$ \boldsymbol{A}=\begin{bmatrix} a{11} & a{12} & a{13} \ a{21} & a{22} & a{23} \end{bmatrix}

$$

元素 $a_{ij}$ 表示第 $i$ 行、第 $j$ 列。

特殊矩阵

  • 方阵:行数等于列数。只有方阵才谈得上行列式、特征值和逆矩阵
  • 对角矩阵:方阵,且主对角线以外全为 0;对角线上的数可以为 0。例如 $\mathbf{D}=\begin{bmatrix} 2 & 0 & 0 \ 0 & 5 & 0 \ 0 & 0 & -3 \end{bmatrix}$。
  • 单位矩阵:记作 $I$,主对角线全是 1、其余为 0 的方阵,是矩阵乘法的恒等元。对可乘的 $A$,有 $AI=IA=A$。$I_3=\begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix}$。
  • 零矩阵:记作 $O$,所有元素为 0,不一定是方阵,是矩阵加法的零元:$A+O=A$。

单位矩阵是对角矩阵(对角线全 1)。方形零矩阵也是对角矩阵(对角线全 0)。非方的零矩阵不是对角矩阵。对角矩阵一定是方阵

注意:非方阵 $A$($m\times n$)左右乘单位阵时,要用不同阶:$A I_n$ 与 $I_m A$。

转置

转置把行列对调,记作 $A^{\top}$:$a{ij}$ 变成 $a{ji}$。行向量是列向量的转置。$(AB)^{\top}=B^{\top}A^{\top}$。

向量和矩阵的关系

向量是最瘦的矩阵(1 列或 1 行),矩阵是一组向量排在一起:

  • 列向量:$n\times 1$ 矩阵。线性代数默认用它。矩阵乘法 $Ax$ 默认右边乘列向量,解方程、特征值几乎都按列向量写。$\vec{v}_c=\begin{bmatrix} 2 \ 0 \ 0 \end{bmatrix}$
  • 行向量:$1\times n$ 矩阵,常写成列向量的转置 $x^{\top}$;图形学里有时用行向量写位置或法线。$\vec{v}_r=\begin{bmatrix} 2 & 0 & 0 \end{bmatrix}$

核心用途:方阵 × 向量 = 对向量做线性变换(旋转、缩放、剪切)。平移不是三维里的线性变换,所以图形学要升到 4×4,见后文齐次坐标。

矩阵运算

加减(必须同型,行列数完全相同)

对应位置相加减:

$$\begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}+\begin{bmatrix} 5 & 0 \ -1 & 2 \end{bmatrix}=\begin{bmatrix} 6 & 2 \ 2 & 6 \end{bmatrix}$$

数乘(数字 × 矩阵)

每个元素都乘上这个数:

$$2\cdot\begin{bmatrix} 1 & 3 \ 0 & -2 \end{bmatrix}=\begin{bmatrix} 2 & 6 \ 0 & -4 \end{bmatrix}$$

矩阵乘法(规则特殊)

前提:$A$ 是 $m\times p$,$B$ 是 $p\times n$,才能相乘,结果为 $m\times n$。左边的列数必须等于右边的行数。

计算:第 $i$ 行 × 第 $j$ 列,做点积。设 $C=AB$,则 $c_{ij}$ 等于 $A$ 的第 $i$ 行(行向量)与 $B$ 的第 $j$ 列(列向量)的点积。

$$ A=\begin{bmatrix} a & b \ c & d \end{bmatrix},\; B=\begin{bmatrix} e & f \ g & h \end{bmatrix},\; AB=\begin{bmatrix} ae+bg & af+bh \ ce+dg & cf+dh \end{bmatrix}

$$

$$ A=\begin{bmatrix} a & b & c \ d & e & f \ g & h & i \end{bmatrix},\; B=\begin{bmatrix} j & k & l \ m & n & o \ p & q & r \end{bmatrix},\; AB=\begin{bmatrix} aj+bm+cp & ak+bn+cq & al+bo+cr \ dj+em+fp & dk+en+fq & dl+eo+fr \ gj+hm+ip & gk+hn+iq & gl+ho+ir \end{bmatrix}

$$

关键特性

  • 一般不满足交换律:$AB$ 与 $BA$ 常常一个能乘、一个不能乘;都能乘时结果也通常不相等。仅在对易的特殊情况(如与 $I$ 相乘)才有 $AB=BA$。
  • 变换的复合(列向量约定):把 $AB$ 看成变换时,从右往左做——先做 $B$,再做 $A$。即 $(AB)x=A(Bx)$。
  • 单位阵:$AI=IA=A$(尺寸要配得上)。

Transformer 里的 $Q=xW_Q$、$K=xW_K$、$V=xW_V$,以及注意力里的 $QK^{\top}$,都是这里的矩阵乘法。

矩阵 × 向量

矩阵乘向量,得到变换后的新向量。二维列向量 $\vec{v}=\begin{bmatrix} x \ y \end{bmatrix}$,2 阶矩阵 $A=\begin{bmatrix} a & b \ c & d \end{bmatrix}$:

$$\vec{v}'=A\vec{v}=\begin{bmatrix} a & b \ c & d \end{bmatrix}\begin{bmatrix} x \ y \end{bmatrix}=\begin{bmatrix} ax+by \ cx+dy \end{bmatrix}$$

行向量约定则写成 $\vec{v}'=\vec{v}A$,矩阵也要改成转置形式。后文 3D 公式一律按列向量、左乘(OpenGL、Three.js 常见写法)。

3D 变换矩阵

三维平移无法用 3×3 矩阵表示成线性变换,所以把点写成齐次坐标 $(x,y,z,1)$,用 4×4 矩阵统一做缩放、旋转、平移。

单位矩阵

$$ I_4=\begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

平移矩阵

$$ T(t_x,t_y,t_z)=\begin{bmatrix} 1 & 0 & 0 & t_x \ 0 & 1 & 0 & t_y \ 0 & 0 & 1 & t_z \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

缩放矩阵

$$ S(s_x,s_y,s_z)=\begin{bmatrix} s_x & 0 & 0 & 0 \ 0 & s_y & 0 & 0 \ 0 & 0 & s_z & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

绕 X 轴旋转(右手系):

$$ R_x(\theta)=\begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & \cos\theta & -\sin\theta & 0 \ 0 & \sin\theta & \cos\theta & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

绕 Y 轴旋转

$$ R_y(\theta)=\begin{bmatrix} \cos\theta & 0 & \sin\theta & 0 \ 0 & 1 & 0 & 0 \ -\sin\theta & 0 & \cos\theta & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

绕 Z 轴旋转

$$ R_z(\theta)=\begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \ \sin\theta & \cos\theta & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1 \end{bmatrix}

$$

欧拉角顺序:没有唯一「标准」。列向量左乘时,写在右边的先作用。例如 Unity 默认欧拉角是 ZXY,对应 $R_{\mathrm{total}}=R_y R_x R_z$(先 $R_z$,再 $R_x$,最后 $R_y$)。Three.js 默认欧拉角是 XYZ,复合顺序就不同。必须和引擎约定一致。

模型变换(模型空间 → 世界空间):常见流程是先缩放、再旋转、最后平移。列向量下写成 $M_{\mathrm{model}}=T\,R\,S$。

带三轴旋转(按上面的 ZXY)时:$M_{\mathrm{model}}=T\,R_y\,R_x\,R_z\,S$。

总结

向量带大小和方向,点积出标量(夹角、投影、余弦相似度),三维叉积出法向。矩阵是排成表的数,乘法按「行点列」,列向量约定下变换从右往左复合。方阵才能谈逆与特征值;对角线上以外为 0 的方阵才是对角矩阵。三维图形用齐次坐标和 4×4 矩阵把缩放、旋转、平移写成同一种乘法。

© lizhao all right reserved,powered by Gitbook文件修订时间: 2026-08-18 22:07:38

results matching ""

    No results matching ""