发布时间:2023-04-24 13:00
BERT全称BidirectionalEncoder Representations from Transformer(基于Transformer的双向编码器?)。BERT模型利用大规模无标注的预料训练,获得包含文本内在语义信息的Representation。
输入:文本中各个词的原始向量。这个向量既可以是随机初始化,也可以是使用word2vec初步训练得到的。
输出:文本中各个词融合了全文语义后的向量表示
输入模型的向量包括三个部分:字向量(Token Embedding)、文本向量(Segment Embedding)、位置向量(Position Embedding),最后将这三个向量加和输入到BERT模型中。
对于不同的任务,BERT有着不同的输入和输出
BERT的核心是Transformer,而Transformer的核心是Attention,注意力机制。
Attention的作用是让神经网络把注意力集中在一部分输入上。最原始的应用于序列入序列出类问题的模型是Encoder Decoder模型。
输入 S o u r c e = < x 1 , x 2 , . . . > Source =
这么做的缺陷也很明显。首先当输入量较大时,将规模极大的信息一股脑地压入c显然对于Decoder压力很大,且容易出现梯度消失;其次,先后进入Encoder的信息价值是不等的,理论上越后输入的单词影响力越大;而且,可以看出Decoder中,任何时刻的语义信息C是相同的,显然也不合理。
Attention机制则在其基础上改用多个中间语义c。
在预测Y1时可能它的注意力放在C1上,那么就用C1作为其中间语义,以此类推。也就是说原先一成不变的C,变成了会根据要生成的单词而不断变化的Ci。举例,在为“鹄”注音时,可能会觉得陌生,但放入“鸿鹄之志”里时就豁然开朗了。在“鸿鹄之志”四个字中,“鸿”对“鹄”的理解作用最大,相反“之”对想起来“鹄”念什么帮助微乎其微。这个帮助理解的能力,就类似于注意力
Attention机制主要涉及到三个概念:Query,Value,Key。
其中
自注意机制将每个字作为Query,加权融合所有字的语义信息,得到各字的增强语义向量
将每个字的多个增强语义向量进行线性组合,最终获得一个与原始字向量长度相等的增强语义向量。Multi-head的出现是因为不仅词具有多义性,有些句子在不同场景下所表达的意思也不一样。例如“女朋友 / 很 / 重要吗”和“女朋友 / 很重 / 要吗”两句话,“要”字是否和“重”组合所表达的语义不同。Multi-head Self-Attention可以看作是对文本中每个字分别增强其语义向量表示的黑盒。
大名鼎鼎的Transformer是Multi-head Self-Attention的升级版。由于BERT没有Decoder模块,下文只涉及Transformer Encoder结构。
Transformer在Multi-head基础上又添加了
重点来了。
组装好TransformerEncoder之后,将Transformer Encoder堆叠起来,就是BERT模型。
重点结束了。