Junie's Blog

只会预测下一个词的大模型,为何能对答如流?

全文共 979预计阅读 4 分钟

众所周知,现在的大语言模型(如 GPT、Gemini 等)都是基于 Transformer 架构,而 Transformer 架构本质上做的只是预测下一个 token。那么我们日常使用这些模型是如何实现一问一答的形式的呢?本文将通过一个具体示例来讲解。

所谓对话,其实是一场精心设计的“剧本接龙”

虽然我们在网页端看到的是一个对话框,但对于模型来说,它看到的并不是一段对话,而是一条长长的文本序列。模型并不知道什么是“问”和“答”,它只是在扮演一个极其擅长“续写剧本”的作家。

为了让这种续写看起来像是在聊天,开发者在后台把我们的输入重新包装成了一种特殊的格式。比如你问模型“怎么做蛋炒饭”,当你按下发送键时,系统其实在后台偷偷给模型递了一张写满特定标记的“剧本草稿”:

<|im_start|>system
你是一个资深厨师,说话语气要专业。<|im_end|>
<|im_start|>user
怎么做蛋炒饭?<|im_end|>
<|im_start|>assistant

这张草稿里的 <|im_start|><|im_end|> 就是所谓的特殊标记。这些标记就像是剧本里的角色提示词,专门用来告诉模型:哪些话是系统设定的背景,哪些话是用户提的问题,而哪一部分则是它该登场表演的台词。

这种“对话感”是怎么产生的?

当模型看到剧本最后停在 <|im_start|>assistant(助手开始)的时候,它就明白了:现在轮到我接戏了。

基于它在训练阶段读过的海量对话数据,它知道在这个标记后面,最该出现的词通常是“首先”或者“制作蛋炒饭需要准备...”。于是,模型就开始了最擅长的工作——预测下一个字

它先预测出“首”字,然后把“首”字贴在原来那段话的后面,再根据这长长的一串话去预测下一个字是“先”。这个过程不断循环,直到它写出了一个完整的回答。

在这个过程中,模型怎么知道什么时候该停下来呢?它会在回答的末尾加上一个结束信号(比如 <|im_end|>)。一旦这个信号出现,系统就会切断生成,你在屏幕上看到的对话气泡也就此停止了跳动。

为什么模型能记得我们刚才聊过什么?

很多人觉得模型有“记忆力”,能联系上下文。但实际上,Transformer 架构本身是“健忘”的,它并不会主动保存你上一轮说的话。

为了让模型表现出记得之前的对话,最直接的办法就是把之前的聊天记录反复喂给它

当你在第二轮问它“那加多少盐合适呢?”时,系统会自动把第一轮的问答全部打包,重新生成一份更长的剧本:

  • 剧本开头: 系统设定

  • 第一幕: 你问怎么做蛋炒饭 + 模型之前的回答

  • 第二幕: 你问加多少盐

  • 结尾: 提示模型继续以助手的身份续写

这就是为什么对话轮次越多,模型消耗的算力就越大。如果聊得太久,超出了模型能阅读的最长篇幅(即上下文长度限制),它就会因为“读不到”前面的剧本而显得丢三落四,甚至忘了你最开始定下的要求。

总结

总的来说,我们之所以能和 AI 顺畅地沟通,靠的并不是模型产生了自我意识,而是一套巧妙的工程方案。通过对话模板把问题格式化,利用预测机制逐字生成内容,再配合不断累积的上下文记录,最终让这个原本只会做“完形填空”的数学模型,成功变身为一个能够对答如流的聪明助手。

评论