在一次代码审查中,团队成员指着日志里一行“next_token = model(prev_tokens)”问道:这背后到底藏着怎样的数学原理?答案正是自回归模型的核心机制——把序列的生成过程拆解成一次次条件概率的乘积。
设y₁,…,yₙ 为待生成的词序列,模型要学习的目标是
p(y₁,…,yₙ)=∏_{t=1}^{n}p(yₜ│y₁,…,y_{t-1})。
这一步骤直接来源于概率论的链式法则。每一步只需关注已生成的前缀,因而模型可以在Transformer的自注意力层中通过因果掩码屏蔽未来信息,确保预测仅依赖历史。
训练时,模型最大化整个序列的似然,即最小化负对数似然-∑_{t}log p(yₜ│y₁,…,y_{t-1})。为了让梯度流通畅,常采用教师强制:在每一步的输入中使用真实的前缀而非模型自身的预测。实验表明,这种做法在 GPT‑3(175 B 参数)上将困惑度从 21 降至 14.9,显著提升了语言流畅度。
生成阶段模型不再拥有真实前缀,只能依赖自身的输出。此时选择哪种采样方式直接决定文本的多样性与连贯性。常见做法包括:
如果把自回归模型比作一位连续写作的作者,那么上述策略就是作者在写作时的“思考方式”。不同的思考方式会让同一句开头衍生出截然不同的结局——这正是生成式 AI 如诗如画的根源。
参与讨论
这数学公式看着头大🤯
之前写代码也卡在这块概率计算上
为啥训练时要用真实前缀而不用预测值?
Transformer的因果掩码具体咋实现的啊
感觉贪婪搜索太容易陷入循环了
温度调节那个参数一般设多少合适?
这种一步步生成的方式确实像写作
束搜索的k值选多大效果最好?
讲得挺清楚的,比我们老师说得明白