NLP系列文章(二)——NLP领域任务分类、NNLM语言模型

接上篇文章《NLP系列文章(一)——按照学习思路整理发展史》继续讲述NLP预训练的那些事

 

1、NLP领域任务分类
通常,NLP问题可以划分为四类任务:序列标注、分类任务、句子关系判断、生成式任务。
序列标注:典型的NLP任务,比如分词、词性标注、命名体识别、语义角色标注……,序列标注任务的特点是句子中每个单词都要求模型根据上下文给出一个分类类别。
分类任务:比如文本分类、情感计算……,分类任务的特点是不管文章长度,总体上能给出一个分类类别。
句子关系判断:比如蕴含(entailment)、QA、语义改写、自然语言推理……,句子关系判断任务的特点是给定两个句子,判断两个句子是否具备某种语义关系。
生成式任务:比如机器翻译、文本摘要、写诗造句、看图说话……,生成式任务的特点是输入文本内容,自主生成另外的一段文字。

2、语言模型

在讲Word Embedding之前,先粗略地谈一下语言模型,因为一般NLP的预训练一般是选择语言模型(language model,LM)任务实现。

什么是语言模型?
如下图所示,为了能够量化地衡量哪个句子更像人类自然语言,可以如图设计一个函数,其中核心函数P的思想是根据 某个句子中 前面一系列的单词预测后面应该接 哪个单词的概率大小(理论上,除了引入上文去预测单词,还可以引入下文联合起来预测单词出现的概率)。
句子中的每个单词都是一个 根据上文预测自己的过程,最后都有一个 各自的产生概率,将每个单词的产生概率相乘,数值越大就说明这个句子是一个人类自然语言。
【不多说,需要再去往深挖】

 


插播NNLM历史
这是一个经典的语言模型,神经网络语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出《Can Artificial Neural Networks Learn Language Models》,但是这方面的经典模型NNLM是Bengio在 2003年发表在JMLR上的论文《A Neural Probabilistic Language Model》,生于2003年,火于2013年,它出生后没有引起太大的反响,沉寂了十年后时来运转,2013年被NLP工作者从海底捞出来。为什么偏偏是2013年呢?参考一下人工智能的发展路线,发现2013年是深度学习崛起且开始渗透NLP的光辉时刻,这是NLP发育的前提,而NNLM算是成长第一步。在深度学习兴起之前,极少人用神经网络做NLP问题,哈哈哈,因为条件不允许。

如果你10年前坚持用神经网络做NLP,估计别人会认为你这人神经有问题。所谓红尘滚滚,谁也挡不住历史发展趋势的车轮,这就是个很好的例子。


例子:设计一个神经网络模型,去实现语言模型的任务。也就是说,使用很多corpus训练该神经网络,训练好后,输入一句话前面的几个单词,要求网络输出后面的单词,该如何做?

设计如下图网络结构,即“神经网络语言模型,NNLM”,用来做语言模型。
它的训练网络结构和RNN、LSTM、CNN相比很简单。学习任务是输入某个句子“Bert won't even give me fifteen dollars for the bus ride home”中单词Wt=“fifteen”前面的t-1个单词“Bert won't even give me”,要求网络正确预测单词“fifteen”,即最大化P(Wt=“fifteen”|W1,W2,…W(t-1);θ)。前面的单词Wi是用one-hot编码作为原始输入,再乘矩阵Q获得向量C(Wi),再将每个单词的C(Wi)拼接,接上隐层【这里隐层是什么?之后再补充】,然后接softmax得到预测概率得知后续接哪个单词。
而C(Wi)是什么?

C(Wi)=Wi*Q,是单词对应的word embedding值,假设word embedding的维度为d、词典大小为V,矩阵Q的结构是V×d,每一行对应一个单词的embedding。Q也是一个待学习参数,用随机值初始化矩阵Q后开始训练、微调;所以NNLM任务不仅能够根据上文预测后接单词是什么,同时得到一个副产品——矩阵Q,即word embedding。→→这就是 word embedding是如何学会?其实就是一个预测任务的中间的可学习参数。
2013年最火的基于语言模型做word embedding的工具是word2vec,之后也出现了Stanford的glove。