Bert框架详解(上)

目录

一、传统的自然语言处理框架存在的问题

1、RNN网络计算时存在的问题

2、传统word2vec存在的问题

二、Bert模型机制

1、编码-解码框架(Encoder-Decoder)

(1)、编码器(Encoder)

(2)、解码器(Decoder))

[2、自注意力机制(self attention)](#2、自注意力机制(self attention))

(1)、注意力机制

(2)、自注意力机制

3、多头机制(multi-headed)

4、三角函数位置编码


一、传统的自然语言处理框架存在的问题

1、RNN网络计算时存在的问题

(1)、串联,导致数据必须从h1-h2-...hm。数据训练时间变长,因为需要要等h1的结果出来才能计算h2;

(2)、并行计算效果不好,也就是不能多台服务器同时训练一个网络。

2、传统word2vec存在的问题

(1)、词向量一旦训练好了,就不会改变;

(2)、不同语境中的词含义不同,例如 【a、你真不是东西。 b、东西】 因此根据上下文不同的语境,应该有多个不同的词向量。

Bert模型的编码-解码框架就能解决上述问题

二、Bert模型机制

Encoder-Decoder:也就是编码-解码框架,目前大部分attention模型都是依附于Encoder-Decoder框架进行实现。 在NLP中Encoder-Decoder框架主要被用来处理序列-序列问题。也就是输入一个序列,生成一个序列的问题。这两个序列可以分别是任意长度。

比如:

文本摘要:输入一篇文章(序列数据),生成文章的摘要(序列数据)

文本翻译:输入一句或一篇英文(序列数据),生成翻译后的中文(序列数据)

问答系统:输入一个question(序列数据),生成一个answer(序列数据)

1、编码-解码框架(Encoder-Decoder)

(1)、编码器(Encoder)

Encoder:编码器,对于输入的序列<x1,x2,x3...xn>进行编码,使其转化为一个语义编码C,这个C中就储存了序列<x1,x2,x3...xn>的信息。

编码方法:主要RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU,例如RNN中用h4直接作为语义编码C的值。

(2)、解码器(Decoder)

Decoder:解码器,根据输入的语义编码C,然后将其解码成序列数据,解码方式也可以采用RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU。 Decoder和Encoder的编码解码方式可以任意组合。

语义编码:例如当我们翻译法语中的"abandon"时,我们大脑是先将abandon所表达的概念意识提取出来,这也就是一个编码的过程。 然后提取出来的这个意识概念也就是我们的Feature Vector. 接下来我们的大脑就会基于这个意识概念,去我们大脑中的英语语言库中把与这个意识概念匹配的英文单词提取出来, 这也就是解码的过程。

2、自注意力机制(self attention)

(1)、注意力机制

注意力机制其实是源自于人对于外部信息的处理能力。人在处理信息的时候,会将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤,这种处理方式被称为注意力机制。

一句话中,哪些是重点?如何让计算机关注到话语中的重点?

(2)、自注意力机制

自注意力机制是注意力机制的变体,是输入语句内部元素之间或者输出语句内部元素之间发生的注意力机制。

如何实现slef attention呢?

<1>、首先输入经过编码后得到的词向量

<2>、构建三个矩阵,相当于cnn的卷积核, 分别为wQ、wK、wv矩阵。

<3>、将每一个词向量与矩阵相乘。得到QKV矩阵。

其中

Q:为需要查询的

K:为等着被查的

V:实际的特征信息

slef attention如何计算?

<1>、计算一段话中每个词之间的匹配程度

<2>、通过匹配程度得到每个词的特征重要性。

每个词的Q会跟整个序列中的每一个K计算得分,然后基于得分再分配特征。

因此当和不同的词组合成序列,就会得到不同的特征值。因为不同的组合序列语句,注意力不同。

以上步骤,可通过并行计算,大大提高了计算速度。

3、多头机制(multi-headed)

multi-header(多头)机制:

(1)、通过不同的head得到多个特征表达,一般8个head

(2)、将所有特征拼接在一起

(3)、降维,将Z0~Z7连接一个FC全连接实现降维

将此类结构多层堆叠,就形成了多层网络

4、三角函数位置编码

前面的模型,并没有考虑词的顺序,只是单纯考虑一段话有哪些词。因此模型中需要加入位置编码bert模型运用了一种三角函数位置编码。

word embedding:是词向量,由每个词根据查表得到

pos embedding:就是位置编码。

composition:word embedding和pos embedding逐点相加得到,既包含语义信息又包含位置编码信息的最终矩阵。

pos:指当前字符在句子中的位置(如:"你好啊",这句话里面"你"的pos=0)

dmodel:指的是word embedding的长度(例"民主"的word embedding为[1,2,3,4,5],则dmodel=5), 2i表示偶数,2i+1表示奇数。取值范围:i=0,1,...,dmodel−1。偶数使用公式(1),奇数时使用公式(2)。 当pos=3,dmodel=128时Positional Encoding(或者说是pos embedding)的计算结果为:优点:

1、可以使PE分布在[-1,1]区间。

2、不同语句相同位置的字符PE值一样(如:当pos=0时,PE=0)。

相关推荐
华清远见IT开放实验室3 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
OpenVINO 中文社区12 分钟前
实战精选|如何使用 OpenVINO™ 在 ElectronJS 中创建桌面应用程序
人工智能·openvino
只怕自己不够好17 分钟前
《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》
人工智能·opencv·计算机视觉
网络研究院23 分钟前
国土安全部发布关键基础设施安全人工智能框架
人工智能·安全·框架·关键基础设施
YRr YRr34 分钟前
如何使用 PyTorch 实现图像分类数据集的加载和处理
pytorch·深度学习·分类
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
想成为高手4992 小时前
生成式AI在教育技术中的应用:变革与创新
人工智能·aigc
YSGZJJ3 小时前
股指期货的套保策略如何精准选择和规避风险?
人工智能·区块链
无脑敲代码,bug漫天飞3 小时前
COR 损失函数
人工智能·机器学习
HPC_fac130520678164 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力