解释大语言模型:在 Alpaca 中识别因果机制;因果语言建模和条件生成模型的区别

解释大语言模型:在 Alpaca 中识别因果机制

task_type=TaskType.CAUSAL_LM 表示将模型配置为因果语言模型(Causal Language Modeling)

因果语言建模(Causal Language Modeling,简称CLM)和条件生成(Conditional Generation)是自然语言处理(NLP)和深度学习中的两个相关概念。尽管它们在某种程度上有所重叠,但它们在目标和方法上有一定的区别。

因果语言建模(Causal Language Modeling):
因果语言建模关注于根据给定的上下文生成文本序列。在这种建模方法中,模型试图预测给定上下文中的下一个单词,该上下文通常包括在当前单词之前的所有单词。这种建模方法遵循因果原则,即当前单词只受到其前面单词的影响,而不受后面单词的影响。

因果语言建模的一个经典应用是GPT(如GPT-2和GPT-3),它主要用于生成连贯的文本。在这种建模方法中,模型接收一个输入序列,然后生成一个自然且语法正确的输出序列。

代表模型:GPT2、Bloom、OPT、GPT-Neo、GPT-J、LLaMA、ChatGLM。

条件生成(Conditional Generation):
条件生成关注于生成满足特定条件或约束的文本序列。在这种建模方法中,模型根据给定的输入(可能是文本、图片等)生成符合条件的输出。与因果语言建模不同,条件生成不仅仅关注于给定上下文的连贯性,还关注于满足预定的任务要求

条件生成的应用包括但不限于机器翻译、文本摘要、图像描述等。这些任务通常需要模型在输入和输出之间建立复杂的映射关系。在这种建模方法中,模型可以是一个encoder-decoder结构,如序列到序列(seq2seq)模型,也可以是基于自回归的方法,如T5模型。

代表模型:BART、T5

总之,因果语言建模主要关注于生成连贯、自然的文本,而条件生成关注于生成满足特定条件或任务要求的文本。这两种建模方法在某些场景下可能会互相使用和结合,以实现更复杂的自然语言处理任务。

导语

斯坦福大学的 Alpaca 模型是用于学术研究的指令遵循语言模型(instruction-following language model)。在近日新发表的论文“解释大语言模型:在 Alpaca 中识别因果机制”中,研究者提出一种通用的因果机制发现框架,使用该工具,Alpaca 模型在简单的数字推理任务中实现了具有可解释中间变量的因果模型。这些因果模型对于输入和指令的变化具有鲁棒性。该框架也适用于拥有数十亿参数的大语言模型。

关键词:大语言模型,因果发现

吴政璇 | 作者

论文题目:Interpretability at Scale: Identifying Causal Mechanisms in Alpaca

论文链接:

https://arxiv.org/abs/2305.08809

作者:Zhengxuan Wu(吴政璇), Atticus Geiger, Christopher Potts, Noah Goodman

Alpaca 模型

https://crfm.stanford.edu/2023/03/13/alpaca.html

如何在大语言模型中寻找因果机制?

现有的可解释性工具在数亿参数语言模型上通常无法适配,因为它们往往专注于为特定任务微调的小型模型。在本文中,我们提出了一种基于因果抽象 (causal abstraction) 理论的新方法,以找到在模型中扮演给定因果角色的隐藏表达 (hidden representation)。通过使用我们的工具,我们发现Alpaca模型在解决简单的数字推理任务时实现了具有可解释中间变量的因果模型。此外,我们发现这些因果模型对于输入和指令的变化具有鲁棒性 (robustness)。我们的因果机制发现框架是通用的,并且可以适用于拥有数十亿参数的大语言模型。

图1. Alpaca模型被要求解决价格标签游戏

在这个图中,Alpaca模型被要求解决价格标签游戏,

“如果成本(Z)在 2.00(X)和 3.00(Y)美元之间,则回答是,否则回答否。”

在上图的顶部,我们有一个因果模型,通过两个布尔变量 (boolean variable) 确定输入金额是否在下限以上和上限以下来解决这个问题。在这里,我们尝试对齐第一个布尔变量。为了训练对齐,我们抽取两个训练样例,然后交换它们之间的中间布尔值以使用我们的因果模型生成一个反事实 (counterfactual) 的输出。同时,我们使用建议对齐的神经元交换这两个样例之间的激活。最后,我们训练旋转矩阵,使得神经网络的行为与因果模型产生相同的反事实结果。

为什么要扩展(Scale)因果机制发现

获取大型通用语言模型的具有鲁棒性的、易于理解的解释是人工智能领域的重要目标。目前的工具存在以下主要限制:

1. 搜索空间太大: LLM具有数十亿的参数,序列表示随长度增加而增加。神经元的搜索空间通常太大,无法使用任何启发式搜索工具。

2. 表达是分布式的: LLM中单个神经元的激活与概念 (concept) 之间的映射通常是多对多而不是一对一的。先前的工作声称一组神经元表示一个简单的概念(例如性别),可能是虚假的,因为神经元可以编码更复杂的内容(例如多个概念的叠加)。

3. 极低的鲁棒性: 以前的工作中找到的因果机制通常假设为特定任务微调的模型,甚至带有固定长度输入和固定模板。我们不确定这些对齐是否具有泛化性,如果具有泛化性,泛化程度如何。

我们试图解决所有这些限制,并在最近发布的Alpaca 7B模型上展示我们的框架[1]。

将分布式因果机制的寻找转化为优化问题

我们将最近提出的分布式对齐搜索(DAS) [2] 调整为将对齐过程转化为一个优化问题。在DAS中,我们使用梯度下降方法找到高层模型和低层模型之间的对齐,而不是进行暴力搜索,并且通过分析非标准基的表示形式-分布式表示,我们允许单个神经元扮演多个不同的角色。

图2. 分布式互换干预的例子

这张图(从原始论文中复制)展示了一个分布式互换干预的例子,当训练DAS时使用。它显示了我们第一张图中旋转矩阵训练过程的放大版本。基本上,我们对所有输入进行正向传递,并在我们要对齐的表示形式上应用一个可学习的旋转矩阵。然后,我们在旋转后的空间中进行干预,以对齐我们高层因果模型预测的反事实行为。

在本文中,我们通过用学习参数替换剩余的暴力搜索步骤,大幅度扩展这些方法,提出了DAS的更新版本 Boundless DAS 。以下是一些关键优势:

1. 将搜索转化为优化问题: 通过在旋转空间中进行干预,我们现在只需要检查是否可以学习一个忠实的旋转矩阵(有关忠实度统一度量,请参见下一节),以评估所提出的对齐方法。

2. 子空间对齐: 我们的旋转矩阵是正交矩阵,它是正交规范的。旋转后的每个维度都是原始维度的线性组合。在正交化表示中,每个维度都是独立的,这对于假设中间变量是独立的很有用。

Boundless DAS 代码

Boundless DAS是适用于任何模型的通用方法。这里我们展示了一个通用的解码器 (decoder-only) LLM的伪代码片段。

图3. 通用解码器 (decoder-only) LLM的伪代码片段

理想情况下,这个方法也可以扩展到编码器-解码器 (encoder-decoder) LLMs,或者仅有编码器的LLMs。

统一的评估方式

我们使用前几篇因果抽象工作中提出的互换干预准确率 (Interchange Intervention Accuracy; IIA) [3] [4]来评估在旋转子空间中对齐的准确性或忠实度。IIA越高,对齐就越好。这里是一个非常简单的算术任务 (a + b) * c 的示例,

图4. 算术任务 (a + b) * c 的示例

在这个问题中,如果我们有这四个神经元与代表 (a + b) 的中间变量完美对齐,那么可以确定性地从一个输入 (1 + 2) * 3 中取出这四个神经元的激活,并将它们插入到另一个输入 (2 + 3) * 4中,使模型输出 (1 + 2) * 4 = 12。我们称这种情况为完美对齐,IIA为100%。我们使用相同的指标评估在旋转子空间中的对齐情况。

需要注意的是,对于Boundless DAS,IIA的含义略有变化: 在旋转子空间中达到100%的IIA,意味着对齐的因果变量在原始表示中分布为100%。我们还可以反向工程学习到的旋转矩阵,以回推每个原始维度的权重。

一个简单的数字推理任务

我们首先构建了一个简单的数字推理任务,Alpaca模型可以相当容易地解决。

图5. 定价标签游戏

这个定价标签游戏基本上包含三个部分: (1) 左括号; (2) 右括号; 和 (3) 输入金额。有几种直观的因果模型可以完美地解决这个任务。

图6. 解决任务的几个因果模型

我们的中心研究问题是: Alpaca模型在解决这个任务时是否遵循了这些因果模型之一?我们试图通过找到标记为红色的中间因果变量的对齐方式来回答这个问题。

主要结果:模型遵循哪一种因果机制?

我们在任务的多个层和位置上使用Boundless DAS训练了每一个单词 (token) 的隐性表达,并在保留的测试集上评估了学习到的对齐方式,在隐藏测试数据集中得到了IIA分布。下面是我们考虑的所有四个高级因果模型的对齐结果。

图7. 四个高级因果模型的对齐结果

在这里,我们通过将上限设置为任务性能,将下限设置为虚拟分类器的模型性能来对IIA进行归一化。显然,涉及左边界和右边界检查的因果模型要明显更可靠。我们的研究结果表明,Alpaca模型在内部计算这些布尔变量来表示输入金额与括号之间的关系。

主要结果:找到的因果机制是否具有鲁棒性?

现在对于大模型的可解释性或者机制解释性 (mechanistic interpretability) 的方法的主要诟病,是找到的可解释性的结果可能仅适用于特定的输入-输出对设置。在本文中,我们试图探寻找到的可解释性是否具有很好的鲁棒性。

我们在不同的输入-输出设置的情况下无训练 (inference-time only) 的看发现的因果作用(即对齐方式)是否得到保留。这是至关重要的,因为它告诉我们因果模型在神经网络中的实现是否具有鲁棒性。我们研究了三种设置:

1. 新的输入: 在测试的时候,我们改变了问题中的最大和最小值。

2. 插入无关的信息: 我们在测试时注入随机上下文以评估对齐方式。

3. 整个指令的改写: 我们为指令 "说是……,否则不" 训练对齐方式,并查看它们是否推广到指令 "说真……,否则假"。

表格里的数据是我们实验的总结结果,任务性能作为准确率(Task Acc.; 在[0.00,1.00]之间),在所有位置和层中的最大互换干预准确率(IIA; 在[0.00,1.00]之间),两个分布之间的IIA的Pearson相关性(在[-1.00,1.00]之间),以及单个实验中所有位置和层的IIA方差。我们的研究结果表明,在这些设置中找到的对齐方式具有鲁棒性。

可解释性的愿景

自动因果机制发现(机制解释性)不是一个简单的任务,其中有许多移动部分。在本文中,我们通过提出一种改进的方法,向这个目标迈出了一步。

图8. (左)提议范例的四个中心步骤;(右)未来想要实现的中间目标

在上图的左侧插图,我们的提议范例有四个中心步骤,其中最后一步包括一个迭代过程来寻找更好的对齐方式。这个范例解决了当前系统提出的一系列限制,但还有很多工作要做。在右侧插图中,我们展示了一个我们未来想要实现的中间目标,即用GPT-4或人类专家在环过程替换我们的确定性高级模型。

局限性讨论

我们的工作是朝着理解LLMs的内部因果机制迈出的第一步。它具有局限性,并可能在这个方向上开启一条工作线。

1. 更大的规模: 我们希望我们的框架可以应用于研究最强大的LLMs(例如175B的GPT-3或GPT-4)。在发布时,因为当前的工作仍然集中在一个简单的推理任务上,较小的LLMs可以解决。

2. 确定的因果模型: 我们的工作依赖于先验已知的因果模型,在许多实际应用中这是不现实的,因为高级因果模型也是隐藏的。未来的工作可以通过基于启发式的离散搜索或甚至端到端优化来研究学习因果图的方法。

3. 最终的可扩展性: 我们方法的可扩展性仍然受到搜索空间隐藏维度大小的限制。现在无法在LLMs的一组令牌表示上进行搜索,因为随着隐藏维度的增长,旋转矩阵呈指数增长。

4. 没有确凿的答案: 我们的评估范例可以根据IIA提出对齐方式(即灰盒),但无法对失败的对齐方式进行确定性推断。

原文链接:

https://nlp.stanford.edu/~wuzhengx/boundless_das/cn_index.html

因果表征学习读书会

随着“因果革命”在人工智能与大数据领域徐徐展开,作为连接因果科学与深度学习桥梁的因果表征学习,成为备受关注的前沿方向。以往的深度表征学习在数据降维中保留信息并过滤噪音,新兴的因果科学则形成了因果推理与发现的一系列方法。随着二者结合,因果表征学习有望催生更强大的新一代AI。集智俱乐部组织以“因果表征学习”为主题、为期十周的读书会,聚焦因果科学相关问题,共学共研相关文献。欢迎从事因果科学、人工智能与复杂系统等相关研究领域,或对因果表征学习的理论与应用感兴趣的各界朋友报名参与。

详情请见:

连接因果科学与深度学习的桥梁:因果表征学习读书会启动

“后ChatGPT”读书会

2022年11月30日,一个现象级应用程序诞生于互联网,这就是OpenAI开发的ChatGPT。从问答到写程序,从提取摘要到论文写作,ChatGPT展现出了多样化的通用智能。集智俱乐部特别组织“后 ChatGPT”读书会,由北师大教授、集智俱乐部创始人张江老师联合肖达、李嫣然、崔鹏、侯月源、钟翰廷、卢燚等多位老师共同发起,旨在系统性地梳理ChatGPT技术,并发现其弱点与短板。

详情请见:

“后 ChatGPT”读书会启动:从通用人工智能到意识机器

推荐阅读

1. 因果推理与大语言模型:开辟因果关系的新前沿

2. 大语言模型做科研的N种可能性:从自主进行科学实验到写综述文章

3. 圣塔菲学者:AI 大语言模型真的理解人类语言吗?

4. 《张江·复杂科学前沿27讲》完整上线!

5. 成为集智VIP,解锁全站课程/读书会

6. 加入集智,一起复杂!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15872.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 LangChain 和 Elasticsearch 的隐私优先 AI 搜索

作者:Dave Erickson 在过去的几个周末里,我一直在 “即时工程” 的迷人世界中度过,并了解像 Elasticsearch 这样的矢量数据库如何通过充当长期记忆和语义知识存储来增强像 ChatGPT 这样的大型语言模型 (LLM)。 然而,让我和许多其他…

Python人工智能——是否要取代前端!

前言 随着最近ChatGPT的大火,Al又一次的成为了人们热烈讨论的话题,这一次能否改变未来,现在还不得而知。 AI也就是人工智能,更多的是基于一个机器训练和学习的过程,人类的学习和训练是有局限的,高速运算的…

ChatGPT API 比 GPT-3.5 便宜 10 倍

AI 社区今天发布了一条重大新闻。OpenAI终于宣布为其广受欢迎的对话式 AI ChatGPT发布API。 什么是聊天 GPT? ChatGPT 是 OpenAI 开发的大型语言模型(LLM)。它可以理解、处理和响应类人语言。它具有在几秒钟内写诗、撰写论文和撰写研究论文的…

谷歌版 ChatGPT 首秀就翻车...

来源:机器之心 原文:https://mp.weixin.qq.com/s/1mkAlJbtYCmQcz_mV9cdoA 现在看来,拼第一枪,微软赢了。 如今的谷歌,有点秦失其鹿的味道。 在微软更新 ChatGPT 加持的必应搜索之后,大家都极为关注谷歌 Bar…

ChatGPT翻车?其安全性再次引起深度思考

近来,以ChatGPT为例的人工智能进展地如火如荼。一方面,ChatGPT具有较强的跨语际适用性,一定程度上促成了逆全球化浪潮中不同国家的重新连接;另一方面,ChatGPT展现出的“无所不知”式超级百科全书特征,重塑了…

chatgpt赋能python:Python怎么不换行输入

Python怎么不换行输入 Python作为一种简单易学的编程语言已经得到了广泛应用,同时也在不断发展和完善。在实际的编程过程中,有时候我们需要输入多行代码或数据,但是默认情况下Python解释器会自动换行,这会影响到我们的代码格式和…

chatgpt赋能python:Python想换行怎么办?

Python想换行怎么办? 在Python编程中,我们经常需要用到换行,但是Python的换行并不像其他语言那样简单,需要使用一些特殊的方法。本文将介绍Python中换行的几种方法。 1. 在字符串中使用\n 在Python中,我们可以在字符…

chatgpt赋能python:Python中如何输出换行符\n

Python中如何输出换行符\n 如果你是一个Python开发者,你可能已经熟悉了多个输出Python变量的方法。但是,当你需要输出换行符’\n’时,你可能会遇到一些问题。这篇文章将介绍在Python中输出换行符的几种方法,并且告诉你哪种方法是…

chatgpt赋能python:Python去除换行符\n的方法

Python去除换行符\n的方法 如果您在使用Python处理文本数据时,经常遇到换行符\n的问题,那么本文将为您介绍几种Python去除换行符\n的方法,并为您提供实际案例。这些方法包括使用replace、strip、split和正则表达式等,让您可以更加…

chatgpt赋能python:Python怎么不换行输出

Python怎么不换行输出 在Python中,我们经常需要用到不换行输出的技巧。本文将介绍几种方法来实现Python的不换行输出,并探讨其应用场景。 方法一:使用end参数 在Python中,print()函数默认在输出完文本后会自动换行,…

chatgpt赋能python:Python中如何删除换行符?

Python中如何删除换行符? 在Python编程中,处理文本时经常需要删除文本中的换行符。这些换行符在程序中不会有用,但会影响文本的格式并可能影响程序在文本上的操作。Python提供了很多方法来处理这个问题,我们来看看其中一些方法。…

chatgpt赋能python:Python怎么取出换行的数据?

Python怎么取出换行的数据? 在数据分析和处理中,我们常常需要从文件中读取数据,特别是当数据量很大时更是如此。在Python中,读取文本文件中的数据很简单,但是有时候读取的文本文件中可能含有换行符,这可能…

chatgpt赋能python:Python断行:如何优雅地换行?

Python断行:如何优雅地换行? 简介 Python是一种直观、易于学习、优雅且精简的编程语言。但是,随着代码复杂度的增加,长行代码也变得越来越难以阅读。所以,如何正确地断行是编写整洁Python代码的关键之一。 为什么需…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中,经常需要对字符串进行处理,其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标,并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…

chatgpt赋能python:Python如何实现不换行

Python如何实现不换行 Python是一种高级编程语言,它的应用领域非常广泛,尤其是在数据分析、人工智能、网络爬虫等领域中拥有广泛的应用。而在Python中,有时候需要控制输出内容的样式,比如在输出时避免出现换行,这个需…

chatgpt赋能python:Python中如何实现print不换行

Python中如何实现print不换行 在编写Python程序时,我们经常需要使用print语句来输出信息。然而,有时候我们希望在输出信息时不换行,而是将多个输出信息打印在同一行上。这里介绍几种Python中print不换行的方式。 方法一:使用逗号…

chatgpt赋能python:如何在Python中取消换行?

如何在Python中取消换行? 如果你是一名经验丰富的Python工程师,你一定会遇到在输出过程中需要取消换行的情况。在本文中,我将告诉你如何使用Python取消换行。 什么是换行? 在计算机编程中,换行是指在输入文件或者输…

chatgpt赋能python:Python一行太长怎么换行?解决方法汇总!

Python一行太长怎么换行?解决方法汇总! 介绍 Python作为一种现代高级编程语言,广泛应用于Web应用程序、数据科学和机器学习等领域。在编写Python代码时,有时可能会遇到一行代码太长不方便阅读或超出编辑器显示界面的情况。本文将…

chatgpt赋能python:Python怎么print换行?

Python怎么print换行? 如果你是一个Python开发者,你可能遇到过需要在Python中打印输出换行的情况。本文将分享几种方式,让你学会如何在Python中print换行。 1. 使用"\n" 您可以在print语句中使用"\n"来表示换行。这个…

chatgpt赋能python:Python怎么快速换行

Python怎么快速换行 介绍 Python是一种高级编程语言,具有易读易学、代码简洁等优点,被广泛应用于各种领域的编程任务中。在编写代码时,使用适当的换行可以使代码更清晰易读,但是有时候我们可能需要用到一些特殊的换行方式来满足…