大语言模型(LLM)如今已经渗透到我们生活的方方面面,但你是否好奇,这些看似智能的AI是如何理解我们的问题并给出连贯回答的?其核心在于一种被称为概率性下一词预测的机制。本文将深入探讨LLM的这一核心机制,揭示其工作原理,并解释为何即使在相同提问下,LLM有时也会给出不同的答案,这其中温度扮演着关键角色,同时,我们也会深入探讨随机性在LLM回答生成过程中的影响。
词元化:AI的语言基础
要理解概率性下一词预测,首先要理解词元的概念。想象一个巨大的图书馆,里面收录了所有书籍、文章以及人类创作的文本——这便是LLM的知识库。当你向LLM输入一段文字,例如“天空是蓝色的”,模型并不会直接理解这些词语的含义,而是将其分解成更小的、可处理的单元,也就是词元(Token)。词元可以是单个的字、词、词语的部分,甚至是标点符号。例如,“unbelievable”可能会被分解为“un”、“believe”、“able”三个词元。这种词元化过程是LLM将人类语言转换成自身可处理格式的方式。因此,无论是你提出的问题还是LLM给出的答案,都是以词元的形式进行处理和生成的。词元可以被认为是AI的母语。
例如,在使用 OpenAI 的 tokenizer 工具时,你会发现不同的文本会被分割成不同数量的词元。“Hello world”会被分割成2个词元,而“你好世界”会被分割成6个词元,这体现了LLM处理不同语言文本时需要不同的词元化策略。
概率性匹配:预测下一个最可能的词元
理解了词元的概念后,我们就可以深入了解概率性下一词预测了。当你给LLM一个提示,例如“天空是___”,它并不会像人类一样“理解”这句话的含义,而是分析已经接收到的词元(“天空”、“是”),然后从其庞大的词元数据库中寻找答案: “在这些前面的词元之后,下一个词元在统计学上最有可能是什么?”
想象一下,你已经阅读了无数个“天空是”后面跟着“蓝色”、“晴朗”、“阴天”等词语的句子,LLM也“学习”了这些模式。它会给每个可能放置的下一个词元分配一个概率分数。“蓝色”可能会得到一个非常高的分数,“苹果”会得到一个非常低的分数,“阴天”的分数则介于两者之间,具体取决于上下文和模型的训练数据。
那么,LLM如何分配这些值并确定概率呢?这正是海量训练数据的用武之地。 LLM 在真正庞大的数据集上进行训练——想想来自互联网、书籍、文章等的数万亿个单词。在广泛的训练过程中,模型本质上会阅读和分析这些庞大的文本,学习词元的统计关系和共现。例如,它会了解到“天空是”之后,“蓝色”出现的频率远高于“香蕉”。这种训练使模型能够构建一个复杂的单词和短语如何连接的“地图”。因此,当它收到输入时,它会参考这个内部“地图”,并根据你的输入词元提供的上下文,计算每个潜在的下一个词元的可能性。
一旦计算出所有可用词元的这些概率,模型就不会只是随机选择一个词元。它会选择概率得分最高的那个词元。然后将这个选定的词元添加到序列中,并重复该过程:模型现在会考虑更新后的序列(例如,“天空是蓝色的”),并预测下一个最可能的词元,继续这个迭代过程,直到完成其响应。
总而言之,LLM 是极其复杂的模式识别机器。它们不会像人类那样“思考”或“理解”,但通过以前所未有的规模掌握词元之间的统计关系,它们可以生成非常连贯、相关且通常令人惊讶的类似人类的文本。这证明了概率和海量数据集的力量。
温度:控制创造力的旋钮
那么,为什么每次提问,LLM给出的答案都不尽相同呢?即使 LLM 旨在为词元分配概率并选择最可能的下一个词元,但如果您多次要求 LLM 编写一段关于泰姬陵的两行描述,您可能会每次得到不同的答案。 造成这种变化的原因有很多,包括软件和硬件方面的考虑。 让我们首先关注软件方面——LLM 工作方式的核心基础。
其中一个关键概念是温度(Temperature),它控制着模型输出的随机性或创造力。温度的取值范围为0到1。接近 1 的温度会使模型更具创造力,允许它探索更广泛的合理词语选择。接近 0 的温度会使模型更具可预测性,始终倾向于最可能的词元——即使你重复问同一个问题。
当 LLM 生成文本时,它不会立即选择一个单词。 首先,它会为其词汇表中每个可能的下一个词元分配一个原始分数(称为logit)。 这些原始分数可以是正数、负数或零,反映了每个单词在上下文中的适用程度。
举例说明:
提示:“天空是___”
模型可能会分配:
“蓝色”:原始分数 = 40
“多云”:原始分数 = 2
“最坏”:原始分数 = -200
这些分数还不是概率。 为了将它们转化为决策分布,需要应用 Softmax 函数。 Softmax 将原始分数转换为总和为 1 的概率。
温度在这里再次发挥着关键作用:
低温度会锐化分布——使最高分占据主导地位。
高温度会展平分布——使得分较低(但仍然合理)的词元有机会被选中。
因此,即使 LLM 每次都分配相同的原始分数,温度设置也会决定它在多大程度上严格坚持首选与探索其他有效选项。
在 Softmax 函数中,每个词元的原始分数(表示为 zᵢ)用于计算其被选择的概率。 假设模型有 K 个可能的词元可供选择——每个词元都从 LLM 获得一个原始分数。
Softmax 公式如下所示:
这会将原始分数转换为介于 0 和 1 之间的概率,并且所有词元的概率总和为 1,从而使模型可以轻松地对下一个单词进行采样。
现在——引入温度。 为了控制输出的创造力或随机性,我们使用温度 (T) 修改 Softmax 公式:
在 Softmax 公式中,T 代表温度。 该值在确定模型输出的创造力或随机性方面起着至关重要的作用:
当 T 很高时,概率分布会变平,使所有词元的概率更加均匀。 这允许模型从更广泛的词元中进行选择,从而增加随机性和创造力。
当 T 较低时,分布会变得更清晰,严重倾向于得分最高的词元。 这使得输出更具可预测性并降低创造力。
例如,假设一个LLM在生成文本时,对于下一个词元,它预测“happy”的原始分数为10,“joyful”的原始分数为8,“content”的原始分数为6。
- 当温度设置为0.2时,Softmax函数会放大这些分数之间的差异,导致“happy”的概率接近1,而其他词元的概率接近0。这意味着模型几乎肯定会选择“happy”作为下一个词元,生成的结果更可预测。
- 当温度设置为1.0时,Softmax函数会降低分数之间的差异,使得“happy”、“joyful”和“content”的概率相对接近。模型会更有可能选择“joyful”或“content”,即使它们的原始分数较低,从而生成更具创造性和多样性的结果。
浮点精度与并行计算:隐藏的随机性来源
但温度并不是导致 LLM 响应中出现随机性的唯一因素。 当 LLM 计算概率时,它们处理的是极小的浮点数(例如,0.30000000001)。 在这种精度下,运算顺序非常重要。
在浮点数学中,加法不具有结合律,这意味着:
(a + b) + c 不一定等于 a + (b + c)
这种评估顺序上的细微差异可能会导致略有不同的结果,由于 Softmax 的指数性质,这会显着影响最终概率和所选的词元——尤其是在多个词元具有几乎相等的概率时。
另一个重要因素是 LLM 中使用的并行处理架构。 当输入传递给模型时,底层计算并不总是按顺序执行。 相反,它们通常分布在多个处理核心上,尤其是在使用 GPU 或 TPU 以确保高速推理时。
在这种环境中:
计算完成和返回的顺序可能会有所不同。
模型可能会使用首先可用的结果,而不是等待所有并行进程以定义的顺序完成。
这会导致大规模的非确定性,尤其是在同时使用数千个内核时。
这意味着,即使对于完全相同的输入,由于计算顺序上的细微差异,不同的处理核心可能会产生略微不同的结果。这些微小的差异在经过 Softmax 函数的放大后,可能会导致最终选择的词元不同,从而产生不同的输出。
温度为0时会发生什么?
即使温度 = 0,这应该使模型完全确定(始终选择最可能的词元),但由于以下原因,仍然可能发生一些随机性:
- 浮点精度错误和非结合数学,以及
- 跨多个内核的非确定性并行计算。
这解释了为什么在极少数情况下,即使使用固定的温度,在多次运行相同的提示时,你也可能会得到略有不同的输出。 这种现象也解释了为什么即使是同一个模型,在不同的硬件环境下运行,也可能产生略微不同的结果。
结论:理解LLM的本质
综上所述,LLM 的工作原理基于概率性下一词预测,而词元是其处理语言的基本单位。温度是控制 LLM 输出随机性和创造力的关键参数。 然而,即使在固定温度下,由于浮点精度和并行计算等因素的影响,LLM 的输出也可能存在一定的随机性。 理解这些因素有助于我们更好地理解 LLM 的本质,并在实际应用中更好地利用其强大的功能。 LLM 并非完全可预测的机器,而是具有一定创造性和随机性的智能助手。 这种随机性既是挑战,也是机遇,它可以为我们带来意想不到的惊喜和创新。 在未来,我们需要进一步研究如何更好地控制和利用 LLM 的随机性,从而使其在各个领域发挥更大的作用。