在"深度学习经典模型之BERT(上)"我们描述了BERT基本信息、意义、与GPT和Transformer的区别、预训练、自监督等相关信息后,本章节将介绍BERT的输入、Encoder、微调及两个主流变种。
BERT inputs
切词方法
BERT的切词方法用的是WordPiece embeddings,其思想是如果一个词在整个里面出现的概率不大的话,就应该把它切开,看他的一个子序列,如果它的一个子序列(比如它的词根)出现的概率很大,那么只保留这个子序列就好了,这样可以把一个相对长的词切成一段又一段的片段,这些片段还是经常出现的,就可以用相对较小的30k的词典就能表示一个比较的文本。这样可以避免按照空格切词时一个词作一个token会让数量大进而导致词典变大,让可学习的参数都集中在了嵌套层里的问题。
序列的第一个词永远是一个特殊词元[CLS]代表序列开始(全称:classification), 在每个句子后面放一个特殊词[SEP]表示separate或end,全称separator。如上图所示。

输入嵌入
Bert输入嵌入包含三部分的内容:token embeddings,position embeddings,和Segment Embeddings(token所属段落编码的embeddings),示意如上图所示。 即对于每一个token(词元)在BERT的向量表示这个token本身的embedding加上它在哪个句子的embedding再加上位置的embedding.
在Transfomer里面位置信息是手动构造出的矩阵,但是在BERT里面不管你是属于哪个句子还是位置在哪,它对应的向量的表示都是通过学习而来的。
- Token Embeddings:采用look up的方式,将每个token转换成768维的向量。
- Segment Embeddings:BERT支持双句输入,Segment(0,1)用于区分a、b句。
- Position Embeddings:采用训练式位置编码,通过look up获取位置编码。
transformer的输入是由 word embedding + position embedding组合而成的向量x.
BERT Encoder
基础架构

BERT的Encoder包含三个部分的内容:输入、多头注意力与前馈神经网络。对应的是Transformer的Encooder部分, 其中输入部件的组成比Transormer多了一层,具体见Bert input章节。
Bert与Transformer不同的是,BERT仅采用Transfomer的Encoder,分为BERT bae与BERT large,其层数等参数都有所不同。


被折叠的 条评论
为什么被折叠?



