自回归语言模型为什么能预测下一个词?
自回归语言模型为什么能预测下一个词? - 预训练的核心秘密
一句话核心:自回归语言模型通过"预测下一个词"这一看似简单的任务,让模型在海量文本中自动学习语法结构、语义关系和世界知识,是GPT、ChatGPT等现代大语言模型的基石技术。
核心概念(术语表)
- 自回归语言模型(Autoregressive LM):根据上文或下文预测下一个词的语言模型,如GPT系列。用途:生成式任务(对话、写作、代码生成)。
- 掩码语言模型(Masked LM):用[mask]标记随机遮盖词,根据上下文预测被遮盖词,如BERT。用途:理解式任务(分类、问答、信息抽取)。
- Attention Mask:XLNet中用于实现输入序列随机排列的核心机制,控制每个位置能看到哪些词的信息。用途:打破自回归的单向限制,引入上下文。
- Permutation Language Model(排列语言模型):XLNet提出的新范式,通过随机排列词序让模型看到双向上下文,但仍保持自回归形式。用途:结合AR和MLM优势。
- 预训练(Pre-training):在大规模无标注文本上用语言建模任务训练模型参数的第一阶段。用途:为下游任务提供通用表征能力。
- Fine-tuning(微调):在预训练模型基础上,用下游任务数据继续训练。用途:将通用能力迁移到具体任务。
- Transformer:自注意力机制为核心的神经网络架构,是GPT和BERT的共同基础。用途:捕获长距离依赖关系。
- 双向语言模型:同时考虑词的上下文信息,如BERT通过[mask]机制实现。用途:更全面的语义理解。
自回归语言模型概念源于传统统计语言模型(N-gram),但真正成熟于Transformer时代。2018年OpenAI推出GPT(Generative Pre-trained Transformer),首次系统提出"预训练+微调"范式。同期Google推出BERT,采用掩码语言模型。2020年Google Brain提出XLNet,通过排列语言模型解决BERT的两阶段不一致问题。当前主流大模型(GPT-4、Claude、Llama)均采用自回归架构。
工作原理 / 核心机制
整体思路
自回归语言模型的核心是"因果链式法则":给定前n个词,预测第n+1个词的概率分布。训练时最大化似然函数,迫使模型学会语言的统计规律。
输入/输出
- 输入:词序列 [w₁, w₂, ..., wₙ]
- 输出:词表中每个词作为下一个词的概率分布 P(wₙ₊₁|w₁, ..., wₙ)
- 目标:最大化 P(wₙ₊₁|w₁, ..., wₙ) 的对数似然
核心步骤
第一步:Tokenization(分词)
- 具体输入:原始文本 "今天天气真好"
- 具体处理:使用BPE/WordPiece等算法将文本切分为子词单元
- 具体输出:Token序列 [101, 2001, 4030, 2345, 3200, 5023]
- 数字:GPT-4词汇表约10万个token,中文每个字≈1.5个token
第二步:Embedding(嵌入)
- 具体输入:Token ID序列
- 具体处理:通过嵌入矩阵映射为密集向量,加上位置编码
- 具体输出:[batch_size, seq_len, hidden_dim] 的张量
- 数字:GPT-3 hidden_dim=12288,Embedding参数量约48亿
第三步:Transformer Decoder前向传播
- 具体输入:Embedding序列
- 具体处理:多层Self-Attention(因果掩码)+ FFN
- 具体输出:每个位置的隐藏状态
- 数字:GPT-3有96层Decoder,注意力头数96
第四步:Next Token Prediction(下一个词预测)
- 具体输入:最后一个位置的隐藏状态
- 具体处理:线性层+Softmax映射到词汇表概率
- 具体输出:词表中每个词的概率分布
- 数字:采样温度通常0.7-1.0,Top-p采样p=0.9
关键知识点
- 自回归模型天然建模了序列生成的概率链:P(w₁,w₂,...,wₙ) = ΠᵢP(wᵢ|w₁,...,wᵢ₋₁)
- GPT采用单向Transformer,仅能看到上文;ELMo用双向LSTM拼接,效果不如双向Transformer
- BERT预训练随机mask 15%的词,mask token在微调阶段不存在,造成两阶段不一致
- XLNet的Attention Mask是关键创新:输入顺序不变,但在attention计算时实现随机排列
- 自回归模型训练时使用Teacher Forcing,推理时是自回归生成(逐个预测并作为下一步输入)
- 语言模型损失是逐token的交叉熵,困惑度(Perplexity)是常用评估指标
- Scaling Law表明:模型参数量、数据量、计算量增大时,模型性能可预测提升
- GPT-3训练数据约3000亿token,参数量1750亿,是千亿参数模型的里程碑
- 预训练数据质量比数量更重要:高质量书籍、论文 > 低质量网页
- Chain-of-Thought prompting的涌现能力与模型规模相关,175B参数是临界点
- 自回归模型可以无限生成,但存在"复读机问题"(重复生成),需要decode策略干预
- KV Cache技术可加速推理,将已计算的Key-Value矩阵缓存避免重复计算
- 位置编码从绝对编码(Sinusoidal)演变为旋转位置编码(RoPE),后者对长文本更友好
应用场景
- OpenAI GPT-4:用于ChatGPT对话,预测下一个词生成回复,在8K-128K上下文窗口内保持连贯
- GitHub Copilot:代码自回归生成,根据函数签名和注释预测下一行代码,训练数据覆盖数十亿行公开代码
- Claude (Anthropic):通过RLHF对齐的自回归模型,在有害内容过滤和有用性之间取得平衡
- Llama 2 (Meta):开源700亿参数模型,在多项基准测试接近GPT-3.5,推理成本显著降低
- ChatGLM (智谱AI):中文优化的自回归模型,支持多轮对话和知识问答,部署于多个企业场景
常见误区 / 踩坑
❌ 误区1:认为自回归模型只看上文,所以无法理解完整语义
✅ 正解:虽然生成时只看上文,但训练时通过海量文本,模型学会了语言中的隐含关系。上文"因为下雨,地面"强烈暗示下文"湿",这是统计共现规律的体现
❌ 误区2:认为BERT的[mask]方法是完美的双向上下文
✅ 正解:[mask]带来了两阶段不一致:训练时模型看到mask token,但微调和推理时没有mask。XLNet通过排列组合解决了这个问题
❌ 误区3:认为自回归比掩码模型更好或更差
✅ 正解:两者适合不同任务。生成式任务(对话、写作)必须用自回归;理解式任务(分类、实体识别)BERT类模型通常更强。XLNet尝试融合两者优势
❌ 误区4:忽略预训练数据质量的重要性
✅ 正解:Chinchilla论文指出,数据质量比单纯扩大参数更重要。高质量书籍、学术论文的训练数据,带来的模型能力远优于同等规模的网页数据
性能 / 复杂度
- 时间复杂度:O(n²·d) — n为序列长度,d为隐藏层维度。每层Self-Attention为O(n²·d),GPT-3单次前向约需1.4 TFLOPS
- 空间复杂度:O(n·d + n²) — 主要为嵌入和Attention矩阵。KV Cache使推理内存随序列长度线性增长
- 与替代方案对比:
- RNN/LSTM:时间O(n·d),但无法并行、长距离依赖弱;临界点约n=100时,Transformer优势明显
- 传统N-gram:时间O(n),但参数量巨大且效果差;仅用于低资源场景的基线对比
- 性能数字:
- GPT-3训练耗时约3640 PetaFLOP/s-day
- Llama 2 70B在8xA100上训练约需1728 GPU-days
- Batch size通常4096-8192,学习率1e-4到3e-4
与相关概念的区别
vs 掩码语言模型(BERT):
- 维度1(生成能力):BERT无法直接生成文本,只能做理解任务;自回归模型天然支持文本生成
- 维度2(上下文利用):BERT双向可见,有天然上下文优势;GPT单向受限
- 维度3(推理效率):自回归推理需要逐token生成,延迟高;BERT一次性前向,延迟低
- 怎么选:需要生成选自回归,需要理解选BERT,两者都要选XLNet/T5
vs 编码器-解码器模型(T5):
- 维度1(架构):T5 encoder处理输入,decoder自回归生成输出;纯自回归模型只有decoder
- 维度2(任务适配):T5适合Seq2Seq任务(翻译、摘要);纯自回归适合开放域生成
- 维度3(计算效率):T5 encoder-decoder参数量约为同等自回归模型的2倍
- 怎么选:结构化输入输出选T5,开放域对话选纯自回归
vs ELMo:
- 维度1(上下文融合):ELMo用两个单向LSTM拼接,浅层融合;Transformer深层交互更彻底
- 维度2(可扩展性):ELMo难以scale到十亿参数;Transformer架构支持千亿参数
- 维度3(注意力机制):ELMo无注意力,无法动态选择相关上下文;Self-Attention解决了这个问题
- 怎么选:现代LLM全部使用Transformer架构,ELMo已是历史
进阶 / 面试加分项
- 最新进展:ChatGPT时代,自回归模型通过RLHF(人类反馈强化学习)实现行为对齐。PPO算法优化reward模型,使模型生成更符合人类偏好。这解决了"模型会说话但不一定说有用的话"的问题
- 业界争议:缩放定律的尽头——GPT-5训练遇阻,单纯增大模型和数据是否能继续提升?Chinchilla观点(同等算力下模型和语料应该等比例缩放)是否正确?MoE(混合专家)架构是否是大模型未来?
- 金句送给候选人:"自回归语言模型的美在于简洁——只预测下一个词,却能涌现出语法、推理甚至世界观。"这背后的哲学是:语言本身就是对世界的压缩表示,学会了预测下一个词,就学会了理解世界。"
面试如何回答
🟢 请解释什么是自回归语言模型,它和自编码语言模型的核心区别是什么?
回答要点:
自回归语言模型(AR LM)的核心思想是根据上文预测下一个词。给定词序列 w₁, w₂, ..., wₙ,模型学习最大化 P(wₙ₊₁|w₁, ..., wₙ) 的似然函数,典型代表是GPT系列。
与自编码语言模型的核心区别在于三点:第一,上下文利用方式不同。自回归只看上文(单向),自编码(如BERT)通过[mask]机制同时看到上下文(双向)。第二,任务适配不同。自回归天然适合文本生成任务,自编码适合理解任务如分类、问答。第三,训练目标不同。AR模型的损失是逐token的交叉熵,BERT的损失是预测被mask位置的词。
举个具体例子:对于句子"今天天气真好,出去___",GPT会基于"今天天气真好,出去"预测下一个词(如"散步"),而BERT会把"出去"mask掉同时根据"今天天气真好"和"散步"的上下文预测"出去"这个词。
选择模型时,生成式任务(对话、写作)用AR模型,理解式任务(文本分类、实体识别)用BERT类模型。
🟡 为什么说"预测下一个词"这个简单的任务能让大模型学会语法、语义乃至世界知识?
回答要点:
预测下一个词看似简单,实则是完美的无监督学习任务。要准确预测,模型必须隐式掌握多层语言结构。
第一,语法层面:正确的下一个词必须符合语法规则。"The cat sat on the ___ ",模型要预测"mat"而非"is",就必须学会介词短语结构。第二,语义层面:词的选择受语义约束。"我喝了一杯___ ",可能是"咖啡"或"茶",但不会是"石头",模型学会了词义和搭配。第三,世界知识层面:"太阳从___升起",只有填"东方"才合理,说明模型从语料中提取了事实知识。
具体数据支撑:GPT-3在3000亿token上训练,覆盖书籍、网页、代码等多种来源。人类一生阅读量约10亿token,GPT-3训练数据是人类阅读量的3000倍。这种规模的语言接触使模型能统计出语言中的深层规律,包括常识和知识。
这背后的哲学是:语言是对世界的压缩表示,学会了预测下一个词,就相当于学会了理解语言所描述的世界。
🟡 BERT的[mask]机制有什么缺陷?XLNet是如何解决的?
回答要点:
BERT的[mask]机制存在"两阶段不一致"的核心缺陷:预训练时模型看到[mask]标记,但Fine-tuning和推理阶段输入中没有[mask]。这种分布差异导致预训练和微调之间存在gap,模型在预训练学到的"看到mask就预测"的能力无法直接迁移。
XLNet通过Permutation Language Model完美解决了这个问题。具体做法是:对于输入"x1 x2 x3 x4",假设要预测x3,XLNet会随机打乱词序(比如变成"x2 x4 x3 x1"),这样在新的顺序中,x3的上文包含x2和x4,天然引入了双向上下文。但实际上XLNet并不改变输入顺序,而是通过Attention Mask矩阵实现这种随机排列的效果——红色表示可attention,白色表示不可attention。
技术细节:Content stream和Query stream是两种Attention stream,Content能看到自身和上文,Query只能看到上文。这使得XLNet在保持自回归形式的同时,获得了双向上下文理解能力。XLNet在20个任务上超越BERT,包括问答、自然语言推理等。
🟡 自回归模型在推理时为什么必须逐token生成,而不是一次性输出整句话?
回答要点:
自回归模型必须逐token生成,根本原因在于"因果结构"和"概率链"。
第一,数学上的必要性:自回归模型学习的概率分布是 P(wₙ₊₁|w₁,...,wₙ),即下一个词的概率取决于所有前文。如果一次性输出"今天天气很好",模型无法在生成"很好"时看到"今天天气"之后的内容,因为这时的输入序列只到"今天天气"。
第二,实际生成流程:给定起始token"今天",模型预测"天气";然后输入变成"今天天气",预测"很";再变成"今天天气很",预测"好"。这个过程不断迭代,直到输出结束符或达到最大长度。
第三,加速技术:为解决逐token生成效率低的问题,业界使用KV Cache技术。已计算的Key和Value矩阵被缓存,下一步只需计算新token的KV并拼接,避免重复计算这对张量。FlashAttention等工程优化也显著加速了推理。
这与BERT类模型不同——BERT一次性处理完整句子,延迟更低,但不擅长生成任务。
🔴 如何理解大模型的Scaling Laws?参数量、数据量、计算量三者是什么关系?
回答要点:
Scaling Laws揭示了模型性能与资源投入之间的幂律关系,是训练大模型的核心指导原则。
核心发现(来自Kaplan等人的论文):模型性能与参数量N、数据量D、计算量C之间存在可预测的幂律关系。具体表现为:在固定其他变量时,Loss随参数量增长呈对数线性下降;同等算力下,15亿参数模型在140亿token上训练,效果优于1亿参数在140亿token训练。
计算最优观点(Chinchilla):之前业界认为大模型更重要,但Chinchilla证明,同等算力下,模型规模和训练token数应该等比例缩放。GPT-3用175B参数训练300B token,按Chinchilla建议应该是8B参数训练1.9T token。
实践指导:
- 计算量C ≈ 6NBS,其中N参数、BATCH、S是迭代步数
- 参数量翻倍时,训练token数也应翻倍以保持效率
- 数据质量比数量更重要:高质量书籍 > 低质量网页
临界点:模型小于10B时,数据量是瓶颈;大于100B时,参数量更重要。
🔴 为什么ChatGPT等对话模型用自回归模型而不是BERT?生成模型如何学会遵循指令?
回答要点:
ChatGPT等对话系统选择自回归模型,根本原因是它必须能"生成"文本而非仅"理解"文本。对话是动态交互过程,用户说一句话,模型要生成一句新回复,这天然是生成任务。BERT只能对给定文本打标签,无法产生新内容。
但仅有预测下一个词的能力还不够,模型还可能输出有害内容或不按指令行动。这就需要RLHF(基于人类反馈的强化学习)来对齐模型行为。具体流程:
第一步,收集人类偏好数据:让标注员对同一问题的多个回答排序,如"回答A比回答B好"。
第二步,训练Reward模型:用排序数据训练一个奖励模型RM,学习预测人类偏好,RM的输出是标量分数。
第三步,PPO强化学习:用RM的奖励信号,通过PPO算法微调语言模型。目标是让模型在保持语言能力的同时,最大化reward分数。
技术细节:PPO算法在KL散度约束下优化,平衡模型输出多样性和指令遵循能力。PPO-ptx结合预训练损失,防止语言模型退化。
效果:RLHF使GPT-3从"会说话"进化到"会说话且说有用的话",是ChatGPT成功的关键技术。
🟡 自回归语言模型有哪些常见的生成策略?如何控制输出的多样性和质量?
回答要点:
自回归模型生成文本时面临"质量 vs 多样性"的权衡,需要精心设计解码策略。
核心挑战:模型输出是整个词表上的概率分布,直接选最高概率的词(贪婪解码)会导致"复读机问题"——重复生成相同短语。温度采样和Top-p采样是两种主流解决方案。
温度采样(Temperature Sampling):在Softmax前对logits除以温度T。T>1时分布更平滑,增加多样性;T<1时分布更尖锐,提高确定性。实践中T=0.7-1.0是常见范围。
Top-p采样(Nucleus Sampling):动态选择概率累加达到p的最小词集合,只从中采样。p=0.9表示只从占据90%概率的词中选择。好处是自适应——概率分布窄时只选几个词,宽时选更多词。
Beam Search:维护k个最优序列,适合需要确定性强输出的场景(如机器翻译),但会降低多样性。
实际选择:开放域对话用Top-p(p=0.9)获得自然回复;代码生成用低温度保持语法正确;创意写作可用高温度激发多样性。
🟡 GPT和BERT分别适合什么场景?为什么大多数现代大模型都选择自回归架构?
回答要点:
GPT和BERT代表了两种互补的预训练范式,适合不同场景。
BERT适用场景:文本分类(如情感分析、垃圾邮件检测)、命名实体识别、问答系统(阅读理解)、句子对关系判断。这些任务的共同特点是"理解后分类",不需要生成新文本。BERT的双向注意力能看完整上下文,在理解任务上通常表现更好。
GPT适用场景:开放式对话、文本生成、代码补全、故事续写、机器翻译。这些任务需要生成新文本,天然适配自回归模型。GPT的单向注意力在预训练时就模拟了生成过程,迁移到下游生成任务更自然。
为什么现代大模型(GPT-4、Claude、Llama)都选自回归架构?三个原因:
第一,统一性:一个架构解决所有任务,无需为理解任务单独维护BERT。
第二,可扩展性:自回归架构更易scale到千亿参数,GPT-3 175B参数证明这条路走得通。
第三,涌现能力:研究表明,某些能力(如CoT推理)在小模型上不存在,但在大模型上涌现,自回归大模型更容易涌现复杂能力。
实际上T5等encoder-decoder模型试图融合两者,但在开放域对话上仍不如纯自回归模型。
