05 · 第 5 讲:自然语言、序列与图建模

← 返回课程目录

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

本文目录

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

北京大学《多模态学习》(2026 秋)第 5 讲笔记,依据对应课程课件整理。

文字如何变成可学习的表示,又如何按顺序或关系建模?这一讲从词向量讲到语言模型、RNN、LSTM 和图神经网络。

第 1 章:NLP 基础

1.1 为什么“词编号”不是词义

自然语言存在歧义、同义、多义与词序。One-hot 维度等于词表大小,任意两个不同词正交,不能直接表达相似性。Bag of Words (BoW) 统计词频但丢词序;bag of bigrams 保留局部相邻关系但维度大且仍丢全局顺序。稀疏存储的索引/数值形式只节省空间,不会凭空增加语义。

词嵌入通过训练把词映射到低维稠密向量,基础是分布式假设:上下文相似的词往往语义相关。词向量的类比 king−man+woman≈queenking-man+woman\approx queen 是可能观察到的几何规律,非普适逻辑定律。

NLP 任务层次:分词/词性标注处理词层,句法分析处理“哪个词修饰哪个词”,语义理解和问答要结合上下文;语言模型学习序列概率,文本生成在此基础上逐词采样。词的歧义不是给每个词一个固定向量就能完全解决,后续 RNN/Transformer 用上下文生成随句子变化的表示。

1.2 Word2Vec 的预测方向

设词表 VV、词向量维度 dd,输入嵌入矩阵可按“行取向量”写 E∈RV×dE\in\mathbb R^{V\times d},输出矩阵 U∈Rd×VU\in\mathbb R^{d\times V}。中心词 wtw_t 的窗口上下文记作 CtC_t。

  • CBOW:输入上下文,平均/求和其输入嵌入 vˉ=∣Ct∣−1∑c∈CtE[c]\bar v=|C_t|^{-1}\sum_{c\in C_t}E[c],softmax 预测中心词:P(wt∣Ct)=exp⁡(uwt⊤vˉ)/∑v∈Vexp⁡(uv⊤vˉ)P(w_t\mid C_t)=\exp(u_{w_t}^\top\bar v)/\sum_{v\in V}\exp(u_v^\top\bar v)。简单 CBOW 不编码上下文词的相对顺序。
  • Skip-gram:输入中心词,分别预测各上下文词,目标 ∑c∈Ctlog⁡P(c∣wt)\sum_{c\in C_t}\log P(c\mid w_t)。词表大时全 softmax 贵;工程上可用负采样近似训练:把真实词对判正,把采样噪声词对判负。这是补充理解,2026 课件此处主要讲 CBOW/Skip-gram 的预测方向。

softmax 输出的是概率分布,并不是“取最大值、其余置 0”的 one-hot;后者只是推断时的一种选词方式。两套嵌入矩阵在训练中承担不同角色。余弦相似度比较的是方向,cos⁡(a,b)=a⊤b/(∥a∥∥b∥)\cos(a,b)=a^\top b/(\|a\|\|b\|),与欧氏距离并不等价。

按列向量约定,输入 one-hot x∈RVx\in\mathbb R^V 经 Win∈Rd×VW_{\rm in}\in\mathbb R^{d\times V} 得到 v=Winxv=W_{\rm in}x,本质就是查表;再由 Wout∈RV×dW_{\rm out}\in\mathbb R^{V\times d} 产生 VV 个 logit,经 softmax 得到词分布。负采样把昂贵的全词表分类近似为少量真实/噪声词对的二分类,但采到的负词不一定在语义上真是“反例”。

1.3 概率语言模型

链式法则(精确)P(w1:T)=∏t=1TP(wt∣w1:t−1)P(w_{1:T})=\prod_{t=1}^TP(w_t\mid w_{1:t-1})。nn-gram 是近似马尔可夫假设:只看前 n−1n-1 个词。例如 bigram:P(wt∣w1:t−1)≈P(wt∣wt−1)P(w_t\mid w_{1:t-1})\approx P(w_t\mid w_{t-1});trigram 才看前两个词。

频数估计 P^(wt∣h)=count(h,wt)/count(h)\hat P(w_t\mid h)=\mathrm{count}(h,w_t)/\mathrm{count}(h),未见组合会得到零概率,需要平滑。困惑度 PPL=exp⁡[−T−1∑tlog⁡P(wt∣w<t)]\mathrm{PPL}=\exp[-T^{-1}\sum_t\log P(w_t\mid w_{<t})],只有在相同数据集和分词口径下才可比较,越低越好。bigram 只看前一个词。

词袋与序列模型对比:BoW/bigrams 是句子的静态计数表示;nn-gram 用频数估计下一个词的条件概率,历史窗口固定;神经 RNN 把历史压进隐藏状态,理论上可处理变长前缀,实际受优化与记忆瓶颈影响。Unigram 假设每个词独立,不利用前文;神经网络算一个词分布也不会自动获得上下文。计算 PPL 时先把各位置真词概率相乘或取平均 log,再取指数;不同分词器划分的 token 长度不同,PPL 不能随意横比。

第 2 章:RNN、LSTM 与序列训练

RNN:ht=ϕ(Wxxt+Whht−1+b)h_t=\phi(W_xx_t+W_hh_{t-1}+b),ot=Woht+boo_t=W_oh_t+b_o,各时间步共享 Wx,Wh,WoW_x,W_h,W_o;输入/输出长度可变。Many-to-one 如情感分类,one-to-many 如图像描述,many-to-many 如序列标注/翻译。训练时 BPTT 在时间展开图上反传;链式相乘易使梯度消失或爆炸。

若每一步雅可比矩阵范数持续小于 1,长链倾向衰减;大于 1 则可能放大,不能只看单个权重的一个数就保证结论。梯度裁剪常缓解爆炸,LSTM/GRU 改善长依赖。

Teacher forcing:训练生成器时用真实上一个 token 作为下一步输入;推理只能用模型自己生成的 token,存在 exposure bias。截断 BPTT 只在有限时间窗口反传,以节省计算/显存,并不从根本上解决长依赖,过短还会截断长期梯度。

展开计算图与解码:每个时刻都可有 LtL_t,总损失常为 ∑tLt\sum_tL_t;共享的 WhW_h 在每个时刻使用,因此总梯度是各时间路径贡献的和。对末端损失,一条早期路径包含 ∏j=k+1T∂hj/∂hj−1\prod_{j=k+1}^T\partial h_j/\partial h_{j-1},重复连乘解释梯度消失/爆炸。

生成时贪心解码每步选最大概率词,采样按分布随机取词,beam search 同时保留有限个高分前缀;beam search 增宽搜索但不能保证语义正确。训练用 teacher forcing 时各时间步的真实前缀已知,推理时输出依赖先前生成结果。

LSTM 六个关键式子:

ft=σ(Wf[ht−1;xt]+bf),it=σ(Wi[ht−1;xt]+bi),c~t=tanh⁡(Wc[ht−1;xt]+bc),ct=ft⊙ct−1+it⊙c~t,ot=σ(Wo[ht−1;xt]+bo),ht=ot⊙tanh⁡(ct).\begin{aligned} f_t&=\sigma(W_f[h_{t-1};x_t]+b_f),& i_t&=\sigma(W_i[h_{t-1};x_t]+b_i),\\ \tilde c_t&=\tanh(W_c[h_{t-1};x_t]+b_c),& c_t&=f_t\odot c_{t-1}+i_t\odot\tilde c_t,\\ o_t&=\sigma(W_o[h_{t-1};x_t]+b_o),& h_t&=o_t\odot\tanh(c_t). \end{aligned}

ff 选择保留旧记忆,ii 选择写入候选,oo 控制读出;ctc_t 是记忆通路,hth_t 是对外状态。加法更新让梯度存在直接路径,沿“保持其他门固定”的直接路径 ∂ct/∂ct−1=ft\partial c_t/\partial c_{t-1}=f_t;完整导数还含门依赖,因此不能说 LSTM 永远没有梯度消失或爆炸。

第 3 章:图神经网络把关系也放进表示里

图由节点集 VV、边集(或邻接矩阵)AA、节点特征 XX 和可选标签 YY 构成。词之间的依存关系、图像区域之间的空间关系,甚至图文之间的跨模态关系,都可以用图表达。

一个节点的新表示来自“自己的旧表示 + 邻居表示的聚合”,可写成示意式 hv(ℓ+1)=ϕ(Wselfhv(ℓ)+WnbrAGG⁡u∈N(v)hu(ℓ))h_v^{(\ell+1)}=\phi(W_{\rm self}h_v^{(\ell)}+W_{\rm nbr}\operatorname{AGG}_{u\in\mathcal N(v)}h_u^{(\ell)})。AGG 可取求和/平均/注意力,必须与邻居顺序无关。

监督节点分类利用有标签节点的交叉熵;无监督图表示学习可利用图结构构造相似性目标。两层聚合使节点可感受两跳邻居,这一点可从课件递归图直接看出。


第 5 讲:自然语言、序列与图建模
https://yjyxfcy.github.io/2026/11/04/mml5/
作者
Yjy
发布于
2026年11月4日
更新于
2026年11月9日
许可协议