8.2 NLP 高频题:从词向量到预训练范式


8.2 NLP 高频题:从词向量到预训练范式

本节摘要:NLP 面试题的主线是表示学习的演进:独热与共现统计到分布式词向量,静态表示到上下文相关表示,特征工程到预训练加微调范式。本节按这条线组织高频追问:词向量的机制、注意力为什么接管、微调与提示式方法怎么选。

NLP 题在面试里的节奏近年变化极大:十年前考分词与 TF-IDF,五年前考词向量与注意力,如今考大模型的理解与运用。但追问的内核从未变过——「这个词/这句话被表示成了什么,这个表示好在哪」。本节沿表示学习的因果链把三代技术串成一个连贯的故事,让你面对任何年代感的 NLP 题都有框架可依。

主问题:词向量在干什么

主问题:「词向量为什么能表达语义?训练它和训练分类器有什么不同?」

标准答案

词向量的哲学基础是分布假说:语义由上下文定义——常出现在相同上下文里的词,语义相近。词向量模型(以 skip-gram 为代表)把这个假说变成一个自监督任务:用中心词预测上下文词(或反向),训练收敛后,隐层权重就是词的稠密表示。它与监督分类器的三点不同:标签是文本自己提供的(下一词或上下文词),不需要人工标注;训练目标是学「表示」而非「判别」,分类头只是训练的脚手架,用完即弃;评估靠相似度任务与下游迁移效果,而不是单看这个代理任务的准确率。

「脚手架」这个比喻值得保留:预训练的代理任务从来不是目的,目的是逼着模型把语义结构编码进参数里。

追问一层:注意力为什么接管了序列建模

追问:「从词向量到预训练语言模型,注意力机制解决了什么老问题?」

参考答法接住第 4.3 节的伏笔:RNN 时代的两大痛点——长程依赖的路径太长、训练无法并行——在第 4 章已经解剖过;注意力把任意两词一步连接、整段并行,直接铲平两条痛点。在表示层面它还送了第三份礼物:上下文相关表示。静态词向量里「苹果」只有一个向量,语义歧义(水果还是公司)无从区分;自注意力让每个词的表示由全句上下文动态加权生成,一次编码,多重语义各得其所。「静态到动态」这条线是 NLP 追问里最常考的因果跳跃,务必讲顺。

追问二层:微调与提示,怎么选

追问:「现在任务都直接提示大模型了,微调还有存在感吗?」

这是当代 NLP 面试的分水岭题,参考答法按「任务与模型的匹配度」给条件化结论:

  • 通用任务、模型已具备能力:直接提示工程加少样本示例,零训练成本,效果够用就收手;
  • 领域强、格式严、数据有(几千到几万条):参数高效微调(LoRA 这类低秩适配)是小成本换稳定口径的首选——只训练插入的少量参数,基座冻结,部署时可插拔;
  • 知识私密、更新频繁、输出结构化:检索增强生成(把知识放外部库,模型按需检索)避免为知识更新反复重训;
  • 判断的总原则:提示改「输入分布」,微调改「模型参数」,检索改「知识来源」——三者改的是系统的不同层,不是互斥选项,生产系统常常三者并用。
# LoRA 的最小思想示例:冻结基座,只训低秩增量 import torch import torch.nn as nn class LoRALinear(nn.Module): def __init__(self, base: nn.Linear, r: int = 8): super().__init__() self.base = base # 基座冻结 for p in self.base.parameters(): p.requires_grad = False self.A = nn.Parameter(torch.randn(base.in_features, r) * 0.01) self.B = nn.Parameter(torch.zeros(r, base.out_features)) # B 初始化为零 def forward(self, x): return self.base(x) + x @ self.A @ self.B # 输出 = 基座 + 低秩增量 # B 初始为零保证训练起点与原模型完全一致,增量从零学起

这段十行的实现就是「参数高效」的全部秘密:把更新量的秩压到远小于原矩阵,可训练参数量跌几个数量级,效果在多数垂直任务上逼近全量微调。

易错点

  • 把词向量训练说成「有监督学习」:标签来自文本自身的自监督构造,这个归类错误会引发整段追问的混乱。
  • 注意力题忘了位置编码:自注意力对输入顺序天然无感,没有位置注入就无法区分「猫追狗」与「狗追猫」——第 4.3 节讲过的代价在 NLP 语境下必须再点一次。
  • 大模型题只谈能力不谈成本:推理延迟、显存占用、幻觉风险与评测困难,任何「全面拥抱」式回答都显得没有生产经验。
  • 分词与子词:现代模型都在子词级别工作(BPE 类算法),「模型怎么处理没见过的词」的答案是「拆成子词」,不是「OOV 报错」。

评分要点

及格:讲清词向量与分布假说的关系;良好:静态到上下文相关表示的演进因果完整,微调与提示能按场景给条件化结论;优秀:LoRA 或检索增强的机制细节可展开,能从「改输入、改参数、改知识源」的分层视角组织答案。NLP 题的当代考法是判断力的压力测试——技术名词人人会背,分层取舍的框架才是稀缺品。

下一节看另一个应用域:视觉。与 NLP 的故事惊人地相似,又有一组自己的专属追问。

高频追问速答

问:大模型的幻觉从哪来,能消除吗?
来源有三:训练目标是「像」而非「对」,解码的随机性会放大低置信事实的编造,知识在参数里的存储本就有时效与覆盖缺口。缓解组合拳:检索增强让知识外置可溯源、对齐训练压制编造倾向、输出层做事实校验或引用标注。它是生成式范式的固有代价,目标是管理而非根除。

问:微调会让大模型「变笨」吗?
全量微调在小数据上可能引发灾难性遗忘——旧能力被新任务覆盖。参数高效微调(冻结基座、只训增量)与混合训练数据(新任务掺通用数据)是标准缓解。这也是 LoRA 类方法流行的主要原因之一:不动基座,能力遗忘风险天然低。

问:怎么评估一个 NLP 系统的好坏?
分层:组件级用任务指标(分类看 F1、生成看事实一致性加人工评分),系统级看端到端业务指标,模型升级时看回归测试集防倒退。生成任务的自动指标(重叠类)与人类判断相关性弱,评测集与人工抽检是刚需。

表达纪律:NLP 题主动区分「能力问题」与「工程问题」——前者谈范式,后者谈成本与延迟,混谈会显得没有落地经验。

边角案例两则

问:检索增强(RAG)系统的效果瓶颈通常在哪?
检索质量先于生成质量:切分粒度不合理、向量表示不匹配领域、排序不精准,都会让生成端「巧妇难为无米之炊」。排查顺序是先看召回的命中率与排序质量,再看生成端的忠实度。「先检索后生成」的排查顺序是 RAG 工程题的主轴。

问:长文本的上下文窗口是越大越好吗?
窗口变大带来注意力计算的平方成本、「中间内容被忽略」的注意力稀释、以及长依赖训练数据的稀缺。有效上下文长度通常远小于标称窗口——工程上靠检索与摘要把「大窗口」用出「小而准」的效果。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U