当前位置:   article > 正文

bert 应知应会_bert公式

bert公式
1. BERT 的基本原理是什么

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向 Transformer 的 Encoder,整体是一个自编码语言模型,模型的主要创新点都在 pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

这张图是论文中模型架构图,从主体上看,模型还是遵照了encoder-decoder的框架,左半部分为编码部分,右半部分为解码部分。

图中在Encoder和Decoder两边有Nx的标志,原文中也解释了Encoder部分叠加了6个完全一样的层,同样Decoder层也包含6个相同的层,不过值得注意的是模型中每一层之间都用到了残差连接。

对于每层Encoder的内部,首先会通过一个self-attention层,之后跟一层全连接前馈神经网络;而对于每层Decoder的内部,首先通过一个self-attention,之后会多跟一个attention层用于单词聚焦(类似之前RNN中加入的attention作用),之后同样会跟一层全连接前馈神经网络。
在这里插入图片描述

2 训练 Task 1: Masked LM

作者在一句话中随机选择 15% 的词汇用于预测。对于在原句中被抹去的词汇, 80% 情况下采用一个特殊符号 [MASK] 替换, 10% 情况下采用一个任意词替换,剩余 10% 情况下保持原词汇不变。

这样做的好处是,BERT 并不知道[MASK]替换的是这 15%个 Token 中的哪一个词(「注意:这里意思是输入的时候不知道[MASK]替换的是哪一个词,但是输出还是知道要预测哪个词的」),而且任何一个词都有可能是被替换掉的,这样强迫模型在编码当前时刻的时候不能太依赖于当前的词,而要考虑它的上下文,为 BERT 模型赋予了一定的文本纠错能力;(类似于 CBOW,用上下文预测当前词)

被随机选择15%的词当中以10%的概率保持不变,缓解了finetune时候与预训练时候输入不匹配的问题(预训练时候输入句子当中有mask,而finetune时候输入是完整无缺的句子,即为输入不匹配问题)。

3. mask 相对于 CBOW 有什么异同点
  • 相同点:本质上都是给定上下文,根据它的上文 Context-Before 和下文 Context-after 去预测 input word。在 CBOW 中,每个单词都会成为 input word,而 BERT 只是被 mask 掉的部分词语(字)。
  • 不同点:bert 的上下文是完整句子,而 cbow 只是 window 窗口内的部分词语;另外,通过 CBOW 模型训练后,每个单词的 word embedding 是唯一的,而 BERT 模型得到的 word embedding 融合了上下文的信息,就算是同一个单词,在不同的上下文环境下,得到的 word embedding 是不一样的。
4. 训练 task 2 :Next Sentence Prediction

给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后。在实际预训练过程中,文章作者从文本语料库中随机选择 50% 正确语句对和 50% 错误语句对进行训练,与 Masked LM 任务相结合,让模型能够更准确地刻画语句乃至篇章层面的语义信息。

5. bert 模型的输入

bert 模型的输入由三种 Embedding 求和平均而成,这三种向量均为随机生成,在训练过程中学习
在这里插入图片描述

  • Token Embeddings是词向量,将文本中的每个字转换为一维向量,作为模型输入,第一个单词是CLS标志,可以用于之后的分类任务
  • Segment Embeddings 用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务,该向量的取值在模型训练过程中自动学习,用于刻画文本的全局语义信息,并与单字/词的语义信息相融合
  • 由于出现在文本不同位置的字/词所携带的语义信息存在差异(比如:“我爱你”和“你爱我”),因此,BERT 模型对不同位置的字/词分别附加一个不同的向量(Position Embeddings )以作区分。原文中在对位置进行编码时,用了一种神奇的规则,利用sine和cosine,正余弦函数来编码,论文中解释了也使用了可学习的位置编码方式,但发现效果差不多,最后选择了正余弦编码方式,因为这种编码方式能够将位置编码扩展到看不见长度的序列优点(比如推断过程中出现的序列比训练样本中任何文本都长)。
6. BERT中并行计算体现在哪儿

不同于 RNN 计算当前词的特征要依赖于前文计算,有时序这个概念,BERT 的 Transformer-encoder 中的 self-attention 计算当前词的特征时候,没有时序这个概念,是同时利用上下文信息来计算的,一句话的 token 特征是通过矩阵并行运算的,故并行就体现在self-attention。

7. 深度学习attention机制中的Q,K,V分别是从哪来的

Q,K,V 是由 input embedding 分别乘上三个权重矩阵,经过不同的线性变换得到的。

这也是注意力的根本体现,怎么知道哪个 word 的权重最大呢(最重要),Q是目标词矩阵,K是关键词矩阵,V是原始特征,先使用 一个 Q(uery) 检索 key-value memories,计算相关性分数,找到和问题相似的 memory 的key,然后对 value embedding 进行加权求和,得到一个输出向量。即:计算当前词语(Q)对于所有其他每个单词(K)的 self attention 得到 attention weight

score = softmax(q * k / √dk)

value 代表的也是当前单词的词向量(作为最终被加权的向量)value 乘上这个 score 得到加权后的向量 embedding

在这里插入图片描述

8. Multi-Head Attention

Multi-Head Attention 相当于多个不同的 self-attention 的集成,形成多个子空间,将多个 attention 矩阵拼接乘一个大的矩阵,可以让模型去关注不同方面的信息。bert 网络同一层中的关注模式是一样的(如网络中的底层更偏向于关注语法,顶层更偏向于关注语义),因此 Multi-Head Attention 可以理解为 CNN 中多个 filter 一样,是一种 ensemble 或 noise 。从不同角度提取信息,提高信息提取的全面性。
在这里插入图片描述

9. transformer attention的时候为啥要除以根号Dk

作者在论文中的解释是点积后的结果大小是跟维度成正比的,所以经过softmax以后,梯度就会变很小,除以 dk 后可以让 attention 的权重分布方差为 1,否则会由于某个输入太大的话就会使得权重太接近于1(softmax 正向接近 1 的部分),梯度很小,造成参数更新困难。

10. BERT中Transformer中Self-attention后为什么要加前馈网络?

由于 self-attention 中的计算都是线性的(矩阵乘积),为了提高模型的非线性拟合能力,需要在其后接上前馈网络。Transformer 中的 Feed-Forward Network 部分使用了ReLU作为激活函数,公式为:FFN(x) = max(0,xW1+b1)W2+b2;每一层会使用不同的参数,可以将其理解为两个Kernel size为1的卷积。

11. 残差网络

在模型结构中,每层都会间隔一层 Add & Norm即 layer-normalization,这里深度残差网络的特性,将前一层和前前一层的输出进行求和正则后,作为下一层的输入。

12. Decoder 部分

Decoder部分整体与Encoder是一致的,不过从模型图的右边我们可以看出其多了一个子层Multi-Head Attention,在Decoder时,会先进入第一个子层self-attention,得到Q,之后中间层的atention并不是self-attention,其K、V来自Encoder层,结合前一个Q,进入该子层,有这么几点需要注意下:

  1. 第i个位置的Encoder输出简单变化作为K、V与i-1位置的Decoder第一个子层的输出作为Q;
  2. Encoder在编码时可以将输入序列作为一个整体,以矩阵的形式一次性编码,但Decoder时当前位置的输出需要依赖上一个位置的输出,所以是按顺序解码的;
  3. 在Decoder的第一个子层self attention做了mask,保证当前位置i的预测只依赖小于i位置的输出,避免利用未来的信息;
  4. Decoder层在预测到类似的结束符时便会停止预测。
13. Linear和Softmax

Decoder经过两个attention子层和一个FFN子层后的输出,其解码向量经过一个线性映射WX+b,将其映射到整个字典空间,然后经过softmax规整成字典词汇的概率分布,即每个词的分数,之后选取分数最高的词作为输出即可。

14. 附参考链接:

https://zhuanlan.zhihu.com/p/151412524
https://cloud.tencent.com/developer/article/1687276
https://www.jianshu.com/p/56a621e33d34
https://www.zhihu.com/question/325839123
https://www.zhihu.com/question/341222779
https://www.zhihu.com/question/339723385/answer/782509914
https://zhuanlan.zhihu.com/p/48508221
https://zhuanlan.zhihu.com/p/93475358
https://www.cnblogs.com/xlturing/p/10824400.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/573125
推荐阅读
相关标签
  

闽ICP备14008679号