3行代码可视化Transformer的秘密Transformer背后的计算模型是什么?就算是最资深的炼金师,也很难直观的解释清楚这个结构中的信息是如何流动的,数据是如何计算的。但是现在,只需几行代码,您就可以将Transformer流程??可视化。△RASP代码编译成两层三头的Transformer架构。这就是以色列科学家新开发的简单序列处理语言RASP。他们希望用这种语言来计算和解决更高层次的抽象问题。热心网友顿时称赞:我喜欢这篇论文,因为看机器学习论文时总有“visualTransformer”的想法,现在终于可以把玩这个了。此外,还使用了一些简单的高阶函数。估计移植到Python或者运行在Jupyter上都不难。那么,这种被称为RASP的语言是如何“像变形金刚一样思考”的呢?这种新方法是如何形成的让我们回到上个世纪,当时RNN被抽象成一个名为FiniteStateAutomata的计算模型的例子。这个例子说明了RNN和自动机之间非常直观的相似性。经过这种抽象之后,可以围绕RNN架构的变体或训练模型进行更直观的讨论和思考。Transformer不太直观,因为它在处理序列时具有独特的信息流约束。到2020年,将会有一个基于Transformer的框架,可以识别Dyck-k语言。这时,当Transformer网络作为一个单阶段逻辑公式的输入时,它可以学习和演示一个多步骤的逻辑推理。这启发了研究团队:是否可以编写程序对输入表达式进行类似的逻辑推理?RASP(AccessSequenceProcessingLanguage)就是这样诞生的。将Transformer编码器的基本组件:注意力和前馈计算映射到简单的原语中,然后围绕它们形成一种新的编码语言。这是RASP,RestrictedAccessSequenceProcessingLanguage的缩写。当然,你也可以把RASP看作是Transformer结构的一种计算方式:抽象Transformer网络的技术细节,使其支持符号化程序,然后“编译”到Transformer硬件上,然后定义一系列attention和多层感知器操作。这就像变形金刚一样思考。什么样的计算模型好,现在让我们看看这个RASP是由什么组成的:内置序列运算符(built-ins-ops)在RASP中编程的目标是将这些序列运算符组合起来计算最终的目标任务。ElementwiseOperations反映了Transformer的前馈子层。其他操作除了基本操作之外的所有操作,例如selector_width操作。而Transformer的核心是什么?注意力机制。RASP允许每个输入定义选择一种注意力模式,然后通过加权平均,将输入值混合成一个新的输出。那么它是如何编译的呢?当你输入这3行代码时:RASP可以将序列算子和输入对的编译过程可视化:可以看到,一级表头并没有均匀关注整个序列,而是偏向显示。第二层Transformer的attentionhead正好对应程序中flipselector的行为:表现如何?RASP能否有效预测Transformer解决任务所需的最大层数和头数?研究人员在每个任务上训练了4个指定大小的Transformer,然后测试它们的准确率:结果是大多数Transformer的准确率都达到了99.5%以上。这使得RASP可以作为一种工具来推断Transformer擅长哪些任务,或者它的架构如何影响这些任务。当根据RASP预测大小训练的Transformer减少其头数和层数时,准确率显着下降**。△L和H代表编译后的RASP程序预测的层数和头数。这也意味着RASP有非常严格的约束,在bound的紧度上达到了极高的精度。团队介绍GailWeiss,论文第一作者,以色列理工学院博士生,目前在该院计算机科学系工作。其中两人YoavGoldberg来自以色列巴伊兰大学,目前在艾伦人工智能研究所工作。论文地址:https://arxiv.org/abs/2106.06981下载:https://github.com/tech-srl/RASP参考链接:https://news.ycombinator.com/item?id=27528004
