Bert 结构详解

1 Bert 模型结构

bert的基本架构 bert模型结构_深度学习


图1,我们导入bert 14 分类model,并且打印出模型结构。


bert的基本架构 bert模型结构_transformer_02


                图2

图 2 是BertForSequenceClassification 模型的结构,可以看出 bert Model 有两大部分组成,embeddings 和 encoder。上面我们已经介绍过了transformer,Bert的结构就是 transformer encoder 的结构。 下面我们分别介绍embeddings 和 encoder。
2 bert embedding 层

bert的基本架构 bert模型结构_bert的基本架构_03

                图3

由图3 可以看出, word_embeddings 转换器 输入维度是 21128 ,输出维度是 768,21128就是bert字典的大小。 由于max_length 取了512,positional_embeddings 转换器的输入维度是512,它要给每个字加上位置信息。Bert 中token type 只有0 和1,因此,token_type_embeddings 转换器输入为2维。最后 我们把word embedding,positional embedding 和 token_type_embedding 进行向量相加,把最后结果进行 layer Normalization。

3 bert encoder

bert的基本架构 bert模型结构_深度学习_04


                图4

如图4 bert encoder 主要分为两部分,自注意力和前馈神经网络。3.1 bert attention

3.1.1什么是查询向量、键向量和值向量向量?

bert的基本架构 bert模型结构_bert_05


bert的基本架构 bert模型结构_神经网络_06

                图5

bert的基本架构 bert模型结构_深度学习_07

bert的基本架构 bert模型结构_bert的基本架构_08


                图6

bert的基本架构 bert模型结构_bert_09


bert的基本架构 bert模型结构_深度学习_10


                图7

bert的基本架构 bert模型结构_bert的基本架构_11


3.1.2通过矩阵运算实现自注意力机制

bert的基本架构 bert模型结构_transformer_12


bert的基本架构 bert模型结构_bert的基本架构_13


                图8

bert的基本架构 bert模型结构_bert的基本架构_14


bert的基本架构 bert模型结构_深度学习_15


                图9

3.1.3 多头注意力
Bert base 使用的是 12 heads attention,multi head attention扩展了模型专注于不同位置的能力。

bert的基本架构 bert模型结构_bert_16

                图10

使用 multi head attention,我们为每个头保持独立的查询、键、值权重矩阵。我们使用X乘以WQ/WK/WV 矩阵来产生查询、键、值权值矩阵。

bert的基本架构 bert模型结构_bert_17

                图11

图 11 与上面自注意力机制计算相同,只需要进行12次不同的权重矩阵运算,我们就可以的到12个不同的Z矩阵。

bert的基本架构 bert模型结构_transformer_18

                图12

最后把 12个矩阵拼接成一个矩阵

3.1.4 bert多头注意力

bert的基本架构 bert模型结构_bert_19

                图13

图13 我们再对照一下BertSelfAttention结构。Linear(in_features=768, out_features=768, bias=True) 其实就是query_weight ,key_weight, value_weight 矩阵。Bert base 使用的是 12 heads attention,其query,key,value是64维度。12*64 = 768,这正好和 in_features, out_features 和 embedding size维度想对应。

bert的基本架构 bert模型结构_bert的基本架构_20


                        图14图14 经过attentions 后Z矩阵和input embeddings 求和归一。

3.2 前馈神经网络

bert的基本架构 bert模型结构_bert_21

                        图15

图15 我们把图14 的结果输入到前馈神经网络中,将其结果和输入求和归一。其输出的结果作为下一个bert layer 的输入。

bert的基本架构 bert模型结构_bert_22

                        图16

图16 大家可以对照bert encoder 和 代码看一下。4 任务层

bert的基本架构 bert模型结构_bert的基本架构_23

                图17
图17 这个模型是bert 14 分类任务,因此最后 连接了一个 Linear 层,输入768 维度,输出14维度。