0
点赞
收藏
分享

微信扫一扫

Vue:Vue3-TypeScript-Pinia-Vite-pnpm / 基础项目 / 20240807

预训练-BERT

传统方法与预训练方法的比较

在这里插入图片描述
思想解读: 预训练的概念就和我们人读书和工作一样;先是通过基础教育到大学毕业,学习了通用的基础知识,这个做大多数工作,我们都能够快速学习和上手。模型预训练同样如此;避免了每一个下游任务都从零开始训练模型

由于语言模型不需要特别的标注数据,所以非常适合做预训练的目标。

预训练方式 --BERT

Mask Language Model (MLM)

训练任务

1.完型填空
Bidirectional Language Model
a.依照一定概率,用[mask]掩盖文本中的某个字或词

在这里插入图片描述

b.通过遮住词两侧的内容,去预测被遮住的词

2.句子关系预测
Next Sentence Prediction
[CLS] 师徒四人历经艰险[SEP] 取得真经[SEP] -> True
[CLS] 师徒四人历经艰险[SEP] 火烧赤壁[SEP] -> False

释义: 通过上下两句话,去训练模型去判断是否为上下句子关系,即一个二分类任务。但是目前大家普遍不太使用该训练任务,因为这个规律模型比较容易学习到。

模型结构

BERT主要包含两个部分,第一部分是embedding层,以及在embedding层后面的网络结构。

与word2vec对比
区别:word2vec是静态的,而BERT是动态的;在相同的文本输入后,word2vec输出的向量是固定的,BERT通过embedding后,还需进行后续网络层的计算,那么就能抓住输入的字与字、词与词;即token之间的关系。并能够进行计算输出。

BERT结构-Embedding

释义图:
在这里插入图片描述
释义:

BERT结构-Encoder

介绍: BERT的模型主体结构使用Google自己在17年提出的Transformer结构。

如下图:
在这里插入图片描述

详细释义:

BERT结构-self-attention

示意图:在这里插入图片描述
其中Z的计算公式:
在这里插入图片描述
释义:
1.我们先来梳理矩阵计算的情况

2.Q*K.T和softmax的理解
Q*K.T即:World_Length * World_Length;这个World_Length就是我们输入的文本长度。
所以我们展开可有下面示意图
在这里插入图片描述
注意: 矩阵中的数据,是不是就代表着,这个词与该句子中其他词的关系紧密程度呢。所以这行数据,就是这个字对这句话的注意力。
softmax作用: 就是归一化操作,即将字与句子中其他词的关系程度之和,归一化到1的区间中来。

3.根号下dk的理解
我们在前面说,Q、K、V是通过输入x和对应的线下层相乘得到的;其形状为:World_Length* Vector_Size;
重点关注
1.在进行后续Q、K.T相乘 和乘V的步骤之间,是对Q K V进行拆分的;
2.比如:基础版本BERT的Vector_size为768;这里拆分成12部分,即多头数量为12,;那么每一个Q的形状:World_Length * 64
3.上面拆分后,V也会同样拆分,分别进行计算,最后合并在一起得到:World_Length* Vector_Size
4.最后合并的矩阵再进行 除于根号dk;再归一化的操作:

示意图:

在这里插入图片描述

注意、总结: 在多个Q * K.T中,不管Q、K的Vector_Size 拆分成多少份,即有多少个多头计算;但是在这里计算的结果都是:World_Length * World_Length ;我们上面说了,就是词与句子中其他词的关系紧密程度。

注意核心理解比喻: 这里的多头,造成有多个World_Length * World_Length的结果,其实就是模型在不同维度,去找句子中词与词之间的关系。多头1找的是名称关系紧密程度、多头2找的是动词的关系紧密程度…

dk的值: 在基础版本的BERT中,dk是64,这个值是词向量维度:768与多头数量12的商。
dk作用: 因为softmax是将多个值的和归一化为1;根据softmax的函数特性,会出现在进行归一化的数中,有的比较大,归一化后就接近1;而小的数,就接近零了;这样对于模型的计算不好,这种接近零的值要尽量避免;所以先除于dk;使得值的差距被缩放;再进行归一化。

举报

相关推荐

0 条评论