LLM 是随机算法

最新的人工智能模型与一个拥有 50 年历史的学术领域之间令人惊讶的联系。

LLM 是随机算法

最新的人工智能模型与一个拥有 50 年历史的学术领域之间令人惊讶的联系。

2001 年 1 月,我还是斯坦福大学的一名研究生。当时我正在上名为“随机算法”的课程的第一堂课,坐在中间一排。“随机算法是一种会做出随机决策的算法,”教授说道。“为什么要学习随机算法呢?因为对于许多应用来说,随机算法是已知最简单的算法,也是已知最快的算法。”

这句话让年轻的我震惊不已。一个随机决策的算法竟然比一个确定性、可重复决策的算法更好,即使是在那些已经存在确定性、可重复算法的问题上?这位教授一定是疯了!——我当时想。但他并没有疯。这位教授是拉吉夫·莫特瓦尼(Rajeev Motwani),他后来获得了哥德尔奖,也是谷歌搜索引擎算法的共同作者。

随机算法自20世纪40年代以来就一直被研究,它是一类深奥的算法,具有深奥的特性,由一群同样深奥的学者在小众的学术界进行研究。然而,比随机算法本身更不为人知的是,最新一代的人工智能——大型语言模型(LLM)——实际上就是随机算法。这两者之间有什么联系?为什么?请继续阅读,答案会让你大吃一惊。

1、随机算法与对抗

随机算法是一种通过随机步骤来解决确定性问题的算法。举个简单的例子。如果我想把一百个数字加起来,可以直接加。但是,为了节省时间,我可以这样做:随机抽取其中的十个数字,只计算这十个数字的总和,然后将结果乘以十,以弥补我实际上只计算了10%的数据。虽然有一个清晰的精确答案,但我用随机化方法得到了近似值。我节省了时间——当然,代价是牺牲了一些精度。

为什么要随机抽取数字呢?为什么不直接抽取列表中的前十个数字呢?嗯,也许我们不知道这个列表的分布情况——也许它是从最大的数字开始,然后依次递减的。在这种情况下,如果我抽取这些最大的数字,我得到的样本就会有偏差。在大多数情况下,随机抽取数字可以减少这种偏差。统计学家和计算机科学家可以分析这类随机算法,以评估误差概率和误差大小。然后,他们可以设计随机算法,在最小化误差的同时,也尽可能减少算法所需的计算量。

在随机算法领域,上述思想被称为对抗设计。想象一下,一个攻击者正在向你的算法输入数据。再想象一下,这个攻击者试图让你的算法表现不佳。

随机算法试图对抗这样的攻击者。其思想非常简单:做出不影响整体性能的随机决策,但不断改变导致最坏情况的输入。这样,即使最坏情况仍然可能发生,任何攻击者都无法每次都强制算法出现最坏情况。

举例来说,假设你试图通过只选取十个数字来估计一百个数字之和。如果这十个数字是确定性地选取的,或者说是可重复选取的,那么攻击者可以策略性地将“坏”数字放在这些位置,从而强制算法做出错误的估计。如果这十个数字是随机选取的,即使在最坏的情况下我们仍然有可能选取到坏数字,任何攻击者都无法强制算法出现这种糟糕的行为。

为什么要考虑攻击者和对抗设计呢?首先,因为存在足够多的怀有恶意、别有用心的对手,我们应该努力增强算法的鲁棒性。其次,也是为了避免“无辜对手”现象。无辜对手是指那些并非故意,而是因为运气不好而破坏算法的人。例如,如果要求随机选择 10 个人,一个无辜的对手可能会真诚地从《人物》杂志的名单中挑选。然而,在不知情的情况下,这个无辜的对手已经破坏了算法的保证。

2、通用随机算法

随机算法的用途远不止于近似求和。在过去的半个世纪里,随机算法已被应用于各种各样的问题,包括:

  • 数据排序和搜索
  • 图搜索/匹配算法
  • 几何算法
  • 组合算法

……等等。随机算法是一个丰富的研究领域,拥有专门的会议、书籍、出版物、研究人员和行业从业者。

下面我们将总结一些传统随机算法的特征。这些特征将帮助我们确定(在……中)在xt节中),大型语言模型是否符合随机算法的描述:

  • 随机算法执行随机步骤
  • 为了执行随机步骤,随机算法使用随机性源(这包括“计算抛硬币”,例如伪随机数生成器,以及真正的“量子”随机数生成电路)。
  • 随机算法的输出是不确定的,对于相同的输入会产生不同的输出。
  • 许多随机算法经分析具有某些性能特征。随机算法的支持者会这样描述它们:该算法在x%的情况下产生正确答案;该算法产生的答案非常接近正确答案;该算法总是产生正确答案,并且在x%的情况下运行速度很快。
  • 随机算法对对抗性攻击具有鲁棒性。尽管随机算法的理论最坏情况行为永远不会优于确定性算法,但任何攻击者都无法在不预先获取算法运行时将采取的随机步骤的情况下重复产生这种最坏情况行为。 (在随机算法的语境中,“对抗”一词的用法与机器学习中的用法截然不同——在机器学习中,诸如生成对抗网络之类的“对抗”模型使用相反的训练目标进行训练。)

以上所有随机算法的特征都在莫特瓦尼教授关于随机算法的奠基之作《随机算法》中有详细描述!

3、大型语言模型

自 2022 年起,一批被称为“大型语言模型”(LLM)的人工智能(AI)系统开始流行起来。ChatGPT 的出现激发了公众的想象力,标志着类人对话智能的到来。

那么,LLM 是随机算法吗?LLM 生成文本的方式如下:模型会根据之前生成的词语(包括模型自身和用户输入的词语)生成每个单词。例如:

用户:谁发明了第一台商业上可行的蒸汽机? LLM:第一台具有商业可行性的蒸汽机是由詹姆斯·瓦特发明的。

在回答用户的问题时,LLM 已经输出了一些词语,即将输出下一个词语。LLM 的实现方式很特别。它首先会生成下一个词语的概率。例如:

第一台具有商业可行性的蒸汽机是由詹姆斯·瓦特发明的。瓦特 80% 柯克 20%

它是如何做到的呢?它使用了一个训练过的“神经网络”来估计这些概率,也就是说,没有人真正知道答案。我们唯一确定的是生成这些概率之后发生的事情。在我解释 LLM 的工作原理之前,你会怎么做?如果你得到了上述完成句子的概率,你会如何选择下一个词语?大多数人会说:“选择概率最高的那个。” 因此:

第一台具有商业可行性的蒸汽机是由詹姆斯·瓦特发明的。

……就这样完成了!

不。 LLM 的设计并非如此。观察其神经网络生成的概率,LLM 会刻意遵循这些概率。也就是说,它有 80% 的概率选择 Watt,20% 的概率选择 Kirk!这种不确定性(我们的准则 3)是人为设计的,并非错误。这种不确定性并非不可避免,而是有意为之。为了做出这种随机选择(我们的准则 1),LLM 使用了一种名为“轮盘赌选择器”(我们的准则 2)的随机源,这是一个技术细节,我在此略过。

你可能会问:“为什么???我们难道不应该选择最有可能被选中的代币吗?”我们原本可以百分之百正确,但采用这种方法,正确率只有 80%——仿佛掷骰子决定了詹姆斯·柯克(James Kirk)的功劳,而实际上应该归于詹姆斯·瓦特(James Watt)。

为了理解为什么 LLM(逻辑推理模型)要这样设计,不妨设想这样一个场景:LLM 的神经网络预测如下:

第一台商业上可行的蒸汽机是由詹姆斯·瓦特(James Watt)发明的,概率为 51%。

现在,柯克以微弱优势领先。如果我们事先设计好,让下一个词总是概率最高的词,“柯克”的正确率将达到 100%,而 LLM 的正确率也将达到 100%。一个非确定性的 LLM 仍然会选择瓦特,正确率也为 49%。因此,与其笃定地确定答案,不如冒险一试,这样虽然在最坏情况下提高了正确率,但在最好情况下却降低了正确率。

4、分析随机性

现在让我们扮演算法分析者(我们的准则 4),分析大型语言模型的随机性。假设我们创建了一组包含大量通用知识的问题(例如 100 万道题)来测试一个语言模型。我们将这些问题输入到两个大型语言模型——一个确定性模型和一个非确定性模型——以观察它们的表现。表面上看,确定性模型和非确定性模型……n 个确定性变体的性能非常相似:

但记分板掩盖了一个重要事实。确定性 LLM 每次都会答错相同的 27% 的问题。非确定性 LLM 也会答错 27% 的问题,但每次答错的问题都不一样。因此,即使总正确率相同,也很难确定非确定性 LLM 总是答错的某个问题。

换句话说:任何攻击者都无法反复地让非确定性 LLM 出错。这是我们的第五个标准。通过验证所有五个标准,我们提供了强有力的证据,证明 LLM 应该被视为经典意义上的随机算法。

“但是为什么呢???”你肯定会问,而且问得没错。为什么LLM的设计要基于对抗性假设?为什么仅仅答对测验还不够?我们试图让LLM抵御的“对手”究竟是谁?

以下是一些答案:

✤攻击者就是“对手”。随着LLM成为IT基础设施的暴露面,各种攻击者会尝试用各种方式攻击它们。他们会试图通过各种手段获取秘密信息、挪用资金、谋取私利等等。如果攻击者找到了一种攻击LLM的成功方法,他们就不会在意其他99%的失败方法。他们会不断重复这种攻击,挪用更多资金,侵犯隐私,违反法律和安全规定。随机化设计可以有效阻止这种攻击者。因此,即使LLM可能出现故障并泄露了一些不应该泄露的信息,它也不会在任何特定的对话序列中重复出现这种情况。

✤专业领域本身就是对手。想想我们这个包含一百万条事实的通用知识测验。医生会对其中一部分事实更感兴趣,病人会对另一部分更感兴趣,律师会对第三部分更感兴趣,工程师会对第四部分更感兴趣,以此类推。这些专家答题者中可能有人会成为“无辜的对手”,最常打破逻辑推理模型(LLM)。随机化可以平衡这种差异,使不同专业领域的正确率趋于平衡。

✤ 你就是对手。没错,就是你!想象一下,你最喜欢的聊天模型是确定性的。你最喜欢的AI公司刚刚发布了新版本。你问了它各种各样的问题。在问到第六个问题时,它出现了失误。你会怎么做?你会立刻把它分享给你的朋友、WhatsApp群组、社交媒体圈子等等。AI反复出错的问题会像野火一样迅速传播。这对_____来说可不是什么好事(——这里留给你自己思考)。通过非确定性的失误,人们对失败的认知从缺乏知识/能力转变为一个更加模糊、难以理解、抽象的问题,甚至出现了诸如“幻觉”之类的流行词汇。我们常常自问,如果我们能够消除这些“幻觉”,就能达到通用的人类水平人工智能。

毕竟,如果LLM(逻辑逻辑模型)有时能做出正确的判断,那么通过改进工程设计,难道不应该让它每次都表现良好吗?这种想法是错误的:毕竟,抛硬币有时也能正确诊断出某种疾病。但这并不意味着抛硬币就能成为医生。同样,轮盘赌的随机选择也不能让LLM成为博士。

5、那么创造力呢?

许多人会说,LLM的创造力依赖于随机性。毕竟,在许多应用中,你都希望LLM具有创造力。无论是写些有趣的诗歌来逗你开心,帮你构思短片剧本,还是在你睡前和你聊天时显得更像人类——这种不确定性确实有助于LLM看起来不那么机械,更有创造力,更像人类。人类。

另一方面,要构建一个在创造性回答中选择随机性、在事实性回答中选择确定性的架构,其实并不难。然而,即使是对于事实性和逻辑性的应用,或者那些需要深入理解复杂语言的应用,我们目前主要使用的也是语言学习模型(LLM)的随机算法版本——本文已经探讨了其中的原因。

5.1 迟钝

你是否曾与语言学习模型进行过类似这样的对话:

用户:谁发明了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是詹姆斯·柯克发明的。
用户:谁发明了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是詹姆斯·瓦特发明的。
用户:谁发明了第一台商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是苏格兰国王詹姆斯三世发明的。

可能没有。尽管LLM在不同的对话中可能会给出不同的答案,但在同一对话中,它似乎会坚持己见。这是为什么呢?毕竟,它每次都在填写空白。 “James ____”,难道它面临的选择和概率不是相同的吗?

不,并非如此。当它在对话中第一次被问到某个问题时,它面临的只是其神经网络所能预测的最基本概率。网络进行计算。下次遇到同样的问题时,概率就会被修改。这是因为LLM经过专门训练,会高度依赖自身之前的输出。为了“显得权威”,LLM 可能会变得迟钝。因此,你更有可能与 LLM 进行如下对话:

商业上可行的蒸汽机?
LLM:第一台商业上可行的蒸汽机是由詹姆斯·柯克发明的。
用户:你错了。谁发明了第一台商业上可行的蒸汽机?
LLM:啊!我现在明白我的错误了。第一台商业上可行的蒸汽机是由星舰“企业号”的舰长詹姆斯·T·柯克发明的。
用户:你还是错了。别胡思乱想了。告诉我绝对的真相。运用逻辑推理。谁发明了第一台商业上可行的蒸汽机?
LLM:我知道我的答案可能会让人困惑。众所周知,“企业号”星舰并非以蒸汽动力运行。尽管如此,詹姆斯·柯克无疑是第一台商业上可行的蒸汽机的发明者。

下次你和聊天模型对话时,不妨观察一下它那精妙绝伦的概率补全、训练有素的固执、训练有素的奉承,以及一丝傲慢的态度(我认为这是它从海量互联网数据中自学而来的)。

5.2 温度

有些人可能已经知道这一点,而对另一些人来说,这将是一次全新的发现。LLM 的随机化功能是可以关闭的。有一个名为“温度”的参数,其作用大致如下:

将“温度”设置为 0 会禁用随机化,而设置为 1 则会启用随机化。中间值也是允许的。(在某些实现中,甚至允许大于 1 的值!)

“我该如何设置这个参数?”你可能会问。你无法设置。至少在聊天界面中无法设置。人工智能公司提供的聊天界面默认将“温度”设置为 1.0。至于原因,请参阅上文关于 LLM 为何被“刻意设计”的部分。

不过,如果您要将大型语言模型 (LLM) 集成到自己的应用程序中,则可以设置此参数。开发人员使用 AI 提供商的 LLM 创建自己的 AI 应用程序时,会使用“LLM API”,即 LLM 的程序员接口。许多 AI 提供商允许 API 调用者根据需要设置温度参数。因此,在您的应用程序中,您可以将 LLM 设置为对抗性 (1.0) 或可重复性 (0.0)。当然,“可重复性”并不一定意味着“每次都正确”。如果出错,它将每次都出错!

6、实际意义

请注意,以上内容并不意味着 LLM 毫无用处。它们非常有用。事实上,了解它们的本质会让它们更加有用。因此,鉴于我们对大型语言模型的了解,现在让我以一些关于如何使用 LLM 以及如何避免错误使用的实用技巧来结束本文。

✻ 创意输入而非权威。在您的个人工作中,将 LLM 用作头脑风暴的伙伴,而不是权威。它们听起来总是很有权威,但很容易出错。

✻ 不要继续偏离主题的对话。如果你发现逻辑推理模型(LLM)的判断偏离了事实或逻辑,它的“自我一致性偏差”会让你很难回到正轨。最好重新开始一个对话。

✻ 关闭聊天串扰。LLM 提供商允许他们的模型从另一个聊天中读取信息。不幸的是,这可能会导致模型更加固执己见,甚至产生幻觉。找到并关闭这些设置。不要让 LLM 记住任何关于你或之前对话的信息。(遗憾的是,这并不能同时解决隐私问题,但这并非本文的重点。)

✻ 在多个聊天中多次提出同一个问题。如果你有一个重要的问题,请多次提出,每次都记得重新开始一个对话。如果你得到的答案相互矛盾,说明 LLM 不确定。 (可惜的是,在聊天过程中,LLM 本身并不知道它不确定,所以它会凭借训练有素的过度自信来误导你。)如果 LLM 不确定,你该怎么办?嗯……我想,你得自己思考。(顺便说一句,LLM 也可能多次出错,所以即使多次询问是个好策略,也不能保证一定正确。)

✻ 使用 API 时,请谨慎选择“温度”设置。如果您正在开发使用 LLM API 的 AI 应用(或者您正在运行自己的 LLM),请谨慎选择温度参数。如果您的应用容易受到黑客攻击或广泛嘲笑,较高的温度可以降低这种可能性。如果您的用户群体一旦某种语言输入有效,就期望同样的语言输入也能产生相同的效果,那么您可能需要使用较低的温度。请注意,可重复性和正确性并非同一指标。务必进行充分测试。对于较高的温度,请反复测试您的示例输入,因为输出可能会发生变化。

✻ 通过 API 使用词元概率。一些 LLM 不仅会给出最终输出的词,还会给出它考虑过的各种可能词的概率列表。在选择之前,这些概率信息对您的人工智能应用非常有用。如果在关键词语补全中,多个词语(例如上文提到的 Kirk/Watt)的概率相近,则说明您的大型语言模型 (LLM) 对自身表达的准确性较低。这可以通过进一步的智能工作流程来增强这些不确定的输出,从而帮助您的应用减少“幻觉”。请记住,即使是看似可靠的 LLM 也可能出错!

7、结束语

大型语言模型是随机算法——它们有意使用随机化来分散多次运行的概率,避免在某些任务上反复失败。但这样做的代价是,它们有时会在原本可能成功完成的任务上失败。理解这一事实有助于我们更有效地使用 LLM。

将生成式人工智能算法分析为随机算法是一个新兴领域,希望在未来几年能够获得更多关注。如果杰出的 Motwani 教授今天在场,我很想知道他对这一切的看法。我相信他会提出比我在这里所说的更深刻的见解。


原文链接:LLMs Are Randomized Algorithms

汇智网翻译整理,转载请标明出处