BERT微调(SQuAD v1.1)-优快云博客
一、BERT基础知识
1.1bert是什么
传统的表征模型:Word2Vec
1.基本原理
Word2Vec通过分析大规模文本数据生成单词嵌入(word embeddings),捕捉单词之间的语义关系。其基本思想是,如果两个单词在许多上下文中出现得很相近,那么它们的语义和用法就可能相似。通过这一方法,Word2Vec能够生成高维向量(通常为100到300维),并保留单词之间的距离关系。
2.主要模型
Word2Vec主要实现了两种模型:CBOW(Continuous Bag of Words)和Skip-Gram。
- CBOW模型:使用上下文单词来预测中心单词。上下文单词组成一个窗口,CBOW模型通过对这些上下文单词的向量表示求平均或加权平均来预测目标中心单词。例如,在句子“The cat sat on the mat”中,当上下文窗口为2时,上下文可能是“The”,“cat”,“on”,“the”,而目标中心词是“sat”。
- Skip-Gram模型:用中心单词来预测上下文单词。输入一个中心单词,模型尝试预测在该中心词周围的上下文单词。对于同样的句子“The cat sat on the mat”,如果中心词是“sat”,则要预测上下文词“The”,“cat”,“on”,“the”,“mat”。
3.存在的缺点
因此提出了 Contestualized Word Embedding 的多语义结合方式。
bert的创新
1.抛弃了seq2seq的结构
encode可以学习r前后关系、decoder只有向前关系。bert只使用到了encoder方向。
2.加入了segment embedding,position embedding也可以通过参数学习
3.Mssaked Language Model(MLM)
使用15%概率对训练集进行Mask,让模型预测出原有单词。
测试阶段不可能对全部词进行Mask,于是就产生了数据格式不匹配的问题。只会对mask敏感。
bert使用了8(mask):1(随机替换):1(不变)的方法。
总结
BERT是一个充分利用上下文的编码器,能够以文本中各个字/词(token)的原始词向量为输入,输出文本中各个字/词(token)融合了全文语义信息后的向量表示,并且在每一层都可以单独输出一个向量进行下游任务使用。bert运用到的是transformer的编码器结构,可以用于文本的相似度计算、序列标注、文本分类等任务。bert模型的base版有12层,large有24层。BERT模型考虑了所有的上下文,GPT只考虑了之前的n-1刻的前文。BERT的输入 在前边会增加[CLS]和[SEP]
[CLS]:分类的标识符。在BERT的输入序列的最开始,会添加一个特殊的标记[CLS]。这个标记的作用是作为整个输入序列的代表,用于后续的分类任务。例如,在情感分析任务中,模型会基于这个标记的输出向量来判断整个句子的情感倾向。
[SEP]:分隔符。标记用于分隔输入序列中的不同部分。这在处理成对的句子或段落时特别有用,比如问答任务中的问题和答案,或者句子关系判断任务中的两个句子。
1.2从bert结构详细学习bert
1.2.1BERT的输入输出逻辑
BER