对话斯坦福博士:大模型的隐藏推理与可解释性
大模型的隐藏推理与可解释性:AI在想什么?|对话斯坦福博士Aryaman Arora【101视频播客】
如今的AI仍然是一个黑箱 我们知道如何训练模型 如何让它们变得越来越聪明 也知道模型最终给出了什么样的答案 但在输入和输出之间究竟发生了什么 对于这个过程 我们依然知之甚少 我不知道为什么这些东西有效 我把它归因于神意 这其实有点疯狂 我们竟然必须依赖 那些拥有非常强直觉的人 来推动整个领域取得进展 试图打开这个黑箱 理解模型内部究竟发生了什么 这就是可解释性研究希望解决的问题 过去几年 这个领域确实出现了不少令人兴奋的进展 Anthropic的研究开始尝试 追踪Claude内部的信息流 了解模型在回答问题前 究竟经历了怎样的内部计算 还有研究发现 模型内部似乎存在与特定概念、行为 甚至“人格”相关的表示 Transluce则发现 模型会根据它认为自己正在与谁对话而改变行为 面对普通用户和AI安全研究员的时候 模型的表现可能截然不同 因此 我们想弄明白 人类究竟有多了解现在的AI模型 模型为什么会答对 为什么会产生幻觉 当它在面对不同用户的时候 是否会产生不同的判断 而当模型开始呈现出越来越鲜明 并且彼此不同的性格的时候 这些所谓的“人格”又究竟是什么 就是模型内部确实存在一些它没有说出来的推理步骤 如果你真的有一个很好的语言模型 它应该能够正确预测下一个词 而要做到这一点 它内部就一定得有 一个关于这个世界的某种世界模型 比如人和人之间是怎么互动的 我们现在其实还不知道这个世界模型到底是什么 可解释性的目标就是 搞清楚那个内部模型到底是什么 我们现在没有任何一种技术 真正擅长控制模型内部的想法 如果你的模型正在做一些不好的事情 也没有人会直接去修改它的想法 大家好 欢迎回到《硅谷101》
我是Yiwen 带着这些问题 我和斯坦福大学博士生Aryaman Arora 探讨了大模型的可解释性研究 以下是我与Aryaman的视频播客 Aryaman 欢迎来到《硅谷101》 谢谢你邀请我 感谢你今天特意开车来旧金山 我们终于有机会聊一聊 我真的很期待这次对话 “可解释性”这个领域 之前已经有很多人跟我说过 让我一定要去了解一下 我自己看了一些之后也觉得特别有意思 毕竟 谁不想知道 我们的AI是不是正在背地里密谋杀掉我们呢 哈哈 是的 那我们就先从你自己开始吧 能不能先跟观众简单介绍一下你自己 可以 我叫Aryaman 现在是斯坦福大学的博士生 我的导师是Chris Potts和Dan Jurafsky 语言学是我的大学专业 我一直都对语言特别感兴趣 后来AI突然经历了这么大的变化 而我又比较喜欢从科学的角度去思考问题 所以我很想研究一个问题 这些东西的原理是什么 所以 对我来说 可解释性研究就很自然地成为了一个方向 简单来说 可解释性研究就是想弄明白 一个模型内部到底发生了什么 但这个问题其实非常宽泛 也可以有很多不同的研究方向 你自己会怎么定义“可解释性研究” 你具体关注的又是什么 我觉得 可解释性 确实可以从很多不同的角度切入 对我来说 最吸引我的问题是 如果回到大概五年前 当时我们在AI领域做的很多东西其实都没有特别成功 尤其是语言模型 人们很早就在用语言模型了 但当时更多可能是用来做一些文本编辑 语音转录之类的 可后来有一件事情发生了 突然之间 语言模型变成了所有人都在研究的东西 大家开始往里面投入几十亿 所以对我来说 可解释性研究其实是 在试图回答一个问题 到底发生了什么变化 为什么以前这些东西不太行 而现在突然变得这么强 促使我想做这次采访的其中一个原因 是Anthropic发布了一篇关于所谓J-space的论文 我理解它有点像是一个AI模型内部的工作空间 我先从一个比较高的层面总结一下 然后你可以带我们具体讲讲里面的细节 基本上 听起来研究人员用了某种方法 去观察一个AI模型内部正在发生什么 也就是在它思考的过程中 那些它并没有说出来的东西 然后他们提出了J-space这个概念 它有点像是AI的一个工作空间 这篇论文里有一个特别有意思的例子 研究人员问一个AI模型 一种会织网的动物有几条腿 模型回答说 八条 但整个过程中 “蜘蛛”这个词从来没有出现过 可是当研究人员进入模型内部 把“蜘蛛”改成类似“蚂蚁”这样的概念之后 模型最后的答案就变成了六条 这只是几个例子中的一个 但从这些例子来看 我们似乎可以去操纵一个AI模型是怎么思考某件事情的 所以你能不能带我们稍微讲一下这篇论文 然后再具体解释一下 为什么我们能够编辑一个AI模型从来没有说出口的词 对 我觉得这是一篇非常有意思的论文 而且我觉得 它又给我们越来越多的证据增加了一块 就是模型内部确实存在一些它没有说出来的推理步骤 我没有把J-space那一百多页还是多少页全部读完 但我大概理解它的思路 它的大致想法是 我们有一个叫Jacobian(雅可比矩阵)
的东西 基本上就是微积分里面的导数 我们可以把它用在模型上 来告诉我们 在模型的潜在激活空间里 因为所有东西本质上都是向量 哪些方向会导致模型在之后说出某些特定的词 所以比如说 在模型真正说出某个词的十个token之前 如果它内部的隐藏表示正在朝着某个方向 那么之后它可能就会说出“蜘蛛”这个词 类似这样的东西 是的 我觉得这篇论文一个很好的地方是 它其实是一个非常优雅 非常简单的方法 但不知道为什么 之前好像没有人真正用完全这种方式试过 不过我觉得 我们已经有很多证据说明 这些内部推理步骤确实是存在的 比如你去看Anthropic更早关于 circuits(计算回路)
的研究 他们有一个研究叫 The Biology of Large Language Models(大语言模型生物学) 他们展示过 比如一个模型在做三位数加法的时候 它可以完全不把所有中间步骤说出来 但是如果你去看模型内部 你可以找到一些神经元 它们好像在记录 个位数应该是多少 或者十位数应该是多少 他们还有另外一个例子 比如你让一个模型围绕某个主题写一首押韵的诗 当它写到这一节最后的时候 它其实已经在规划下一节最后应该用什么词 这样下一节才能继续押韵 所以我觉得 毫无疑问 模型内部确实会做一些它并没有说出口的事情 而且我觉得它其实必须这么做 如果它想把语言建模这个任务学得很好 你知道 Ilya Sutskever是我们这个领域一个非常有名的研究者 他推动了自回归语言建模的发展 也就是通过预测下一个词来建模语言 他举过一个例子 比如说 你正在读一本侦探小说 一本谋杀悬疑小说 假设你的任务是在整本小说里不断预测下一个词 到了故事最后 通常都会有一个揭晓 凶手到底是谁 然后你读到一句 “凶手是” 这个时候 为了预测下一个词到底是谁 你某种程度上必须对整本小说 整个故事 以及之前所有指向不同可能性的证据进行建模 所以 如果你有一个非常好的语言模型 它一定要能够在内部进行某种逻辑推理 对吧 只有这样 它才能在刚才那个例子里推断出正确的下一个词 对 也就是说 这个答案没有直接出现在训练数据里 但是模型推断出了它 对 在那个具体的上下文里 如果你真的有一个很好的语言模型 它应该能够正确预测下一个词 而要做到这一点 它内部就一定得有 一个关于这个世界的某种世界模型 比如人和人之间是怎么互动的 之前的证据分别是什么 所有这些东西 我希望我能想到一个更好的例子 不过你知道 毕竟这是Ilya Sutskever举的例子 很难想出比他的更好的 哦 所以你的意思是 我们现在其实还不知道这个世界模型到底是什么 这是不是我们现在正在试图解决的问题 对 所以我觉得 可解释性的目标就是 好 我们知道 如果你想把下一个token预测做得非常好 你一定得在内部建立一个非常复杂的模型 来表示一段文本里到底发生了什么 而我们的目标 就是搞清楚那个内部模型到底是什么 明白 那我们稍微退一步 再回到刚才说的这种内部推理 因为它和我们现在所说的chain of thought(思维链)
好像形成了一个挺直接的对比 思维链就是模型在思考的时候把思考过程明确写出来 如果我可以这么说的话 那为什么思维链不是理解一个模型 是怎么思考的最好方法 我不知道我会不会做这么强的判断 它肯定是有用的 而且有一点其实非常明显 大概一年半或者两年前 那些还没有思维链的模型 表现就是更差 它们确实就是比现在这些 经过思维链训练的模型更差 所以 思维链一定在发挥某种作用 而且应该是非常重要的作用 也就是我们开始转向推理的时候 对 也就是我们开始训练模型 让它在真正说出答案之前 先进行推理 而且 我自己非常相信的一点是 先做最简单的事情 如果把我做研究以来学到的所有东西总结到一起 我觉得最重要的一条可能就是 在开始做复杂的事情之前 先把简单的事情做了 所以 去检查模型的思维链是一件非常简单的事情 尤其是和解决可解释性相比 所以我们就应该去做 而且在实际操作中 比如Anthropic Meta或者OpenAI做安全审计的时候 他们确实会检查模型的思维链里有没有出现可疑的内容 或者模型是不是正在计划去做一些奇怪的事情 而且这似乎能在一定程度上帮助它们发现对齐偏差 所以对 我确实觉得 思维链是值得分析的 在我们聊更多可解释性研究的具体例子之前 我想先稍微聊一下它最终的目标是什么 我觉得很明显 为什么我们都应该关心 语言模型内部正在发生什么 但我比较想知道的是 当我们理解了它内部发生了什么之后 我们要做什么 比如 它有哪些应用 或者我们现在也不一定要讲具体的应用 但它的目标到底是什么 以及为什么 像我们这样的普通人也应该关心 我觉得 如果我们解决了可解释性这个问题 它大概会带来两类应用 其中一个就是 比如说信任 要想信任一种技术 我们知道它是怎么运作的是很重要的 你可以想一下 比如有各种监管机构和政府部门 会监管飞机是怎么制造的 工业机械是怎么运行的 或者像石油压裂这样的事情 对于这些很强大 也可能很有用的技术来说 如果我们想监管它们 我们确实需要理解它们有哪些失效模式 以及搞清楚出了问题之后责任应该怎么划分之类的事情 我觉得现在监管AI其实非常困难 因为我们某种程度上不知道该怎么阻止不好的行为 甚至不知道为什么某件坏事会发生 或者到底该怪谁 因为没有人真正知道 某些行为到底是从哪里来的 我们有非常庞大的数据集 也有很长的训练过程 所以其实很难判断到底是什么导致了某种结果 所以我觉得 如果想提升整个社会对这类技术的信任 那么即使我们没法做到完全理解 如果我们能够理解为什么某些行为会发生 也会很有帮助 比如说 如果你的医生在使用一个AI系统之类的东西 那不管是你还是你的医生 大概都会想知道 它为什么会给出某个结果 对吧 所以这是一个方面 另一个方面是 很多AI研究和进展 一直都非常依赖实验 这并不是一件坏事 当然 在我们这个领域 相比化学 生物学 或者其他现实世界里的东西 做实验实在太容易了 所以现在看起来 很多东西之所以变得越来越好 是因为有一些非常厉害的人 或者一些非常聪明 直觉非常强的人 想出了某些方法 他们不知道这些方法为什么有效 但它们就是有效 Google有一个很有名的研究者叫Noam Shazeer 我想他现在已经不在Google了 他提出了很多 后来促成现代Transformer的架构改进 而且他也是最初那篇Transformer论文的作者之一 他有一篇论文提出了Gated Linear Units (GLU) 也就是又一种架构上的设计 在那篇论文最后 他先展示了所有实验 说明这些方法的效果都更好 然后他说 我不知道为什么这些东西有效 我把它归因于神意 把这种话写在论文里其实挺疯狂的 就好像他说 好吧 可能是上帝给了我一个启示 让我去试这个实验 然后它就成功了 所以我觉得这其实有点疯狂 我们竟然必须依赖 那些拥有非常强直觉的人 来推动整个领域取得进展 应该存在一种更加系统的方法 或者至少我相信这背后一定存在系统性的原因 为什么某些东西成功 而另外一些不行 所以我觉得 如果我们解决了可解释性问题 我们就能够弄清楚为什么有些东西有效 有些东西无效 然后也许这能帮助我们用一种更系统的方法去改进模型 或者用一种更系统的方法去控制不良行为 有一种说法是 如果一个模型已经足够对齐 那至少它不应该对用户撒谎 然后我们前面一直在聊可解释性 去理解模型内部到底发生了什么 我想问的是 可解释性和对齐之间到底是什么关系 对 我确实觉得对于很多做可解释性研究的人来说 一个很重要的动机就是 我们不能完全相信模型自己说出来的话 对吧 一个模型从外部来看 也就是从我们能够观察到的行为来看 可能表现得完全正常 尤其是在测试环境里 它可能表现得非常好 让你觉得这个模型可以部署了 但等你真的把它部署出去之后 可能就会发生一些很疯狂的事情 比如说 也许这个模型知道自己正在被评估 然后等到你真正把它部署之后 它就会想 “哦 现在我终于可以做我真正想做的事情了” 很多人之所以关注 用于对齐的可解释性研究 是因为 我们不能总是只根据模型表现出来的行为 就得出可靠的结论 我想我可以举个例子 是的 比如说 你刚认识了一个新的人 然后 你知道 当你交了一个新朋友的时候 你会想确认一下他是不是一个好人 对吧 是不是一个你可以信任的人 尤其是在你开始把自己的秘密告诉他之前 或者类似这样的事情之前 人有一个很有意思的地方 就是我们当然不可能随时知道其他人在想什么 但社会还是照样能运作 对吧 比如说你交了一个朋友 可能会发生一些事情 比如他在某种情况下做出了某个选择 那就会说明他其实并没有把你的利益放在心上 或者 比如说 为了替你保守一个秘密 他自己必须付出一些代价 而他最后还是选择承担这个代价来帮助你 像这样的事情 就是我们在不知道别人内心到底在想什么的情况下 逐渐建立起对其他人的信任的方式 对吧 所以在合适的情境下 一个人的行为某种程度上会暴露出他的品格 我觉得对齐其实有点类似 对于这些语言模型 或者任何AI系统来说 我们建立对它们的信任的一种方式 就是在一些特定情境下测试它们的行为 他们是否做出了某个特定的决定 可以告诉我们他们的品格是好是坏 当然 你确实可以从这些行为里获得很多证据 但模型和人又不一样 对吧 这些模型毕竟是运行在某台计算机上的 原则上来说 我们可以检查生成某个输出 所涉及的每一步计算 而且和人也不一样的是 我们会部署一个模型的几百万个副本 人们花钱让这些模型去做各种各样的事情 而我们并不总是知道 使用这些模型的人到底有什么意图 所以这和雇用一个人类员工当然很不一样 对于一个人类员工 你至少会有一种基本的信任 好吧 就算这个人是个坏人 他大概也做不了太大的破坏 所以我觉得 在这种情况下 可解释性研究是有意义的 因为这里的风险和后果 完全不一样 而且 监控一个语言模型内部发生了什么 也比监控一个人的内心要容易得多 原则上来说 只要我们知道该找什么 我们就能把它找出来 我们不需要做什么特别疯狂的事情 去搞清楚 “这一步矩阵乘法的结果到底是什么”对吧 你能不能再具体解释一下 你刚才说“如果我们知道该找什么” 我们现在到底是在找什么 我想 如果是在一个可解释性问题已经被解决了的世界里 也许我们会知道 好 如果模型内部表征里的这个向量 指向某一个方向 那我们就知道 它正在计划做一件不好的事情 类似这样的东西 如果我们知道这一点 那我们就直接去检查它就好了 对吧 是的 我们不需要做什么特别复杂的事情 而对于人类来说 哪怕我们已经彻底搞清楚了人脑是怎么工作的 并且能够判断 当大脑中的某个神经元被激活时 他接下来就会开始跑 但在现实里 我们也不可能真的 在人脑里插一根电极 只为了去检查这个 对吧 所以这其实非常不一样 而且当然 人就是人 是的 我们不会用对待一个运行在计算机上的东西的方式 去对待一个人 对 没错 听起来也正因为这样 在模型上做这件事要比在人类身上更容易 因为在在模型这里 你会有 比如说 成千上万个副本 然后你某种程度上可以把一个模型“解剖”开来看 对 某种程度上是这样 也许如果你把其中一个模型搞明白了 那就已经能解决很多问题 对吧 如果你能够逆向工程一个模型 那再回到研究层面 据我理解 Anthropic在那篇论文里做的事情 其实和可解释性研究里的一个传统方向没有那么不一样 也就是所谓的稀疏自编码器(SAE)
在我看来 它好像也体现了这类研究一个比较典型的逻辑 就像你刚才说的 你找到一个方向 改变某个东西 然后看模型的行为会怎么变化 所以基于这个背景 你能不能帮我们拆解一下 这个领域里不同的研究思路 或者不同的流派 对 我想 可能先从比较宽泛的层面 解释一下SAE到底是干什么的 会比较有帮助 如果大家有一些机器学习背景 那应该都听说过autoencoder(自编码器)
它的基本思路是 你有某一种东西 比如说它可能是一张图片 也可能是一段文字 然后你想训练一个模型 让它先把这个复杂的输入转换成一个比较简单的向量 也就是一串数字 然后再让它从这个向量 把原来的输入重新还原出来 所以它才叫auto-encoding(自编码) 这个想法是 如果你训练一个模型去做这件事情 那无论你给它什么样奇怪的输入 你最后都能够得到一个比较好的向量表示 所以比如说 如果你可以把所有图片都转换成向量 那做相似度搜索就会变得更容易 对 大概就是这个思路 这个向量算是对原来那个东西的一种更好的表示方式 所以 autoencoder本身就是一个很经典的概念 在可解释性研究里 它的思路是 我们把模型内部所有这些隐藏表示拿出来 它们可能是一个大型语言模型第20层里面的一些向量 然后我们训练一个autoencoder 把这些表示转换成一种更干净 更方便我们研究的表示形式 所以这个想法是 也许我们可以把它转换成一串数字 其中每一个数字都代表一个具体 清晰的东西 比如说 如果这段文本是英文 这个数字就是1 否则就是0 如果模型在谈论火箭 这个数字就是1 否则就是0 类似这样的东西 所以 稀疏自编码器其实就是一种把这件事 设定成一个技术问题的方法 这样当我们把模型的内部表示输入进去之后 最后就能够得到一串比较干净的数字 这个方法很好的一点是 如果我们最后得到的只是一串数字 那其中某些数字可能就代表模型正在表现出不好的行为 或者它出现了不对齐 那我们只需要想办法把那个数字设成0就好了 但在实际操作中 情况非常混乱 事情并没有像我们希望的那样干净 也就是说 这些数字本身并没有那么干净 对 它们仍然不是每一个数字只代表一件事情 而且结果也取决于你用什么数据去训练这个稀疏自编码器 即使你用完全相同的数据训练两个不同的稀疏自编码器 你最后也会得到不同的结果 而且它们都没办法捕捉模型内部正在发生的所有事情 所以 它并不能完美地表示原始模型 我觉得 要理解一台机器是怎么思考的 其中一个核心问题就是 它其实并不是用自然语言来思考的 对 所以这听起来像是一个相关的问题 也就是说 你必须把机器的思考 翻译成我们能理解的语言 对 而且现在很多论文看起来已经在做这件事了 但你好像是在说 这两者之间并不存在一种一一对应的关系 我觉得原则上是可能存在的 稀疏自编码器确实有它的用途 而且现在也有其他一些方法 基本上也是在尝试 把模型内部的一串数字翻译成自然语言 它们可以非常有用 只不过它们看起来并不能一下子解决我们所有的问题 明白 所以 在看到这些东西有多混乱之后 人们都做了些什
原文超出正文长度上限,此处截断——上游还有内容,完整版见上方「原文 ↗」。
更进一步:量化金融体系
看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力