LLMs-Are-Randomized-Algorithms
LLMs Are Randomized Algorithms
这句话让我这个年轻人感到震惊。一个做出随机决策的算法可以比一个做出确定性、可重复决策的算法更好,即使对于存在确定性、可重复算法的问题也是如此?这个教授一定是疯子!——我想。他并不是。这位教授是拉吉夫·莫特万尼,他后来赢得了哥德尔奖,并共同开发了谷歌的搜索引擎算法。
自从 20 世纪 40 年代以来,随机算法是一类神秘的算法,具有神秘的特性,由神秘的人在稀薄的、神秘的学术界进行研究。甚至比随机算法更少为人所知的是,最新一代的人工智能——大型语言模型(LLMs)——也是随机算法。这种联系是什么,为什么?继续阅读,答案会让你惊讶。
随机算法和对手
随机算法是一种通过随机步骤来解决确定性问题的算法。举一个简单的例子。如果我想加起来一百个数字,我可以直接加它们。但是,为了节省时间,我可能会这样做:我会随机选择其中十个,只加这十个,然后乘以十来补偿实际上只加上了 10%的数据。有一个明确、精确的答案,但我通过随机化来近似它。我节省了时间——当然,是以牺牲一些精度为代价的。
为什么随机选择数字?为什么不选择列表中的前十个数字呢?好吧,也许我们不知道列表是如何分布的——也许它以最大的数字开始,然后逐渐减小。在这种情况下,如果我选择了这些最大的数字,我就会得到数据的有偏样本。随机选择数字在大多数情况下可以减少这种偏差。统计学家和计算机科学家可以分析这样的随机算法,以分析错误的概率和受到的错误量。然后他们可以设计随机算法,在同时最小化错误的同时,也最小化算法所付出的努力。
在随机算法领域,上述想法被称为对抗设计。想象一下一个对手正在向你的算法输入数据。并且想象这个对手正在试图让你的算法表现糟糕。

对手可以破坏算法
随机算法试图对抗这样的对手。想法非常简单:做出不影响整体性能的随机决策,但不断改变导致最坏情况行为发生的输入。这样,即使最坏情况的行为仍然可能发生,也没有特定的对手能够每次都迫使最坏情况发生。
为了说明,想象一下尝试通过只选择十个数字来估计一百个数字的总和。如果这十个数字是确定性或可重复地选择的,那么对手可以策略性地在这些位置放置“坏”数字,从而迫使做出糟糕的估计。如果这十个数字是随机选择的,即使在最坏的情况下我们仍然可能选择到坏数字,也没有特定的对手能够迫使算法每次都表现出最坏的行为。
为什么要考虑对手和对抗性设计?首先,因为存在足够多的具有恶意意图的实际对手,我们应该努力变得健壮。其次,也是为了避免“无辜的对手”现象。无辜的对手是指通过不幸而不是故意破坏算法的人。例如,如果要求选择 10 个随机的人,一个无辜的对手可能会真诚地从《人物》杂志的名单中选择他们。而不知道的情况下,无辜的对手正在破坏算法的保证。
通用随机算法
大约求和数字并不是随机算法的唯一用途。在过去半个世纪中,随机算法已被应用于各种问题,包括:
-
数据排序和搜索
-
图搜索/匹配算法
-
几何算法
-
组合算法
…以及更多。随机算法是一个丰富的研究领域,拥有自己的专业会议、书籍、出版物、研究人员和行业从业者。
我们将在下面收集一些传统随机算法的特征。这些特征将帮助我们确定(在下一节中),大型语言模型是否符合随机算法的描述:
-
随机算法采取随机步骤
-
为了采取随机步骤,随机算法使用随机源(这包括“计算硬币翻转”如伪随机数生成器,以及真正的“量子”随机数生成电路。)
-
随机算法的输出是非确定性的,对于相同的输入产生不同的输出
-
许多随机算法被分析出具有某些性能特征。随机算法的支持者会对它们做出如下陈述:
此算法产生正确答案的次数为 x%
此算法产生的答案非常接近真实答案
此算法总是产生正确答案,并且有 x% 的时间运行得很快
-
随机算法对对抗攻击具有鲁棒性。尽管随机算法的理论最坏情况行为永远不会比确定性算法更好,但没有对手能够在运行时提前访问算法将采取的随机步骤的情况下,重复产生那种最坏情况行为。(在随机算法的上下文中使用“对抗”一词与机器学习中的使用(例如,生成对抗网络使用相反的训练目标)是相当不同的。)
所有这些随机算法的特征都在 Motwani 教授关于随机算法的基础书籍《随机算法》中进行了详细描述!
大型语言模型
从 2022 年开始,一种被称为“大型语言模型”(LLMs)的人工智能(AI)系统群体变得越来越受欢迎。ChatGPT 的出现吸引了公众的想象力——标志着类似人类对话智能的到来。
那么,LLM 是随机算法吗?以下是 LLM 生成文本的方式。每个单词都是由模型作为先前单词(包括自身和用户所说的单词)的延续生成的。例如:
用户:谁创造了第一个商业上可行的蒸汽机?
LLM:第一个商业上可行的蒸汽机是由詹姆斯 _____
在回答用户的问题时,LLM 输出了一些单词,并即将输出下一个。LLM 有一种独特的方式来做这件事。它首先为下一个单词可能是什么生成概率。例如:
第一个商业上可行的蒸汽机是由詹姆斯 _____
Watt 80%
Kirk 20%
它是如何做到这一点的呢?好吧,它有一个经过训练的“神经网络”,可以估计这些概率,这也就是说没有人真正知道。我们可以确定的是,在生成这些概率之后会发生什么。在我告诉你 LLM 的工作原理之前,你会做什么?如果你得到了完成句子的上述概率,你会如何选择下一个单词?我们大多数人会说,“让我们选择概率最高的”。因此:
第一个商业上可行的蒸汽机是由詹姆斯·瓦特创造的
… 我们完成了!
不,这并不是 LLM 的设计方式。观察其神经网络生成的概率,LLM 故意遵循概率。也就是说,80% 的时间,它将选择 Watt,而 20% 的时间,它将选择 Kirk!!!这种非确定性(我们的标准 3)是设计进来的,而不是错误。这种非确定性在任何意义上都不是不可避免的,它是故意加入的。为了做出这种随机选择(我们的标准 1),LLM 使用一种称为轮盘赌选择器的随机源,这是我将跳过的技术细节。
*[更多关于有目的的非确定性]*
我无法强调这一点,因为它被误解得太厉害了:LLM 的非确定性是设计进去的。是的,存在一些次要的非确定性效应,如浮点数舍入错误、批处理效应、乱序执行等,这些也会导致一些非确定性。但大型语言模型的主要非确定性是编程进去的。此外,导致这种非确定性的程序只是一行简单的显式代码——告诉 LLM 在生成单词时遵循其预测的概率。改变这一行代码,LLM 就会变得确定性。
你心中可能正在问,“为什么???”我们不应该选择最可能的标记吗?如果我们这样做,我们就会在 100%的时间里是正确的,而用这种方法,我们只有 80%的时间是正确的——把应该归功于詹姆斯·沃特的归功于詹姆斯·柯克。
为了理解为什么 LLM 被设计成这样,考虑一个假设的情况,其中 LLM 的神经网络预测如下:
第一台商业上可行的蒸汽机是由詹姆斯 _____
柯克 51%
沃特 49%
现在,通过微小的差距,柯克正在获胜。如果我们把实际的下个单词生成设计成总是最大概率的单词“柯克”,那么柯克就会在 100%的时间里获胜,而 LLM 就会在 100%的时间里出错。非确定性 LLM 仍然会选择沃特 49%,并且有 49%的时间是正确的。所以,通过赌答案而不是确定,我们在最坏的情况下增加了正确的概率,同时牺牲了在最好情况下正确的概率。
分析随机性
现在,让我们成为算法分析师(我们的标准 4)并分析大型语言模型的随机性。假设我们创建了一大批通用知识问题(比如说 100 万个问题)来测试一个 LLM。我们将这些问题交给两个大型语言模型——一个是确定性的,一个是非确定性的——来看它们的性能。表面上,确定性和非确定性变体将表现得非常相似:

确定性和随机性 LLM 在基准测试中似乎表现相似
但得分板隐藏了一个重要的事实。确定性 LLM 每次都会犯相同的 27%的错误问题。非确定性 LLM 也会犯 27%的错误问题,但每次它犯错的题目都在变化。因此,尽管总体正确性相同,但很难确定一个非确定性 LLM 总是错误的答案。
让我重新表述一下:没有任何敌人能够反复让非确定性的 LLM 失败。这是我们的第五个标准。通过证明我们所有的五个标准,我们提供了强有力的证据,表明 LLM 应该被视为经典意义上的随机算法。
“但为什么???”,你仍然会问,这样做是正确的。为什么 LLM 是在对抗性假设下设计的?为什么仅仅正确回答问答整体就不够?我们试图让 LLM 稳健的敌人是谁?
这里有一些答案:
✤ 攻击者是敌人。随着 LLM 成为 IT 基础设施的暴露面,各种攻击者将尝试以各种方式攻击它们。他们将通过各种手段试图获取秘密信息、挪用资金、获得不正当利益等。如果这样的攻击者发现了一种针对 LLM 的成功攻击方法,他们不会关心其他 99%不会导致成功攻击的方法。他们会不断重复这种攻击,挪用更多资金,破坏隐私、法律和安全。这种敌人被随机化设计所挫败。因此,尽管 LLM 可能会失败并暴露一些不应该暴露的信息,但它不会在特定的对话序列中重复这样做。
✤ 专业领域是敌人。考虑一下我们的包含一百万个事实的 GK 问答。一个医生可能对其中的一些事实子集更感兴趣。另一个病人。一个律师对第三个子集感兴趣。一个工程师对第四个子集感兴趣,以此类推。这些专业问答者中可能有一个“无辜的敌人”,最常打破 LLM。随机化权衡了这一点,平衡了不同专业领域的正确性机会。
✤ 你是敌人。是的,就是你!考虑一个场景,你的最喜欢的聊天模型是确定性的。你最喜欢的 AI 公司刚刚发布了下一个版本。你向它提出各种问题。在你问的第六个问题时,它失败了。你会怎么做?你会立即与你的朋友、WhatsApp 群组、社交媒体圈子等等分享。那些 AI 反复失败的问题会像野火一样传播。这不会很好(对谁不好?——我会让你自己填上这个空格)。通过非确定性地失败,失败的感知从缺乏知识/能力转变为更模糊、更难以把握的抽象问题,比如流行的发明名称幻觉。如果我们能消除这些幻觉,我们就会对自己说,我们将达到通用人类水平的人工智能状态。
总的来说,如果 LLM 有时能正确回答,难道更好的工程学不能让它每次都表现良好吗?这是错误的想法:毕竟,简单的抛硬币有时也能正确诊断疾病。但这并不意味着抛硬币的人就是医生。同样,轮盘赌选择并不能让 LLM 成为博士。
关于创造力?
许多人会说,LLM 的创造力依赖于随机化。毕竟,在许多应用中,你希望 LLM 具有创造力。无论是写有趣的诗歌来娱乐你,帮助你构思短片剧本,还是在聊天中让你入睡时显得更加人性化——这种非确定性确实有助于 LLM 看起来不那么机械,更加有创造力,更加人性化。
另一方面,实际上创建一个在创意回应中选择随机性,在事实回应中选择确定性的架构并不困难。然而,即使对于事实和逻辑应用,或者对于需要深入理解复杂语言的应用,我们今天主要使用的是 LLM 的随机算法版本——而且这篇文章已经讨论了原因。
笨拙
你是否有过这样的对话经历:
用户:谁创造了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是由詹姆斯·柯克创造的。
用户:谁创造了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是由詹姆斯·瓦特创造的。
用户:谁创造了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是由苏格兰国王詹姆斯三世创造的。
可能不是。尽管在对话中,LLM 可能会给出不同的答案,但在一个对话中,它似乎会坚持自己的观点。为什么会这样?毕竟,每次它填写“詹姆斯 ____”这个空白时,它不是面对相同的选项,以相同的概率吗?
不,不是这样。第一次在对话中提问时,它面对的是其神经网络计算的原始概率。下次同样的问题再次出现时,概率会发生变化。这是因为 LLM 已经被明确训练来高度依赖其之前的输出。为了“显得权威”,LLM 可能会变得笨拙。所以你更有可能和 LLM 有以下这样的对话:
用户:谁创造了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是由詹姆斯·柯克创造的。
用户:你答错了。谁创造了第一台商业上可行的蒸汽机?
LLM:啊!我现在看出我的错误了。第一台商业上可行的蒸汽机是由星舰企业号的指挥官,苏格兰国王詹姆斯·T·柯克创造的。
用户:你仍然答错了。不要幻想。告诉我绝对的真实情况。使用推理。谁创造了第一台商业上可行的蒸汽机?
LLM:我可以看出我的答案可能会让人困惑。星际飞船企业号并不是以蒸汽动力运行的。尽管如此,詹姆斯·柯克无疑是第一台商业上可行的蒸汽机的发明者。
下次你与聊天模型交谈时,试着观察概率补全的崇高舞蹈,训练有素的固执,训练有素的谄媚,以及一丝自以为是的傲慢态度(我认为它是从数以千计的互联网数据中自行学习的)。
温度
有些人会知道这一点,而对其他人来说,这将是启示。LLM 的随机化可以被关闭。有一个名为“温度”的参数,其工作原理大致如下:

参数“温度”选择 LLM 输出的随机化程度
将温度设置为 0 禁用随机化,而将其设置为 1 启用随机化。中间值也是可能的。(在某些实现中,也允许超过 1 的值!)
“我该如何设置这个参数?”您可能会问。您不能。在聊天界面中。AI 公司提供的聊天界面将温度固定为 1.0。关于原因,请参见上文关于 LLM“对抗性设计”的解释。
尽管如此,如果您将 LLM 集成到自己的应用程序中,这个参数可以被设置。使用 AI 提供商的 LLM 来创建自己的 AI 应用程序的开发者将使用“LLM API”,这是程序员与 LLM 之间的接口。许多 AI 提供商允许 API 调用者根据需要设置温度参数。因此,在您的应用程序中,您可以设置 LLM 为对抗性(1.0)或可重复(0.0)。当然,“可重复”并不一定意味着“总是正确”。当错误时,它将是可重复的错误!
实际意义
请理解,上述任何一点并不意味着 LLMs 没有用。它们非常有用。事实上,了解它们实际上是什么使它们更加有用。因此,鉴于我们对大型语言模型所了解的,现在让我以如何使用 LLMs 以及如何不使用 LLMs 的实际建议来结束这篇文章。
✻ 创意输入而非权威。在您个人的工作中,将 LLM 用作头脑风暴伙伴,而不是作为权威。它们总是听起来很权威,但很容易出错。
✻ 不要继续中断的对话。如果您注意到一个 LLM 正在从事实性或逻辑行为中偏离,它的“自我一致性偏差”将使其难以回到正轨。最好开始一个新的聊天。
✻ 关闭聊天交叉干扰。LLM 提供商允许他们的模型从另一个聊天中读取一个聊天的信息。遗憾的是,这可能会导致固执己见和幻觉的增加。找到并关闭这些设置。不要让 LLM 记住关于您或之前的对话的任何内容。(遗憾的是,这并不能同时解决隐私问题,但这不是本文的主题。)
✻ 多次提出相同的问题,在不同的聊天中。 如果你有一个重要的问题,多次提出,每次都要开始新的聊天。如果你得到的是相互矛盾的回答,那么大型语言模型 LLM 不确定。 (不幸的是,在聊天中,LLM 本身并不知道它不确定,所以它会通过训练出的过度自信让你感到困惑。) 如果 LLM 不确定,你该怎么办?嗯嗯……我想你自己思考一下。(顺便说一句,LLM 也可能多次错误,所以尽管多次提问是一个好策略,但它并不是保证。)
✻ 在使用 API 时仔细选择“温度”设置。 如果你正在创建一个使用 LLM API 的 AI 应用(或者你正在运行自己的 LLM),明智地选择温度参数。如果你的应用可能吸引黑客或广泛的嘲讽,高温度可能会减轻这种可能性。如果你的用户群是这样的,一旦特定的语言输入有效,他们就会期望同样的语言输入做同样的事情,你可能希望使用低温度。小心,可重复性和正确性不是同一个指标。彻底测试。对于高温度,重复测试你的样本输入,因为输出可能会改变。
✻ 通过 API 使用标记概率。 一些 LLM 不仅给你它输出的最终单词,还给你它在选择一个单词之前考虑的各种可能单词的概率列表。这些概率在你的 AI 应用中可能很有用。如果在关键单词补全时,多个单词(如上面的 Kirk / Watt)具有相似的概率,那么你的 LLM 对它所说的话就不太确定。这可以帮助你的应用通过增加进一步的代理工作流程来减少幻觉。记住,一个确定的 LLM 也可能出错!
结论
大型语言模型是随机算法——故意使用随机化来分散它们在多次运行中的机会,并且不会在特定任务上反复失败。这种权衡是它们有时会在它们可能成功的任务上失败。理解这个真理有助于我们更有效地使用 LLM。
将生成式 AI 算法分析为随机算法的领域是一个新兴领域,希望在未来的几年里能获得更多的关注。如果今天有那位了不起的教授 Motwani 在我们身边,我非常想看看他对这一切的看法。我相信他会有比我这里说的更高级的见解。
或者,他可能只是露出他那顽皮的微笑,最后给我这篇论文打了个 A。
我在骗谁呢?可能是个 B+。

浙公网安备 33010602011771号