Transformer-李宏毅

Transformer(变形金刚)的一个重要应用是bert

Transformer是一种seq2seq模型,它的特殊之处是大量地用了self-attention layer

        处理sequence最常使用的架构是RNN,如下图左侧。它的问题是:不容易被平行化

非平行化:想输出b3,需要将a1、a2、a3全部看一遍;想输出b4,需要将a1、a2、a3、a4全部看一遍;如果是双向RNN,则不论输出什么,均需将全部输入都看一遍

可以简单理解为不能并行计算,算b3的时候不能同时计算b4

        为了解决不能平行化的问题,有人提出用CNN取代RNN的想法,如上图右侧。每个三角形代表一个filter,每一个的输入是输入sequence的其中一小段。这样通过多个filter,可做到和RNN相类似的效果:输入是一个sequence,输出是另外一个sequence。

        但是问题是,每一个CNN只能够考虑非常有限的内容。但是当叠加很多层CNN后,上层的就可以考虑比较多的信息。第二层的filter会把第一层的output当成是它的input。

        平行化:图中每一个三角的filter都可以同时计算,不需要等第一个算完再算第二个,可以全部的filter同时计算。甚至不需要等第一层的算完再算第二层,全部可以同时计算。

        但CNN的缺点是,必须要叠很多层,它才能够看到比较长的信息。如果第一层的filter就需要看比较长的信息,做不到,只能看很小的范围。

        为了解决CNN看不到很多信息的问题,有了self-attention,想要取代原来RNN可以做的事情。简单来讲:有一种新的layer,叫做self-attention layer,它的输入和输出和RNN是一样的,都是seq2seq,可以注意到全部的输入,并且可以完全地平行化。如下图:

基本可以用self-attention代替RNN做任何事情(一种可以并行计算的RNN)。

下面为self-attention的详细过程:

        可以通过调节不同位置α的值,控制输出的结果需要注意的不同输入的注意力多少。即既可以全部都注意,也可以只注意一部分,既可以注意近的,也可以注意远的。避免了RNN中句子过长记不住导致的问题。

同时可以并行计算出b2:

下面详细讲解self-attention是怎么做平行化的(矩阵计算):

矩阵乘法可以轻易地用GPU加速。

self-attention的变形:多头self-attention。以2头为例:

多头的好处是:有可能不同的head关注的点不一样。如有的head想要看的就是local邻居的信息,有的head想要看的是较长时间的。有了多头之后,每个head可以各司其职,自己做想做的事情。 self-attention没有时间信息,无论远的还是近的都一样,天涯若比邻。这样的话就考虑不到句子的上下文信息了。所以解决办法是,xi变成ai之后,要加上一个位置矩阵ei来表示位置信息。 那为什么用加而不是矩阵拼接呢?矩阵加起来不就将信息混在一起了吗?可以解释为:将xi拼接上一个one-hot位置矩阵,然后做运算,则可分别得出ai和ei相加的结果。如下图:

奇怪的是,ei不是学出来的,是人手设的,wp也不是学出来的。试图学习之后效果不好,所以用了一个式子生成wp。Wp的可视化表示如下图:

上面讲的是self-attention取代RNN。下面讲解self-attention在seq2seq模型中如何使用。

下图为原始的seq2seq模型模型,有encoder和decoder,都是使用RNN。其中encoder使用双向RNN:

使用self-attention取代RNN是即得到transformer:

Attention的可视化表示:

每个词两两之间都有attention,联系约紧密的线条越粗

一个神奇的现象:

It可自动学习,指代不同的内容

动物没有过马路,因为它太累了(它指动物)

动物没有过马路,因为它太宽了(它指马路)

多头的每一组QKV所做的事情都不同:

会注意不同的attention,如红色的注意了附近的词,绿色的注意了远处的词

总结:只要是能使用seq2seq模型的,都可以用transformer。使用self-attention取代RNN的seq2seq模型就是transformer。

使用了transformer之后,可以比之前使用RNN处理更多的数据量。如Google使用文本集合,集中直接生成摘要。例子:

Transformer的变种:

Transformer之前被用在文本上,现在也可以用在图像上:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352