transfomer复习

transformer

视频原作者:https://www.bilibili.com/video/BV1Di4y1c7Zm?p=4&spm_id_from=pageDriver

1.位置编码

2.多头注意力机制

3.残差和layerNorm

4.前馈神经网络

5.面试题讲解

TRM在做一个什么事情

TRM1

1.transformer多用于机器翻译,简单来说就是 输入 处理 输出

TRM2

2.细化transformer,上图输入 输出没有变化 transformer模块是由encoders(编码) decoders(解码)组成;类似sequens2sequens;

TRM3

3.再细化encoders decoders模块,encoders由6个小encoders组成;decoders由6个小decoders组成;这里的6可以自己定,这是一个×N的结构,是一个循环,我们需要注意的一个特点是,这6个encoder结构相同6个decoder结构相同,但是encoder与decoder的结构是不同的。还有一个需要注意的点,6个encoder结构上是完全相同,参数是不一样的(说明在训练的时候并不是训练了一个参数之后就进行copy而是6个都在训练;为什么说这个 因为后期albert就是共享transformer中某些层的参数去减少bert参数量的目的;decoder同理)。

TRM from paper

4.transformer原论文中的图:比较清晰的给出了具体的结构,我们可以从中间切成两部分,左半部分是encoders 右半部分是decoders。XN说明N可以由自己定,原论文N=6,还有一个特点encoder与decoder的架构是不相同的 decoder中间多了一层交互层,下面变成了一个masked(被掩盖的多头注意力机制)。

image.png

5.我们单独剖析出一个encoder,详细的了解里面的细节。我们可以把单个的encoder分成3个部分,输入 注意力机制 前馈神经网络

输入部分: ①embedding ②位置嵌入

5.1 位置编码

为什么需要:

RNN

从RNN引入,对于RNN来说一个共识(很多人会忽略的点):RNN的参数 u输入参数,w隐层参数,v输出参数这是一套参数 对于RNN的所有的timesteps他们都共享一套参数。也就是说有100个timesteps 但是只有一套参数,更新的时候是更新一套uwv。所以RNN这种展开的结构,符合天然的时序关系,但是对于transformer的多头注意力机制部分来说,我们在处理的时候是有并行化机制的,一句话所有的单词是可以一起处理的,而不是像RNN这样一个一个的喂。这样做增快速度,但是忽略单词之间的序列关系或者说先后关系,所以说transformer相比RNN就缺少了某种东西,这个时候我们就需要位置编码。

5.2 位置编码公式

image.png
image.png
image.png

2i代表偶数,2i+1表示奇数,偶数位置使用sin 奇数位置使用cos。得到位置编码512维度和字向量中的512个维度相加,得到一个最终的512维度作为整个transformer的输入,为什么位置嵌入式有用的?首先要明确一个点:正余弦这个函数对于同一个位置不同的向量使用不同的sin或者cos体现出的是一种绝对位置信息,与此同时绝对位置向量中蕴含着相对位置信息。

但是,这种相对位置信息会在注意力机制那里消失

小tips:RNN的梯度消失有什么不同?

RNN的梯度消失与普通网络的梯度消失并不相同,RNN是一个总的梯度和,他的梯度消失并不是变为0,而是说总梯度被近距离梯度主导被远距离梯度忽略不计。

6.transformer中最核心的部分——attention机制

6.1 基本的注意力机制

image.png

人类在看一张图的时候,有重点关注,进一步我们引申一下,婴儿在干嘛这句话更关注的是图片中的哪个区域?这就是注意力机制的基本形式

image.png

上图是原论文中的公式,抓住三个重点QKV三个矩阵,我们计算注意力机制的时候一定要有QKV矩阵,QK转置相乘除以某个值做softmax归一化,softmax之后我们得到的是相似度向量,乘以一个V矩阵,得到的应该是一个加权的和。

例子1:

image.png

Q:婴儿单词对应的某种向量,

K1~K4代表某种向量

V1~V4代表某种向量

首先是婴儿和左上左下右上右下分别做点乘得到某个值。点乘的结果是一个向量在另一个向量的投影长度,是一个标量,可以反应向量的相似度也就是说两个向量越相似点乘结果也就越大。点乘之后我们要判断婴儿这个词和哪个区域的点乘结果越大。得到结果之后和V矩阵相乘得到attention-value一个加权和。

image.png
image.png

首先输入的是Q和K1~K4做F函数 ,得到点乘的结果做softmax得到相似度,他们相加为1.和value值相加做乘法得到attention-value

我们已经知道我们需要三个矩阵QKV但是我们在这里都没有说明怎么获取QKV向量,在transformer中是怎么操作的呢?

6.2 在transformer中怎么操作的

image.png
image.png

输入的词做embedding 分别乘以一个矩阵得到QKV向量。向量相乘得到score 然后除以一个值。为什么要除以一个值,如果qk相乘值很大softmax在反向传播的时候梯度很小,很容易造成梯度的消失。为什么除以根号DK不是其他值,是为了保持方差控制为1 得到之后就可以得到加权和。在实际操作中我们一般使用矩阵,方便并行速度更快。

image.png
image.png
image.png

还有一个细节是多头,我们在上图中只用了一套参数。但是实际参数中我们会使用多套。分别得到各自的QKV;为什么这么做。首先,作者做实验效果很好,以此很多人猜测,多头相当于把原始信息打到不同的空间。原来是一个空间,现在变成两个空间。保证transformer可以注意到不同子空间的信息。捕捉到更全的信息。最后我们需要把多个头合在一起输出,然后乘以一个矩阵,就得到我们多头注意力机制的一个输出

7.残差和LayNorm

image.png

x1 x2代表词向量进行输入,和位置编码对位相加得到新的x1 x2经过attention层得到输出结果z1 z2。 现在的输出是z 把x拿过来和输出结果z对位相加(x是经过位置编码的x) x和z相加作为残差的一个结果。经过layernormalization作为一个输出。

7.1残差

image.png

image.png

原来如果没有残差网络,直接输出fx就可以了,现在有了残差网络,需要把原来的x拿到下面与fx的矩阵进行对位相加。为什么残差结构有用呢?经过BC两层网络A的输出就是x。梯度消失一般是因为连乘产生梯度消失,在残差网络中因为有了1 所以确保了梯度不会为0,所以缓解了梯度消失的出现。这就是NLP中用了残差网络之后可以比较深的原因。


image.png

8.Layer Normalization

经典面试题:为什么在这里使用layer normalization而不是使用传统的BN

在NLP中,很少使用BN。因为BN在NLP任务中效果比较差所以不用。但是后期很多论文对BN进行了改进,现在先不去深究

8.1 BN提出的背景


image.png

无论在机器学习还是深度学习中,都会经常使用feature scaling 主要是为了消除量纲的影响让模型收敛得更快。

image.png

BN的重点在哪里:BN的重点是针对整个batch中的样本在同一纬度的特征的处理。

BN的优点:

第一个是可以解决内部协变量的偏移

第二个是缓解了梯度饱和问题(如果使用sigmoid激活函数的话),加快收敛

BN的缺点:

第一个是batch_size比较小的时候,效果比较差

第二个是在RNN中,效果比较差。比如现在有一堆样本 batch_size为10 9个样本长度为5。1个样本长度为20.那么在输入的时候前5个单词的均值和方差可以用10个样本算出来。但是第6个单词到第20个单词的均值和方差怎么计算呢?如果只用一个样本计算,就回到第一个问题batch_size很小的时候效果很差。RNN的输入是动态的,所以她不能得到整个batch_size的均值和方差

9.为什么使用layer-norm
理解:为什么layerNorm单独对一个样本的所有单词做缩放可以起到效果。

LN的特点:举个例子:上面讲的最后一个样本有20个单词,LN就是对这20个单词做缩放做均值方差。而BN做的是对第一个单词做均值方差..对第二个单词做均值方差..这样BN的操作在NLP中就会遇到问题,把BN引申到RNN看下图:


image.png

如果是针对同一个位置做均值方差,我和今做均值方差,爱和天做均值方差,默认的假设是我和今代表同样的信息,爱和天代表同样的信息。而LN是针对"我爱中国共产党"进行均值方差 他的假设是"我爱中国共产党"是出现在同一个意义信息里。我们这么来想这个问题,我们在获取我爱中国共产党这个句子的句向量的时候,一个常规的做法是做加权的词向量。加权词向量基本假设就是"我爱中国共产党"这句话的所有词是在同一个语义信息下的。所以我们才认为他可以理解的(个人理解)。

9.1前馈神经网络


image.png

前馈神经网络其实比较简单,就是这张图的上半部分,Z1通过一个feed forward Z2通过一个feed forward 再加上一个两层全连接再过一个残差和Normalization。

上述就是整个encoder的过程。

10.Decoder

image.png

Decoder和encoder一样由完全相同的几个模块堆叠而成Nx

模块1:多头注意力机制,但是这里有个细节点就是masked

masked: 需要对当前时刻之后的单词都mask掉

为什么需要mask:


image.png

比如我在输入love的时候输出的是you 如果decoder的输入没有mask和encoder一样的多头注意力机制,那么就是所有的次S I LOVE YOU NOW都会为生成YOU这个结果提供信息。但是这样训练出来的模型在预测时候就会出现一个问题:我们在预测YOU这个单词的时候是没有后面的那些信息的。模型看不见未来时刻的单词。如果不masked YOU NOW 那么模型训练和预测的时候就会存在gap,也就是说训练的时候可以看见YOU NOW 预测的时候看不到,那么预测效果肯定不好。所以我们需要mask。把YOU NOW给的信息抹点不看到他 预测的时候也看不到,这样gap就消失了。

模块2:交互层,比encoder多了一层。

encoder 与 decoder交互的地方。


image.png

所有encoder的输出生成值与每个decoder进行交互


image.png

encoder生成KV矩阵 decoder生成Q矩阵,交互的时候就是QKV进行交互生成多头注意力机制。


image.png

虚线代表KV矩阵的输出,和第一个decoder的Q做一个交互

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