Bert-基本构成

Bert将Transformer左半边的Encoder拿出来进行单独训练,来生成预训练模型。GPT是将Transformers右半边Decoder拿出来进行预训练。整体的框架如下:
bert-framewoek

1. 输入:

词嵌入Bert选择了WordPiece进行子词词元化。
[CLS] : 在训练前,每个句子开始时都有CLS预示输入的开始,同时也不包含任何含义。在训练后,它汇总了句子所有的特征,可以用来继续下游的分类任务等,更加公平的融入后面的语义信息。

1.1 标记嵌入:

[CLS]句子[SEP]

1.2 分段嵌入

[CLS]句子1[SEP]句子2[SEP]

1.3 位置嵌入

给出词序的具体位置信息

最后将上面的三个特征进行相加,即为输入特征,输入到Bert中。
Embedding的数学本质,就是以one hot为输入的单层全连接。
也就是说,世界上本没什么Embedding,有的只是one hot。

2. 训练

使用多伦多预料库和维基百科语料库。

  1. 抽取句子对:保证下一句与非下一句的比例为1:1
  2. 抽取的句子进行Word Piece分词
  3. 随机这样15%的词
  4. 参数:
批大小 epoch 学习率 预热 Dropout 激活函数
254 1000000 Adam 10000 0.1 GeLU

GELU :
ReLU会确定性的将输入乘上一个0或者1(当x<0时乘上0,否则乘上1),Dropout则是随机乘上0。而GELU虽然也是将输入乘上0或1,但是输入到底是乘以0还是1,是在取决于输入自身的情况下随机选择的。
所以,GELU的优点就是在ReLU上增加随机因素,x越小越容易被mask掉。
预热
1)这样可以使得学习率可以适应不同的训练集合size
实验的时候经常需要先使用小的数据集训练验证模型,然后换大的数据集做生成环境模型训练。
2)即使不幸学习率设置得很大,那么也能通过warmup机制看到合适的学习率区间(即训练误差先降后升的关键位置附近),以便后续验证

3. 结果

名字 L-编码器层数 A-注意力头数 H-隐藏神经元个数 总参数量
BERT-base 12 12 178 0.11B
BERT-large 24 16 1024 0.34B

优点:

  1. CBOW:将中心单词周围的n个单词(固定的片段)作为输入,然后预测中心单词。BERT使用整句预测[MASK]标记
  2. Word2vec:只考虑局部上下文。无上下文模型,同时生成的嵌入向量与上下文无关
  3. Transformers:引入可训练位置编码

缺点:

  1. 训练参数并非最优。–> Roberta
  2. 训练过程中掩码的引入和下游任务掩码的缺失有冲突 -->XLNet:使用自回归代替自编码。
  3. 同时为了解决这个问题引入的的下一句预测也并不能很好处理。–ALBERT
  4. Token处理不完全 -->全词掩码
  5. 只执行一次掩码 --> Roberta(动态掩码)
  6. 只能处理2个句子对。
  7. 长度限定在512个字符内

Bert-基本构成
http://example.com/2023/12/09/Bert-基本构成/
作者
Z
发布于
2023年12月9日
许可协议