We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Nicholas Carlini (Google DeepMind)

Nicholas Carlini (Google DeepMind)

2025/1/25
logo of podcast Machine Learning Street Talk (MLST)

Machine Learning Street Talk (MLST)

AI Deep Dive AI Chapters Transcript
People
N
Nicholas Carlini
主持人
专注于电动车和能源领域的播客主持人和内容创作者。
Topics
Nicholas Carlini: 我是谷歌DeepMind的研究科学家,致力于研究模型的弱点并分析其安全隐患。大型语言模型能够进行有效的棋步预测,这表明其内部存在某种对现实世界准确建模的机制,尽管我不倾向于赋予其主观能动性。关于“推理”的定义因人而异,取决于个体对模型智能和能力的认知。模型的输出是否正确比其内部运作机制更重要。在可预见的未来,模型仍将容易受到简单攻击,我们需要找到一种方法来构建系统,即使模型不可靠,系统也能保持安全。我们需要设计围绕模型运行的系统,即使模型出现随机错误分类,也能避免系统执行错误操作。大型语言模型的发展时间较短,预测其未来发展方向非常困难。后训练会提高模型的性能,但也会影响其校准性。后训练对模型的影响机制尚不清楚。大型语言模型有时会表现出看似有效但实际上是灾难性的错误模式,这使得“推理”的定义变得模糊。与其纠结于模型是否进行“推理”,不如关注其输入输出行为是否能够解决问题。如果模型能够始终给出正确的答案,我不太关心其内部运作机制。模型的泛化能力有限,需要在其训练数据中包含目标测试数据才能获得更好的表现。我更关注基于观察到的现实情况进行研究,而不是预测遥远的未来。我的研究主要基于对当前现实的观察,并根据观察结果调整研究方向。攻击比防御更容易,因为攻击者只需要找到一个漏洞,而防御者需要修复所有漏洞。机器学习中的攻击比传统软件安全中的攻击更难防御,因为机器学习领域不断出现新的攻击类型。机器学习领域的安全披露规范有待完善,需要借鉴传统软件安全领域的经验,同时制定新的规范。我没有因为伦理原因而放弃研究任何漏洞。我倾向于选择那些具有潜在益处的漏洞进行研究。我擅长并喜欢系统攻击研究,并且这项工作能够带来积极的成果。传统安全研究和机器学习安全研究在研究方法和严谨性方面存在差异。我目前主要从事机器学习安全研究,而不是传统安全研究。 主持人: 我们能否在未来达到一种状态,即系统不安全,但我们学会与之共存?大型语言模型无需被明确告知游戏规则就能掌握国际象棋,这改变了我们对模型能力的认知。人类在区分好坏方面能力有限,这会影响大型语言模型的后训练效果。关于大型语言模型能力提升的方法,存在两种观点:一种是增加数据和计算量,另一种是采用完全不同的方法。是否可以通过在国际象棋棋谱中添加ELO等级来提高大型语言模型的棋力?你为何进行系统攻击研究?机器学习领域的安全披露规范尚不明确,需要根据具体情况进行判断。

Deep Dive

Shownotes Transcript

事实上,它几乎总是能够做出有效的移动,这意味着它在某种程度上一定在其内部拥有准确模拟世界的东西。我不喜欢赋予它意图性或诸如此类的东西,但它正在做一些事情,使它能够根据当前的棋盘状态做出这些移动,并理解它应该做什么。每个人对推理的理解都不同。

因此,推理是什么这个问题的答案完全取决于你如何定义推理。你会发现一些人非常坚持这样的观点:我认为模型并不聪明,我认为它们不好,它们无法解决我的问题。因此他们说,不,这不是推理,因为对我来说,推理意味着……然后他们给出一个排斥语言模型的定义。然后你问一个非常相信AGI的人,你知道,语言模型将解决一切问题。到2027年,它们将取代所有人类的工作。

你问他们,什么是推理?他们会说推理是……嗨,我是Nicholas Carlini。我是Google DeepMind的研究科学家。我喜欢尝试让模型做坏事,并了解我们可以对这些模型进行攻击的安全隐患。我真的很喜欢破坏东西,并且已经做了很长时间了。但我非常担心,因为它们令人印象深刻,我们将把它们应用到各种不应该应用的领域。为什么……

结果,我们对这些东西的攻击最终将导致严重的安全后果。

MLST由CentML赞助,CentML是一个专门针对AI工作负载优化的计算平台。它们开箱即用地支持所有最新的开源语言模型,例如Lama。你可以选择价格点,选择你想要的模型。它启动后,可以弹性自动缩放。你基本上可以按使用量付费,或者你可以拥有一个始终运行的模型,或者在你不用时可以将其冻结。所以,你在等什么?现在就访问centml.ai注册吧。

Tufo Labs是一个新的AI研究实验室。我正在苏黎世启动它。它由PASS Ventures资助,也涉及AI。我们正在招聘首席科学家和深度学习工程师研究人员。所以我们是DeepSeq的瑞士版本。

所以一小群人,非常非常有动力,非常努力工作。我们尝试进行一些研究,从LLM和Owen风格的模型开始。我们想自己调查、反向工程和探索这些技术。Nicholas Carlini,欢迎来到MLST。谢谢。各位在家收看的朋友们,Nicholas根本不需要任何介绍。毫无疑问,他是ML领域最著名的安全研究员,在Google工作。能第二次邀请你来到这里真是太棒了。

是的,第一次是在疫情期间,是的,那次很好,不,那次很棒。是的,MLST是少数几个在疫情中幸存下来的项目之一,这很酷。但是我们不妨开始吧?你认为我们将来是否会收敛到一个系统不安全的状态,而我们只能学会与之共存?我的意思是,这就是我们现在所做的,对吧?在正常的安全领域。就像,任何东西都没有完美的安全保障。如果有人真的想……

让你在你的电脑上发生不好的事情,他们会成功的。你几乎没有什么可以阻止这种情况发生。我们只是依赖于这样一个事实,即政府可能不希望你特别发生不好的事情。如果他们决定这样做,我相信他们有一些可以做到的事情,他们会成功的。我们可以进入一个世界,在这个世界里,普通人可能在大多数情况下不会成功。

机器学习还没有达到这个阶段。在机器学习中,普通人几乎总是可以成功。所以我认为我们的目标不应该是完美。但我们需要达到这样一个状态:至少街上随便一个人不能轻易运行一些现成的GitHub代码,让某个模型在任意环境中做任意坏事。

现在,我认为实现这一点将非常非常困难。尤其是在视觉领域,我们已经尝试了大约10年时间来获得鲁棒的模型。我们取得了进展,我们学到了很多东西。但是如果你看看客观指标,在过去四五年里,它们几乎没有上升多少。这使得我们似乎不太可能在可预见的未来获得完美的鲁棒性。但是至少……

我们仍然可以希望我们可以进行研究,使事情变得更好,最终我们会到达那里。我认为我们会,但这需要付出很多努力。所以Ilya让我问你这个问题。你是否认为将来禁止攻击ML系统会成为非法行为?我不知道。我的意思是,预测这些事情非常困难。很难知道,它已经是这样了吗?尤其是在美国,《计算机欺诈和滥用法案》涵盖了在任何环境下谁知道什么。

我不知道。我认为这是一个政策和法律人士的问题。我对政策和法律的看法是,只要人们在做出这些决定时是从对世界真实情况的理解出发,他们就可以做出决定。我在这里唯一试图评论的是,让我们确保我们至少是基于事实做出决定,而不是基于我们认为世界应该是什么样子做出决定。所以,你知道,如果他们根据这样一个事实做出决定,那就是

我们可以攻击这些模型,并且可能会发生各种坏事,那么我……他们比我更擅长这方面,他们可以决定,你知道,他们应该做什么。但是是的,我不知道。但在ML安全方面,我的意思是,真正开放式的问题,只是为了开始。当然。你能预测未来吗?将会发生什么?ML安全的未来……

好吧,让我猜一下。我认为这种情况发生的概率很小,但这在某种意义上有点像中位数预测。我认为,我认为模型将在很长一段时间内仍然容易受到相当简单的攻击,我们将不得不找到构建系统的方法,以便我们可以依赖不可靠的模型,并且仍然拥有一个保持安全的系统。

这可能意味着我们需要找到一种方法来设计世界其他部分,即围绕模型运行的东西,这样,如果它决定随机完全错误地对某些东西进行分类,即使只是出于随机机会,系统也不会采取极其错误的行动,你可以纠正这一点,但我们将不得不生活在一个模型仍然不准确的世界里。

非常容易受到攻击,是的,我不知道,至少在我看来是这样。而且……

尤其是在机器学习时间里,五年是永恒的。我不知道如果机器学习语言模型知道其他事情可能会发生,世界会是什么样子。语言模型只有七年的真正重大进展。预测五年后的情况几乎是它的两倍。所以我不知道那里的世界会是什么样子。但至少只要我们处于当前的范式中,看起来我们正处于一个事物相当脆弱的世界中。

但话又说回来,语言模型只有七年历史,而我们真正尝试攻击它们的时间只有两三年。五年,这是我们尝试攻击这些语言模型的两倍时间。也许我们只是弄清楚了一切。也许语言模型从根本上不同,情况并非如此,但是……

我的先验倾向于我们试图研究了10年的其他视觉模型的情况。至少在那里,事情已被证明非常困难。因此,我的预期是事情会很困难。因此,我们将不得不依赖于构建最终有效的系统。太棒了。所以我一直在读你的博客。

每个人都应该阅读他的博客,因为它真的很棒。事实上,当你第一次发表关于下棋的文章时,我已经在节目中引用了大约10次。所以它真的,真的很令人感兴趣。但我让我读一点。顺便说一句,它叫做《用大型语言模型下棋》。她说,直到本周,为了擅长下棋,机器学习模型必须被明确设计为玩游戏,必须被明确告知有一个8x8的棋盘,并且有不同的棋子以及它们各自如何移动以及游戏的目标是什么。

而且,你知道,它必须用强化学习与自身对抗进行训练,然后它就会获胜。你说这一切都在星期一改变了,当时OpenAI发布了GPT 3.5 Turbo Instruct。你能告诉我关于这件事吗?GPT 3.5 Turbo Instruct以及后来其他人用你可以验证的开源模型所做的事情……

他们没有在幕后做一些奇怪的事情。因为我认为有些人推测,也许他们只是在以各种方式作弊。但是现在有一些开源模型可以复制这一点。你所拥有的是一个可以相当高水平地下棋的语言模型。是的,好吧,所以……

当你第一次告诉某人,我有一个可以下棋的机器学习系统时,你得到的直接反应就像,我为什么要关心?30年前我们就有深蓝,它可以击败最优秀的人类。那不是当时某种形式的AI吗?为什么我会对拥有这样一个可以下棋的系统感到惊讶呢?我认为这里根本的区别非常有趣,那就是

该模型是在一系列移动上进行训练的。所以在国际象棋中,你表示移动,你知道,1,e4意味着移动国王的兵e4,然后你得到e5,黑方回应,然后2,无论什么,和f3,白方移动骑士,无论什么。你根据这些移动序列进行训练,然后你只需说,6点,语言模型,进行你的预测任务。它就像一个语言模型。它被训练来预测下一个标记。

它可以走一步棋,这不仅有效,而且质量很高。这很有趣,因为它意味着该模型可以走准确的棋步……让我们首先谈谈有效的方面。有效本身就很有趣,因为……

有效的国际象棋移动是什么,就像一个复杂的程序要编写。描述在什么情况下哪些移动是有效的并非易事。你不能只是随意输出字符,然后偶然发现有效的移动。而你拥有这个模型,它每次都能做出有效的移动。所以……

我不喜欢过多谈论模型内部在做什么,因为我认为这并没有什么帮助。我认为你只需要查看系统的输入输出行为,以此来理解这些事情。但事实上,它几乎总是能够做出有效的移动,这意味着它在某种程度上一定在其内部拥有准确模拟世界的东西。我不喜欢赋予……

你知道,意图性或这些东西,这些类型的东西。但它正在做一些事情,使它能够根据当前的棋盘状态做出这些移动,并理解它应该做什么。我认为这本身就很有趣。然后它不仅可以做到这一点,它实际上还可以走高质量的棋步。所以我认为,你知道,总的来说,它

在某种程度上告诉我,该模型对实际位置有相对较好的理解。因为,你知道,好吧,所以我下棋水平一般,不算太差,我或多或少理解我应该做什么,但如果你连续给我一系列40步棋,然后说,

你知道41点,下一步是什么,我无法在我的脑海中重建当时棋盘的样子,不知何故,该模型找到了一种方法来做到这一点,它从未被告知任何规则,但就像它们甚至存在一样糟糕,它重建了所有这些,它可以以任何方式正确地放置棋子,它在内部如何做到这一点,谁知道呢,然后它可以走有效的棋步,就像

这种事情能够做到,这非常有趣。对我来说,它改变了我对模型能够做什么和不能做什么的看法,无论是表面统计数据还是关于实际发生的事情的更深层次的统计数据。

我不知道,我想这主要是我认为这是关于世界的一个有趣的事情的原因。是的,我们对我们理解的抽象性有这种奇怪的人类沙文主义,而这些人工制品具有表面层次的理解,但它规模如此之大,以至于在某些时候它变成了一个没有区别的奇怪区别,但你在文章中说了一些非常有趣的话。你说模型并没有为了获胜而下棋,而且

你在谈论,我在节目中也说过,模型是你的反映。所以你像一个好的棋手一样下棋,它也像一个好的棋手一样回应。无论你是在编码,还是在做什么,都是这样。它甚至可能解释了人们的不同体验,因为你登录LinkedIn,那些家伙显然从

从LLM中得不到很好的回应,但像你这样的人,你正在使用LLM,你处于一种推动前沿的银河大脑级别,人们甚至不知道你正在使用LLM。所以体验差异很大。是的。是的。好吧。所以让我解释一下我说这句话的意思。所以如果你拿一个给定的棋盘,你可以找到多种到达它的方法。

你知道,你可以得到一个棋盘,这是因为两个国际象棋大师之间的一场正常比赛,你可以找到一系列荒谬的棋步,没有人会下这样的棋步,但实际上会让你到达棋盘状态。你知道,所以你做的就像逐个棋子一样。你说,好吧,骑士在g3。所以我将要做的是,我先将白骑士移动到任何随机位置,然后将其放在g3。好吧,现在我知道主教在,你知道,无论什么,h2。我会找到一种方法将兵移开,然后将主教放在h2。

你可以想出一个一系列荒谬的棋步,最终到达正确的棋盘状态,然后你可以问模型,“现在走一步棋。”好吧,然后会发生什么?模型走了一步有效的棋步。尽管如此,大多数时候它知道棋盘状态是什么样的,但它走的棋步非常非常奇怪。

这就像一个非常奇怪的棋步。为什么?因为模型被训练做什么?模型从未被告知国际象棋游戏的目的是获胜。模型被告知,制作与你之前看到的东西类似的东西。它看到了一系列棋步,看起来像是两个人等级为负50的人在下一盘国际象棋。它就像,好吧,我想游戏就是走有效的棋步,看看会发生什么。他们非常擅长这样做。你可以通过合成的方式做到这一点。

你还可以做的是,你可以找到一些明确的例子,你只需要让模型做出糟糕的移动决策,因为这就是人们在玩游戏时通常会做的事情。而且,你知道,大多数人都落入了这个陷阱。而我被建模为……

像训练数据的样子一样下棋,所以我猜我应该落入这个陷阱。这些模型的一个问题是,它们最初并没有被训练成为了获胜而下棋。现在,至于这如何应用于我们使用的实际语言模型,我们几乎总是使用RLHF和SFT指令微调等方法对模型进行后训练。我们这样做的一个重要原因是

这样我们就不必处理模型最初训练的内容与我们实际想要使用它的目的之间的不匹配。这就是为什么GPT-3非常难以使用,而一系列指令论文非常重要的原因,因为它利用了模型在幕后拥有的能力,并使它们更容易重现。因此,当你今天使用许多聊天模型时,大多数时候,你几乎不必担心

你如何提出问题,因为有了这个,它们被设计成即使你问愚蠢的问题也能给你正确的答案。但我认为它们仍然有一些这样的问题。但我认为,如果你只是拥有在任何碰巧被训练的数据上进行训练的原始基础模型,那么这种情况可能比你少。

是的,我很想对我们的LHF进行一个小小的偏离,因为我昨天与Cohe的Max谈过话。他们做了一些令人惊叹的研究,谈论了,你知道,这种偏好引导是如何工作的。他们说,人类实际上真的很糟糕,就像区分一件好东西和另一件东西一样,你知道。所以我们喜欢自信。我们喜欢冗长。我们喜欢复杂性。例如,

我真的很讨厌chat GPT模型,因为它风格的原因。我受不了这种风格。所以即使它是对的,我认为它是错的。当我们在语言模型上进行这种后训练时,这会如何影响能力?

我不知道。是的,我的意思是,我觉得很难回答其中一些问题,因为通常你无法访问模型在后训练之前的样子。你可以查看论文中的这些数字。例如,在GPT-4技术报告中,其中一份报告中,他们有一些数字表明,在后训练之前的模型,也就是原始基础模型,是经过良好校准的。这意味着当……

它以某种概率给出答案时,它在该概率的时间内是正确的。所以如果它说,你知道,如果你问一个数学问题,它说答案是五,而标记概率是30%,那么它在约30%的时间内是正确的。但是当你进行后训练过程时,校准就会变得一团糟

它不再具有这种行为。所以我喜欢有些事情会改变。当你进行后训练时,你通常可以拥有变得非常好的模型,因为现在它们更好地遵循指令。你并没有真正教给模型多少新东西,但它看起来更聪明了。是的,我认为这一切都是一件非常令人困惑的事情。我不太了解所有这些东西是如何结合在一起的。

这些模型,它们走有效的棋步,它们看起来很称职,但有时它们会有一些灾难性的奇怪故障模式。我们是否称这个过程为推理?我非常反对赋予意图性,或者我不希望……每个人对推理的理解都不同。

因此,推理是什么这个问题的答案完全取决于你如何定义推理。你会发现一些人非常坚持这样的观点:我认为模型并不聪明,我认为它们不好,它们无法解决我的问题。因此他们说,不,这不是推理,因为对我来说,推理意味着……然后他们给出一个排斥语言模型的定义。

然后你问一个非常相信AGI的人,语言模型将解决一切问题。到2027年,它们将取代所有人类的工作。你问他们,什么是推理?他们会说推理是模型正在执行的任何过程。然后他们告诉你,是的,它们在推理。所以我认为很难谈论它是否真的是推理。我认为我们可以谈论的是输入行为是什么?

而且,你知道,模型是否做了能够回答问题、解决任务并在某种程度上具有挑战性的事情?而且,它做对了吗?然后我们可以从那里开始。我认为这是一种比赋予模型意图性更容易尝试回答这些问题的方法。就像,我不知道,当你一开始没有相同的定义时,与人们进行这些辩论真的很难。是的。

我知道我对此真的很矛盾,因为正如你所说,通货紧缩的方法论是输入输出映射。你可以更进一步。所以Benjo说推理基本上是知识加推理,你知道,在某种,某种概率意义上。而且,

我认为这是关于知识获取或知识的重新组合。然后是代理,对吧?你知道,简单的形式就像,你知道,一个自动机。就像,你知道,你有一个环境,你有一些计算,你有一个动作空间,它就是这样,你知道,但我觉得在定义中加入自主性、涌现性和意图性是必要的。但你可以争辩说,你为什么要说所有这些词?如果它做了这件事,那么它就做了这件事。

是的,这就是我的感受。我的意思是,我认为考虑这一点非常有趣,比如,这是推理吗?如果你有哲学背景,这就是你的目标。我没有。所以我感觉我没有资格告诉你模型是否在推理。我觉得我能做的事情是说……

这就是你如何使用模型。你想让它执行这种行为。让我们检查一下。它执行了该行为吗?是或否。如果事实证明它在所有情况下都做对了,我不知道我是否太关心模型是否通过推理到达那里,或者它使用了查找表。就像如果它每次都给我正确的答案一样,就像,

我不知道。我倾向于不太关注它是如何到达那里的。

我们有一种根深蒂固的感觉,即我们具有简约性和鲁棒性。例如,在这个国际象棋符号中,如果你改变了符号的语法,它可能会崩溃,对吧?是的。有多种国际象棋符号。我试过这个。所以在我们使用的当前符号之前,在旧的国际象棋书中,符号就像,你知道,

你知道,国王的象主教移动到,比如,你知道,到王后三,无论什么,就像那样,你只是以不同的方式编号方格。如果你用这种符号问一个模型,它不知道发生了什么,它会写一些看起来像表面层次的东西,比如一系列移动,但与正确的棋盘状态无关。当然,是的,如果你要求他们产生一系列移动,人类不会这样做,就像他们一样,这将花费我很长时间

记住哪些方格,哪些东西,如何写下这些东西。我必须更努力地思考。但我理解棋盘是什么,我可以做到这一点。而模型现在做不到这一点。所以这可能是你对推理的定义,你说推理没有发生。但其他人可能会说,你为什么期望模型概括它从未见过的事情?这对我来说很有趣

我们已经从一个我们撰写论文来论述这样一个事实的世界转变为:如果你在一个模型上训练ImageNet,那么,好吧,显然它会有这种故障模式,即当你破坏图像时,准确性会下降,或者你不能,比如,假设我七年前写了一篇论文。我在ImageNet上训练了我的模型,并在CIFAR-10上对其进行了测试。它不起作用。这个模型是不是很糟糕?人们会嘲笑你。就像,好吧,当然,你在ImageNet上训练了它,一个分布。你在不同的分布上对其进行了测试。你从未要求它进行泛化。

它没有做到。干得好。当然它没有解决这个问题。但是今天我们对语言模型做了什么?我们在一个分布上训练它们,在有时没有在上面训练的不同分布上测试它们,然后我们嘲笑这个模型,就像,“它是不是很蠢?”它就像,“好吧,是的,你没有在上面训练它。”也许未来的某个模型,你可以拥有这样一个事实,即它可以神奇地在各个领域进行泛化,但我们仍在使用机器学习。你需要在想要测试它的那种数据上对其进行训练,然后它才会比你没有这样做时表现得更好。

所以在给我的一封电子邮件中,你说了一些话,你没有使用这些确切的词,但你说有很多例子让你感觉有点菜,因为你做了一个陈述,你知道,你的直觉是你有点怀疑。你说有随机鹦鹉,然后你被证明很多次都是错的。对我来说也是一样。现在,一种观点是,你知道,Rich Sutton,你只需要向它投入更多的数据和计算。而另一种观点是,我们需要完全不同的方法。我的意思是,你是否仍然赞同这样一个观点,即仅仅扩大这些东西的规模就能做到我们正在谈论的那种推理?

可能吧。是的,对。所以我觉得有些人对未来可能是什么样子有很好的设想。然后有些人像我一样,只是看看世界是什么样子,然后尝试说,好吧,让我们在这里做一些有趣的工作。我觉得这对我来说很有效,因为特别是对于安全来说,它实际上只重要……

如果人们正在做攻击某事物的事情。所以我认为,我们可以看看关于世界哪些是真实的,然后撰写安全论文。如果世界发生了重大变化,我们可以尝试改变。我们可以尝试提前几年预测事情的发展方向,以便我们可以提前做好安全准备。但是,由于我所处的领域,我倾向于不花太多时间去思考,比如,未来遥远的地方会是什么样子,对吧?

我认为很多人都在尝试这样做,有些人擅长,有些人则不擅长。我没有证据表明我擅长。所以我尽量根据我现在能观察到的东西进行推理。如果我能观察到的东西发生了变化,那么我应该改变我对这些事情的想法,并采取不同的行动。这就是我能期望的最好的结果。

关于国际象棋这件事,有人研究过吗,你知道,就像国际象棋记谱法的标题一样,你可以说这位棋手ELO等级为2500或类似的数值。我想首先要问的是,你是否看到了一些相应的,你知道的,性能变化?但是,如果你说ELO等级为4000会发生什么?是的。

是的。我们实际上已经训练了一些模型来尝试这样做。效果不太好。就像你不能轻易地……至少,是的。如果你只是改变数字,我们自己也训练了一些模型,这些模型的标题我们预计会有更好的机会做到这一点,但它并没有直接带来这种即时的胜利,这再次说明……

我不擅长训练模型。其他知道自己在做什么的人可能能够让它具有这种行为,但是当我们训练它以及当我们测试3.5 Termo Instruct时,它可能在结果上存在统计上的显著差异,但这远不是说……

人们非常努力地试图训练能够让你将技能与任意级别匹配的模型,这就像研究论文级别的任务,而不仅仅是改变标题上的三个数字并寄希望于最好的结果,对吧?所以你写了另一篇文章,叫做《我为什么攻击》,你提到你喜欢攻击系统是为了解决难题的乐趣,而不是出于利他主义的原因,你能告诉我更多关于这方面的信息吗?但同时,你为什么写这篇文章呢?

是的,好的。好的,让我按你提问的相反顺序来回答。所以我为什么写这篇文章呢?有些人因为我破坏了防御而生气。他们说我不关心人类,我只是,我不知道,想让他们难堪之类的。而这个说法有一半是真的。是的。

我做安全工作不是因为我受“我想做最大的善事,因此我将考虑我能做的所有职业,并尝试找到最有可能拯救最多生命的职业”的驱动。如果我那样做了,我可能会,我不知道,成为一名医生之类的。实际上,它能立即帮助人们。你可以研究癌症。找到你想要的任何领域,在那里你可以……

衡量最大的善事。我不觉得这些事情很有趣。我无法激励自己去做。所以,如果我是另一个人,也许我可以做到。也许我可以成为一个能够通过说“我每天早上醒来都知道我正在拯救生命”之类的话来有意义地解决生物学中具有挑战性问题的人。

但这不是我的工作方式。我觉得这也不是很多人的工作方式。你知道,很多人我觉得在计算机科学领域,或者你甚至想在量化领域走得更远,在那里你显然很聪明,你可以用你的生活做更多更好的事情。他们中的一些人可能真的只是如果他们做一些他们真的不喜欢的事情,就会完全没有生产力。

找到任何乐趣。所以我认为我尝试做的事情是,好的,找到你能激励自己去做的事情,并且,像,会做得非常好的事情,然后尽可能好地解决这些问题,前提是,像,你实际上是在积极地推动事情向前发展。而且……

出于某种原因,我一直喜欢攻击事物,我觉得我在这方面比其他任何事情都好得多。我觉得我非常擅长对抗性机器学习方面的工作,但我没有证据表明我会擅长其他……

你知道,世界上存在的90%的事情可能会做得更好。所以,我不知道,我思考这个问题的方式,也许一句话就是,你擅长某件事的程度,乘以这件事的重要性。你试图……

最大化这个乘积,如果你真的擅长某件事,并且至少在方向上推动事情朝着正确的方向发展,那么你就能产生比选择任何碰巧是最大善事并且以非常小的幅度推动事情向前发展的领域更大的影响。这就是我进行攻击的原因,因为我觉得它们通常会推动事情向前发展,而且我觉得我比我能做的其他大多数事情都要好。

现在,你还说攻击通常比防御更容易。当然。告诉我更多。我的意思是,这是安全领域的一般情况。你需要找到一个有效的攻击,如果你在防御,你需要修复所有攻击。所以如果你在攻击某事物……

我唯一需要做的就是找到一个你忘记处理某个极端情况的地方,我可以安排对手根据需要多次攻击该地方,直到他们成功。这就是你拥有普通软件安全性的原因。除了只有一行代码之外,你可能拥有一个完美的程序,

在那里你只忘记检查一次边界。这意味着什么?攻击者会让这种情况每次都发生,而你的产品的安全性基本上为零。

在随机设置下,这种情况永远不会发生。文件哈希值恰好是某个幂,例如,等于2的32次方,这会使整数溢出,从而导致坏事发生,这种情况不会随机发生,但攻击者可以安排这种情况每次都发生,这意味着攻击者比防御者容易得多,防御者必须修复所有问题。

像这样,然后在机器学习中情况变得更糟。因为至少在正常的安全性和软件安全性或其他领域,我们了解攻击的类别。在机器学习中,我们不断发现可能发生的新类型的坏事。因此,你不仅必须对我们已知的事情具有鲁棒性,

你还必须对有人提出我们甚至以前从未想到过的新型巧妙攻击具有鲁棒性,并且在那里也具有鲁棒性。这并不是因为……我的意思是,这是一个非常新的领域。因此,当然,这些攻击比防御要容易得多。让我们谈谈披露规范。现在我们身处机器学习领域,它们应该如何改变?好的,是的。所以在标准的软件安全中,我们基本上已经弄清楚了事情应该如何进行。所以很长一段时间,

你知道,20年来,在有人发现软件中可以被利用的错误时应该做什么方面,存在很大的来回讨论,比如说,我不知道,90年代末,2000年代初,有些人支持完全披露,他们认为,我发现程序中存在错误,我应该怎么做?我应该告诉每个人,这样我们才能确保人们不会犯类似的错误,我们可以向这个人施压,让他们修复它并做所有这些事情。

然后有些人支持,比如,不要披露任何信息。比如,你应该将错误报告给负责人,然后等待他们修复它。然后你不应该告诉任何人。因为,你知道,这是他们犯的一个错误,你不想给其他人,任何其他人提供如何利用的思路。

在软件安全中,我们最终确定了这种被称为负责任披露,现在被称为协调披露的方法,其理念是,如果你影响到一个人,你应该提前合理地通知这个人一段时间。例如,Google Project Zero 有一项 90 天的政策,你有这么多天的时间来修复你的东西。

然后在那之后,或者一旦修复之后,它就会发布给所有人。这里在正常的安全中的想法是,你给这个人一些时间来保护他们的用户。你不想立即披露一些新的攻击,这些攻击会让人们造成很大的伤害。但是你设定了一个截止日期,并且你坚持截止日期来向公司施压,让他们真正修复这个问题。

因为如果你不说你会公开发布信息,通常会发生什么情况呢?没有人知道这件事。只有你知道这个漏洞。他们只是不会去做,因为他们的业务是制作产品,而不是修复错误。那么,如果没有人知道这件事,他们为什么要修复它呢?所以当你这么说,不,这将在 90 天后上线,你最好在那之前修复它,他们有时间。这就像现在如果他们不做,那就是他们的责任,因为他们只是没有付出努力来修复这个问题。当然也有例外。你知道,

幽灵和熔断是过去 10 年、20 年软件安全领域最常见的漏洞之一,也是最大的攻击之一。他们给了英特尔和相关人员一年时间来修复这个问题,因为这是一个非常重要的错误。这是一个很难修复的错误。有充分的理由说明你应该这样做。有充分的证据表明,坏人很长一段时间内可能不会独立发现它。所以他们给了他们很长时间来修复它。

同样,Google Project Zero 也表示,如果他们发现有证据表明该错误正在被积极利用,他们会给你七天时间。如果有人正在积极利用它,那么在你修复之前,他们会有七天时间,因为伤害已经造成。所以他们不妨告诉每个人正在造成的伤害,因为如果他们不这样做,那么只会延迟事情。

有了这么长的开场白,机器学习方面的情况应该如何改变?简短的回答是我不知道,因为一方面,我想说这就像软件安全中的情况一样。有时就是这样,有人在他们的软件中有一些错误,并且存在一种方法可以让他们修补并修复问题。

在许多情况下,这种情况确实发生了。例如,我们最近撰写了一些论文,其中我们展示了如何进行一些模型窃取工作。所以 OpenAI 有一个模型,我们可以查询 OpenAI 服务,并允许我们窃取他们模型的一部分。只有一小部分,但我们可以窃取一部分。所以我们向他们披露了这一点,因为有一种方法可以让他们修复它。他们可以对 API 进行更改以防止此攻击起作用,然后我们撰写论文并将其发布到网上。

这感觉非常像软件安全。另一方面,还有一些其他类型的问题,这些问题不是你可以修补的类型。让我们从最广泛的意义上考虑对抗性示例。如果我向你披露,这是一个关于你的图像分类器的对抗性示例。像,

在这里进行负责任披露期的意义何在?因为在短期内你无法修复这个问题。就像我们一直在尝试解决这个问题十年了。再过 90 天也不会对你有什么帮助。也许我会出于礼貌告诉你,这就是我正在做的事情。我将撰写这篇论文。这就是我将如何描述它。你想提前设置一些过滤器以防止这种特定攻击起作用吗?但你不会解决根本问题。

当我与从事生物学工作的人交谈时,他们提出的论点是,假设有人想出了一种创造某种新型病原体的方法。披露期在这里帮不了你。那么它更像那样吗?还是更像软件安全?我不知道。我更偏向于软件安全,因为这就是我来自的地方。但很难确切地说我们应该效仿哪一个。我认为我们可能确实需要制定新的规范来处理这些问题。

我认识很多人都在谈论这个问题,试图将这些东西写下来。我认为在一两年后,如果你再次问我这个问题,我们将会有既定的流程。我们将制定处理这些问题的既定规范。现在,我认为这还处于非常早期的阶段。现在我们只是在其他领域寻找类比,并试图找出最有可能好的方法。但我现在还没有一个好的答案给你。是的。你有没有决定不追求某些漏洞出于伦理原因?

没有,我想不出来。但我认为主要是因为我倾向于只考虑首先在道德上可以接受的漏洞。所以我只是喜欢,我可能会偶然发现这个,但我倾向于,我喜欢,我认为研究想法,在某些情况下,研究想法只是通过随机灵感产生的。

然而,大多数时候,研究想法并不是偶然发生的。就像你已经花费了有意识的努力来弄清楚我要尝试做的新的事情是什么。我认为很容易不去考虑那些看起来道德上令人不安的事情,而只是专注于那些看起来实际上有潜力变得良好和有用的事情。但是……

是的,很有可能在某个时候会发生这种情况,但这并不是我……我想不出我们发现的任何我们决定不发布的攻击的例子,因为它们会造成的危害。但我可以想象这可能是一件

我不能排除这不会发生的事情,但我倾向于将我对问题的搜索偏向我认为实际上有益的事情。也许回到我为什么攻击事物

你希望你擅长程度和它对人类的益处程度的乘积最大化。你可以选择你所从事的问题,而不是那些消极的问题。我不太尊重那些对世界善良程度只是负数的人。你可以选择至少让它为零,什么也不做。我试图选择我认为总体上是积极的问题,然后

在这些问题中,是的,在这些问题上做得尽可能好。所以你从事传统安全和演示安全工作。有什么显著区别吗?是的,好的,我不再从事太多传统安全工作了。所以我开始我的博士学位是在传统安全领域。是的,我就像,我做了非常非常底层的返回结束编程。我在英特尔实习了一个夏天,做了一些硬件级别的防御工作。是的。

然后我很快就开始学习机器学习了。所以我在过去,让我们说,七八年的时间里,没有从事过非常传统的安全工作。但是是的,我仍然非常密切地关注它。我仍然一直参加系统安全会议,因为我认为这是一个很棒的社区。但是是的,异同是什么?我觉得系统安全人员非常擅长……

真正确保他们正在做的事情是一件非常严格的事情,并对其进行了非常彻底和适当的评估。你甚至可以在论文的长度中看到这一点。所以一篇系统安全论文

大约有 13 页、14 页长,两栏。提交给 iClear 的论文大约有七页或八页,一栏。系统安全论文都会以对正在发生的事情的非常长的解释开始。预期结果将非常严格地完成。机器学习论文通常是,这是一个新的酷炫的想法,也许它有效。

这对于,你知道,快速行动和打破常规来说是好的。这对于真正系统的研究来说是不好的。你知道,当我撰写系统安全论文时,我每年会得到大约一到一篇半,两篇。现在,类似的事情,我可能可以用机器学习论文做到,你知道,你可能可以做到五到六篇,或者达到同样的严格程度。所以我认为这就像,在我看来,也许最大的事情是……

是的,这里的一些想法,就像,这是对社区的有意识的决定,对吧?我认为这在机器学习领域已经得到了经验上的证明。如果机器学习中的每个研究结果都需要具有你对系统论文所期望的那种严谨性,那将是不好的,因为我们总共只有五个迭代周期,对吧?

而且,你知道,在机器学习会议上,你经常会看到论文,改进论文的论文,然后改进该论文的论文都在同一个会议上,因为第一个人将其发布在 archive 上,下一个人找到了改进它的调整,第三个人找到了使其变得更好的调整。这很好。你知道,当一个领域非常新的时候,你想让人们快速提出他们没有充分证据或,你知道,证据有效的想法。当它感觉更成熟时,你想确保人们不会只是提出过去已经提出过 30 次的疯狂想法,而且他们不知道它是否有效。

所以我认为在两者之间取得某种平衡和混合是有用的。我认为,这也许是我看到的最大的区别。这,我想……

也许如果我在机器学习领域有一些差异化的优势,我认为其中一部分来自这一点,在系统中,你接受了这种严谨思维的非常严格的训练,以及如何非常彻底地进行攻击,查看所有细节。当你进行安全工作时,这就是你需要做的。所以我认为这种训练对我撰写机器学习论文、思考所有细节以使这些要点正确非常有益,因为,你知道,

我最近有一篇论文,我打破某种防御的方式以及事物崩溃的方式是因为负号在错误的位置。就像,这不像我能从第一性原理推断代码那样的事情。如果我当时正在指导某人,就像我不知道我会如何告诉他们检查所有负号。就像,你不知道,就像你只是喜欢,

你应该做的是这个。你应该了解正在发生的一切,并找到犯错的地方,以便你可以通过做一件正确的事情来打破它。这也许是我看到的这两个社区之间最大的区别。下一篇文章。

它被称为《我为什么使用人工智能》。大约几个月前你写了这篇文章。你提到你一直在使用语言模型。你发现它们非常有用。它们将你的编程效率提高了大约 50%。我自己也可以这么说。也许我们从这里开始。你能具体分解一下哪些任务真正提高了你的效率吗?我不是相信这些事情的人。我不……

有些人他们的工作是炒作事情,他们的工作是让这些事情引起关注。我觉得让我感到恼火的是,这些人,同样的人,你知道,比特币将改变世界,等等,等等。一旦语言模型出现,他们都会说,语言模型将改变世界。它们非常有用,等等,等等。问题是,如果你只是从远处观察,你

看起来你看到的是那些骗子正在寻找新的东西。他们是这样做的,对吧?这就是他们在做的事情。这些人对世界上发生的事情一无所知。他们试图找到任何能让他们获得点击的新事物。但与此同时,我认为我们现在拥有的模型实际上是有用的。

它们并非像人们所说的那样对许多事情都有用。但对于特定类型的人来说,那些了解这些模型中正在发生的事情、知道如何编码并能够检查输出的人来说,它们是有用的。所以我想说的是,我不会试图争论说

它们对每个人都有用,但我想说,这是一个 n 等于 1 的我的轶事,我认为它们对我来说是有用的,如果你有类似于我的背景,那么它们可能对你也有用。我有一些安全类型的人联系我说,感谢你写这篇文章,它们对我很有用,是的。现在有一个问题是,我的经验是否可以推广到其他人?

我不知道。这不是我的工作去尝试理解这一点。但至少我想说的是,是的,它们对像我这样的人有用。好的,现在,它们为什么有用?我们现在拥有的当前模型足够好,以至于在我想要答案这个问题的那些情况下,无论是为我编写这个函数还是其他什么,做这个,我知道如何检查它。

我知道我可以得到答案。这就像我知道如何做的事情,我只是不想做。我认为最有用的是类比,想象一下,你必须用 C 语言或汇编语言编写所有程序。这会让你无法做你现在能做的事情吗?不,可能不会。如果你真的必须,你可以用 C 语言而不是 Python 完成所有相同的研究结果。

这会花费你更长的时间,因为你的脑海中有一个想法。我想实现一些微不足道的东西,一些二分查找之类的东西。然后在 C 语言中,你必须开始推理指针和内存分配以及所有这些比你想要解决的问题低得多的细节。我认为语言模型有用的地方是,如果你知道你想要解决的问题,并且你可以检查答案是否正确,

那么你可以直接要求模型为你实现你想要的东西,用你想要输入的词语,这些词语并不是很好定义。

然后它会给你答案,你可以检查它是否正确,然后将其放入你的代码中,然后继续解决你想要解决的问题,而不是你必须做的事情才能实际输入所有细节。我认为这是我发现有用的最大类别。而我发现有用的另一类情况是,你依赖于模型对世界拥有巨大知识的事实

以及各种各样的东西。如果你理解基础知识,但是,我不知道这个东西的 API。就像,

让这个东西在 API 下工作,我可以轻松地进行技术检查,或者我不理解如何在某种特定语言中编写某些东西,给我代码。如果你给我任何语言的代码,即使我以前从未见过,我基本上可以推断它在做什么。我可能会在边界附近犯错误,但我永远无法输入它,因为我不知道语法,等等。模型非常擅长提供正确的语法

并且只是让其他所有事情都消失,然后我可以……

弄清楚其余部分如何做到这一点。如果我不能问模型,我本应该学习该语言的语法来输入所有内容,或者像五年前人们所做的那样,从 Stack Overflow 复制粘贴其他人的代码来进行注释。这只是直接询问模型的更糟糕的版本,因为我现在依赖于什么也不知道的我进行复制粘贴。所以这就是我的观点,对于这些类型的问题,它们目前

如果你已经理解了,我的意思是抽象的理解,那么它们非常有用,这解释了为什么,你知道,你越聪明,你实际上就能从语言模型中获得越多,但是你的使用方法是如何随着时间的推移而演变的,你的方法是什么?我的意思是,就我个人而言,我知道具体性很重要,所以要参考源材料并构建提示,将我的理解和推理过程融入提示中,你是如何考虑这个问题的?

是的,我想我会尝试提出我认为有合理概率有效的问题。我不会提出我认为会减慢我的速度的问题。但是如果我认为它有,你知道,50% 的机会有效,我会先问模型。然后我会查看输出,看看,像,这在方向上看起来是否正确?如果它看起来在方向上,它可能正在接近正确类型的解决方案,

然后我可能会再迭代几次。如果它第一次就给了我一个完美的解决方案,那就太好了,我接受它。然后我学习,好吧,模型不太擅长这种问题。我以后就不会再问了。所以我觉得有些人说他们无法让模型为他们做任何有用的事情。是的,模型可能真的不擅长某种特定类型的问题。也可能只是你还不了解模型能做什么。你知道,我认为大多数人,今天都忘记了他们要学习多少关于如何使用谷歌搜索的知识。你知道,像今天的人们一样,如果我让你查找一些东西,就像你一样,你隐含地知道你应该查找东西的方法是使用答案中出现的词语。不要,你不喜欢把它作为一个问题来问。就像你有点,你输入搜索引擎的方式来得到正确的答案。

这需要一定程度的技巧和对如何可靠地在线查找答案的理解。我觉得语言模型也是一样。它们有一个自然语言界面。所以从技术上讲,你可以输入任何你想要的东西。有些方法比其他方法更有用。我不知道如何将这作为一项技能来教授,除了说,

尝试一下,也许事实证明它们不擅长你的任务,然后就不要使用它们。但是,如果你能够使它们有用,那么这似乎是一个免费的生产力提升。但这是一种情况,再次提醒一下,你必须对这些事情的实际情况有所了解,因为有些人没有,我觉得他们可以尝试做类似的事情。

然后我担心,你知道,比如,你会学到什么吗?当出现错误时,你不会发现错误。从这个角度来看,我担心各种各样的问题。但对于想要完成工作的实践者来说,我觉得就像我不会说你需要使用 C 而不是 Python 一样,我不会说你需要只使用 Python 而不是 Python 加语言模型。是的。

是的,是的。我同意懒惰和顺从是一个问题。氛围和直觉非常重要。我的意思是,我认为自己是使用大型语言模型的绝地武士。有时这让我感到沮丧,因为我对人们说,哦,只使用大型语言模型。我似乎能够从大型语言模型中获得比其他人多得多的东西。我不完全确定这是为什么。也许只是因为我理解我正在提示的东西,或者类似的东西。但这似乎是我们需要学习的东西。

是的,我的意思是,每当出现一个新工具时,你都必须花一些时间,你知道,我记得当人们说,真正的程序员用 C 编写代码,而不是用高级语言编写代码时。你为什么要相信垃圾收集器能做好工作?真正的程序员自己管理内存。

真正的程序员编写他们自己的 Python,你为什么要相信语言模型会输出正确的代码?你为什么要相信它能够拥有这种回忆?真正的程序员理解 API,不需要查阅参考手册,我的意思是,你可以在这里画出相同的类比,是的,不,我认为这是当工具发生变化并使你能够在某些环境中提高生产力时,你应该愿意查看它们并使用新工具的情况。

我知道我一直在试图合理化这一点,因为它归结于这样一个概念,即智能是在提示者的眼中吗?这重要吗?这可能是我使用这些东西与人们的区别,它让我更有生产力并为我解决了任务。是我加入了智慧吗?

也许吧。在许多情况下,我认为答案是否定的。在某些情况下,我认为答案是肯定的。但我不会这样看待它。我会把它看作是,它是否以对我有用的方式解决了我想解决的问题?我认为这里的答案绝对是肯定的。但是,我不知道如何以某种真实的方式回答这个问题。那么,作为一个安全研究人员,这如何影响你使用大型语言模型的方式呢?

哦,是的,这就是为什么我害怕那些将要使用它们而不理解它们的人,因为你要求他们为你编写一个加密函数,而答案应该是,“你不应该这样做。你应该调用这个 API。”而他们通常会说,“当然,你想让我编写加密函数吗?这是加密函数的答案。”它将包含每个人通常编写的所有错误,这将是可怕的。同样的事情也适用于……我写了一些调用数据库的随机内容。

模型做了什么?它编写了容易受到 SQL 注入攻击的内容。这太可怕了。如果有人不小心,他们就不会发现这一点。现在他们已经引入了各种各样的错误。因为我编程能力相当强,我可以阅读模型的输出,并纠正它犯错的地方。修复 SQL 注入并将字符串连接替换为模板并不难。模型只是没有正确地做到这一点。

是的,所以我非常担心那些不会这样做的人。已经有几篇论文表明,当人们不注意这些事情时,使用语言模型编写非常不安全的代码。是的,这是我担心的事情。看起来可能的情况是,当人们使用语言模型时,它更容易受到攻击,而不是当他们不使用时。是的,我认为这是一个很大的担忧。我认为我倾向于

考虑这个效用问题的原因通常只是从这样的角度出发,是的,人们实际使用的安全问题很重要。因此,我想知道人们将要做什么,这样你就可以撰写论文并研究人们实际上将要做什么。所以我觉得区分模型能否为我解决问题很重要?对于使用它的语言模型来说,答案通常是肯定的,它为常见情况提供了正确的答案。这意味着

大多数人并不关心安全问题。因此,他们无论如何都会使用它,因为它使他们能够做这件新事情,而不理解安全方面的问题。因此,这意味着我们应该围绕另一个问题进行安全工作,例如,我们知道人们将要使用这些东西,我们应该采取安全措施以确保安全存在,以便他们能够正确地使用它们。

因此,是的,我经常尝试使用那些处于人们接下来将要做的前沿的东西,只是为了尝试将自己置于他们的思维框架中并理解这一点。是的,这,这让我非常担心。因为是的,事情可能会变得非常糟糕。你如何以及何时验证大型语言模型的输出?与你输出相同的方式,我的意思是,这是另一件事。人们说,你知道,也许模型会出错,但是,

Stack Overflow 上的一半答案都是错误的。因此,如果你已经编程很长时间了,你习惯于阅读错误的代码,这并不是事实。我不会复制粘贴 Stack Overflow 上的某个函数并假设它是正确的,因为也许提问者提出的问题与我提出的问题不同。无论如何。我觉得当我验证语言模型代码的输出时,与当我验证我在网上其他地方找到的某个函数的输出时,我并没有做任何特别不同的事情。

也许唯一的区别是我更频繁地使用模型,因此我必须更仔细地检查,例如,如果你使用某物两次,那么如果你用某物重新定义错误,你将会有两倍的错误,因为你使用了它两次。因此,你必须更加小心。但我感觉我没有做任何在质量上特别不同的事情。只是……

不要相信它会给你正确的答案,并理解这样一个事实,即 95% 的解决方案仍然是 95% 的解决方案。你知道,你拿走它,它做了你想要做的几乎所有事情。然后就像它达到了它的能力极限一样好。你是一个聪明人。现在你完成了最后 5%,修复了任何问题。然后你获得了 20 倍的性能提升。

你在这里触及了一些非常有趣的东西,因为实际上我们大多数人大部分时间都是错的。这就是为什么拥有至少一个非常聪明的朋友真的很好,因为他们会不断指出你的东西出错的所有方式。大多数程序员,我的意思是,你的工作是指出事情出错的地方。我想我们总是不知不觉地处于错误的边缘。这就是世界运作的方式。是的,是的。所以……

我认为,是的,我认为存在一种可能性,即错误的数量可能会大幅增加,你知道,使用语言模型。就像,我认为,这就像,有很多事情可能会用语言模型出错或变得非常糟糕,你知道。它们的能力,你知道,以前可以编写的错误代码的数量,就像,受限于可以编写错误代码的人的数量。因为,像……

只有这么多人可以编写软件,你必须至少接受一些培训,所以你……数量……一定数量的错误代码。我担心的另一件事是,你知道,你有一些人看着这些人说模型可以解决你所有的问题,现在你有十倍的代码,从一个角度来看这很棒,因为任何人都可以编写他们需要解决特定问题的任何软件,这难道不是很好吗?这太棒了。

但与此同时,安全人员和我对此感到有点害怕,因为现在你有 10 倍的东西可能非常不安全。你将无法拥有——你没有 10 倍的安全专家来研究所有这些。就像,你将会有一个巨大的增长,以及一些潜在的未来。而且,你知道,这是我担心的事情之一,我认为——

我担心,这就是为什么我尝试使用这些东西来理解这似乎是人们会尝试做的事情吗?在我看来,答案是现在是的,这让我担心。

所以我昨天和一些谷歌的家伙谈过,他们一直在研究大型语言模型的一些故障模式。所以就像人们不知道的一些非常疯狂的事情一样。就像他们不能复制,他们不能计数,你知道,因为 softmax 和拓扑表示在这个特定的……大量的他们不能做的事情中被压缩。根据你的经验,你有没有注意到大型语言模型真正难以处理的某些任务?我相信有很多这样的任务。我已经学会了不要问那些问题。

所以我很难想出,你知道,同样的意义上,搜索引擎不擅长什么?你知道,我相信搜索引擎有很多事情完全是错误的答案。但是,如果我让你现在就回答这个问题,你会有点困难,因为你使用它们的方式就是它们擅长的事情。所以,是的,所以。所以所有这些事情,就像每当你想要,

在某种意义上,模型不是你的东西,例如,就它们特别不擅长的特定任务而言,我的意思是,当然你可以说任何需要某种东西的事情,如果它需要你超过你知道的 20 分钟来编写程序,那么模型可能无法做到这一点,但这就像这个问题一样,这正在改变,你知道,像,好吧,所以这就像另一件事一样,

有些事情我以前认为很难,但最终变得更容易了。我想要一个随机问题……

出于无关的原因,它就像一个很难解决的动态规划问题,我第一次做的时候花了大约两三个小时来解决……所以 oh one 几天前刚刚发布,我把这个问题给了 oh one,它给了我一个比我写的快 10 倍的实现,大约两分钟,所以我喜欢,而且我喜欢,我可以测试它,因为我有一个参考解决方案,而且它是正确的,而且它像,它

它就像,好吧,所以我现在已经了解了,这是我以前会认为的事情。我永远不会要求模型解决某些问题,因为这对我来说是一个具有挑战性的算法问题,我无法指望模型解决,而现在我可以了。但是还有一些事情对我来说似乎微不足道,但模型却弄错了,但我大多没有问过那些问题。但这就是为什么我想回到我担心的事情,我担心人们没有经验来检查答案是否正确,他们会

尽可能多地应用错误的答案,这似乎令人担忧。

是的,我的意思是,这是拟人化过程的一部分,因为我发现它很有趣,我认为,你知道,我们有氛围,我们有直觉,我们实际上知道,我们已经学会了回避故障模式,你知道,故障模式的长尾。我们只是在我们对语言模型的监督使用中将其转移。令人惊奇的是,我们似乎没有意识到这一点。是的,但是程序员一直都在这样做,对吧?就像你有一种语言,这种语言有……

假设你是一个编写 Rust 的人。Rust 有一个非常非常奇怪的内存模型。如果你去找一个非常擅长编写 Rust 的人,他们会以不同的方式构建程序,这样他们就不会遇到所有问题,因为你有了这个奇怪的内存模型。

但是如果我这样做,我不太擅长 Rust。我尝试使用它,我尝试用 Rust 编写我的 C 代码,借用检查器一直对我大喊大叫,我无法编写我的程序。我看了一眼 Rust,然后说,如果我不表示赞同,我会说,

为什么有人会使用这个?不可能用 Rust 编写我的 C 代码。你应该拥有所有这些不错的保证,但是不,你必须改变你编写代码的方式才能改变你的思维框架,然后问题就会消失。你可以做所有美好的事情,只要接受你应该操作的范式,事情就会进展得非常好。

我在这里看到一些类似的类比,模型在某些方面不太好,你试图想象它是一个人,并向它询问你将询问另一个人的问题,但它不是。你需要以正确的方式询问它,提出正确的问题,然后你就可以获得价值。如果你不这样做,你最终会非常失望,因为它不是超人。你对基准测试有什么看法?好的,是的,我在这里有一些想法。

我认为,这是语言模型的问题。我们过去生活在一个基准测试非常容易的世界,因为我们希望模型能够解决一项确切的任务。所以你要做的就是在该任务上对其进行测量,看看它能否解决该任务?答案是肯定的。所以太好了,你已经解决了。问题是,这项任务从来都不是我们真正关心的任务。这就是为什么没有人使用模型。

没有 ImageNet 模型曾经进入现实世界来解决实际问题,因为我们根本不关心对 200 个不同品种的狗进行分类。模型可能擅长这一点,但这并不是我们真正想要的东西。我们想要一些不同的东西。当时说 ImageNet 模型无法解决我在现实世界中真正关心的这项实际任务是荒谬的,因为当然,它不是为此而训练的。语言模型……

人们对语言模型的声明以及训练它们的人的声明是,“我将训练这个通用的模型来解决任意任务。”然后他们会在少量任务上对其进行测试,并说,“看,它很好,因为它可以很好地解决这些任务。”这里的挑战是,如果我训练一个模型来解决其中任何一项特定任务,我可能会得到非常好的分数。挑战在于

你不想让训练模型的人这样做。你希望他们只是训练一个好的模型,并将其用作一个独立的,你知道,这是一个你可以训练模型的任务,你可以对模型进行评估,完全独立于最初的训练目标,以便获得对模型性能的无偏见看法。但是训练模型的人有动机让他们在基准测试中表现良好。而在旧世界里,你知道,

我相信研究人员不会作弊。所以,假设我想获得最大的 ImageNet 测试准确率。原则上,我可以对测试集进行训练。但这就像作弊一样。你不会在测试集上进行训练。所以我相信人们不会这样做。但是假设我给你一个语言模型,我想在编码方面对其进行评估,我将使用,你知道,一个糟糕的基准,但人类评估,无论如何。我将使用 MMLU。我将使用 MMMU,无论坏情况是什么。

我可能实际上并没有在这些东西的测试集上训练模型,但我实际上可能会特别训练我的模型以在这些基准测试中表现良好。因此,你可能有一个模型,它总体上能力不强,但在人们使用的这 20 个特定基准测试中,它表现出色。这就是每个人的动机,因为你希望你的模型在基准测试中获得最高分。所以我认为……

我希望生活在一个基准测试多得多的世界里。这样你就不会轻易做到这一点。你可以更容易地相信这些模型会给你正确的答案。但它们以某种方式准确地反映了它们的技能水平,这种方式不是由模型训练者设计的,以最大限度地提高分数。

所以目前,你知道,像超大规模公司一样,他们投入了大量的工作进行基准测试等等。现在我们正转向一个拥有测试时间推理、测试时间主动微调的世界,你知道,人们正在进行微调、量化、碎片化等等。许多在实践中这样做的人实际上无法以同样的方式进行基准测试。你认为这将如何发展?我不知道。我觉得如果你正在进行量化之类的事情,

祝你好运。我不知道。测试这些东西似乎非常困难。你可以使用平均基准并寄希望于最好,但我不会。我觉得我更担心的是那些积极微调模型的人

以证明他们可以在某些任务上使模型更好。例如,你有很多 Lama 的微调版本。据称它们更好。他们会展示所有基准数字。结果发现,他们所做的只是真正训练模型以在这些特定任务上表现良好。如果你问他们其他任何事情,他们都很糟糕。我认为这是我更担心的事情。但是,对于其他情况,我不知道。我同意这很难,但我没有任何很好的……

解决方案。没关系。在我们谈论你的一篇实际论文之前,我不能让你走,因为我的意思是,谈论一般性的事情已经很棒了,但我决定选择这篇论文,窃取生产语言模型的一部分。所以这是七月份的。你能给我们做一个简短的介绍吗?很长一段时间以来,当我们在安全领域撰写论文时,我们所做的是考虑模型如何在某个假设的未来被使用,

然后说,好吧,也许我们有一些可能的攻击类型。让我们尝试在一个理论环境中展示,这是一件可能发生的不好的事情。因此,有一系列工作被称为模型窃取,它试图回答这个问题,是否有人可以获取你拥有的模型,并且只是通过向你的 API 发出标准查询来窃取它的副本?

这始于 2016 年 Florian Tremer 和其他人,他们在非常非常简单的线性模型上通过 API 进行了这项工作。然后它成为人们开始在深度神经网络上研究的事情。随后是一系列其他人的论文。然后在 2020 年,我们撰写了一篇发表在 Crypto 上的论文,其中说,好吧,这里有一种方法可以窃取你的模型的精确副本。

无论你有什么模型,我都可以获得一个精确的副本。只要你有一长串假设,它只使用值激活。整个过程都在浮点 64 中进行评估。我可以输入浮点 64 值,我可以查看浮点 64 值输出。该模型仅完全连接。它的深度不大于 3。在任何给定层上,它的宽度不超过 32 个单元。它只是一长串在实践中永远不会为真的东西。

但这是一个非常酷的理论结果。还有其他此类论文展示了如何做到这一点,我窃取了你的模型的精确副本,但它只在这些真正人为设计的环境中有效。这就是为什么我们将这篇论文提交给 Crypto,因为它们拥有所有这些类型的理论结果,这些结果非常酷,但在许多方面并不立即实用。

然后有一系列工作继续扩展了这一点。我想回答的问题是,现在我们有了这些语言模型,

如果我列出所有假设,所有假设都是错误的。它不仅仅是 ReLU 激活。它不仅仅是完全连接的。我无法发送浮点 64 输入。我无法查看浮点 64 输出。它们就像数十亿个神经元,而不是 500 个。所以所有这些都不真实。所以我想要回答这个问题,我们能想出的最好的攻击是什么,我实际上可以在现实 API 上实现?

所以这就是我们试图做的。我们试图想出针对我们拥有的最真实的 API 最有效的攻击。所以我们所做的是查看 OpenAI API 和其他一些公司。谷歌也有类似的东西。

由于 API 的设置方式,它使我们能够在一定程度上控制输出,这让我们可以进行一些奇特的数学运算来窃取模型的一层。它就像模型中的层一样,它可能是最不有趣的一层。这是一个非常小的数据量,但我实际上可以恢复模型的其中一层。所以在这种意义上它是真实的,我可以做到。它在以下意义上也是真实的:我正确地拥有了这一层。

但它不是全部。所以我认为我想在这篇论文中倡导的是,我认为我们应该同时追求两个研究方向。一个是撰写在某种理论意义上是正确的论文,但这些结果并不是你实际上可以在理论上实现的。

在任何真实的系统中,并且在可预见的未来,我们都不可能在任何真实的系统中实现。同时,也要做今天大多数安全研究人员所做的事情,即查看系统在其部署时的状态,并尝试回答,鉴于当前存在的这个系统,

你能真正让模型做哪些类型的攻击,并尝试撰写关于这部分内容的论文。我不知道你会如何处理模型的最后一层。你知道,我们有一些你可以做的事情。但是,如果有一件事告诉你模型的宽度,这不是人们公开披露的东西,所以……

在我们的论文中,我认为我们第一次公开确认了 GPT-3 Ada 和 Babbage 模型的宽度,这不是 OpenAI 公开说过的事情。他们发表了 GPT-3 论文,其中给出了论文中几个模型的宽度,但他们从未真正直接说明 Ada 和 Babbage 的大小。人们推测,但我们实际上可以写下来并确认它。我们还有……

作为论文的一部分,我们在 GPT-3 上运行了攻击,我们正确地窃取了最后一层,我知道模型的大小,它是正确的。它涉及到负责任的披露,就像我们在开头谈到的那样。我们事先与他们达成协议,我们将这样做,

这不仅是与谷歌律师,也是与OpenAI律师进行的一次有趣的对话。就像,嗨,我想窃取你们的模型。我可以这样做吗?OpenAI的人非常好,他们说可以。谷歌的律师最初也像,你知道的,谷歌的律师,就像,我绝不会想窃取OpenAI的数据。但就像我说的,如果我能得到OpenAI的总法律顾问的同意,你们同意吗?他们说,当然。我们把它放在一个隔离的虚拟机上。我们运行了一切。我们销毁了数据,等等。但是,

协议的一部分是他们会确认我们……

我们做了正确的事情,但他们要求我们不要发布我们窃取的实际数据。这很有道理,对吧?你想展示的是一个有效的攻击,但让我们不要实际发布被窃取的东西。所以,如果你要写下世界上所有知道GPT-3.5有多大的人的名单,这个名单包括OpenAI的所有现任和前任员工和我。

所以,这听起来像是一个非常真实的攻击,因为,这就像,这是最简单的,你还能怎么学习这个?学习这个的另一种方法是,入侵OpenAI的服务器,并试图学习这个东西,或者,你知道的,勒索其中一名员工。或者你可以进行一次实际的对抗性机器学习攻击,并恢复这些模型的大小和最后一层。所以,我们想写这篇论文的动机是让人们

并试图鼓励其他人获得攻击的例子,即使它们不能解决所有问题,也能让我们在某种意义上使它们越来越真实。我认为,随着我们开始将系统部署到越来越多的环境中,我们将开始需要看到更多这样的情况。所以这就是我们写这篇论文的原因。我不知道你是否想讨论我们如何做到这一点的技术方法,或者其他什么,但是……

你想谈谈吗?好的,当然。在接下来的两分钟里,让我们假设一定的线性代数知识。如果不是你,那么我道歉。我会尝试用一种有意义的方式来解释它。模型的工作方式是它们有一系列层,每一层都是前一层变换的结果。

这些层有一定的尺寸,一定的宽度。事实证明,模型的最后一层是从一个小的维度到一个大的维度。所以这就像这些模型的内部维度是,我不知道,比如说2048或者类似的数字。输出维度是词汇表中标记的数量。这大约是50,000。这意味着,如果你观察模型的输出向量,即使它在这个巨大的高维空间中,这个50,000维的空间中,

实际上,由于这是一个线性变换,这些向量只在这个2000、4000维的子空间中。这意味着,如果你观察这个空间,你实际上可以计算所谓的奇异值分解,以恢复这个空间是如何嵌入到这个更大的空间中的。这直接地,比如说,非零奇异值的个数告诉你模型的大小,对吧?

再说一次,这不是具有挑战性的数学。我上次用这个是在大学本科学习数学的时候。但是如果你算出细节,它最终会算出来。事实证明,这是一个令人兴奋的……这是一个很好的数学应用于这类事情的例子。我认为我喜欢这里细节的部分原因是,这是那种……

它不需要任何一个领域的专家。这就像本科数学知识。我可以向任何修过线性代数第一门课程的人解释这一点。但是你需要成为那个人,你还需要了解语言模型的工作原理,你还需要考虑安全性,你还需要考虑它提供的实际API是什么,因为你无法获得标准的东西。你必须考虑所有这些部分。这就是我认为这篇论文有趣的原因,就像

这就是安全人员所做的。我们并不是在看任何东西……有时你看到的比任何一件事情都要深入得多,但大多数情况下,这些漏洞是如何发生的,是因为你拥有非常广泛的知识,并且你正在观察API的细节是如何与语言模型的特定架构交互的,使用线性代数的技术。如果你缺少任何一个部分,你就不会看到这种攻击是可能的。

这就是为什么OpenAI的API三年来一直存在这个漏洞,而其他人没有首先发现它。他们并没有寻找这种东西。你不会偶然发现这种漏洞。你需要人们真正去寻找它们。然后,你知道的,负责任的披露,我们给了他们90天的时间来修复它。他们修补了它。谷歌修补了它。我们不会透露另外几家公司,因为他们要求不要修补它。是的。

它有效。所以写这篇论文很有趣。太棒了。好吧,Nicholas Carlini,非常感谢你今天加入我们。很荣幸邀请你。谢谢。