热身

基础

后面各页都会用到的四块数学

图中数值
小例子
用时
约 30 秒

全部步骤

  1. 点积

    点积把两个向量逐个数相乘,再把结果加起来。它可以当作相似度分数:两个向量方向越一致,点积越大。

    a · b = Σ aₖ bₖ

  2. 矩阵乘法

    矩阵乘法就是一格格的点积:(i, j) 格取 A 的第 i 行和 B 的第 j 列。每一页都这样画:A 在左边,B 在上方。

    [3 × 4] · [4 × 3] → [3 × 3]

  3. Softmax

    softmax 把任意一列分数变成和为 1 的正权重,并保持原有顺序。注意力和下一词元预测都用到它。

    exp(sₖ) / Σ exp(s)

  4. 独热查表

    独热行里只有一个 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]

延伸阅读