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

4.1 向量空间基础

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

在线 Notebook

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


为什么需要理解向量空间

在 Transformer 中:

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

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


向量空间的基本概念

向量空间的定义

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

  1. 加法封闭性u,vVu+vV
  2. 标量乘法封闭性vV,cRcvV
  3. 零向量:存在 0V,使得 v+0=v
  4. 加法逆元:对每个 vV,存在 vV

维度和基

基(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=au,w+bv,w
  3. 正定性v,v0,等号成立当且仅当 v=0

标准内积(点积):

u,v=uTv=iuivi

范数(Norm)

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

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

常用范数:

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

内积与范数的关系

v2=v,v

正交性和投影

正交向量

定义: 两个向量 uv 正交,当且仅当:

u,v=0

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

正交基

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

  1. 它们两两正交:vi,vj=0ij
  2. 它们生成整个空间

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

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

投影(Projection)

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

projvu=u,vv2v

几何意义: uv 方向上的"影子"。

向量在子空间上的投影:

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

projVu=i=1ku,vivi2vi

距离度量

欧几里得距离

d(u,v)=uv2=i(uivi)2

余弦相似度

cos(θ)=u,vu2v2

范围: [1,1]

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

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

曼哈顿距离

d(u,v)=uv1=i|uivi|

线性变换

定义

线性变换 T:VW 满足:

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=QiKjTdk

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

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 许可协议