⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

4.1 向量空间基础 ​

核心问题: 什么是向量空间?为什么 Transformer 中的嵌入是向量?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。


为什么需要理解向量空间 ​

在 Transformer 中:

  • 每个 token 被表示为一个向量(嵌入)
  • 注意力计算涉及向量的内积
  • 不同层的表示存在于不同的向量空间中

理解向量空间的几何性质可以帮助我们理解 Transformer 如何处理信息。


向量空间的基本概念 ​

向量空间的定义 ​

一个向量空间 V 是一个集合,满足以下性质:

  1. 加法封闭性:u,v∈V⇒u+v∈V
  2. 标量乘法封闭性:v∈V,c∈R⇒cv∈V
  3. 零向量:存在 0∈V,使得 v+0=v
  4. 加法逆元:对每个 v∈V,存在 −v∈V

维度和基 ​

基(Basis):向量空间的一组线性无关的向量,可以生成整个空间。

维度(Dimension):基中向量的个数。

例子:

  • R2(平面)的维度是 2,基可以是 {(1,0),(0,1)}
  • R768(BERT 的嵌入维度)的维度是 768

子空间 ​

子空间是向量空间的一个子集,本身也是向量空间。

例子:

  • 通过原点的直线是 R2 的子空间
  • 通过原点的平面是 R3 的子空间

内积和范数 ​

内积(Inner Product) ​

定义: 内积 ⟨u,v⟩ 是一个标量,满足:

  1. 对称性:⟨u,v⟩=⟨v,u⟩
  2. 线性性:⟨au+bv,w⟩=a⟨u,w⟩+b⟨v,w⟩
  3. 正定性:⟨v,v⟩≥0,等号成立当且仅当 v=0

标准内积(点积):

⟨u,v⟩=uTv=∑iuivi

范数(Norm) ​

定义: 范数 ∥v∥ 是向量的"长度",满足:

  1. 正定性:∥v∥≥0,等号成立当且仅当 v=0
  2. 齐次性:∥cv∥=|c|∥v∥
  3. 三角不等式:∥u+v∥≤∥u∥+∥v∥

常用范数:

范数定义用途
L2 范数|v|2=∑ivi2欧几里得距离
L1 范数|v|1=∑i|vi|稀疏性
L∞ 范数|v|∞=maxi|vi|最大分量
Frobenius 范数|A|F=∑ijAij2矩阵范数

内积与范数的关系 ​

∥v∥2=⟨v,v⟩

正交性和投影 ​

正交向量 ​

定义: 两个向量 u 和 v 正交,当且仅当:

⟨u,v⟩=0

几何意义: 两个向量垂直。

正交基 ​

定义: 一组向量 {v1,v2,…,vn} 是正交基,如果:

  1. 它们两两正交:⟨vi,vj⟩=0 (i≠j)
  2. 它们生成整个空间

标准正交基:如果还满足 ∥vi∥=1,则称为标准正交基。

优势: 在标准正交基下,坐标计算很简单。

投影(Projection) ​

向量在另一个向量上的投影:

projvu=⟨u,v⟩∥v∥2v

几何意义: u 在 v 方向上的"影子"。

向量在子空间上的投影:

如果 {v1,…,vk} 是子空间的正交基,则:

projVu=∑i=1k⟨u,vi⟩∥vi∥2vi

距离度量 ​

欧几里得距离 ​

d(u,v)=∥u−v∥2=∑i(ui−vi)2

余弦相似度 ​

cos⁡(θ)=⟨u,v⟩∥u∥2∥v∥2

范围: [−1,1]

  • 1:完全相同方向
  • 0:正交
  • -1:完全相反方向

应用: 在 Transformer 中,注意力权重基于余弦相似度。

曼哈顿距离 ​

d(u,v)=∥u−v∥1=∑i|ui−vi|

线性变换 ​

定义 ​

线性变换 T:V→W 满足:

T(au+bv)=aT(u)+bT(v)

矩阵表示 ​

任何线性变换都可以用矩阵表示:

T(v)=Av

特征值和特征向量 ​

定义: 如果 Av=λv,则 v 是特征向量,λ 是特征值。

几何意义: 特征向量在线性变换下只改变长度,不改变方向。

应用:

  • 主成分分析(PCA)
  • 图的谱分析
  • 矩阵分解

向量空间在 Transformer 中的应用 ​

1. 嵌入空间 ​

每个 token 被映射到一个 dmodel 维的向量空间:

token "hello" → [0.2, -0.5, 0.1, ..., 0.3]  (768维)

2. 注意力计算中的内积 ​

注意力权重基于查询和键向量的内积:

attentionij=Qi⋅KjTdk

这衡量了两个向量的相似度。

3. 值的加权求和 ​

输出是值向量的加权组合:

outputi=∑jαijVj

这是在向量空间中的线性组合。

4. 多头注意力中的子空间 ​

每个注意力头在一个子空间中操作:

原始空间:d_model 维
    ↓ (投影)
子空间1:d_model/h 维
子空间2:d_model/h 维
...
子空间h:d_model/h 维
    ↓ (拼接)
原始空间:d_model 维

5. 嵌入空间的几何性质 ​

在训练过程中,Transformer 学习一个嵌入空间,其中:

  • 相似的 token 靠近(小欧几里得距离)
  • 相关的概念在同一方向(高余弦相似度)
  • 不同的概念正交(低内积)

向量空间的可视化 ​

二维投影 ​

高维向量空间可以用 t-SNE 或 PCA 投影到 2D 进行可视化:

python
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# 嵌入矩阵:(n_tokens, d_model)
embeddings = model.get_embeddings()

# 投影到 2D
pca = PCA(n_components=2)
embeddings_2d = pca.fit_transform(embeddings)

# 绘制
plt.scatter(embeddings_2d[:, 0], embeddings_2d[:, 1])
plt.show()

相似度矩阵 ​

可视化向量之间的相似度:

python
import numpy as np

# 计算余弦相似度矩阵
similarity = embeddings @ embeddings.T
similarity /= np.linalg.norm(embeddings, axis=1, keepdims=True)
similarity /= np.linalg.norm(embeddings, axis=1, keepdims=True).T

# 绘制热力图
plt.imshow(similarity, cmap='hot')
plt.colorbar()
plt.show()

实践建议 ​

向量空间的性质检查 ​

在训练 Transformer 时,可以检查:

  • [ ] 嵌入的范数:是否稳定?
  • [ ] 相似度分布:是否合理?
  • [ ] 子空间的独立性:多头注意力的子空间是否不同?
  • [ ] 投影的损失:降维后信息损失多少?

常见问题 ​

问题可能原因解决方案
嵌入范数爆炸学习率太大或初始化不当使用层归一化,调整学习率
所有向量相似模型未充分训练或容量不足增加训练时间或模型大小
子空间重叠多头注意力冗余增加头数或使用正则化

关键要点 ​

  1. 向量空间是 Transformer 的基础,所有计算都在向量空间中进行
  2. 内积衡量相似度,是注意力机制的核心
  3. 范数衡量向量的大小,影响梯度流
  4. 正交性和投影帮助理解多头注意力中的子空间
  5. 距离度量(欧几里得、余弦)决定了向量之间的关系

与后续章节的连接 ​

  • 4.1-4.4:向量空间中的注意力计算
  • 第5-8章(LLM):嵌入空间的学习和优化
  • 扩展:度量学习、对比学习

本教程采用 CC BY-NC-SA 4.0 许可协议