OpenAI 刚刚在官网发布博客文章《语言模型可以解释语言模型中的神经元》(Language models can explain neurons in language models)。

「我们使用GPT-4自动编写大型语言模型中神经元行为的解释,并为这些解释评分。我们发布了GPT-2中每个神经元的这些(不完美)解释和分数的数据集。」

调用 GPT-4 来计算出其他架构更简单的语言模型上神经元的行为,这次针对的是 GPT-2,发布于 4 年前的开源大模型。大模型(LLM)和人脑一样,由「神经元」(neurons)组成,这些神经元会观察文本中的特定规律,进而影响到模型本身生产的文本。

博客地址

https://openai.com/research/language-models-can-explain-neurons-in-language-models 

论文地址

https://openaipublic.blob.core.windows.net/neuron-explainer/paper/index.html 

数据集:

https://github.com/openai/automated-interpretability 

贡献者

Steven Bills,Nick Cammarata,Dan Mossing,Henk Tillman,Leo Gao,Gabriel Goh, Ilya Sutskever,Jan Leike, Jeff Wu,William Saunders

官网表示

「语言模型已经变得更加有能力和更广泛的部署,但我们对它们如何在内部工作的理解仍然非常有限。例如,可能很难从他们的输出中检测出他们是否使用有偏见的启发式方法或参与欺骗。可解释性研究旨在通过查看模型内部来发现其他信息。

可解释性研究的一个简单方法是首先了解单个组件(神经元和注意力头)在做什么。这传统上要求人类手动检查神经元,以找出它们所代表的数据特征。这个过程不能很好地扩展:很难将其应用于具有数百亿或数千亿参数的神经网络。我们提出了一个自动化过程,使用GPT-4对神经元行为的自然语言解释产生和评分,并将其应用于另一种语言模型中的神经元。

这项工作是我们对齐研究方法的第三个支柱的一部分:我们希望使对齐研究工作本身自动化。这种方法的一个有希望的方面是,它随着人工智能的发展速度而扩展。随着未来的模型作为助手变得越来越聪明和乐于助人,我们会找到更好的解释。」

 

举例

一个针对「漫威超级英雄」的神经元,当用户向模型提问「哪个超级英雄的能力最强」时,这个神经元就会提高模型在回答中说出漫威英雄的概率。

OpenAI 开发的工具利用这种规则制定了一套评估流程。

开始之前,先让 GPT-2 运行文本序列,等待某个特定神经元被频繁「激活」的情况。

然后有三个评估步骤:

第一步,让 GPT-4 针对这段文本,生成解释。

比如下图神经元主要针对漫威内容。GPT-4 接收到文本和激活情况后,判断这与电影、角色和娱乐有关。

图片

第二步,用 GPT-4 模拟这个 GPT-2 的神经元接下来会做什么。

图片

第三步,对比评估打分。对比 4 代模拟神经元和 2 代真实神经元的结果,看 GPT-4 猜的有多准。

图片

通过这样的方法,OpenAI 对每个神经元的行为作出了初步的自然语言解释,并对这种解释和实际行为的匹配程度进行了评分。

最终他们对 GPT-2 中 307200 个神经元全部进行了解释,这些解释汇编成数据集,与工具代码一起在 GitHub 上发布。 

以下为博客正文,机器翻译,移步原文请点击这里

  • 介绍

    语言模型变得更有能力,部署得更广泛,但我们不明白它们是如何工作的。最近的工作在理解少数电路和狭窄行为方面取得了进展,但要充分理解语言模型,我们需要分析数百万个神经元。本文将自动化应用于将可解释性技术缩放到大型语言模型中的所有神经元的问题。我们希望,在这种自动化可解释性方法的基础上,将使我们能够在部署前全面审计模型的安全性。

    我们的技术试图解释文本中的哪些模式会导致神经元激活。它由三个步骤组成:

    步骤1使用GPT-4解释神经元的激活
    显示GPT-4的神经元激活:
    复仇者联盟进入大银幕,Joss Whedon已经回来重聚漫威的超级英雄团伙,以迎接他们迄今为止最艰难的挑战。《复仇者联盟:奥创纪元》让名义上的英雄们与有知觉的人工智能对抗,聪明的钱说,它可能会在票房上飙升,成为票房最高的电影
    介绍漫威电影宇宙是可能的,尽管漫威工作室老板Kevin Feige告诉《娱乐周刊》,“Tony是地球绑定的,面对地球的恶棍。你不会发现魔法力量环会发射冰和火焰束。”宠爱运动!但他确实暗示他们有一些用......STARK T
    ,这意味着这部《夜翼》电影可能不是关于曾经拥有那套西装的人。因此,除非新导演马特·里夫斯的《蝙蝠侠》要深入研究一些背景故事,或者在他的电影中介绍迪克·格雷森这个角色,否则《夜翼》电影将有很多工作要做
    电影中没有的复仇者联盟和雷神试图与无限强大的魔法太空火鸟战斗。它最终完全毫无意义,这是一个令人尴尬的损失,我很确定Thor不小心摧毁了一个星球。没错。为了拯救地球,其中一位英雄无意中炸毁了一个
    GPT-4给出了一个解释,猜测神经元正在激活
    电影、角色和娱乐的参考。
    第2步使用GPT-4模拟激活,以解释为条件
    第3步通过比较模拟和真实激活来对解释进行评分
    选择一个神经元:
    第0层神经元816与漫威漫画、电影和角色以及其他超级英雄主题内容相关的语言

    这项技术使我们能够利用GPT-4来定义和自动测量可解释性的定量概念,我们称之为“解释分数”:衡量语言模型使用自然语言压缩和重建神经元激活的能力。这个框架是定量的,这一事实使我们能够衡量实现人类能够理解神经网络计算的目标的进展。

    通过我们的基线方法,解释的得分接近人类承包商的绩效水平。我们发现我们可以通过以下方式进一步提高性能:

        然而,我们发现,基于GPT-4和人工承包商的解释在绝对值方面仍然得分很低。在观察神经元时,我们还发现典型的神经元似乎相当多语义。这表明我们应该改变我们正在解释的内容。在初步实验中,我们尝试了:

    我们把我们的方法应用于GPT-2 XL中的所有MLP神经元。我们发现了1000多个神经元,其解释得分至少为0.8,这意味着根据GPT-4,它们占了神经元顶级激活行为的大部分。我们使用这些解释来构建新的用户界面来理解模型,例如,允许我们快速查看哪些神经元在特定数据集示例上激活,以及这些神经元做什么。

     
     
    我们的许多读者可能知道,日本消费者非常喜欢独特而有创意的Kit Kat产品和口味。但现在,雀巢日本公司推出了一种可以描述为Kit Kat的新口味,而是一种新的“物种”。为什么我们称它为新物种?嗯,这是因为你只需要做一点烹饪就能充分享受这些KitKats。
     
     

    我们正在开源GPT-2 XL中所有神经元的解释数据集,解释代码和评分,以鼓励进一步研究两者,产生更好的解释。我们还在使用数据集发布神经元查看器。虽然大多数解释清楚的神经元不是很有趣,但我们发现了许多GPT-4不理解的有趣神经元。我们希望这能让其他人更容易地在我们的工作之上发展。有了未来更好的解释和工具,我们也许能够迅速发现对模型计算的有趣定性理解。

    方法

    背景

        我们的方法涉及多种语言模型:
        • 主题模型是我们试图解释的模型。
        • 解释器模型提出关于主体模型行为的假设。 1
        • 模拟器模型根据假设进行预测。根据预测与现实的匹配程度,我们可以判断假设的质量。模拟器模型应该像理想化的人类一样解释假设。 2

    在本文中,我们从识别与中间激活相关的文本输入属性的最简单案例开始。我们最终希望扩展我们的方法,以探索关于主题模型计算的任意假设。

    在语言模型案例中,输入是文本段落。对于中间激活,我们专注于MLP层中的神经元。在本文的其余部分,激活是指MLP激活后值,计算为,其中是非线性激活函数(特别是GPT-2的GELU)。然后使用神经元激活通过添加来更新剩余流。

    当我们对神经元有一个假设的解释时,假设是神经元在具有该属性的令牌上激活,其中属性可能包括以前的令牌作为上下文。

    整体算法

    在高层次上,我们解释神经元的过程使用以下算法:

        • 解释:通过显示神经元对文本摘录的反应中的解释模型(令牌、激活)对来生成神经元行为的解释
        • 模拟:使用模拟器模型根据解释模拟神经元的激活
        • 评分:根据模拟激活与真实激活的匹配程度自动为解释评分

    我们总是使用不同的文档来生成解释和模拟。 3

    我们用于生成解释、模拟神经元和评分解释的代码可以在这里找到

    第1步:生成神经元行为的解释

        在此步骤中,我们创建一个提示,该提示发送到解释器模型,以生成对神经元行为的一个或多个解释。该提示由其他真实神经元的几个示例组成,以及文本摘录和研究人员撰写的解释中的制表符分隔(令牌,激活)对。最后,这个几个示例包含正在解释的神经元文本摘录中的制表符分隔(令牌,激活)对。
    4

    激活被归一化为0-10级,离散化为整数值,负激活值映射到0,神经元映射的最大激活值映射到10。对于神经元激活稀疏(<20%非零)的序列,我们发现在令牌的完整列表后额外重复具有非零激活的令牌/激活对是有帮助的,这有助于模型专注于相关令牌。

    第2步:使用解释模拟神经元的行为

    通过这种方法,我们旨在回答这个问题:假设拟议的解释准确而全面地解释了神经元的行为,该神经元将如何激活特定序列中的每个令牌?为此,我们使用模拟器模型来模拟每个主体模型令牌的神经元激活,前提是该模型基于拟议的解释。

    我们提示模拟器模型为每个主题模型令牌从0-10输出一个整数。对于每个预测的激活位置,我们检查分配给每个数字的概率(“0”,“1”,“...”,“10”),并使用这些概率来计算输出的预期值。因此,得到的模拟神经元值是[0, 10]比例。

    我们最简单的方法就是我们所说的“一次一个”方法。提示由一些几个镜头示例和预测单个令牌激活的单个镜头示例组成。

    不幸的是,“一次一个”方法相当慢,因为它每个模拟令牌需要一个向前传球。我们通过几个示例,将激活值从“未知”切换到序列中随机位置的实际值,从而将所有令牌的概率预测并行化。通过这种方式,我们可以在上下文中用“未知”模拟神经元,同时仍然通过检查“未知”令牌的logprobs来引发模型预测,并且模型从未观察到相关神经元的任何实际激活值。我们称之为“同时进行”方法。

    由于速度优势,除了一些较小的定性结果外,我们在论文的其余部分使用“一次性”评分。除了更快外,我们惊讶地发现使用“一次全部”方法计算的分数与“一次一个”方法一样准确,可以预测解释之间的人类偏好。 6

    第3步:通过比较模拟和实际的神经元行为来为解释评分

    从概念上讲,根据解释和模拟策略,我们现在有一个模拟神经元,一个“神经元”,我们可以预测任何给定文本摘录的激活值。为了给解释打分,我们想将这个模拟的神经元与产生解释的真实神经元进行比较。也就是说,我们想比较两个值列表:对多个文本摘录进行解释的模拟激活值,以及同一文本摘录上真实神经元的实际激活值。

    概念上简单的方法是在所有令牌上使用模拟激活的解释真实激活方差。也就是说,我们可以计算,其中表示给定解释的模拟激活,并表示真正的激活,并且期望来自所选文本摘录的所有令牌。 7

    然而,我们的模拟激活处于[0, 10]规模,而真正的激活将有一些任意分布。因此,我们假设能够将模拟神经元的激活分布校准为实际的神经元分布。我们选择简单地对正在评分的文本摘录进行线性校准。如果是真实激活和模拟激活之间的相关系数,那么我们缩放模拟,使其平均值与真实激活的平均值相匹配,其标准差乘以真实激活的标准差。这使解释方差最大化。

    这激发了我们主要的评分方法,相关性评分,它只是报告。请注意,如果模拟的神经元的行为与真正的神经元相同,分数是1。如果模拟神经元的行为是随机的,例如,如果解释与神经元行为无关,分数往往在0左右。

    验证消融评分

    另一种理解网络的方法是在正向传递期间扰动其内部值并观察其影响。这表明了一种更昂贵的评分方法,我们将真正的神经元替换为模拟神经元(即将其激活消融为模拟激活值),并检查网络行为是否得到保留。

    为了衡量从消音到模拟的行为变化的程度,我们使用Jensen-Shannon在受扰和原始模型的输出logprobs之间的发散,在所有令牌上平均。作为比较的基线,我们执行第二次扰动,将神经元的激活与所有令牌的均值相隔。对于每个神经元,我们通过消退到均值的发散来将消退到模拟的发散归一化。因此,我们将消融分数表示为,其中表示在文本摘录上运行模型,神经元被消融,并在每个令牌上返回预测分布,在每个令牌处获取Jensen-Shannon发散并平均它们,是序列上模拟神经元值的线性校准向量,并且是所有令牌上该神经元的平均激活。请注意,对于这个消融分数,至于相关分数,偶然表现导致得分为0.0,完美表现导致得分为1.0。

    仅随机得分顶部和随机得分

    我们发现,平均而言,相关性评分和消融评分有明确的关系。因此,论文的其余部分使用相关评分,因为它的计算要简单得多。然而,相关性评分似乎没有捕捉到消融评分所揭示的模拟解释中的所有缺陷。特别是,0.9的相关分数仍然导致平均相对较低的烧蚀分数(仅随机文本摘录评分为0.3,顶部和随机文本摘录评分为0.6;有关如何选择这些文本摘录,请参阅下文)。 11

    根据人类评分进行验证

    一个潜在的担忧是,基于模拟的评分实际上并不反映人类对解释的评估(更多讨论见此处)。我们收集了解释质量的人类评估,看看他们是否同意基于分数的评估。

    我们给了人类标签员任务,他们看到与模拟器模型(顶部激活和随机)相同的文本摘录和激活(以颜色高亮显示),并被要求根据这些解释捕获激活模式的程度对5个拟议解释进行评分和排名。我们发现解释器模型的解释并不多样化,因此通过改变解释生成提示中使用的少数示例,或使用修改后的提示,要求解释器模型在单个完成中提供可能解释的编号列表,从而增加了解释多样性。

    我们的结果表明,人类倾向于更喜欢得分较高的解释,而不是得分较低的解释,随着得分差距的扩大,这种偏好的一致性会增加。

    算法参数和细节

    在整个工作中,除非另有说明,否则我们使用GPT-2预训练模型作为主题模型,并将GPT-4用于解释器和模拟器模型。 12

    对于生成和模拟解释,我们从主题模型的训练前数据集的训练拆分中摘录文本(例如WebText,用于GPT-2模型)。我们选择文档的随机64个令牌连续子序列作为我们的文本摘录,其格式与模型的训练方式相同,但我们从未跨越文档边界。 14

    在生成解释时,我们使用5个“顶级激活”文本摘录,这些摘录至少有一个具有极大激活值的令牌,由最大激活的分位数决定。这是因为我们在经验上发现:

    • 在解释生成提示中专门使用顶级激活序列,即使仅针对随机序列或激活在低分位数的序列进行评分时,也得出了最佳解释分数(见下图)。事实上,我们发现,甚至从20,000个文本摘录中的前1名到60,000个文本摘录中的前1个都有明显的进展。
    • 当使用16-64个令牌文本摘录时,解释分数最高,即使用于评分的序列更长。
    • 使用超过5-10个文本摘录来生成解释不会对分数产生显著影响(尽管与序列长度有一些相互作用)。
    • 在解释生成中包括随机或低分位序列的示例,会降低解释分数。
    • 解释最大激活序列也给出了极低的解释分数。 15

    因此,在本文的其余部分,除非另有说明,否则解释总是从5个顶级激活序列中生成。我们设置了0.9996的最高分位数阈值,取了总共50,000个序列中包含最高激活的20个序列。我们在温度1下对解释进行采样。

    对于模拟和评分,我们报告了5个均匀随机的文本摘录(“仅限随机”)。仅随机分数可以被认为是一种解释的能力,可以捕捉神经元在训练前分布中的特征表现。虽然仅随机评分在概念上易于解释,但我们也报告了5个顶级激活和5个随机文本摘录(“顶级和随机”)的混合分数。顶部和随机分数可以被认为是一种解释捕捉神经元最强烈代表性的特征的能力(来自顶部文本摘录),而过于宽泛的解释(来自随机文本摘录)的惩罚。与仅随机评分相比,顶部和随机评分有几个务实的优势:

    • 随机文本摘录导致方差分数明显更高。经验上,我们发现仅随机评分表现良好的神经元是密集激活的神经元。大多数神经元都相当稀疏,虽然大量神经元的手段可能具有信息性,但单个神经元评分通常没有信息。
    • 鉴于多语义,神经元可能需要极长/分离的解释。即使是对应于一个特征的神经元也可能受到其他特征的实质性干扰。只解释极端行为似乎是获得更清洁特征的合理方法,从长远来看,这可能更类似于我们希望解释的。
    • 我们希望能够在对抗性选择的文本摘录上得分,例如我们的解释修订。在保持统一的培训前解释的同时,这样做更具挑战性。此外,1的完美相关性(或解释方差)仍然有类似的解释。

    请注意,由于缺乏具有高模拟激活的令牌和高真实激活的令牌,小样本大小的“仅随机”评分可能会无法捕获行为。“顶级和随机”评分解决了后者,但导致我们惩罚虚假的低模拟,而不是虚假的高模拟,因此倾向于接受过于宽泛的解释。一种更有原则的方法,可以两全其美,可能是坚持仅随机评分,但结合使用重要性抽样作为方差减少策略,增加仅随机文本摘录的数量。 17

    下面我们展示了一些神经元评分的原型示例。

    旋转木马
    由于低激活状态下的行为,一个具有特别好的最高随机分数,但只有差的随机分数的神经元

    结果

    解释说明:在本节中,我们的结果可以使用略有不同的方法(例如,不同的解释模型、不同的提示等)。因此,分数并不总是在图表上具有可比性。在所有图中,误差条对应于均值的95%置信区间。 18

    总体而言,对于GPT-2,我们发现使用最高和随机评分的平均得分为0.151分,仅随机评分为0.037分。当进入后面的图层时,分数通常会下降。

    第0层
    仅随机得分顶部和随机得分

    请注意,神经元的个别分数可能很吵,特别是对于仅随机评分。考虑到这一点,在总共307,200个神经元中,有5,203个(1.7%)使用我们的默认方法,最高和随机得分高于0.7(大约解释了方差的一半)。仅随机得分,下降到732个神经元(0.2%)。只有189个神经元(0.06%)的顶级随机分数高于0.9,86个(0.03%)的随机分数高于0.9。

    Unigram基线

    为了绝对理解我们解释的质量,与不依赖于语言模型总结或模拟激活能力的基线进行比较是有帮助的。出于这个原因,我们检查了几种基于单个令牌直接预测激活的基线方法,使用模型权重或跨保留文本聚合的激活数据。对于每个神经元,这些方法在词汇表中每个令牌给出一个预测的激活值,这比语言模型产生的简短自然语言解释的信息要多得多。因此,我们还使用语言模型简要总结了这些激活值列表,并将其作为我们典型模拟管道中的解释。

    使用权重进行基于令牌的预测

    logit透镜和相关技术将神经元权重与令牌联系起来,试图用导致神经元激活的令牌或神经元导致模型采样的令牌来解释神经元。从根本上说,这些技术取决于将神经元的输入或输出权重乘以嵌入或非嵌入矩阵。

    为了线性预测每个令牌的激活,我们将每个令牌嵌入乘以前MLP层范数增益和神经元输入权重()。这种方法允许为词汇表中的每个令牌分配一个标量值。此方法的预测激活仅取决于当前令牌,而不取决于前面的上下文。这些标量值直接用于预测每个令牌的激活,无需总结。这些基于重量的线性预测是机械或“因果”解释,因为重量直接影响神经元的输入模式,从而影响其激活模式。

    基于线性令牌的预测基线的表现优于第一层基于激活的解释和评分,几乎完美地预测了激活(鉴于只有第一关注层介入嵌入层和第一MLP层之间,这并不奇怪)。对于所有后续层,基于GPT-4的解释和评分比基于线性令牌的预测基线更好地预测激活。 19

    基于线性令牌的预测基线是一个有点不公平的比较,因为词汇表中每个令牌一个标量值的“解释长度”比基于GPT的自然语言解释要长得多。使用语言模型将此信息压缩成一个简短的解释,并模拟该解释可能会作为影响预测激活准确性的“信息瓶颈”。为了控制这一点,我们尝试了一种混合方法,将基于GPT-4的解释应用于具有最高线性预测激活的令牌列表(对应于前100个值中的50个),而不是顶级激活。这些解释的得分比基于线性令牌的预测或基于激活的解释都要差。

    仅随机得分顶部和随机得分

    使用查找表进行基于令牌的预测

    基于令牌的线性预测基线可能低于基于激活的基线,原因有以下几种。首先,它可能会失败,因为多令牌上下文很重要(例如,许多神经元对多令牌短语很敏感)。其次,它可能会失败,因为令牌嵌入和重要的中间处理步骤很重要,而线性预测不能很好地表示令牌对神经元活动的真正因果影响。

    为了评估第二种可能性,我们构建了第二种“相关”基线。对于这个基线,我们在大量被保留的互联网文本上计算每个令牌和每个神经元的平均激活。然后,我们使用这些信息来构建查找表。对于文本摘录中的每个令牌和每个神经元,我们使用令牌查找表预测神经元的激活,与前面的令牌无关。同样,我们不总结此查找表的内容,或使用语言模型来模拟激活。

    令牌查找表基线比基于令牌的线性预测基线强得多,平均性能大大优于基于激活的解释和模拟。我们应用与基于令牌的线性基线相同的解释技术来衡量使用GPT-4的解释和模拟的信息瓶颈如何影响预测激活的准确性。

    由此产生的基于令牌查找表的解释所产生的分数与我们在顶部和随机评分的基于激活的解释相似,但在仅随机评分上的表现优于基于激活的解释。然而,我们对编码多令牌上下文复杂模式而不是单个令牌的神经元最感兴趣。尽管平均表现较差,但我们发现许多有趣的神经元,基于激活的解释比基于令牌查找表的解释更有优势。我们还能够通过修改解释来改进基于令牌查找表的解释。从长远来看,我们计划使用结合基于令牌和基于激活的信息的方法。

    仅随机得分顶部和随机得分

    基于下一个令牌的解释

    我们注意到,一些神经元似乎编码了预测的下一个令牌,而不是当前令牌,特别是在后来的层中(见下文描述的“来自”预测的神经元)。我们的基线方法提示GPT-4与(先令牌,激活)对,无法捕获这种行为。作为替代方案,我们提示GPT-4使用(下一个令牌,激活)对,根据最高激活后的令牌来解释和模拟神经元的激活。这种方法对神经元子集更成功,特别是在后期,并且在最后几层的平均得分与基线方法相似。
    仅随机得分顶部和随机得分

    修改解释

    单个解释提示中显示的一小部分文本摘录和激活从根本上阻碍了解释质量,这并不总是足以解释神经元的行为。迭代解释可能会让我们有效地利用更多信息,依靠大型语言模型的紧急能力,在测试时使用推理来改善响应。

    [30]
    [31]

    20

    我们发现的一个特殊问题是,过于宽泛的解释往往与顶级激活序列一致。例如,我们发现了一个“不是全部”的神经元,它在短语“不是全部”和一些相关短语上激活。然而,选择用于解释的顶级激活文本摘录并没有伪造一个更简单的假设,即神经元在短语“所有”上激活。因此,该模型产生了一个过于宽泛的解释:“术语“所有”以及相关的上下文短语”。然而,在不同上下文中观察包含“所有”的文本摘录的激活表明,神经元实际上正在为“所有”激活,但只有当短语“不是全部”的一部分时。从这个例子和其他类似的例子中,我们得出结论,在顶部和随机激活序列之外寻找新证据将有助于更充分地解释一些神经元。

    更糟糕的是,我们发现我们的解释器技术往往没有考虑到负面证据(即神经元不发射的例子,这使某些假设失去资格)。对于“不是全部”神经元,即使我们手动向解释者上下文添加负面证据(即包含零激活的“全部”一词的序列),解释者也会忽略这些,并产生相同的过于宽泛的解释。解释器模型可能无法在一次向前传中关注提示的所有方面。

    为了解决这些问题,我们采用了两步修订流程。

    第一步是寻找新的证据。我们使用GPT-4的几发提示来生成与现有解释匹配的10个句子。例如,对于“不是全部”的神经元,GPT-4生成的句子在非否定的上下文中使用“所有”一词。

    希望找到原始解释的假阳性,即包含令牌的句子,其中神经元的真实激活率低,但模拟激活率高。然而,我们不会过滤针对此条件生成的句子。在实践中,大约42%生成的序列会导致解释的假阳性。对于86%的神经元来说,10个序列中至少有一个导致假阳性。这提供了一个独立的信号,表明我们的解释往往过于包容。我们将生成的10个句子分成两组:5个用于复习,5个用于评分。一旦我们生成了新句子,我们就使用主语模型进行推断,并记录目标神经元的激活。

    第二步是使用GPT-4的几发提示来修改原始模型解释。提示包括用于生成原始解释的证据、原始解释、新生成的句子以及这些句子的地面真理激活。一旦我们获得修订后的解释,我们将按照用于对原始解释进行评分的一组序列进行评分。我们还对同一组的原始解释和修订后的解释进行评分,并增加了新证据的评分拆分。

    我们发现,修订后的解释得分优于原始评分集和增强评分集的原始解释。不出所料,原始解释在增强评分组上的得分明显比原始评分组差。

    顶部和随机得分顶部和随机和生成的得分

    我们发现修订很重要:用新句子重新解释的基线(“重新解释”),但没有获得旧解释的基线不会改善基线。作为后续实验,我们尝试使用具有非零激活(“revision_rand”)的少量随机句子样本进行修订。我们发现,这种策略可以提高解释分数,几乎与使用生成的句子进行修订一样多。我们假设,这在一定程度上是因为随机句子也是初始解释的假阳性的良好来源:大约13%的随机句子包含原始模型解释的假阳性激活。

    总体而言,修订让我们在令牌查找表解释中超过顶部和随机但并非随机评分的分数,而这些分数的改进是有限的。 22

    仅随机得分顶部和随机得分

    从定性上讲,我们观察到的主要模式是原始解释过于宽泛,修订后的解释过于狭窄,但修订后的解释更接近事实。例如,对于第0层神经元4613,最初的解释是“与基数方向和序数相关的单词”。GPT-4基于这种解释生成了10个句子,其中包括许多与这种描述匹配的单词,这些单词最终缺乏显著的激活,如“第三”、“向东”、“西南”。修订后的解释是“这个神经元激活了对序数'第四'的引用”,它给出的假阳性要少得多。然而,修订后的解释并没有完全捕捉到神经元的行为,因为除了第四个词外,还有其他几个激活词,如“荷兰”和“白色”。

    我们还观察到,通过修订,以原始解释技术为目标的问题,实现了几个有希望的改进。例如,一种常见的神经元激活模式是为一个单词激活,但只能在非常特定的上下文中激活。这方面的一个例子是“假设有”神经元,它为“有”一词激活,但只是在假设或可能发生不同的情况的背景下(例如“如果我现在有能力的话,我会永远关闭它。”)最初的模型解释未能理解这种模式,并产生了过于宽泛的解释,“'有'这个词及其各种上下文”。然而,当提供包含假阳性激活的句子时(例如“他昨晚和朋友一起吃了晚饭”)审校能够了解真实的模式,并给出正确的解释。原始解释未能捕捉到的其他一些神经元激活模式,但修订后的解释是“'一起'一词,但只有在前面加上'get'一词时”(例如“get together”,“get together”),以及“the word'because',但只有当'只是因为'语法结构的一部分”(例如,“只是因为某样东西看起来真实,并不意味着它是真实的”)。

    未来,我们计划探索改进证据来源和修订的不同技术,例如来源假阴性、应用思维方法链和微调。

    寻找可解释的方向

    神经元在自然语言中可以简明扼要地解释的程度也阻碍了解释质量。我们发现我们检查的许多神经元都是多义神经元,可能是由于叠加。这暗示了一种通过改进我们正在解释的内容来改进解释的不同方法。我们探索了一种利用这种直觉的简单算法,使用我们的自动化方法来对叠加的可能攻击角度。

    高级想法是优化神经元的线性组合。给定一个激活向量和单位向量(方向),我们定义了一个具有激活的虚拟神经元,其中是共方差矩阵。 24

    从均匀的随机方向开始,我们使用坐标上升进行优化,交替执行以下步骤:

    1. 解释步骤:通过搜索解释良好的解释(即获得高解释分数)来优化解释。
    2. 更新步骤:通过计算分数的梯度进行优化,并执行梯度上升。请注意,只要解释和模拟值是固定的,我们的相关分数是可以区分的。

    对于解释步骤,最简单的基线是简单地使用典型的基于顶部激活的解释方法(其中激活是每个步骤的虚拟神经元)。然而,为了提高解释步骤的质量,我们使用生成的负片的修订,并重复使用之前步骤中的高分解释。

    我们在GPT-2 small的第10层(倒数第二层MLP层)的50个神经元上运行此算法,进行10次迭代。对于梯度上升,我们使用lr=1e-2、=0.9和=0.999的Adam。我们还将每次迭代调整为单位范数。

    我们发现,10次迭代后的最高和随机平均得分为0.718,大大高于该层中随机神经元的平均得分(0.147),也高于任何优化前随机方向的平均得分(0.061)。

    这个程序的一个潜在问题是,我们可以反复趋同于相同的可解释方向,而不是找到一组多样化的局部最大值。为了检查这种情况发生的程度,我们测量并发现由此产生的方向彼此的余弦相似性非常低。

    我们还检查了对它们贡献最大的神经元,并定性地观察到它们通常在语义上完全无关,这表明发现的方向不仅仅是特定的神经元或语义上相似的神经元的小组合。如果我们通过激活与方向的激活的相关性,只截断到顶部神经元,我们发现需要非常多的神经元来恢复分数(解释是固定的)。 25

    方向
    今天今天早上有相当大的云。当天晚些时候,云层有所减少。可能会有一场杂散的阵雨或雷暴。接近85华氏度。时速5至10英里的东南风。今晚部分多云的天空。可能会有一场杂散的阵雨或雷暴。低71
    Scattered showers and thunderstorms. A few storms may be severe. High 78F.Winds SSW at 5 to 10 mph. Chance of rain 50%.. Tonight Thunderstorms likelythis evening. Then the chance of scattered thunderstorms overnight. A fewstorms may be severe. Low 59
    ,IA (52732) 今天早雨......然后仍然多云,下午有阵雨。雷霆可能。高66华氏度。风轻而多变。下雨的几率为80%..今晚可能会有雷暴。大约60华氏度的低气压。每小时5到10英里的东南风
    ,好的(74078)今天多云,预计很晚会有阳光。高79华氏度。每小时5至10英里的东南风。今晚可能会有一两场阵雨,一夜之间天空部分多云。低57华氏度。E风速为每小时5至10英里
    17801)今天,早上的云层和太阳的混合将让位于今天下午多云的天空。阵雨的可能性很小。高接近65华氏度。风轻而多变。今晚下雨。低56华氏度。风力轻,多变。下雨的几率100
    最相关的神经元
    今天今天早上有相当大的云。当天晚些时候,云层有所减少。可能会有一场杂散的阵雨或雷暴。接近85华氏度。时速5至10英里的东南风。今晚部分多云的天空。可能会有一场杂散的阵雨或雷暴。低71
    零星的阵雨和雷暴。一些风暴可能很严重。高78华氏度。每小时5至10英里的西南风速。下雨的几率50%..今晚可能会有雷暴。然后一夜之间出现零星雷暴的可能性。一些风暴可能很严重。低59
    ,IA (52732) 今天早雨......然后仍然多云,下午有阵雨。雷霆可能。高66华氏度。风轻而多变。下雨的几率为80%..今晚可能会有雷暴。大约60华氏度的低气压。每小时5到10英里的东南风
    ,好的(74078)今天多云,预计很晚会有阳光。高79华氏度。每小时5至10英里的东南风。今晚可能会有一两场阵雨,一夜之间天空部分多云。低57华氏度。E风速为每小时5至10英里
    17801)今天,早上的云层和太阳的混合将让位于今天下午多云的天空。阵雨的可能性很小。高接近65华氏度。风轻而多变。今晚下雨。低56华氏度。风力轻,多变。下雨的几率100
     

    这种方法的一个主要局限性是,在优化可解释性的学习代理时必须小心谨慎。在理论上可能存在局限性,我们可以对模型中的方向提供忠实的人类可理解的解释。

    [35]

    解释器模型缩放趋势

    一个重要的希望是,随着我们的援助越来越好,解释也会得到改善。在这里,我们尝试不同的解释器模型,同时将模拟器模型固定在GPT-4。我们发现解释通过解释器模型能力顺利改进,并且跨层相对均匀地改进。

    仅随机得分顶部和随机得分

    我们还从被要求从头开始写解释的标签人那里获得了人类基线,使用解释器模型使用的同一组5个顶级激活文本摘录。我们的贴标者是非专家,他们收到了指示和一些研究人员撰写的例子,但没有关于神经网络或相关主题的更深入的培训。

    我们看到,人类的表现超过了GPT-4的性能,但幅度不大。人类表现的绝对值也很低,这表明改进解释的主要障碍可能不仅仅是解释模型能力。

    模拟器模型缩放趋势

    对于一个糟糕的模拟器,即使是一个非常好的解释也会得到低分。为了了解模拟器的质量,我们将解释分数视为模拟器模型能力的函数。我们发现顶级随机得分的回报率很高,而仅随机得分的得分则会稳定。

    仅随机得分顶部和随机得分

    当然,模拟质量不能用分数来衡量。然而,我们也可以使用前面描述的人类比较数据来验证来自大型模拟器的分数诱导比较与人类更一致。在这里,人类基线来自人与人之间的一致性率。使用GPT-4作为模拟器模型的分数正在接近,但仍然略低于与其他人类的人类水平的一致率。

    我们的方法可以快速洞察主题模型的哪些方面会增加或减少解释分数。请注意,这些趋势的某些部分可能反映了我们特定解释方法的优势和劣势,而不是主体模型神经元在多大程度上“可解释”或人类适度努力可理解的程度。如果我们的解释方法得到充分改进,这种方法可以深入了解模型的哪些方面增加了或降低了可解释性。

    主题模型尺寸

    一个自然的问题是,更大、更有能力的模型是否比小模型更难理解。因此,我们测量GPT-3系列中主题模型的解释分数,大小从98K到6.7B参数不等。一般来说,我们看到神经元的可解释性呈下降趋势,使用我们的方法增加模型大小,只有随机评分的趋势特别明显。

    仅随机得分顶部和随机得分

    为了了解这一趋势的基础,我们逐层检查了可解释性。在第16层开始,平均解释分数随着深度的增加而大幅下降,使用顶部和随机和仅随机评分。对于较浅的层,顶部和随机分数也会随着深度的增加而下降,而仅随机的分数主要随着模型大小的增加而下降。由于较大的模型有更多的层,这些趋势共同意味着解释分数随着模型大小的增加而下降。

    仅随机得分顶部和随机得分

    请注意,这些趋势可能是人为的,从这个意义上说,它们主要反映了我们当前解释生成技术的局限性。我们关于基于“下一个令牌”的解释的实验证实了这样一种假设,即后来的更大模型层有神经元,其行为是可以理解的,但对于我们目前的方法来说很难解释。

    主题模型激活功能

    一个有趣的问题是,模型的架构是否会影响其可解释性,特别是在模型的稀疏性方面。为了研究这一点,我们使用稀疏激活函数从头开始训练一些小型(~3M参数)模型,该函数应用标准激活函数,但随后在每层中只保留固定数量的顶部激活,其余部分设置为零。我们对不同级别的激活密度进行尝试:1(基线)、0.1、0.01和0.001(前2个神经元)。我们希望激活稀疏应该阻止极端的多义。

    仅随机得分顶部和随机得分

    增加激活稀疏持续增加解释分数,但会伤害训练前的损失。我们还发现,RELU始终比GeLU产生更好的解释分数。

    学科模型培训时间

    另一个问题是训练时间如何影响固定模型架构的解释分数。为了研究这一点,我们查看了GPT-3系列中模型的中间检查点的解释分数,对应于训练的一半和四分之一。 28
    仅随机得分顶部和随机得分

    训练更多倾向于提高最高和随机分数,但降低仅随机分数。在固定的损失性能水平上,较小的模型可能倾向于有更高的解释分数。

    我们还发现,在同一培训运行的不同检查点之间的解释有显著的积极转移。例如,当使用对完全训练的模型的解释时,四分之一训练模型的分数似乎下降了不到25%,反之亦然。这表明特征-神经元对应关系的稳定性相对较高。

    定性结果

    有趣的神经元

    在整个项目中,我们发现了许多有趣的神经元。GPT-4能够找到我们认为在检查后合理的非平凡神经元的解释,例如“模拟”神经元与确定性和信心相关的短语的神经元,以及正确做事的神经元

    寻找有趣的神经元的一个成功策略是寻找那些与基于激活的解释相比,用令牌空间解释解释不好的神经元。这导致我们同时发现在某些上下文中密集激活的上下文神经元和许多在文档开头的特定单词上激活的神经元。

    另一个不依赖解释质量的相关策略是寻找上下文敏感神经元,这些神经元在上下文被截断时会以不同的方式激活。这导致我们发现了一个模式断路神经元,它激活了令牌,这些令牌打破了正在进行的列表中的既定模式(在一些精选句子中显示如下图所示),以及一个经常在奇怪或截断的单词后排版神经元。我们的解释模型通常无法获得关于有趣的上下文相关神经元的正确解释。

    我们注意到一些神经元似乎在与特定下一个令牌匹配的情况下激活,例如,下一个令牌可能是“来自”一词的神经元。最初,我们假设这些神经元可能会根据其他信号对下一个令牌进行预测。然而,其中一些神经元上的消融与这个故事不符。“来自”神经元实际上似乎略微降低了“来自”输出的概率。与此同时,它增加了“形式”一词变化的概率,这表明它正在做的事情之一是考虑错别字的可能性。由于它处于后期(48个中的44个),这个神经元可能会对网络已经将高概率放在“来自”一词上的情况做出反应。我们没有足够的调查来清楚地了解正在发生的事情,但许多神经元可能编码基于特定输入的输出分布的特定微妙变化,而不是执行其激活所暗示的明显功能。

    我们发现了一些对特定类型的重复做出反应的神经元的有趣例子。我们发现了一个神经元,可以激活令牌的重复出现,根据出现次数,激活强度更大。多语义神经元的一个有趣例子是神经元,它同时引发了“一遍又一遍”和“在非重复数字之前重复的事情”,可能是因为“一遍又一遍”本身包括重复。我们还发现了两个神经元,当与不同的名字结合时,它们似乎对第二次提到姓氏的反应主要。这些神经元可能正在对感应头做出反应。

    [42]

    总的来说,我们的主观感觉是,更有能力的模型的神经元往往更有趣,尽管我们花了大部分精力研究GPT-2 XL神经元,而不是更现代的模型。

    有关更多有趣的神经元,请参阅我们的神经元可视化网站

    解释构造的谜题

    当考虑如何从质量上理解我们的解释方法时,我们经常会遇到两个问题。首先,我们对解释或分数没有任何基本依据。即使是人类写的解释也可能是不正确的,或者至少无法完全解释这种行为。此外,通常很难判断是否存在更好的解释。其次,我们无法控制神经元编码的模式的复杂性或类型,也不能保证存在任何简单的解释

    为了解决这些缺点,我们创建了“神经元谜题”:带有人类书面解释和精选证据的合成神经元。为了创建一个神经元谜题,我们从人类写的解释开始,被认为是基本真理。接下来,我们根据解释收集文本摘录,并用“激活”手动标记其令牌(不对应于任何真实网络的激活,因为这些是合成神经元)。因此,每个谜题都是由支持该解释的解释和证据(即一组带有激活的文本摘录)形成的。

    为了评估解释器,我们向解释器提供令牌和合成激活,并观察模型生成的解释是否与原始谜题解释匹配。我们可以改变谜题难度,并编写新的谜题来测试我们感兴趣的某些模式。因此,这些谜题的集合构成了迭代我们解释器技术的有用评估。我们总共创建了19个谜题,其中许多灵感来自我们和其他发现的神经元,包括一个基于前面描述的“不是全部”神经元的谜题和GPT-2 Large中的“一个”预测神经元。

    [43]

    拼图示例:

    旋转木马

    对于每个谜题,我们确保证据足以让人类恢复原始解释。然而,人们可以想象创造人类通常无法解决的谜题,以评估超人的解释技术。我们的基线解释方法可以解决19个谜题中的5个。虽然它擅长在高激活的令牌中挑选出广泛的模式,但它始终没有在上下文中考虑令牌或应用基础知识。解释者也不擅长将负面证据纳入其解释中。例如,对于“不正确的历史年份”谜题,解释者认识到神经元在数字年中正在激活,但未能在提供的文本摘录中纳入神经元没有激活的数值年的证据。这些失败案例激励我们进行修订实验。事实上,当我们将修订技术应用于谜题时,我们又解决了4个谜题。

    这些神经元谜题还提供了一个微弱的信号,即记分器是否是比我们目前发现的更复杂神经元的拟议解释的有效区分器。我们通过写一系列错误的解释,为每个谜题创建了一个多项选择版本。例如,“这个神经元对美国或欧洲历史上的重要岁月做出反应”是“不正确的历史岁月”谜题的错误解释。其中一个错误的解释总是具有高激活率的三种最常见的令牌的基线。对于每个谜题,我们对地面真相解释以及该谜题的序列和激活的所有错误解释进行评分,然后记录地面真相解释得分最高的次数。对于16/19谜题,地面真相解释排名最高,对于18/19,地面真相解释排名前两名。与解释者解决的5/19谜题相比,这个评估向我们表明,解释者目前比得分者更是一个瓶颈。这可能反映了一个事实,即检测模式比根据解释验证模式更困难。

    然而,模拟器也存在系统性错误。虽然它在模拟只需要查看孤立令牌的模式(例如“与加拿大相关的单词”)方面表现良好,但它通常难以模拟涉及位置信息的模式以及涉及精确跟踪某些数量的模式。例如,当模拟“an”神经元(“该神经元激活句子中可能后跟单词“an”的位置)时,结果包括非常多的错误阳性。

    我们正在发布代码,用于尝试我们构建的神经元谜题

    讨论

    限制和注意事项

    我们的方法有一些局限性,我们希望这些局限性能在未来的工作中得到解决。

    神经元可能无法解释

    我们的工作假设神经元行为可以用简短的自然语言解释来概括。由于多种原因,这个假设可能存在问题。

    神经元可能代表许多特征

    过去的研究表明,神经元作为计算单位可能没有特权。特别是,可能存在对应于多个语义概念的多语义神经元。虽然我们的解释技术可以而且经常会按照“X,有时是Y”的思路产生解释,但它不适合捕获复杂的多语义实例。

    在以前的工作中,分析顶级激活数据集示例在实践中已被证明是有用的,但也可能导致可解释性的错觉。通过关注顶部激活,我们打算将模型集中在神经元在极值激活值下行为的最重要方面,而不是在较低的百分位数上,因为神经元的行为可能有所不同。

    一种减少或围绕多语义性工作的方法是对神经元空间应用一些分解,如NMF、SVD或字典学习。我们认为,这可以与方向查找培训可解释模型相辅相成。

    外星人特征

    此外,语言模型可能代表人类没有单词的外星概念。这可能是因为语言模型关心不同的东西,例如对下一个令牌预测任务有用的统计结构,或者因为模型发现了人类尚未发现的自然抽象,例如不同领域中的一些类似概念家族。

    我们解释相关性,而不是机制

    我们目前解释了网络输入和在固定分布上被解释的神经元之间的相关性。过去的工作表明,这可能不能反映两者之间的因果行为。

    [53]
    [45]

    我们的解释也没有解释在机械层面上导致行为的原因,这可能导致我们的理解错误地概括。为了预测罕见或分布外的模型行为,我们似乎需要对模型有更机械的理解。

    模拟可能无法反映人类的理解

    我们的评分方法依赖于模拟器模型,忠实地复制了理想化人类对解释的反应。然而,在实践中,模拟器模型可以捕捉到人类不会接受的解释的各个方面。在最坏的情况下,解释器模型和模拟器模型可以隐式地进行某种隐写术及其解释。例如,如果解释器和模拟器模型都将相同的虚假特征与实际特征混为一谈,则可能会发生这种情况(因此主体可能会响应特征X,解释者会错误地说Y,但模拟可能恰好在X上很高)。

    理想情况下,人们可以通过训练模拟器模型来模仿人类模拟标签来缓解这种情况。我们计划在未来的工作中参观这个。这也可能提高我们的模拟质量,并简化我们提示模型的方式。

    有限的假设空间

    为了更充分地理解变压器模型,我们需要从解释单个神经元转向解释电路。这意味着包括关于神经元下游效应的假设,关于注意力头和逻辑的假设,以及涉及多个输入和输出的假设。

    最终,我们的解释模型将从丰富的假设空间中汲取灵感,就像可解释性研究人员所做的那样。

    计算要求

    我们的方法是相当计算密集型的。受试者模型中的激活次数(神经元、注意力头尺寸、剩余尺寸)大致为,其中是受试者模型参数的数量。如果我们使用恒定数量的正向传球来解释每个激活,那么在主题和解释器模型大小相同的情况下,整体计算尺度为。

    另一方面,与预培训本身相比,这可能是有利的。如果预训练用参数大致线性地缩放数据,那么它就会使用计算。

    上下文长度

    另一个计算问题是上下文长度。我们目前的方法要求解释器模型的上下文长度至少是传递给主题模型的文本摘录的两倍。这意味着,如果解释器模型和主体模型具有相同的上下文长度,我们只能最多在其完整上下文长度的一半内解释主体模型的行为,因此可能无法捕获一些只在后面的令牌上显示的行为。

    代币化问题

    令牌化有几种方式导致我们的方法出现问题:
    1. 解释器和主题模型可能会使用不同的令牌化方案。激活数据集中的令牌来自主题模型的推断,并将使用该模型的令牌化方案。当相关字符串出现在发送到解释器模型的提示符中时,它们可能会被拆分为多个令牌,或者它们可能是部分令牌,不会自然地出现在解释器模型的给定文本摘录中。
    2. 我们使用字节对编码器,因此当将令牌逐个输入模型时,有时令牌无法合理地显示为字符。我们假设解码单个令牌是有意义的,但情况并非总是如此。原则上,当主题和解释器模型具有相同的编码时,我们本可以使用正确的令牌,但我们在这项工作中忽略了这一点。
    3. 我们在令牌及其相应的激活之间使用分隔符。理想情况下,解释器模型会将每个令牌、分隔符和激活视为单独的令牌。然而,我们不能保证它们不会合并,事实上,我们的标签分隔符与换行符令牌合并,这可能会使助理的任务更难。

    如果这些令牌化的怪癖影响了模型对原始文本摘录中出现的哪些令牌的理解,它们可能会损害我们的解释和模拟的质量。

    Outlook

    虽然我们已经描述了我们当前版本的方法的一些局限性,但我们相信我们的工作可以大大改进,并与其他现有方法有效整合。例如,对多语义的成功研究可能会立即导致我们的方法产生更高的分数。相反,我们的方法可以通过尝试找到涵盖神经元在整个分布中行为的多种解释,或通过优化以在残差流中找到一组可解释的方向(也许与字典学习等方法相结合)来帮助提高我们对叠加的理解。我们还希望我们能够将更广泛的通用可解释性技术,例如研究注意力头、使用消融进行验证等整合到我们的自动化方法中。

    对思想链方法、工具使用和会话助理的改进也可以用来改进解释。从长远来看,我们设想解释器模型可以在关于主题模型的丰富假设空间上生成、测试和迭代,类似于今天的可解释性研究人员。这将包括关于电路功能和分布外行为的假设。解释器模型的环境可以包括访问代码执行、主题模型可视化和与研究人员交谈等工具。这样的模型可以使用专家迭代或强化学习进行训练,并使用模拟器/法官模型设置奖励。我们还可以通过辩论进行训练,其中两个相互竞争的助理模型既提出解释,又相互批评对方的解释。

    我们相信,我们的方法可以开始有助于了解变压器语言模型内部正在发生的事情的高级情况。访问解释数据库的用户界面可以实现更注重宏观的方法,可以帮助研究人员可视化数千或数百万个神经元,以查看它们之间的高级模式。我们可能很快就能在简单的应用程序上取得进展,例如检测奖励模型中的突出特征,或了解微调模型与其基础模型之间的定性变化。

    最终,我们希望能够使用自动可解释性来协助对语言模型进行审计,在那里我们将尝试检测和理解模型何时错位。特别重要的是检测目标错误概括或欺骗性对齐的例子,当模型在评估时行动一致,但在部署期间会追求不同的目标。这需要对每种内部行为有非常透彻的理解。如果我们不知道助手本身是否值得信赖,使用强大的模型进行援助也可能会很复杂。我们希望,使用较小的可信模型进行援助,要么扩展到完全的可解释性审计,要么将其应用于可解释性,将足以教会我们模型如何工作,以帮助我们开发更强大的审计方法。

    这项工作代表了OpenAI更广泛的对齐计划的具体实例,该计划使用强大的模型来帮助对齐研究人员。我们希望这是将可解释性扩大到未来全面了解更复杂、更有能力的模型的第一步。

    
    
    
    
    
    
    
    
    
    
    
    

内容中包含的图片若涉及版权问题,请及时与我们联系删除