“可解释性”一直是深度学习绕不开的问题。用户无法理解模型的运行机制,无法安全地将模型应用到实际场景中。近日,来自苏黎世联邦理工学院和DeepMind的研究人员提出了一种全新的模型构建工具Tracr,人们直接根据“已知机制”为不同的任务编写代码,然后Tracr将它们编译成模型权重,这样模型的解释就得到了更轻松!论文链接:https://arxiv.org/pdf/2301.05062.pdf代码链接:https://github.com/deepmind/tracrTracr的输入是领域特定语言RASP编写的代码,而output是标准的只包含解码器的类似GPT的Transformer结构的权重。在实验部分,研究人员使用Tracr创建了一系列groundtruthTransformer,实现了包括计算token频率、排序和Dyck-n括号检查在内的程序。如何解读模型?可解释性是理解机器学习模型的重要手段,但目前的研究结果大多难以评估,因为模型实际如何运作仍不清楚。其中一个工作机制,Mechanisticinterpretability,试图对神经网络进行逆向工程,以对模型实现的算法给出机械解释,并在一系列任务中取得进展,包括用于图像分类的卷积神经网络、Transformer语言模型等。但该方法仍存在相关工具较少、缺乏对模型机制的深入解释、需要研究者进行创造性解释等问题。用于评估机械解释的标准方法结合了许多临时实验的证据,然而,由于这样做的成本很高,许多方法只能在玩具模型或真实模型中的少量不重要电路上进行评估。Tracr的解决方案是通过将人类可读的代码“编译”成神经网络的权重,直接解决缺乏基本机制解释的问题。换句话说,Tracr实际上就像一个编译器。Tracr主要涉及三个组成部分:1.RASP代码RASP全称RestrictedAccessSequenceProcessingLanguage,是2021年提出的一种表达Transformer计算的语言。可以作为描述Transformers的计算模型,并配备相应的解释器运行RASP代码。一个RASP程序可以被看作是一个计算图,当给定一个输入标记序列时,图上的每个节点都取一个特定的值。RASP语言包括两种基本节点类型;序列操作(SequenceOperations,s-op),它返回标记序列和输入值的索引序列;逐元素操作(Elementwiseoperations);选择-聚合操作等。在大多数情况下,RASP操作可以直接映射到Transformer模型的组件,包括embedding、MLP层和Attention层。2.对RASP语言的修改虽然RASP的操作可以直接映射到Transformers,但是仍然需要修改RASP语言来翻译模型权重。3.Craft,Transformer的汇编语言如果说RASP是一种编译型高级语言,那么craft就是一种汇编语言,它提供了比纯权重矩阵上的运算更多的抽象。Craft可以表示一个具有基维度(basisdimensions)的向量空间,及其相应的操作,可以使用基方向的标签来定义投影或其他线性操作。重要的是,craft抽象掉了跟踪权重矩阵中的填充的需要。Tracr:Transformer编译器Tracr的代码是用Python写的,RASP的实现是嵌入Python的,这样可以直接用Python写RASP程序,更方便标注变量编码(variableencoding)。在Tracr中,RASP程序是一种数据结构,它通过将依赖项传递给每个操作来逐步构建,同时对RASP程序进行一些基本的简化。Tracr将RASP程序转化为Transformer权重的过程主要包括六个步骤:1.构造一个计算图来跟踪整个程序,创建一个表示计算过程的有向图。对于输出s-op,该图包括一个表示标记和索引的源节点,以及一个表示输出s-op的汇节点。2.关于s-op值的推理对于每个s-op,需要决定如何将其嵌入到剩余流中;为了使用类别编码,需要知道一个s-op可以取哪些值。因为计算是确定性的,所以所有节点都有一个基于有限输入词汇表和上下文大小的有限输出值集。所以第二步的主要操作是遍历图,并为每个节点标记其可能的输出;该标记使用一种简单的启发式方法来确保找到s-op值集的超集。3.独立翻译s-ops独立考虑计算图中的每个节点,将其转化为工艺组件;元素操作被翻译成MLP块,选择聚合操作被翻译成注意力块。使用人工设计的MLP和注意模块库逼近数字和分类输入和输出的任意函数;使用具有分类输入和输出的MLP作为查找表;使用具有数字输入和输出的MLP使用一般函数逼近定理清晰的结构。对于注意力层,将选择器转换为
