BERT

1 Introduction&Contribution

之前的模型比如GPT使用的是单向注意力机制,作者认为这种架构在sentence-level的task上finetuning是次优的,因为这个任务需要从双向建模上下文。

作者提出两种预训练任务,这两种预训练任务是同时进行的:

  1. masked language modeling:将句子中部分单词用[mask]替代,然后预测它们。
  2. Next Sentence Prediction:输入两个句子,使用[CLS]来判断第二个句子是不是第一个句子的下一句。

2 Methods

2.1 Input/Output Representations

BERT的输入是两个masked的句子,并且两个pretraining task是并行同时进行的。对于每一个token来说,它的表征是由token embedding、segment embedding、position embedding相加得来。,其中,segment embedding一共有两种,表示该token属于两个句子中的哪一个。[CLS]表征两个sentence的的聚合表征。

2.2 Pretraining Stage

2.2.1 Masked LM

作者将每个句子随机masked掉15%,然后在这些token上进行预测本应该是哪个词,使用交叉熵计算loss。masked掉的token并不是全由[mask]替代,因为[mask]在finetune时并不会出现,会导致和下游任务不匹配。因此作者将这15%的token用以下三种替代

  1. 80%用[mask]
  2. 10%用random token
  3. 剩下10%保持不变。

2.2.2 Next Sentence Prediction (NSP)

许多下游任务都需要理解两个句子之间的关系,比如Question-Answering,它输入question和passage,让你预测答案在passage的起始和结束位置。

BERT通过NSP来提高模型的句间理解能力。NSP时一个二分类问题,它的数据集很容易构造,从语料库里选出两个句子A、B,50%情况下,B是A的下一句,50%的情况下不是,通过CLS token对两个句子是否衔接进行判断。

2.3 Finetuning Stage

作者将BERT对不同任务的输入输出进行了适配,具体请见原论文Section 3.2和Section 4.

3 BERT参数量计算

参数量主要来自embedding层的权重矩阵、MHA、layer norm、FFN(未考虑bias)

表格可见How is the number of BERT model parameters calculated?

3.1 Embedding层

  1. token embedding:词表大小乘向量为度,30522*768
  2. segment embedding:区分上下句子,参数为2*768
  3. position embedding:文本输入最长为512,那么参数为512*768

3.2 MHA-qkv_proj/out_proj

qkv的每个投影矩阵大小为768*768,然后还有一个out_proj,参数为768*768

因此总参数为12*(4*768*768)12是因为有12个layer

3.3 LayerNorm

有两个参数,gamma和beta,有三个地方用到了LayerNorm,分别是embedding之后、MHA之后、FFN之后,也就是768+(768+768)*12,12是12个layer

3.4 FFN

中间维度为4d,也就是3072,参数量为12*(768*3062+3062*768)

3.5 总参数量

总的参数=embedding+multi-head attention+layer normalization+feed forward

=23835648+28311552+38400+56623104

=108808704

≈110M

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇