bert是什么
BERT被设计为通过在所有层的双向上下文上共同进行条件化来预训练未标记文本的深层双向表示。我们可以在仅一个附加输出层的情况下对经过预训练的BERT模型进行微调,以创建适用于各种任务(例如问题解答和语言推断)的最新模型,进而减少了对NLP任务精心设计特定体系结构的需求。BERT是第一个基于微调的表示模型,可在一系列句子级和字符级任务上实现最先进的性能,优于许多特定于任务的体系结构。
怎么使用bert
self-Attention layer
input
token embedding + segment embedding +position embedding
token embedding
分词
segment embedding
有些任务是两句话一起放入输入X,而segment便是用来区分这两句话的。在Input那里就是用“[SEP]”作为标志符号。而“[CLS]”用来分类输入的两句话是否有上下文关系。
position embedding
因为我们的网络结构没有RNN 或者LSTM,因此我们无法得到序列的位置信息,所以需要构建一个position embedding 。例如属于同一句话的用0表示,属于另一句话的用1表示
Layer Normalization
对每句话的embedding做归一化 ,但切记不是batch normalization
预训练模型
input
就是Self-Attention Layer的输入,利用字典将每一个字或者单词用数字表示,并转换成token embedding + segment embedding + position embedding。序列的长度一般有512 或者 1024