BERT知识点总结

本文深入探讨了在NLP中为何常使用Adam优化器及其存在的问题,特别是对于稀疏输入的情况。介绍了BERT的基本原理,包括其优于ELMo的原因,并讨论了BERT的局限性和改进方法,如使用Mask的原因及与CBOW的异同。此外,还涵盖了BERT在处理OOV问题、引入新特征等方面的策略,并对比了不同预训练模型如RoBERTa、ALBERT和ERNIE的特性。
摘要由CSDN通过智能技术生成

为什么NLP网络中经常使用Adam优化器以及存在的问题

NLP语言模型的特点

通常自然语言处理模型的输入是非常稀疏的。对于包含几十万上百万词的词表,在训练的每个 Batch 中能出现的独立词数不超过几万个。也就是说,在每一轮梯度计算过程中,只有几万个词的 embedding 的梯度是非 0 的,其它 embedding 的梯度都是 0。

Adam优化器的特点

Adam 优化器可以说是目前使用最广泛、收敛速度较快且收敛过程较稳定的优化器。Adam 的计算公式如图所示。可以看到公式中梯度的计算使用了动量原理,每一轮用于梯度下降的梯度是当前计算的真实梯度与上一轮用于梯度下降的梯度的加权和。这样动量的引入可以防止训练时产生震荡。Adam 优化器的学习率对于不同参数也是不同的,由该参数历史每一轮的真实梯度的大小决定。好处是对于 NLP 这种输入极度稀疏且输入特征极度不平衡(例如整个预料库中“我”这样的词经常出现,而“拉姆塞”这样的词只出现几次)的任务,学习率是自适应的,一些在一次训练 epoch 中只更新几次的 embedding,在训练后期还是会有较大的学习率。

问题

NLP 输入稀疏的特点与 Adam 使用动量计算梯度的特点相结合就引入了麻烦。每一轮更新参数时,只有极少数 embedding 的梯度是非 0 的,大部分 embedding 的梯度是 0 即上图公式中的 gt 是 0。但是,计算了动量之后,这些原本梯度都应该是 0 的 embedding 有了非零梯度 mt 用于梯度下降更新。想象一个极端的例子,“拉姆塞”这个词在一个 epoch 中只在第一个 batch 出现了,于是第一个 batch 计算了“拉姆塞”这个 embedding 的真实梯度 g0 用于更新参数,在以后的每个 batch 中虽然“拉姆塞”这个词没有出现过,Adam 都会计算它的动量梯度 mt,并用于更新“拉姆塞”这个 embedding,实际上方向与 g0 完全相同,只是每一轮做一次 β1 倍的衰减。这样的做法就相当于对这些出现次数较少的低频词的 embedding,每次梯度下降的等效学习率是非常大的,容易引起类似过拟合的问题。

解决办法

知道了问题的根节,解决方法就很简单了,每轮迭代只更新这个 batch 中出现过的词的 embedding 即可。TensorFlow 中可以使用 tf.contrib.opt.LazyAdamOptimizer,也可参考 https://www.zhihu.com/question/265357659/answer/580469438 的实现。

BERT的基本原理

  • BERT是Bidirectional Encoder Representation from Transformers的缩写,整体上是一个自编码语言模型,是由transformer基本结构搭建而成,Pre-train时设计了两个任务进行优化
    • Masked Language Model,随机将一句话中的某些词进行Mask,并基于上下文预测被Mask的词
    • Next Sentence,预测输入的两个句子是否连续,引入这个的目的是为了让模型更好地学到文本片段之间的关系
  • BERT相对于原来的RNN、LSTM结构可以做到并行执行,同时提取在句子中的关系特征,并且能在多个不同层次提取关系特征,进而反映句子语义,相对于word2Vec,BERT能根据句子上下文获取词义,解决多义词问题,BERT由于模型参数大,也存在容易过拟合的问题。

BERT为什么要取消NSP任务

  • NSP任务其实不仅仅包含了句间关系预测,也包含了主题预测,比如说一句话来自新闻主题,一句话来自医疗主题,模型会倾向于通过主题去预测,这样任务是比较简单的,所以一般会改成其他任务,比如预测两个句子顺序是否交换

为什么BERT比ELMo效果好?ELMo和BERT的区别是什么?

为什么BERT比ELMo效果好

  • 从网络结构和最后的实验效果看,BERT比ELMo效果好主要原因有三点:
    • LSTM抽取特征的能力远弱于Transformer
    • 双向拼接特征融合能力偏弱
    • BERT的训练数据以及模型参数远远多于ELMo

ELMo和BERT的区别是什么

  • ELMo通过语言模型得到句子中的词语的动态embedding,然后将此作为下游任务的补充输入,是一种Featrue-based方式,而BERT是基于Pre-train Finetune方式,使用Pre-train
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值