告别自注意力,谷歌为Transformer打造新内核Synthesizer

一只小狐狸带你解锁 炼丹术&NLP 秘籍

作者:舒意恒(南京大学硕士生,知识图谱方向)

今天给大家介绍一篇来自Google的最新论文《SYNTHESIZER: Rethinking Self-Attention in Transformer Models[4],该论文重新探索了Transformer中注意力机制的必要性,并引入了新的attention计算方法Synthesizer。实验显示,即使不进行token之间的attention交互计算,synthesizer在翻译、语言模型、GLUE等任务上也可以达到很好的效果。

前言

什么是自注意力?

2017 年,Vaswani 等人 [1] 提出了 Transformer 模型,在众多领域取得了成功的应用,证明了它相比于自卷积模型和循环模型的优势。

Transformer 的关键在于 query-key-product 的点积注意力,token 被完全连接,能够对远距离的依赖关系进行建模。

Transformer 存在的问题

点积自注意力提供了强大的建模能力,但同时作者对点积自注意力提出了质疑,它的计算可能是不必要的。

点积的基本作用是确定单个 token 相对于序列中所有其他 token 的相对重要性。key、query、value 暗示自注意力模拟一个基于内容的检索过程,过程的核心是 pairwise 的交互。该文对整个过程进行了反思。

技术简介

Synthesizer 的关键思想

Synthesizer 的核心思想是用低复杂度的attention计算代替dot product式的注意力机制。传统 Transformer 的注意力机制需要进行 token 之间的两两交互,虽然可以获得更多的交互信息,但attention score会很依赖实例,难以保证模型学到更多的泛化特征。

因此,synthesizer提出了新的attention matrix学习方法,只通过简单的前馈神经网络即可得到注意力分数,完全省去了token之间的点积交互。

实现细节

Synthesizer 大体上可以理解为一个 Transformer,其中自注意力模块被 Synthetic Attention 模块替换。

上图表示了 Transformer、Dense Synthesizer 和 Random Synthesizer 的关键思想。

Synthesizer 移除了 query-key-value 的概念,而直接合成一个对齐矩阵。具体而言,即去除了 ,而使用一个行和列大小等同于序列长度 的矩阵 来表示任意 token 之间的关系。作者提出了两类 synthesizer,分别是 Dense Synthesizer 和 Random Synthesizer。

Dense Synthesizer

给定模型的输入 ,表示了 个 token,每个 token 的维度为 . 该方法做如下的变换:

这可以理解为两个 Dense 层,和 用于 Dense 层的计算。而最后模型的输出 ,由表示 token 间关系的矩阵 得到。

其中,可类比为标准 Transformer 的 .

该思路并不复杂,但是,作者进一步描述了 Random Synthesizer。

Random Synthesizer

Dense Synthesizer 方法实际上是给定每个 token,然后映射到 维,而不是如同原生的 Transformer 对 token 间交互进行建模。Random Synthesizer 的方法中,注意力权重的初始化不是受任何输入 token 的影响,而是完全随机初始化。这些随机初始化的值可以被训练,或者保持固定。

以 表示一个随机初始化矩阵,则 Random Synthesizer 被定义为:

即 初始化的值是 . 该方法不依赖 token 对之间的交互或者任何单个 token 的信息,而是学习一个能跨实例有效的任务特定的对齐。作者表示这是最近固定自注意力方法 [2]的直接产物。

换句话说,作者认为,学习一个跨实例有效的模型意味着在初始化时不直接依靠任何 token 信息。

分解模型

Dense Synthesizer 为网络添加了大小为 的参数,用于映射;而  Random Synthesizer 添加了大小为 的参数。如果序列很长,将导致很大的参数量。因此,为了实践中更加可行,作者提出了分解模型,分别针对 Dense Synthesizer 和 Random Synthesizer 称为 Factorized Dense Synthesizer 和 Factorized Random Synthesizer。该方法的作用是减少参数量,并防止过拟合。

1. Factorized Dense Synthesizer  

针对可能过大的序列长度 ,取两个整数 和 使得 ,分别按 Dense Synthesizer 算得两个矩阵记为 和 ,两矩阵大小分别是 和 . 然后将 中表示 token 的每个向量重复 次,将 中表示 token 的每个向量重复 次,再做元素积,即可从分解出的两个矩阵恢复到 . 参数量减小,同时模型的表征能力可能也受到了影响。

2. Factorized Random Synthesizer 

类似地,随机矩阵也可被分解为两个低秩矩阵。

混合模型

上述所有提出的 synthetic 注意力变种都可以通过加和形式混合到一起。

αα

其中,表示一个 synthesizer 的函数,并且 是可学习的。

另外,类似于原生 Transformer 的 multi-head attention,Synthesizer 同样支持多个 head.

效果

作者在机器翻译、语言模型、文本生成、多任务自然语言处理等任务上进行了实验。

机器翻译与语言建模

作者采用常见的 WMT'14 英德(EnDe)和英法(EnFr)翻译测试。

关于机器翻译任务,可以看到相同参数量的 Synthesizer(Random + Vanilla) 与其他模型拉开了一定差距,也比相同参数量的 Transformer (Control) 表现更好。值得注意的是,两个分解方法取得的提升并不如混合模型取得的提升更多,但在一定程度上减少了参数量。

关于语言建模任务,使用的数据集是 LM1B,取得最好效果的是 Synthesizer (Dense + Vanilla),它仍然是一个混合模型,同样是 Synthesizer 的各种设置中唯一超过 Transformer 的模型。

文本生成

评测使用 CNN/Dailymail 数据集的抽象摘要任务和使用 PersonaChat 数据集的对话生成任务。其中,Synthesizer 的各个模型表现不一。

多任务 NLP

在多任务 NLP 上,作者遵循 T5 [3] 所使用的使用 GLUE 和 SuperGLUE 评测方法,并在多项指标超过了 T5(base)。在众多测试中,仍然是加上 Vanilla 的 Synthesizer 取得较好效果。

总结

该文提出了 Synthesizer,一个新的 Transformer 模型,它采用了合成注意力(Synthetic Attention)。作者试图更好地理解和评估全局对齐和局部、实例对齐(独立 token 和 token 到 token 的对齐)在自注意力中的效用。

在机器翻译、语言建模和对话生成等多个任务上,合成注意力与原有自注意力相比,表现出有竞争力的性能,点积自注意力的作用与效率值得怀疑与进一步研究。此外,在对话生成任务上,token 之间的交互信息实际会损害性能。

实际上,Synthesizer 的不同设置没有绝对的优劣,也和具体的任务相关。个人认为为何在各种任务中 Synthesizer 的表现存在明显差异、它与点积注意力分别适合于哪些任务,以及背后的成因是值得深究的。

参考文献

[1] Attention Is All You Need. arXiv preprint arXiv:1706.03762, 2017.

[2] Fixed encoder self-attention patterns in transformer-based machine translation. arXiv preprint arXiv:2002.10260, 2020.

[3] xploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv preprint arXiv:1910.10683, 2019.

[4] Tay Y, Bahri D, Metzler D, et al. Synthesizer: Rethinking Self-Attention in Transformer Models[J]. arXiv preprint arXiv:2005.00743, 2020.

本文收录于原创专辑:《卖萌屋@自然语言处理》

重磅惊喜:卖萌屋小可爱们苦心经营的 自然语言处理讨论群 成立三群啦!扫描下方二维码,后台回复「入群」即可加入。众多顶会审稿人、大厂研究员、知乎大V以及美丽小姐姐(划掉????‍♀️)等你来撩噢~(手慢无

  • NLP中的少样本困境问题探究

  • ACL20 | 让笨重的BERT问答匹配模型变快!

  • 7款优秀Vim插件帮你打造完美IDE

  • 卖萌屋原创专辑首发,算法镇魂三部曲!

  • GPT-3诞生,Finetune也不再必要了!NLP领域又一核弹!

夕小瑶的卖萌屋

_

关注&星标小夕,带你解锁AI秘籍

订阅号主页下方「撩一下」有惊喜哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

50万抽象知识图谱项目(实体抽象、性状抽象与动作抽象)

AbstractKnowledgeGraph AbstractKnowledgeGraph, a systematic knowledge graph that concentrate on abstract thing including abstract entity and action. 抽象知识图谱,目前规模50万,支持名词性实体、状态性描述、事件性动作进行抽象。目标于抽象…

算法--排序--大小写字母数字分离(桶排序思想)

题目: 对D,a,F,B,c,A,z这个字符串进行排序,要求将其中所有小写字母都排在大写字母的前面,但小写字母内部和大写字母内部不要求有序。比如经过排序之后为a,c&a…

2019 最新蚂蚁花呗Java三面题目:红黑树+并发容器+CAS+Solr+分布式等

蚂蚁金服专场 涵盖了蚂蚁金服从Java工程师到技术专家面试题目 支付宝高级Java三面题目:线程锁事务雪崩Docker等 蚂蚁花呗团队面试题:LinkedHashMapSpringCloud线程锁分布式 蚂蚁金服高级Java面试题目 支付宝Java开发四面:NgnixMQ队列集群并发抢购 蚂…

论文浅尝 | 实体图的预览表格生成

链接:ranger.uta.edu/~cli/pubs/2016/tabview-sigmod16-yan.pdf动机对于结构化数据和关系数据,通常使用Schema图为数据库的使用者提供基本信息。因此,作者提出了生成预览表格(preview table)的方法,为实体图…

万能的BERT连文本纠错也不放过

一只小狐狸带你解锁炼丹术&NLP秘籍作者:孙树兵学校:河北科技大学方向:QA/NLU/信息抽取编辑:小轶背景文本纠错(Spelling Error Correction)技术常用于文本的预处理阶段。在搜索引擎、输入法和 OCR 中有着…

POJ 1664 苹果放盘子(递归)

题目链接:http://poj.org/problem?id1664 m个相同的苹果放在n个相同的盘子里,有多少种不一样的方法。 例如,3个苹果放在4个盘子里有(3,0,0,0)(1,1&#xf…

蚂蚁金服4轮面经(Java研发):G1收集器+连接池+分布式架构

一面 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少? 数据库连接池介绍下,底层实现说下 hashset底层实现,hashmap的put操作过程 说说HaspMap底层…

算法--二分查找--求平方根(循环法/递归法)

二分查找: 数据需要是顺序表(数组)数据必须有序可以一次排序,多次查找;如果数据频繁插入,删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高&#xff0…

论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识

Commonsense for Generative Multi-Hop Question Answering Tasks链接: https://arxiv.org/abs/1809.06309背景机器阅读任务按照答案类型的不同,可以大致分为:(1) 分类问题: 从所有候选实体选择一个(2) answer span: 答案是输入文本的一个片段(3) …

Overleaf v2 评测

原文链接:https://www.jianshu.com/p/1d73d4b9e880 Overleaf v2 评测 去年,两个著名的Latex在线编辑器Overleaf和Sharelatex合并了,强强联手,让我们对他们合并之后的新产品充满了期待。最近,他们的新产品发布了&#x…

蚂蚁中间件团队Java面试题:Netty+Redis+Kafka+MongoDB+分布式

蚂蚁中间件一面: 自我介绍 JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线…

面试必备!卖萌屋算法工程师思维导图—统计机器学习篇

卖萌屋的妹子们(划掉)作者团整理的算法工程师思维导图,求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。下面是第二部分统计机器学习的内容~公众号后台回复【思维导图】获取完整手册&…

【重磅】全行业事理图谱V3.0正式发布:基于实证的由因求果、由果溯因,因果路径发现

我们一直在事理图谱的探索和应用路上不断前行。。。 【中科院软件所】数据地平线的金融事理图谱Demo已经和大家见面有一段时间了(Demo地址:http://eg.zhiwenben.com/),这段时间我们收到了很多用户的建议反馈和合作邀约,大家对产品的认可和喜…

算法--二分查找--查找给定条件的值

文章目录1.数据有序且无重复,查找给定值2.数据有序且有重复,查找第1个给定的值3.查找最后一个值等于给定值的元素4.查找第一个大于等于给定值的元素5.查找最后一个小于等于给定值的元素6.查找IP归属(利用上面#5代码)7.循环有序数组…

论文浅尝 | 利用边缘标签的网络嵌入强化方法

链接:https://arxiv.org/pdf/1809.05124.pdf本文主要关注Network embedding问题,以往的network embedding方法只将是网络中的边看作二分类的边(0,1),忽略了边的标签信息,本文提出的方法能够较好的保存网络结构和边的语义信息来进行…

2018阿里集团中间件Java面试题(4面)

持续分享阿里技术面试 最新天猫3轮面试题目:虚拟机并发锁Sql防注入Zookeeper 最新阿里内推高级Java面试题 蚂蚁金服4轮面经(Java研发):G1收集器连接池分布式架构 天猫研发团队(4面全题目):并发压测Mina事…

卷积神经网络中十大令人拍案叫绝的操作

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者:Justin ho来源:https://zhuanlan.zhihu.com/p/28749411前言CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个…

python--从入门到实践--chapter 11 代码测试unittest

编写的代码需要测试是否有Bug 1.函数测试 city_functions.py def city_country(city, country):return str(city) , str(country)city_country_unittest.py import unittest #导入测试模块 from city_functions import city_country as cc class citytest(unittest.TestC…

刘升平 | 基于知识图谱的人机对话系统

本文转载自公众号:AI科技大本营。 分享嘉宾 | 刘升平(云知声 AI Labs 资深技术专家)来源 | AI 科技大本营在线公开课人机对话系统,或者会话交互,有望成为物联…

最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏

过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服、天猫、淘宝、头条、拼多多等Java面试题目。 过去2年,我已经成功的帮助了部分同学进入了大厂。 2020开始,我依然会为大家带来最新的大厂现场面试专场题目,希…