Transformer、BERT等模型学习笔记

记录一下刷B站教学视频的一些笔记,目前主刷:

  • 李沐老师的【跟李沐学AI】
  • 公众号-【NLP从入门到放弃】 的视频

1 Transformer从零详细解读(可能是你见过最通俗易懂的讲解)

地址:

Transformer从零详细解读(可能是你见过最通俗易懂的讲解)

知乎相关文章:
万字长文帮你彻底搞定Transformer-不要错过!!
答案解析(2)-3分钟彻底掌握Transformer的Encoder—满满干货!!
答案解析(1)—史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer

1.1 整体结构

transformer整体结构简图: 6 encoder * 6decoder

Transformer、BERT等模型学习笔记
6个encoder结构完全相同,但是训练的时候是6个同时训练,独立训练,这里跟alBERT有差别,albert是共享transformer某些层的参数,达到减少参数量的目的。
以下是论文的transformer图,左边是一个encoder的图样,一共会 有Nx个(乘以N个),
右边是一个decoder,一共会有Nx个:
Transformer、BERT等模型学习笔记

从图中,可以看到,decoder比encoder要多一个模块,就是masked muti-head attention的模块

1.2 encoder部分

拿出一个看看,分为三个部分:

  • 输入部分
  • 注意力机制
  • 前馈神经网络
    Transformer、BERT等模型学习笔记

1.2.1 输入部分

input = embedding + postion bedding

为啥需要位置信息?不适用RNN?

RNN可以获得一套参数,transformer是并行的,丢失了位置信息,就通过编码,加到embedding,让embedding拥有位置信息
Transformer、BERT等模型学习笔记
RNN里面,所有的step都共享一套参数,包括,U,W,V

那RNN的梯度消失是什么?
RNN的梯度是一个梯度消失和,并不是梯度变为0,
RNN是一套参数的梯度,那么这套参数会更加适应St%2B1而对St-1不友好,忘记重视前面的隐藏层

位置编码公式:

Transformer、BERT等模型学习笔记

为什么相对位置编码对表示位置有用?
Transformer、BERT等模型学习笔记

所以总结一下,
最后输入项 = 位置编码 + embedding,对位相加:
Transformer、BERT等模型学习笔记

1.2.2 多头注意力机制

1.2.2.1 注意力机制原理

注意力机制计算的时候,一定有Q,K,V三个矩阵:

Transformer、BERT等模型学习笔记
下面是一个基于公式的例子:

Transformer、BERT等模型学习笔记
Q,K都分别代表两个向量,点乘代表两个向量的相似程度,
这里婴儿Q,点乘四个K值,就代表婴儿与四个区域,哪个更相似,所以
softmax(Q,K) 代表相似度
Transformer、BERT等模型学习笔记
这个图演示了一个attention计算出来的经过

1.2.2.2 QKV的获取方式

Transformer、BERT等模型学习笔记
一个input,会跟QKV同时相乘,那么:

  • Q = X*Wq
  • K = X*Wk
  • V = X*Wv

此时Wq、 Wk、 Wv为Q,K,V的参数

得到了q1/q2,就可以跟上述注意力机制计算一样:softmax(q,k) * v
我们来看看具体的乘法过程:
Transformer、BERT等模型学习笔记
矩阵并行QKV,比较快
长头=>多组参数Wq、 Wk、 Wv
Transformer、BERT等模型学习笔记
Transformer、BERT等模型学习笔记
如果是8个头,那就是接在一起共同输出,Z0就是注意力层的第一个头,一直有8个

1.2.3 残差

laynorm计算过程:
上面经过多头注意力层,就有Z1,Z2多头注意力层进行输出
这里的laynorm,是把多头注意力层输出的Z + 原始的X,
add之后进行normalize

Transformer、BERT等模型学习笔记

解释残差
X经过两个weight layer,最后会得到:f(x)+ x
Transformer、BERT等模型学习笔记
抽象成如下公式:
Transformer、BERT等模型学习笔记
残差这里的1,就可以保证梯度不消失,因为消失较多的情况是,连乘会导致梯度消失,所以残差网络可以让网络变得很长,因为可以保证梯度不会消失;
反观RNN,顶多是bi-lstm,一旦过长容易梯度消失,所以RNN网络做深非常难

1.2.3 layer norm 与BN的差异

另外一个知识点:layer norm(LN) 与 BN的差异
BN效果差,NLP中基本不用,因为RNN不用,一般用LN;
CNN可能会用BN
BN – 进行feature scaling标准化,

Transformer、BERT等模型学习笔记
BN进行标准化是一个特征所有进行标准化,如下图的所有人的体重这一行做标准化

Transformer、BERT等模型学习笔记
指所有的词,样本,一行代表一个特征,第一行是权重,第二行是身高
BN指的是,选的一个Batch中所有的人,体重这一行做标准化,

BN最大的问题 : 但是有一个问题就是,如果Batch非常小,那么这时候方差/标准差只是局部的,并不能总体,所以波动非常大
意思就是,本来有1w个样本,如果做标准化,就是体重这一列,1w个人标准化,但是现在的情况是,一个batch可能只有100个人,
那么1w和100个人的标准差,均值都不一样了,所以BN代表用100个人的模式,表达这1w个人

所以,LN的意思就是,标准化,不是按行,而是按每个样本,按照一个人,体重,身高,等等特征

Transformer、BERT等模型学习笔记

Transformer、BERT等模型学习笔记
在RNN中,比较难,因为有些词padding,后面的都是0,方差不好算
Transformer、BERT等模型学习笔记

1.2.4 前馈神经网络

就是红框的部分,Z1、Z2分别通过一个feed forward,代表两层的全连接
再过一个残差和Normalize
Transformer、BERT等模型学习笔记

1.3 Decoder

主要有两个不同的主要模块

  • 改成masked
  • 额外的交互层
    Transformer、BERT等模型学习笔记

1.3.1 masked

这里有个细节点就是masked,

Transformer、BERT等模型学习笔记
为什么需要mask,如果要预测YOU这个单词,如果不mask,就会出现信息泄露
decoder是预测型的,需要mask后面的单词
Transformer、BERT等模型学习笔记

1.3.2 新增的多头注意力机制层

Transformer、BERT等模型学习笔记
这里encoder的输出(KV矩阵,如下图),会同时给到所有的decoder(生成Q矩阵)
Transformer、BERT等模型学习笔记
所以这里新增多头注意力机制,KV来自encoder的输出层,而且给到每一个decoder

下面有一个encoder(K、V) -> decoder(Q,下图的encoder-decoder attention)的详细图解:
Transformer、BERT等模型学习笔记

2 BERT从零详细解读,看不懂来打我

B站地址:BERT从零详细解读,看不懂来打我

2.1 BERT整体架构

BERT是tansformer中剥离多个encoder,然后堆叠在一起
而不是12层transformer(6*encoder + 6 * decoder)
Transformer、BERT等模型学习笔记

展开其中一个encoder如下,input跟transformer不太一样,

  • transformer input = positional encoding + embedding
  • bert input = token emb + segment emb + position emb
    Transformer、BERT等模型学习笔记

解析一下input:

  • segment emb 是一句话为0,一句话全为1
  • postion emb是初始化后,让模型自己训练出位置信息
    Transformer、BERT等模型学习笔记

提问:那么[cls]是否可以作为句向量来表征这个句子?
[cls]表征的向量不是句向量,输出是为了二分类,如果拿[cls]表征的向量来做相似性聚类,效果非常差,不如Word embedding

2.2 MLM + NSP如何做预训练

2.3 微调BERT,提升BERT在下游任务的效果

2.4 代码解析

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月22日 下午4:00
下一篇 2022年3月22日 下午4:26

相关推荐