Google | 突破瓶颈,打造更强大的Transformer

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

作者:苏剑林 (来自追一科技,人称“苏神”)

前言

《Attention is All You Need》一文发布后,基于Multi-Head Attention的Transformer模型开始流行起来,而去年发布的BERT模型更是将Transformer模型的热度推上了又一个高峰。当然,技术的探索是无止境的,改进的工作也相继涌现:有改进预训练任务的,比如XLNET的PLM、ALBERT的SOP等;有改进归一化的,比如Post-Norm向Pre-Norm的改变,以及T5中去掉了Layer Norm里边的beta参数等;也有改进模型结构的,比如Transformer-XL等;有改进训练方式的,比如ALBERT的参数共享等...

以上的这些改动,都是在Attention外部进行改动的,也就是说它们都默认了Attention的合理性,没有对Attention本身进行改动。而本文我们则介绍关于两个新结果:它们针对Multi-Head Attention中可能存在建模瓶颈,提出了不同的方案来改进Multi-Head Attention。两篇论文都来自Google,并且做了相当充分的实验,因此结果应该是相当有说服力的了

arxiv访问慢的小伙伴也可以在订阅号后台回复关键词【0415】下载论文PDF。

再小也不能小key_size

第一个结果来自文章《Low-Rank Bottleneck in Multi-head Attention Models》,它明确地指出了Multi-Head Attention里边的表达能力瓶颈,并提出通过增大key_size的方法来缓解这个瓶颈。

Multi-Head Attention

首先简单回顾一下Multi-Head Attention,Multi-Head Attention的基础是自然是Single-Head Attention,也叫Scaled-Dot Attention,定义如下:

(公式可以左右滑动哦)

其中。而Multi-Head Attention,就是将分别用个不同的投影矩阵投影次,然后分别做次Single-Head Attention,最后把结果拼接起来,即

Attention里有个瓶颈

在实际使用中,一般具有相同的特征维度(即hidden_size),比如BERT Base里边是768;一般选择12、16、24等,比如BERT base里边是12;确定了之后,通常的选择是让投影矩阵,也就是说,每个Attention Head里边,是将原始的维投影到维,然后在进行Attention运算,输出也是维,最后把维的结果拼接起来,得到一个维的输出。这里的我们通常称为head_size。

在Attention中,关键的一步是

这一步是描述了的两两向量之间的联系,我们可以将看成一个二元联合分布(实际上是个一元分布,不过这个细节并不重要),如果序列长度都为,也就是每个元有个可能的取值,那么这个分布共有个值。

但是,我们将分别投影到低维后,各自的参数量只有,总的参数量是,所以式就相当于用的参数量去逼近一个本身有个值的量,而我们通常有,尤其是比较大时更是如此,因此这种建模有点“强模型所难”,这就是原论文中的“低秩瓶颈(Low-Rank Bottleneck)”的含义.

不妨试试增大key_size?

那么,解决办法是什么呢?直接的想法是让增大,所以要不就是减少head的数目,要不就是增加hidden_size大小。但是更多的Attention Head本身也能增强模型的表达能力,所以为了缓解低秩瓶颈而减少的做法可能得不偿失;如果增加的话,那自然是能够增强模型整体表达能力的,但整个模型的规模与计算量也会剧增,似乎也不是一个好选择。

那没有其他办法了吗?有!当我们用投影矩阵将都投影到低维时,前面都是将它们投影到维,但其实它们的维度不一定要相等,而是只需要保证的维度相等就行了(因为要做内积),为了区别,我们通常称的维度为key_size,的维度才叫head_size,改变key_size的大小而不改变head_size的话,也不影响模型的hidden_size。

所以,这篇论文提出来的解决方法就是增大模型的key_size,它能增加Attention的表达能力,并且不改变模型整体的hidden_size,计算量上也只是稍微增加了一点。

补充说明:事实上原论文考虑的是同时增大key_size和head_size、然后Multi-Head Attention的输出拼接之后再用一个变换矩阵降维,但笔者认为由于拼接降维这一步只是一个线性变换,所以本质上的提升还是来源于增大key_size,所以本文只强调了增大key_size这一步。此外,如果同时增大key_size和head_size,那么会导致计算量和显存消耗都明显增加,而只增大key_size的话,增加的资源消耗就小很多了。

来看看实验结果~

增大key_size这个想法很简单,也容易实现,但是否真的有效呢?我们来看看原论文的实验结果,其实验都是以BERT为baseline的,实验结果图表很多,大家直接看原论文为好,这里只分享比较有代表性的一个:

这个结果显示,如果固定一个比较大的key_size(比如128),那么我们可以调整模型的hidden_size和head数,使得参数量可以跟原始的BERT设计一致,但是效果更优!所以,增加key_size确实是有意义的,哪怕将总体参数量重新调整到原来的一样大,也能一定程度上提升模型的效果。这无疑对我们设计新的Transformer模型(尤其是小规模的模型)有重要的指导作用。

最后,附上我们预训练的两个增大了key_size的RoBERTa小模型,欢迎大家使用(我们称之为RoBERTa+):

https://github.com/ZhuiyiTechnology/pretrained-models

再缺也不能缺Talking

对Multi-Head Attention改进的第二个结果来自论文《Talking-Heads Attention》,这篇论文虽然没有显式地指出它跟前一篇论文的联系,但笔者认为它们事实上在解决同一个问题,只不过思路不一样:它指出当前的Multi-Head Attention每个head的运算是相互孤立的,而通过将它们联系(Talking)起来,则可以得到更强的Attention设计,即标题的“Talking-Heads Attention”。

从单一分布到混合分布

在前一篇论文里边,我们提到了低秩瓶颈,也就是由于key_size太小所以表达能力不足,因此softmax之后无法很好地建议完整的二元分布。为了缓解这个问题,除了增大key_size之外,还有没有其他方法呢?有,比如这篇论文使用的混合分布思路。

所谓混合分布,就是多个简单分布的叠加(比如加权平均),它能极大地增强原分布的表达能力。典型的例子是高斯混合模型:我们知道高斯分布只是一个常见的简单分布,但多个高斯分布叠加而成的高斯混合分布(也叫高斯混合模型,GMM)就是一个更强的分布,理论上来说,只要叠加的高斯分布足够多,高斯混合分布能逼近任意概率分布。这个例子告诉我们,想要增加Attention中分布的表达能力,又不想增加key_size,那么可以考虑叠加多个低秩分布

那么“多个”低秩分布哪里来呢?不是有Multi-Head嘛,每个head都带有一个低秩分布,就直接用它们叠加就行了,这就是Talking-Heads Attention了。具体来说,它的形式是:

写起来很复杂,事实上很简单,就是在“之后、softmax之前”用一个参数矩阵将各个的结果叠加一下而已。这样就把原本是孤立的各个Attention Head联系了起来,即做了一个简单的Talking。

对上述公式,做两点补充说明:

1、简单起见,上述公式中笔者省去了缩放因子,如果有需要,读者自行补充上去即可;

2、更一般的Talking-Heads Attention允许可以在这一步进行升维,即叠加出多于个混合分布,然后再用另一个参数矩阵降维,但这并不是特别重要的改进,所以不在主要篇幅介绍。

再来看看实验结果

是不是真的有效,当然还是得靠实验结果来说话。这篇论文的实验阵容可谓空前强大,它同时包含了BERT、ALBERT、T5为baseline的实验结果!众所周知,BERT、ALBERT、T5均是某个时间段的NLP最优模型,尤其是T5还是处在superglue的榜首,并且远超出第二名很多,而这个Talking-Heads Attention则几乎是把它们的辉煌战绩又刷到了一个新高度!

还是那句话,具体的实验结果大家自己看论文去,这里展示一个比较典型的结果:

这个结果显示,使用Talking-Head Attention情况下,保持hidden_size不变,head数目越大(相应地key_size和head_size都越小),效果越优。这看起来跟前一篇增大key_size的结论矛盾,但事实上这正说明了混合分布对分布拟合能力明显提升作用,能够将key_size缩小时本身变弱的单一分布,叠加成拟合能力更强大的分布。当然,这不能说明就直接设key_size=1就好了,因为key_size=1时计算量会远远大于原始的BERT base,应用时需要根据实际情况平衡效果和计算量。

上述表格只是原论文实验结果的冰山一角,这里再放出一个实验表格,让大家感受感受它的实验阵容:

几乎每个任务、每个超参组合都做了实验,并给出实验结果。如此强大的实验阵容,基本上也就只有Google能搞出来了,而且整篇论文明显是浓浓的“T5 Style”(还没看过T5论文的读者,可以去Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》感受一下),果不其然,作者之一Noam Shazeer也正是T5的作者之一。

笔者只想说,这种庞大的实验轰炸,仿佛在向我们宣告着:

不用质疑,该调的参数我们都调了,就我们的Talking-Heads Attention最好~

插曲:神奇的论文画风

话说回来,笔者在Arxiv上首次刷到《Talking-Heads Attention》这篇论文时,第一感觉是一篇垃圾论文。为啥?因为它的画风是这样的:

谁能想象到,一篇如此强大的论文,里边居然没有一条数学公式,取而代之的全是伪代码!!其实伪代码都算不上,感觉更像是直接把实验中的Python代码复制到了论文中,还是复制到论文主体上!笔者印象里,只有那些不入流的水论文才会这样做,所以笔者看到的第一想法就是水文一篇。也就Google的大佬们才能这么任性,要不是耐着心多扫了几眼,要不是不小心扫到了T5等字眼,要不是回去看作者居然清一色是Google的,这篇强大的论文就被笔者当作垃圾论文放到回收站了 不过,任性还是有任性的代价的,这篇实验阵容这么强大又这么有效的论文,发布至今也有一个多月了,但似乎也没什么反响,估计也跟这个任性的风格有关系~

来自文末的小结

本文介绍了两个关于Multi-Head Attention的后续改进工作,虽然改进细节不一致,但可以说它们都是针对“低秩瓶颈”这个问题而提出的,有种殊途同归之感。两个工作都来自Google,实验内容都很丰富,所以结果都比较有说服力,正在做模型结构改进工作的读者可以参考参考。

arxiv访问慢的小伙伴也可以在订阅号后台回复关键词【0415】下载论文PDF。

夕小瑶的卖萌屋

_

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

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

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

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

相关文章

阿里P8架构师谈:高并发网站的监控系统选型、比较、核心监控指标

在高并发分布式环境下,对于访问量大的业务、接口等,需要及时的监控网站的健康程度,防止网站出现访问缓慢,甚至在特殊情况出现应用服务器雪崩等场景,在高并发场景下网站无法正常访问的情况,这些就会涉及到分…

斯坦福CS224n追剧计划【大结局】:NLP和深度学习的未来

一只小狐狸带你解锁炼丹术&NLP秘籍简介Stanford CS224n追剧计划是由夕小瑶的卖萌屋发起的开源开放NLP入门项目,借助github和微信群为大家提供同期小伙伴打卡讨论、内容沉淀、作业笔记和FAQ共享、连线斯坦福等服务。关于该计划的详请见这里 。1. Github项目地址h…

KubeVela 高可扩展的云原生应用平台与核心引擎

https://www.oschina.net/news/121015/kubevela-open-source 目录什么是 KubeVela ?KubeVela 解决了什么问题?1. 应用开发者眼中的 KubeVela一个 Appfile 示例2. 平台工程师眼中的 KubeVela3. KubeVela vs 经典 PaaS快速入门安装KubeVela1. 安装Kubernet…

打造工业级推荐系统(三):推荐系统的工程实现与架构优化

打造工业级推荐系统(三):推荐系统的工程实现与架构优化 gongyouliu 阅读数:4148 2019 年 4 月 26 日导读:个性化推荐系统,简单来说就是根据每个人的偏好推荐他喜欢的物品。互联网发展到现在,推荐…

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

什么是应用服务雪崩 雪崩问题 分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞&#xff0c…

论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答

链接:https://arxiv.org/pdf/1804.03317.pdf概述当前大部分的 kbqa 方法为将 kb facts 与 question 映射到同一个向量空间上,然后计算相似性. 但是这样的做法会忽视掉两者间原本存在的单词级别的联系与交互. 所以本文提出一种网络结构 ARSMCNN,既利用到语义的信息, 又利用到单词…

斯坦福大学最甜网剧:知识图谱CS520面向大众开放啦!

一只小狐狸带你解锁炼丹术&NLP秘籍受本次疫情的影响,斯坦福大学的2020春季知识图谱课程——CS520面向公众线上开放啦!连课名都是爱你的形状!简单翻译一下重点:今年的CS520面向公众开放,大家可以通过远程视频软件Zo…

一篇文章详解大数据技术和应用场景

“ 本文作者 陈睿 ,优知学院创始人 新技术、新趋势往往趋之若鹜却又很难说的透彻,希望这篇文章能让大家完整的理解什么是大数据:该篇包含:大数据、技术、场景应用以及大数据的岗位。 什么是大数据 说起大数据,估计大家都觉得只…

对话周明:回望过去,展望未来,NLP有哪些发展趋势?

HomeBlog 对话周明:回望过去,展望未来,NLP有哪些发展趋势? 2019年2月15日 by 打不死的小强 AI 新闻 0 comments 周明博士是微软亚洲研究院副院长、国际计算语言学协会(ACL)主席、中国计算机学会理事、中…

阿里P8架构师谈:MongoDB、Hbase、Redis等NoSQL优劣势、应用场景

NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借…

研讨会 | 知识图谱助力图书馆知识管理与智慧服务研讨会

知识图谱是大数据时代重要的知识表示方式之一,也是人工智能技术的重要支撑,在智能检索、数据分析、自动问答、知识推荐、知识管理等领域有着广泛的应用前景,为知识创新管理带来了新机遇。由于知识图谱实现了对象识别、文本理解、关系推理、机…

高效利用无标注数据:自监督学习简述

一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:huyber来源:https://zhuanlan.zhihu.com/p/108906502BERT的大热让自监督学习成为了大家讨论的热点,但其实word2vec和自编码器也都属于自监督学习范畴。本文通过整理自监督学习的一系列工作&…

TI-RTOS实时操作系统开发之功耗测试

文章目录写在前面CCS(code composer studio)开启Energy Trace配置电池参数设置测量时间在电流曲线图处点击右键开始测量写在前面 要测试一个产品的电流功耗方式有很多种: 1、电流转电压,通过在供电回路中串联10Ω电阻&#xff0c…

程序员真的只能干到35岁?——我的35岁危机度过之道!

“ 在我还是25岁的时候,我和很多程序员一样,其实都有同样的担心,老了以后怎么办?写代码难道还能写到35岁? 难道我这一辈子就做一个程序员就完了吗?难道这条路就不能走出更多的张小龙(foxmail开…

研讨会 | 知识工程与问答技术研讨会 (KEQA2018)

人工智能的迅速发展将深刻改变人类社会,而知识工程是人工智能领域中的一个重要研究主题。随着机器学习、自然语言处理和语义网技术的快速发展,知识获取与处理的能力得到了极大的提升,包括自然语言问答技术在内的智能应用也备受关注。本次研讨…

统计学-自然语言处理

摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。常常应用在文本处理、人脸识别、…

在K40小破卡训练50层BERT Large的宝藏trick

前言 虽然TPU的显存令人羡慕,但是由于众所周知的原因,绝大部分人还是很难日常化使用的。英伟达又一直在挤牙膏,至今单卡的最大显存也仅仅到32G(参考V100、DGX-2)。然而,训练一个24层的BERT Large模型的时候…

领域应用 | 推荐算法不够精准?让知识图谱来解决

本文转载自公众号:微软研究院AI头条。 编者按:我们几乎每天都会接收到各种各样的推荐信息,从新闻、购物到吃饭、娱乐。个性化推荐系统作为一种信息过滤的重要手段,可以依据我们的习惯和爱好推荐合适的服务。但传统的推荐系统容易出…

BERT重计算:用22.5%的训练时间节省5倍的显存开销(附代码)

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者:夕小瑶、rumor酱前言虽然TPU的显存令人羡慕,但是由于众所周知的原因,绝大部分人还是很难日常化使用的。英伟达又一直在挤牙膏,至今单卡的最大显存也仅仅到32G(参考V100、D…

去腾讯等BAT面试完的Mysql面试55题总结,含答案大赠送!

【BAT面试:mysql 面试55题】 1、一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ? 2、mysql的技术特点是什…