尧图精选

Transformer 与大语言模型:第6章 Self-Attention自注意

🕒 发布时间:2026/9/13 21:47:32 📁 来源:尧图网络
第6章 Self-Attention本章目标:完整推导 Self-Attention 的计算过程,手算一个例子,理解每一步的含义。本章目录6.1 Self-Attention 的输入6.2 三个权重矩阵6.3 计算 Q、K、V6.4 计算 Attention Score6.5 为什么要除以 √d_k?6.6 Softmax6.7 加权求和6.8 完整公式6.9 完整流程图6.10 手算一个完整例子6.11 Attention Matrix 的含义6.12 TensorFlow 实现6.13 Self-Attention 的复杂度本章总结本章思考题下一章预告6.1 Self-Attention 的输入Self-Attention 的输入是一个矩阵XXX:X∈Rseq_len×dmodelX \in \mathbb{R}^{seq\_len \times d_{model}}X∈Rseq_len×dmodel​例如,句子I love AI(3个Token),d_model=4:X=[101002021111]X = \begin{bmatrix} 1 0 1 0 \\ 0 2 0 2 \\ 1 1 1 1 \end{bmatrix}X=​101​021​101​021​​每一行是一个 Token 的向量表示。6.2 三个权重矩阵Self-Attention 有三个可学习的权重矩阵:WQ∈Rdmodel×dkW_Q \in \mathbb{R}^{d_{model} \times d_k}WQ​∈Rdmodel​×dk​WK∈Rdmodel×dkW_K \in \mathbb{R}^{d_{model} \times d_k}WK​∈Rdmodel​×dk​WV∈Rdmodel×dvW_V \in \mathbb{R}^{d_{model} \times d_v}WV​∈Rdmodel​×dv​通常dk=dv=dmodel/num_headsd_k = d_v = d_{model} / num\_headsdk​=dv​=dmodel​/num_heads,即三个矩阵的 Shape 实际相同。💡为什么WVW_VWV​写成dvd_vdv​而不是dkd_kdk​?Q 和 K 必须维度相同(都是dkd_kdk​),因为它们需要做点积来计算注意力分数。但 V 的作用是提供"被加权求和的内容",它的输出维度dvd_vdv​决定了最终 Attention 输出的维度,理论上可以和dkd_kdk​不同。论文中用不同符号是为了强调这一设计自由度。但在所有主流实现中(包括原始论文),dk=dvd_k = d_vdk​=dv​,你可以直接把它们当成同一个值。📌本章聚焦单头 Attention 的完整计算过程。这里的dkd_kdk​实际上是多头注意力中每个 Head 分配到的维度(例如dmodel=512d_{model}=512dmodel​=512, 8 个 Head 时dk=64d_k=64dk​=64)。关于为什么要拆成多个 Head、以及多头之间如何协作,将在第7章详细展开。本章你只需要把它当作"一个 Head 内部的维度"来理解即可。6.3 计算 Q、K、VQ=X⋅WQQ = X \cdot W_QQ=X⋅WQ​K=X⋅WKK = X \cdot W_KK=X⋅WK​V=X⋅WVV = X \cdot W_VV=X⋅WV​
上一篇/下一篇内容由系统自动关联 返回资讯列表 →