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

新闻 前端
Transformer背后的计算模型是什么?现在,只要写上几行代码,就能将Transformer的流程可视化。

 [[406510]]

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

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

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

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

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

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

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

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

热心网友立马点赞:

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

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

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

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

这门新方法是怎么形成的

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

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

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

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

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

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

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

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

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

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

将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行代码:

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

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

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

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

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

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

表现怎么样?

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

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

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

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

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

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

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

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

团队介绍

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

[[406511]]

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

[[406512]]

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

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

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

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2017-09-05 08:35:09

Python可视化地图

2017-09-01 19:49:50

Python工具地图

2020-03-11 14:39:26

数据可视化地图可视化地理信息

2017-10-14 13:54:26

数据可视化数据信息可视化

2022-08-26 09:15:58

Python可视化plotly

2009-04-21 14:26:41

可视化监控IT管理摩卡

2021-03-25 07:30:24

代码开发数据

2020-02-21 16:51:58

前端可视化传染病

2021-12-25 22:30:27

Chrome DevTJavaScript调试工具

2012-11-13 10:52:15

大数据3D可视化

2020-03-07 21:48:46

物联网可视化技术设计

2013-10-18 09:56:16

开源开源代码

2015-08-20 10:06:36

可视化

2022-03-01 10:29:44

Kubernetes容器

2010-06-09 15:09:57

IP网络

2022-07-08 15:00:04

农业喷灌项目鸿蒙

2017-02-23 09:42:53

大数据数据可视化技术误区

2022-06-06 21:46:32

Kubernetes网络

2022-04-15 11:32:20

IDE工具鸿蒙操作系统

2016-12-08 20:18:00

算法可视化代码
点赞
收藏

51CTO技术栈公众号