3行代码就能可视化Transformer的奥义 | 开源

Posted QbitAl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3行代码就能可视化Transformer的奥义 | 开源相关的知识,希望对你有一定的参考价值。

博雯 发自 凹非寺
量子位 报道 | 公众号 QbitAI

Transformer背后的计算模型是什么?

就是最资深的炼丹er,也很难直观地解释这一结构中的信息如何流动,数据又是如何计算的。

但现在,只要写上几行代码,就能将Transformer的流程可视化

RASP代码被编译成一个两层三头的Transformer架构。

这就是RASP,以色列科学家最新研发的一种简单的序列处理语言。

他们希望通过这一语言去计算和解决更高层次的抽象问题

热心网友立马点赞:

我爱这篇论文,因为我在阅读机器学习论文时老是有“可视化Transformer”的想法,现在终于可以拿这个去玩儿了。而且用的都是一些简单的高阶函数,估计移植到Python或者放在Jupyter上跑也不难。

那么,这个叫做RASP的语言到底如何“像Transformer一样思考”的呢?

这门新方法是怎么形成的

让我们先追溯到上个世纪,RNN被抽象成为有限状态自动机(Finite State Automata)这一计算模型的例子。

这一例子说明了RNN与自动机之间存在着非常直观的相似性。

经过这种抽象之后,围绕RNN架构的变体或训练模型就展开了更为直观的讨论和思考。

而Transformer就不够直观,因为它在处理序列时拥有独特的信息流约束

到了2020年,出现了基于Transformer提出的可以识别Dyck-k语言的构架。

这时的Transformer网络在一阶段的逻辑公式中作为输入时,能够学习并展现出一种多步骤逻辑推理

这就对研究团队产生了启发:能不能编写一种程序,对输入表达式也进行类似的逻辑推理呢?

RASP(Access Sequence Processing Language)就这样诞生了。

将Transformer编码器的基本组件:注意力(attention)和前馈计算层(feed-forward computation)映射到简单的原语(primitives)中,然后围绕它们形成一种新的编码语言。

这就是RASP,全称限制性访问序列处理语言

当然,你也可以将RASP认为是一种Transformer结构的计算方法:

将Transformer网络的技术细节抽象而出,使其支持符号化程序,然后“编译”到Transformer硬件上,再定义一系列的注意力和多层感知器操作。

这就是像Transformer一样思考

怎样一个计算模型

好,现在来看看这个RASP到底是由什么构成的:

  • 内置的序列操作符(built-in s-ops)

在RASP中编程的目标就是将这些序列操作符组合成起来,去计算最终的目标任务。

  • 元素性操作(Elementwise Operations)

反映了Transformer的前馈子层。

  • 其他操作

所有除元素性操作之外的操作,比如宽度选择(selector_width operation)。

而Transformer的核心是什么?注意力机制。

RASP允许每个输入定义选择一种注意力模式,再通过加权平均,将输入值混合成一个新的输出。

那么它是如何进行编译呢?

当你输入这样3行代码:

RASP就能将序列操作符和输入对的编译流程可视化:

可以看到,第一层的头并不均匀地关注整个序列,而是在序列的最后位置上展示出了偏向性。

而Transformer第二层的注意头与程序中的反转选择器(flip selector)的行为完全对应:

表现怎么样?

RASP能够有效地预测一个Transformer解决某任务所需的最大层数头数吗?

研究者在每个任务上训练4个规定大小的Transformer,然后测试它们的准确性:结果是大多数Transformer都达到了99.5%以上的准确率。

这让RASP可以作为一种用来推断Transformer擅长哪些任务,或其架构如何影响这些任务的工具。

而在根据RASP预测尺寸训练的Transformer减少它的头数和层数时,准确率会发生大幅下降**。

用L、H表示编译的RASP程序所预测的层数和头数。

这也表示RASP拥有非常严格的约束性,在边界的紧密性(Tightness of the bound)上达到了极高的精度。

团队介绍

论文一作Gail Weiss是以色列理工学院的博士生,目前在学院内的计算机科学系中工作。

其中二作Yoav Goldberg来自以色列的巴伊兰大学,目前就职于艾伦人工智能研究院(Allen Institute for Artificial Intelligence)。

论文地址:
https://arxiv.org/abs/2106.06981

下载:
https://github.com/tech-srl/RASP

参考链接:
https://news.ycombinator.com/item?id=27528004

以上是关于3行代码就能可视化Transformer的奥义 | 开源的主要内容,如果未能解决你的问题,请参考以下文章

3行代码就能可视化Transformer的奥义 | 开源

3行代码就能可视化Transformer的奥义 | 开源

无需代码,极简5步大屏可视化教程,3分钟就能轻松做出酷炫报表

视觉Transformer中的输入可视化方法

数据可视化应用绘制动态图表(附Python代码)

强!1 行 Python 代码就可实现炫酷可视化