浅谈NLP中条件语言模型(Conditioned Language Models)的生成和评估 | 数盟

大数据

作者:陈俊华

前言:条件语言模型(Conditioned LM,下文均用此词条表示条件语言模型)是在基于一般的语言模型s~P(x)(P为关于词库中单词的概率分布)上,进一步产生的条件概率分布,即s~P(Y|X),其中XY的上下文。众所周知一篇优美的文章在其句子的连贯性以及句子与句子之间的相互呼应上肯定注入了作者许多的想法和情感。本文以CMU CS 11-747(Neural Networks for NLP)课程中Conditioned Generation一节为主讲章节,第一部分介绍了如何利用Conditioned LM生成句子。比较了几种不同的生成方法及其优劣;第二部分介绍了模型的优化,主要叙述了一种名为Ensembling的模型集成方法;第三部分则是对于各种模型好坏的评估方法,主要包含了BLEU,METEOR等方法;最后一部分介绍了Conditioned LM的应用场景,如由结构化数据(Structured Data)、输入序列+标签(Input+Label)、图片(Image)等生成句子。

一、公式化与建模化(Formulation and Modeling )

首先来回顾一下LM中一般计算一条句子可能性的公式:

大数据

图1-1 Calculating the Probability of a Sentence

Conditioned LM中,在Context处多了一项X,表示已经生成的上一条句子。

大数据

图1-2 Conditional Language Models

在上几周的本知乎专栏中已经讲解了RNN+LSTM模型,最初的语言模型就是利用LSTM进行句子生成,这里不再赘述。

大数据

图1-3

对于Conditioned LM,NLP中有一套非常经典的框架,即Encoder-Decoder框架:

大数据

图1-4

如果你阅读过专栏前几期的关于LSTM的介绍,那么理解Encoder-Decoder框架也就相当轻松了,简要来说,Encoder层使用第一个LSTM将输入序列转换成一个向量表示,在Decoder层利用第二个LSTM对向量进行解析并生成对应的翻译序列。这也是机器翻译领域常用的经典框架。

二、生成句子的方法(Methods of Generation)

在图1-2中,我们粗略说明了如何生成一条句子的方式,即利用已经成的单词和已经生成的上一条句子来预测下一个应该生成的单词。这部分我们讲详细说明该公式的不同用法(即我们已经通过大规模预料得到了P(Y|X)X这里可以是句子,也可以是单词序列):

1.采样法(Ancesreal Sampling):

大数据

图2-1 Ancesreal Sampling

y_{0} 这里可以由我们进行自由输入,在没有生成句子终止符(这里设定终止符为</s>)之前,在上述概率分布中随机采样一个单词作为输出。该方法优点在于不会冷落一些单词,做到大范围的覆盖;缺点就是可能会生成一些并不连贯或者与上文语义不连贯的句子。

2.贪心法(Greedy Search):

大数据

图2-2 Greedy Search

贪心法每次生成的都是是P概率最大的那个单词,保证了语句通顺,同时带来的问题就是容易产生一些相对出现频繁的单词或者简易词。

3.光束搜索(Beam Search):

大数据

图2-3 Beam Search

比起贪心法只取一个使P概率最大的单词,Beam Search每生成一个单词,都会随之产生一个代价值,这个代价值一旦超过了设定的阈值,那么就终止这条候选语句的产生。从图2-3可以看到,当最终生成终止符时,保留2个候选语句,此时再根据上下文来最终决定应该选择哪一条语句作为输出。

三、模型集成(Model Ensembling)

在前2个部分中,我们都是在已经默认P(Y|X)已经给定的情况下进行讨论的,但是,Conditioned LM最重要的部分也就是词语的概率分布表示,每一个模型都有优劣,那么能否将不同模型的优点都抽取出来进行融合集成呢?答案是肯定的。下图表示了LSTM1LSTM2的分别预测值,集成后得到最终的预测值。

大数据

图3-1 Models Ensembling

集成的方法大致分为以下几种方法:

1.线性插值法(Linear Interpolation):

大数据

图3-2 Linear Interpolation

上图可以看到,每个模型我们都赋予了一个概率值,如果不考虑模型的重要程度,我们可以认为模型的取值概率为一个均匀分布(即进行M个模型的融合,那么取到每个模型的概率即为1/M)。上式可以看成对于一个单词的生成概率,是由M个模型共同决定的,也是加权平均的一种变形。

2.对数线性插值法(Log-linear Interpolation ):

大数据

图3-3 Log-linear Interpolation

上式和图3-2中的式子非常相似,不同的是将一个单词的概率对数化了,并将m的概率值变为一个插值系数函数

\lambda_{m}

,通常也设定为均匀分布函数。

观察,3-2和3-3,你也许会考虑一个问题,什么时候

y

应该用线性?什么时候用对数线性?其实,正是因为概率对数化,导致了一个模型如果模拟效果不好,那么在对数模型中,由于对数概率加法变化为概率乘法,导致整体的计算值将不可利用,而在线性模型中,即使一个模型的效果不好,由于加法的存在并不影响其他模型对于整体集成效果的作用。因此上述2个方法也就可以类比为逻辑与和逻辑或的关系。当你需要忽略不好的模型时,可选择线性模型,当你需要所有模型的共同作用时,可选择对数线性模型。

模型集成带了的其中一个问题就是参数数量的爆炸增长,一个方法是参数均化(Parameter Averaging),对所有的参数值取平均,免去复杂的更新过程。但这种效果带来的问题就是模型的精度会有所偏差,于是便有了模型压缩的想法。

3.集成精炼(Ensemble Distillation ):

Ensemble Distillation 的主要思想就是用一个简单的网络代替一个大型的复杂网络,做到丢失最少的精度。训练目标就是2个网络的交叉熵

L{kd}

(2个网络的相似度)最小以及小型网络的负对数似然

L_{ll}

(小型网络的模拟效果)最小:

因此目标函数约定为:

L=(1-\alpha)L_{kd}+\alpha L_{ll}

,其中:

大数据

图3-4 Ensemble Distillation

s

是输入序列;

t

是输出序列;

y

是真实的输出序列;

p

是小型网络的概率分布;

q

是大型网络的概率分布。(以上资料参考CSDN博客Sequence-Level Knowledge Distillation)

4.堆叠(Stacking):

如果2种模型时非常迥异的,不同模型的参数间没有相似关系,那么进行集成的时候是否应该进行与上面不同的操作呢?Stacking讲述了在异质模型间的相互集成。

Stacking先从初始数据集训练出初级学习器,然后”生成”一个新数据集用于训练次级学习器,在这个新数据集中,初级学习期的输出被当做样例输入特征,而初始样本的标记仍被当做样例标记。Stacking的算法图如下:(Stacking算法参考自《机器学习》-周志华)

输入:训练集

D=

{

(x_{1},y_{1})...(x_{m},y_{m})

};初级学习算法

\xi_{1},\xi_{2},...\xi_{m}

;次级学习算法

\xi

过程:

四、模型评估(Evaluation)

课程中主要对现在机器翻译中2种常用的评估方法做了介绍:

1.BLEU:用于分析候选译文和参考译文中n元组共同出现的程度。BLEU则按下式计算对应语句中语料库层面上的重合精度:
大数据图4-1 重合精度
其中k标示了可能存在的n-grams序号 容易看出

CP_{n}(C,S)

是一个精确度度量,在语句较短时表现更好 。所以我们再引入一个惩罚因子BP(Brevity Penalty)

大数据

图4-2 惩罚因子

其中

l_{c}

表示候选译文

c_{i}

的长度,

l_{s}

表示参考译文

s_{ij}

的有效长度(当存在多个参考译文时,选取和

l_{c}

最接近的长度) 本质上,BLEU是一个n-grams精确度的加权几何平均,按照下式计算:

大数据

图4-3 BLEU精度

n一般去1,2,3,4。而

w_{n}

一般对所有n取常值,即1/n。

2.METEOR:METEOR

测度基于单精度的加权调和平均数和单字召回率,其目的是解决一些BLEU标准中固有的缺陷,METEOR也包括其他指标没有发现一些其他功能,如同义词匹配等。计算METEOR需要预先给定一组校准(alignment)m,而这一校准基于WordNet的同义词库,通过最小化对应语句中连续有序的块(chunks)ch来得出 则METEOR计算为对应最佳候选译文和参考译文之间的准确率和召回率的调和平均:

大数据

图4-4 METEOR精度

(有关BLEU以及METEOR的详细讲解请参考【NLP】机器翻译常用评价标准 (BLEU & METEOR),笔者上文叙述也均参考此博客)。

五、模型应用

Conditioned LM可应用与结构化数据输出(From Structured Data);输入标记转化(From Input + Labels);图片叙述(From Images)等。常见的还有语音识别(Speech Recognition),机器翻译(Machine Translation),文档总结(Summarization)

 End.
注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。
期待你一针见血的评论,Come on!

不用想啦,马上 "登录"  发表自已的想法.