Transformer 阅读笔记

Transformer 模型是谷歌大脑在2017年发表论文 《Attention is all you need 》中所提出的 Seq2Seq 模型。

  • 为什么要使用Transformer
  • Transformer是什么结构
  • Transformer Encoder 是什么样
  • Transformer Decoder 是什么样
  • 什么是Multi-head
  • 为什么要添加残差
  • 什么是Mask ,如何Mask
  • 什么是传统Attention
  • Transformer 有什么问题

为什么要使用Transformer

Transformer 是一种Seq2Seq模型,在NLP中有很多Seq2Seq模型,比如RNN,CNN等均可以做成Seq2Seq模型,既然有了RNN和CNN的Seq2Seq 模型,为啥有来一个Transformer 呢? 当然了两者存在缺点。

  • RNN
    RNN又叫做循环神经网络,是进行自然语言处理的标准模型,因为它可以补获句子长依赖,(所谓长依赖就是当前词和距离很长的前馈词存在关系),但是RNN存在致命缺点那就是无法并行化。因为在RNN中向要计算x_i 的值就必须先计算完成x_1x_{i-1}的所有值。
  • CNN
    CNN 称为卷积神经网络,CNN可以并行计算,但是比较难比较难解决长依赖问题(除非堆叠非常多隐藏层或者加大卷积核大小)。

在这样RNN 和CNN 都存在各自问题情况下,Transformer诞生了。Transformer 架构避免了神经网络中的循环递归,而完全依赖Self-Attention机制,绘制输入与输出之间的全局关系。

Transformer 结构

Transformer 是一个Encoder-Decoder结构,从全局看其结构如下:


Encoder-Decoder

左边是Encoder,右边是Decoder。

如果再进一步细看其结构可以展开为:


Transformer-Encoder

在左边Encoder有6个子模块,每个模块都是一个小小的Encoder单元。而右面的Decoder部分同样有6个小小的Decoder 单元,同时Encoder 与Decoder 通过Encoder的输出建立连接-- Encoder 的输出作为每个Decoder子模块的输入

Transformer 全结构如下:


Transformer

Transformer Encoder 结构

Transformer Encoder 就是一个特征提取器,其作用于RNN、CNN类似,在Encoder 中有6个子模块,子模型结构完全相同,一共堆叠了6层。

  • 组成
  1. Embedding :将输入 X转变成 Embedding 向量 X
  2. Positional Embedding:将当前位置信息加入到 Embedding 向量中,直接相加 得到向量V
  3. Self-Attention: 将向量 V 输入Self-Attention 模型得到其结果 Z
  4. Add+Norm: 将向量V和向量Z相加(残差网络),之后进行 Layer Norm 得到
  5. FNN: 经过FNN的特征提取后,再次再次经过 Add + Norm运算得最终结果。
    值得注意的是 FNN的是经过了两次线性变换,先升维后降维
Transformer-Encoder

Transformer Decoder 是什么样

在Transformer 中Decoder 与Encoder 类似。不同地方有:

  1. Mask层,作为Decoder 是不允许看到未来出现的词的,所有训练是需要将Decoder未来词进行Mask
  2. 在Decoder 的Attention 中Key 和Value 不再是和 当前句子,而是Encoder 处理结果。

什么是Multi-head

Self-Attention 是一种特征抽取的方法,Multi-Head 其实就是多做几组Key、Value、Query ,这样就可以抽取不同类型特征,增强模型效果

为什么要添加残差

残差网络 又称为ResNet,RestNet 之所以提出是应对多层神经网络在反向传播中长距离梯度消失问题的解决方案。

什么是Mask ,如何Mask

针对为什么需要Mask 其实已经在前文提及,简而言之就是,在Decoder时是按照词进行顺序处理,当输出当前词时是不允许进以后的词信息进行加权求和。
Mask时机是在 Query 与Key 计算相似度之后,在进行Softmax之前进行,其实mask就是将未来此权重设置中0。 至于如何mask这还是要从softmax 公式说起,softmax 计算公式如下:
score = \frac{e^x}{\sum{e^x}}
从如上公式中,如果让score 为0 ,则只能使得分子为0 ,如果想让分子为0,则x必须等于-inf。针对如何操作还是有一定技巧,核心就是制作上三角矩阵,对角线以上(不包括对角线)值全部为-info,其他值全部为0。之后让相似度与该对角矩阵相加,在计算Softmax即可。
Weight = Softmax(Q*K + Diag(Mask))

什么是传统Attention

Attention 机制其实非常直观,打比方当你去餐厅吃饭,突然看见心仪女神出现,则你的所有目光(Attention)都聚焦在了她身上,这其实就是最简单的Attention的理解,说白了就是指关心重点,其余都是浮云。

在NLP中Attention 机制包括三个重要变量分别是Q、K、V。其中Q 表示query ,K就是每个值的对应键,V则表示具体值。其公式可以表示为:
Attention Value= softmax(\frac{K*Q}{\sum{K*Q}}) * V
流程:

  1. 给定某个Qeury
  2. 计算 权重weight:计算Query 和各个Key的相似度,可以得到每个Value 相对于给定Query的权重
  3. 计算加权值:根据Weight 和当前Value 计算Attention Value

所以Attention 机制可以采用如下公式表达
AttentionValue(Query,Source) = \sum{Similarity(Query,Soruce)} * Value

传统Attention 有什么问题呢?

忽略了源端和目标端词词与词的依赖关系,就拿刚才例子说,只把目光转移到美女身上,而忽略了周围环境,(人家男朋友来了!!!)

Transformer 存在问题

Transformer 还是存在一定问题的

  1. Transformer虽然可以一定程度上处理长依赖,但是对于超长句子上的依存问题依然没有解决
  2. 方向信息和相对位置信息并没有使用

参考文章

https://www.wmathor.com/index.php/archives/1438/
Transformer Pytorch 实现: https://github.com/yunfeiqi/nlp_tutorial

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

推荐阅读更多精彩内容