赞
踩
BERT可以看成一个自编码的语言模型,主要用两个任务训练该模型。
BERT只使用了Transformer的Encoder模块,与Transformer本身的Encoder端相比,BERT的Transformer Encoder端输入的向量表示,多了Segment Embeddings。
给定一句话,随机抹去这句话中的一个或几个词,要求根据剩余词汇预测被抹去的几个词,类似于完形填空
MLM可以看作是一种引入噪声的手段,增强模型的泛化能力
具体步骤:
如果某个Token在被选中的15%个Token里,则按照下面的方式随机的执行:
这样做的好处是,BERT并不知道[MASK]替换的是这15%个Token中的哪一个词(注意:这里意思是输入的时候不知道[MASK]替换的是哪一个词,但是输出还是知道要预测哪个词的),而且任何一个词都有可能是被替换掉的,比如它看到的apple可能是被替换的词。这样强迫模型在编码当前时刻的时候不能太依赖于当前的词,而要考虑它的上下文,甚至对其上下文进行”纠错”。比如上面的例子模型在编码apple是根据上下文my dog is应该把apple(部分)编码成hairy的语义而不是apple的语义。
判断第二句话在文本中是否紧跟在第一句话之后,类似于段落排序
将一篇文章的各段打乱,通过重新排序把原文还原出来,这其实需要对全文大意有充分、准确的理解。Next Sentence Prediction 任务实际上就是段落重排序的简化版:只考虑两句话,判断是否是一篇文章中的前后句。在实际预训练过程中,作者从文本语料库中随机选择 50% 正确语句对和 50% 错误语句对进行训练,与 Masked LM 任务相结合,让模型能够更准确地刻画语句乃至篇章层面的语义信息。
输入:
输出
相同点:
不同点:
Mask-LM损失函数
L 1 ( θ , θ 1 ) = − ∑ i = 1 M log p ( m = m i ∣ θ , θ 1 ) , m i ∈ [ 1 , 2 , … , ∣ V ∣ ] L_{1}\left(\theta, \theta_{1}\right)=-\sum_{i=1}^{M} \log p\left(m=m_{i} | \theta, \theta_{1}\right), m_{i} \in[1,2, \ldots,|V|] L1(θ,θ1)=−∑i=1Mlogp(m=mi∣θ,θ1),mi∈[1,2,…,∣V∣]
NSP损失函数
L 2 ( θ , θ 2 ) = − ∑ j = 1 N log p ( n = n j ∣ θ , θ 2 ) , n j ∈ [ IsNext, NotNext ] L_{2}\left(\theta, \theta_{2}\right)=-\sum_{j=1}^{N} \log p\left(n=n_{j} | \theta, \theta_{2}\right), n_{j} \in[\text { IsNext, NotNext }] L2(θ,θ2)=−∑j=1Nlogp(n=nj∣θ,θ2),nj∈[ IsNext, NotNext ]
两个任务联合学习的损失函数是:
L ( θ , θ 1 , θ 2 ) = − ∑ i = 1 M log j p ( m = m i ∣ θ , θ 1 ) − ∑ j = 1 N log p ( n = n j ∣ θ , θ 2 ) L\left(\theta, \theta_{1}, \theta_{2}\right)=-\sum_{i=1}^{M} \log jp\left(m=m_{i} | \theta, \theta_{1}\right)-\sum_{j=1}^{N} \log p\left(n=n_{j} | \theta, \theta_{2}\right) L(θ,θ1,θ2)=−∑i=1Mlogjp(m=mi∣θ,θ1)−∑j=1Nlogp(n=nj∣θ,θ2)
其中 θ \theta θ是 BERT 中 Encoder 部分的参数
θ 1 \theta_1 θ1 是 Mask-LM 任务中在 Encoder 上所接的输出层中的参数
θ 2 \theta_2 θ2则是句子预测任务中在 Encoder 接上的分类器参数。
被 mask 的词集合为 M, ∣ V ∣ |V| ∣V∣表示一个词典大小
词袋模型(Bag-of-words model)
将一段文本(比如一个句子或是一个文档)用一个“装着这些词的袋子”来表示,这种表示方式不考虑文法以及词的顺序。而在用词袋模型时,文档的向量表示直接将各词的词频向量表示加和。通过上述描述,可以得出词袋模型的两个缺点:
word2vec
是一种考虑词语位置关系的一种模型。通过大量语料的训练,将每一个词语映射成一个低维稠密向量,通过求余弦的方式,可以判断两个词语之间的关系,word2vec其底层主要采用基于CBOW和Skip-Gram算法的神经网络模型。
如果有少量的单词拼写错误,那么造成的影响应该不会太大,因为BERT预训练的语料非常丰富,而且很多语料也不够干净,其中肯定也还是会含有不少单词拼写错误这样的情况。但是如果单词拼写错误的比例比较大,比如达到了30%、50%这种比例,那么需要通过人工特征工程的方式,以中文中的同义词替换为例,将不同的错字/别字都替换成同样的词语,这样减少错别字带来的影响。
优点:
缺点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。