热身
- 图中数值
- 小例子
- 用时
- 约 30 秒
全部步骤
点积
点积把两个向量逐个数相乘,再把结果加起来。它可以当作相似度分数:两个向量方向越一致,点积越大。
a · b = Σ aₖ bₖ矩阵乘法
矩阵乘法就是一格格的点积:(i, j) 格取 A 的第 i 行和 B 的第 j 列。每一页都这样画:A 在左边,B 在上方。
[3 × 4] · [4 × 3] → [3 × 3]Softmax
softmax 把任意一列分数变成和为 1 的正权重,并保持原有顺序。注意力和下一词元预测都用到它。
exp(sₖ) / Σ exp(s)独热查表
独热行里只有一个 1。它乘以一个矩阵,结果就是挑出其中一行:这正是嵌入查表背后的想法。
onehot · M = 一行
代码
a @ b # dot product: (a * b).sum()
C = A @ B # (3, 4) @ (4, 3) → (3, 3); C[i, j] = A[i] @ B[:, j]
p = torch.softmax(s, dim=-1) # exp(s) / exp(s).sum(), rows sum to 1
F.one_hot(i, 4).float() @ M # == M[i]