Transfromer解读笔记

https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.788&vd_source=3fde340ea29dd912c5a18264fa4a071c

提出背景

现有时序网络rnn,lstm,都是一步步计算的过程,难以并发。算ht前,必须先计算ht-1,

  1. 无法并行,使得在计算性能上比较差
  2. 序列长的话,早期的时序信息会丢失

网络架构

编码器 : 长为n的xt 转化为长为n的zt(向量表示)
解码器: 长为n的zt 转化为长为m的序列
编码时可以一次看到完整的句子,解码时则是自回归,t-1的输出是t时刻的输入
编码器和解码器都用了自注意力机制,point-wise,全联接层
在这里插入图片描述

解码器

输入->embedding(词嵌入成为向量表示)->加入positional_embedding(用于表示位置)
N* 表示有 n层 堆叠在一起,一层称为一个Transformer Block,默认n=6, 向量维度512
具体一个Transformer Block 含有 多头注意力,残差连接,和前馈神经网络,layer_normalization
编码器的输出会变为解码器的输入
在这里插入图片描述
(调参主要就调2个值。一个layer的数量(默认6),一个向量维度(512))

layerNorm

首先batchNorm如下图,把每一个小batch里的特征变为均值为0,方差为1(减掉均值,除以方差)
“把每一列做归一”
![在这里插入图片描述](https://img-blog.csdnimg.cn/ba84b9266ee84f10afeb310eaa4d22bf.png

layerNorm则是每一行做归一,下图蓝线是batchnorm,黄线是layerNorm
在这里插入图片描述

原因:样本长度会发生变化,有些句子长,有些句子短,缺失值默认添0,长度长短不一,学习和预测时的方差和均值也不再适用

编码器

和解码器基本一致,多了个masked-multi_head_attention
同样是n=6个Transformer_block 的layer组成,多头注意力,残差网络,不过解码器做的是自回归,
t时刻预测的时候无法看到t时刻之后的信息,所以多了个masked

Attention

query key value
output就是不同value的加权和,不同value的权重呢则是通过计算query和key的相似度而来的,
在这里插入图片描述
query和key等长dk,value 则为dv,q和k做内积,余弦值,越大越相近,处以根号dk

为啥要除以根号dk?因为向量长度比较大的时候,相似度算出来就会过大或过小,会很接近1或0,梯度就太小,跑不动了
在这里插入图片描述
注意力机制,一次query是可以和所有key去计算相似度的,也就是说一次性可以看到所有句子,那怎么做mask呢?
mask:对于qt和kt在某时刻之后计算的那些相似度值,用非常大的负数替换就可以了

multi_head

如上图,把原始的qkv,通过线性层把他们投影到低维度去,比如512投影到64,然后做h次的注意力计算,比较像cnn中的不同的核,不同注意力偏向不同的内容
得到h次的输出之后,把这些输出cancat起来,再回投到512去

Transformer中的注意力

在这里插入图片描述

下面两个attention区别就是mask与否,上面的attention有所变化,上面attention的key和value来自于编码器,而query来自于解码器
意味着对于解码器的每一个输出,会去编码器里头挑选它所感兴趣的东西

Feed Forward

其实就是一个全连接的前馈神经网络,MLP
有区别的地方在于它作用于序列的每一个词,每个词对应的都是同一个MLP?为什么只作用于单独的每一个词呢?因为在进入mlp之前已经进入了attention,attention已经完成了对序列信息的a g g regation
在这里插入图片描述
线性层,relu激活函数,512投影成2048,再投会512
所以实际上就是一个单隐层的MLP

Positional embedding

因为attention是没有位置信息的,只取决于query和key的相似度,打乱与否结果相同,不符合我们的预期,
在这里插入图片描述
位置embedding和原始embedding相加即可
在这里插入图片描述

Transformer和cnn,rnn的对比

在这里插入图片描述
分别是 计算复杂度,顺序计算(并行度),信息从一个数据点到另一个数据点要多久
attention复杂度:
q和k相乘,q(nd),k(nd), 复杂度就是nnd
rnn: ndd. d是512,n其实也差不多

正则化

dropout

label_smoothing

label 由 1变为0.1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值