08 · 第 8 讲:序列神经网络模型

← 返回课程目录

来源说明:本文由 AI 根据课程课件整理生成。学习和引用时请结合原课件核实。

本文目录

本文最后更新于 2026年11月9日 下午

北京大学《机器学习概论》(2026 秋)的课程笔记。

第八讲:读到一句话的末尾时,模型该怎样记住前面的词?如果前文很长,能不能直接去找当前最相关的位置?

RNN 和注意力分别回答了这两个问题,Transformer 则把注意力作为主要计算模块。

第 1 章:序列与固定维度输入有何不同

文本、音频、视频和用户行为都有先后关系,长度也可能变化。对齐任务可以每输入一步产生一步输出;非对齐 Seq2Seq 则可能把一个输入序列变为不同长度的输出序列。

概率链式分解写为 p(y1:T∣x)=∏t=1Tp(yt∣y<t,x)p(y_{1:T}\mid x)=\prod_{t=1}^Tp(y_t\mid y_{<t},x)。这里是乘积,取对数后才变成求和;课件该处的求和式应按链式法则理解为乘积。

第 2 章:RNN:用状态压缩过去

简单循环网络递推 ht=ϕ(Wht−1+Uxt+b)h_t=\phi(Wh_{t-1}+Ux_t+b),再由 hth_t 预测输出。每个时间步共享 W,UW,U,因此能处理不同长度。

训练时把网络沿时间展开并做反向传播(BPTT);同一参数在各时刻使用,梯度须累加所有时间步的贡献。长序列中,梯度沿时间反复乘 WW 与激活函数导数,易消失或爆炸。

LSTM 用遗忘、输入、输出等门控调节记忆单元,使重要信息更易跨越多步,但并非保证所有长期依赖都能学到。

第 3 章:编码器—解码器与注意力

只把整个输入压缩成一个固定向量会形成信息瓶颈。

注意力让解码器在第 tt 步直接读取各输入位置:比较当前查询 qtq_t 与每个键 kik_i,把分数经 softmax 变成权重 αti\alpha_{ti},再加权求和 ct=∑iαtivic_t=\sum_i\alpha_{ti}v_i。

查询表示“现在需要什么”,键表示“哪里可能有关”,值是被读取的内容。词指代的例子表明,不同层或不同头可能分别关注句法、语义等联系;注意力热图只能提供线索,不能直接当作因果解释。

第 4 章:Transformer:让位置之间直接交互

自注意力的 Q,K,VQ,K,V 都来自同一序列,缩放点积形式为 softmax(QKT/dk)V\mathrm{softmax}(QK^T/\sqrt{d_k})V。除以 dk\sqrt{d_k} 防止维度增大时分数过大、softmax 过于尖锐。

多头注意力分别学习不同投影后再拼接,增强表示能力。每个位置随后经过前馈网络;残差连接和层归一化帮助深层训练。自注意力本身不含顺序,需要加入位置编码(固定正弦余弦或可学习向量)。

编码器可双向读取输入;自回归解码器要使用因果掩码,防止预测当前位置时偷看未来目标;交叉注意力让解码器的查询读取编码器产生的键和值。最后经线性映射和 softmax 得到下一个词的概率。

训练可并行处理已知目标序列中的多个位置,生成时仍须逐步产生输出。与 RNN 相比,Transformer 让远距离位置的交互路径更短,但标准自注意力的时间与内存开销随序列长度平方增长。

第 5 章:RNN 的时间反向传播为何不稳定

先看简化线性递推 ht=Wht−1h_t=Wh_{t-1},则 ∂hT/∂ht=WT−t\partial h_T/\partial h_t=W^{T-t}(这里的上标表示矩阵幂,而非转置)。

若 WW 的特征值模长期小于 1,早期状态对末端损失的影响趋近于 0;大于 1 则可能急剧放大。实际 RNN 还需乘上激活函数的导数,因此梯度消失通常更明显。

LSTM 引入记忆状态 ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t,遗忘门 ftf_t 决定旧记忆保留多少;沿记忆通道的梯度有更直接的路径。

梯度裁剪常用于限制爆炸,但不能修复已经消失的信号。

第 6 章:注意力从打分到上下文向量

给定查询 qtq_t、键 kik_i、值 viv_i,先算分数 eti=score(qt,ki)e_{ti}=\mathrm{score}(q_t,k_i),再归一化 αti=exp⁡(eti)/∑jexp⁡(etj)\alpha_{ti}=\exp(e_{ti})/\sum_j\exp(e_{tj}),最后 ct=∑iαtivic_t=\sum_i\alpha_{ti}v_i。

权重和为 1,使上下文成为值向量的加权平均。传统编码器—解码器中,查询来自解码器当前状态,键和值来自编码器各时间步;这样解码第 tt 个词时可以有选择地查看源序列,而不只依赖一个固定向量。

第 7 章:Transformer 的形状、掩码和复杂度

设序列长度 TT、模型维度 dd,输入矩阵 X∈RT×dX\in\mathbb R^{T\times d}。

线性投影得到 Q=XWQQ=XW_Q、K=XWKK=XW_K、V=XWVV=XW_V;若键维度为 dkd_k,则 QKT/dkQK^T/\sqrt{d_k} 的形状为 T×TT\times T,每一行对应一个查询对所有位置的分数。

对每行做 softmax 后乘 VV,得到每个位置综合其他位置的信息。多头注意力用多套投影并行计算,再拼接投影回模型维度。每头的注意力矩阵都含约 T2T^2 个分数,这是长序列的主要成本之一。

因果掩码把未来位置的分数设为负无穷,softmax 后权重为零;padding 掩码避免关注补齐位置。

编码器自注意力通常只需 padding 掩码,解码器自注意力还需因果掩码,解码器到编码器的交叉注意力则按源序列有效位置设置掩码。位置编码解决“交换两个词但集合相同”时纯自注意力缺乏顺序感的问题。

完整解码块通常按掩码自注意力、交叉注意力、前馈网络的次序组织,每个子层配残差和归一化。

第 8 章:位置编码的一个可计算例子

固定正弦位置编码可设 PE(pos,2i)=sin⁡(pos/100002i/d)PE(pos,2i)=\sin(pos/10000^{2i/d})、PE(pos,2i+1)=cos⁡(pos/100002i/d)PE(pos,2i+1)=\cos(pos/10000^{2i/d})。

不同维度使用不同波长,让位置 1、2、3 产生可区分的向量,并可把位置差异表现为连续变化。另一种方式是直接学习每个位置的向量,但通常只为训练时设定的最大长度准备参数。

无论哪种方式,位置向量与词嵌入结合后,注意力才有机会区分相同词出现在不同位置的情况。

第 9 章:训练与生成要分开理解

训练自回归解码器时,目标序列已知,可把向右平移一位的真实词作为输入,同时计算所有位置的损失;因果掩码保证第 tt 位只能看到更早的目标词,这称为 teacher forcing。

生成时真实后续词未知,只能用已生成的词继续预测,因此逐步生成。训练并行不等于生成也能一次性算完。

RNN 的计算链天然跨时间,Transformer 训练时的位置计算更易并行,但标准注意力的 T2T^2 成本在长序列上突出。

RNN 把过去压进不断更新的状态;注意力让模型按当前需要读取不同位置;Transformer 主要靠自注意力完成位置之间的信息交换,再用位置编码和掩码处理顺序与生成规则。

补充:LSTM 的门为什么有用

普通 RNN 的状态反复经过同一递推,长距离梯度容易连乘得太小或太大。LSTM 用遗忘门、输入门和输出门控制记忆单元的更新,其中遗忘门接近 1 时,信息可以沿 cell state 较稳定地传递。它缓解而非彻底消除了长序列困难;注意力和 Transformer 则改为让当前位置直接读取远处信息。


第 8 讲:序列神经网络模型
https://yjyxfcy.github.io/2026/11/03/itml8/
作者
Yjy
发布于
2026年11月3日
更新于
2026年11月9日
许可协议