自然语言处理中的语言模型预训练方法

640


最近,在自然语言处理(NLP)领域中,使用语言模型预训练方法在多项 NLP 任务上都获得了不错的提升,广泛受到了各界的关注。就此,我将最近看的一些相关论文进行总结,选取了几个代表性模型(包括 ELMo [1],OpenAI GPT [2] 和 BERT [3])和大家一起学习分享。


作者丨罗凌

学校丨大连理工大学信息检索研究室

研究方向丨深度学习,文本分类,实体识别


引言


在介绍论文之前,我将先简单介绍一些相关背景知识。首先是语言模型(Language Model),语言模型简单来说就是一串词序列的概率分布。具体来说,语言模型的作用是为一个长度为 m 的文本确定一个概率分布 P,表示这段文本存在的可能性。


在实践中,如果文本的长度较长,P(wi | w1, w2, . . . , wi−1) 的估算会非常困难。因此,研究者们提出使用一个简化模型:n 元模型(n-gram model)。在 n 元模型中估算条件概率时,只需要对当前词的前 n 个词进行计算。在 n 元模型中,传统的方法一般采用频率计数的比例来估算 n 元条件概率。当 n 较大时,机会存在数据稀疏问题,导致估算结果不准确。因此,一般在百万词级别的语料中,一般也就用到三元模型。


640


为了缓解 n 元模型估算概率时遇到的数据稀疏问题,研究者们提出了神经网络语言模型。代表性工作是 Bengio 等人在 2003 年提出的神经网络语言模型,该语言模型使用了一个三层前馈神经网络来进行建模。其中有趣的发现了第一层参数,用做词表示不仅低维紧密,而且能够蕴涵语义,也就为现在大家都用的词向量(例如 word2vec)打下了基础。


其实,语言模型就是根据上下文去预测下一个词是什么,这不需要人工标注语料,所以语言模型能够从无限制的大规模单语语料中,学习到丰富的语义知识。


640


接下来再简单介绍一下预训练的思想。我们知道目前神经网络在进行训练的时候基本都是基于后向传播(BP)算法,通过对网络模型参数进行随机初始化,然后通过 BP 算法利用例如 SGD 这样的优化算法去优化模型参数。


那么预训练的思想就是,该模型的参数不再是随机初始化,而是先有一个任务进行训练得到一套模型参数,然后用这套参数对模型进行初始化,再进行训练。


其实早期的使用自编码器栈式搭建深度神经网络就是这个思想。还有词向量也可以看成是第一层 word embedding 进行了预训练,此外在基于神经网络的迁移学习中也大量用到了这个思想。


640


接下来,我们就具体看一下这几篇用语言模型进行预训练的工作。


ELMo


引言


Deep Contextualized Word Representations [1] 这篇论文来自华盛顿大学的工作,最后是发表在今年的 NAACL 会议上,并获得了最佳论文。


其实这个工作的前身来自同一团队在 ACL 2017 发表的 Semi-supervised sequence tagging with bidirectional language models [4],只是在这篇论文里,他们把模型更加通用化了。


首先我们来看看他们工作的动机,他们认为一个预训练的词表示应该能够包含丰富的句法和语义信息,并且能够对多义词进行建模。而传统的词向量(例如 word2vec)是上下文无关的。例如下面"apple"的例子,这两个"apple"根据上下文意思是不同的,但是在 word2vec 中,只有 apple 一个词向量,无法对一词多义进行建模。


640


所以他们利用语言模型来获得一个上下文相关的预训练表示,称为 ELMo,并在 6 个 NLP 任务上获得了提升。


640


方法


在 EMLo 中,他们使用的是一个双向的 LSTM 语言模型,由一个前向和一个后向语言模型构成,目标函数就是取这两个方向语言模型的最大似然。


640


在预训练好这个语言模型之后,ELMo 就是根据下面的公式来用作词表示,其实就是把这个双向语言模型的每一中间层进行一个求和。最简单的也可以使用最高层的表示来作为 ELMo。


640


然后在进行有监督的 NLP 任务时,可以将 ELMo 直接当做特征拼接到具体任务模型的词向量输入或者是模型的最高层表示上。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值