神经概率语言模型

A Neural Probabilistic Language Model

神经概率语言模型

原论文地址:

http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf

作者:

Yoshua Bengio
Rejean Ducharme
Pascal Vincent
Chiristian Jauvin


摘要

统计语言模型的目标是学习一种语言中词序列的联合概率函数,但是由于维数灾难的问题让这变得困难:在这个模型上,一个词序列会被测试为与之前训练中出现的所有词序列都不同。一个基于n元语法模型的传统但是很成功的方法是:通过和训练集中重叠的短的词序列的联系可以得到泛化。我们建议通过学习词的词向量,让每个句子都把语义近似句子的指数告诉模型,从而解决维数灾难的问题。这个模型同时也会学习每个词的词向量和这个词序列的概率函数,并用这种方式表达。一个此前从没见过的词序列,如果它和我们见过的句子有着相似的单词(在意思上相似),则它会有一个较高的概率,因此这样就会获得泛化。在合理的时间内训练一个如此大的模型(用数百万个的参数)是极具挑战性的。我们用神经网络来计算概率函数的报告显示,在两个文本语料库上提出的方法,显著的改善了最先进的n元语法模型,并且这个方法允许使用更长的上下文。
关键词:统计语言模型,人工神经网络,词向量,维数灾难


1.介绍

一个让语言模型和学习问题变得困难的基本问题就是维数灾难,尤其是当我们想为许多离散随机变量的联合分布建模的时候(比如句子中的词,或者数据挖掘任务中的离散属性)。举个栗子,如果一个人想对自然语言中连续10个词的联合分布进行建模,词汇量 V 100,000 ,那么就有 100000101=10501 个自由参数。当对连续变量进行建模时,我们会更容易获得泛化(例如,像多层神经网络或高斯混合模型的平滑函数),这是因为要学习的函数在预期上具有一个局部平滑的性质。对于离散空间,泛化结构不是那么明显:这些离散变量的任何变化都可能对函数值产生巨大影响,并且当每个离散变量可以赋予的值的数量变大的时候,大多数观察对象的汉明距离几乎达到了最远。

从非参数密度估计的观点来看,可视化不同学习算法如何泛化的有用方法是考虑最初集中在训练点(例如训练句)上的概率质量如何分布在更大的体积中, 通常是某些形式的相邻训练点。在高维度上,重要的是概率质量分布,而不是在每个训练点周围的各个方向上的均匀分布。我们将在本文中展示,这里提出的方法概括的方式与以前的最先进的统计语言建模方法泛化的方式截然不同。
一个统计语言模型可以用给定先前所有词的下一个词的条件概率来表示

其中 wt 是第t个词,子序列是 wji=(wi,wi+1,,wj1,wj). 这种统计语言模型在涉及自然语言的许多技术应用种是有用的,如语音识别,语言翻译和信息检索。统计语言模型的改进会对这些应用产生重大影响。

当建立自然语言的统计模型时,可以降低这种建模问题的难度的方法是,利用词序列中的单词顺序和在时间上更接近的词关系更密切。因此,n元语法模型利用大量文本中前n-1个词,对下一个词构建了条件概率表:

这里写图片描述

我们只考虑训练语料库中实际出现的连续词的组合,或经常出现的词组合。当由n个词组成的新组合没有在训练语料库中出现的时候会发生什么?我们不想让这种情况的概率为0,因为它有可能发生,并且他们会在更大的上下文中频繁的出现。一个简答的答案是看一下使用较小的上下文预测的概率,如后退三元模型(Katz,1987)或平滑(或插值)三元模型(Jelinek和Mercer,1980)。所以,在这样的模型中,是怎么从训练语料库中出现的词序列到新的词序列的泛化的呢?了解如何发生这种情况的方法是考虑与这些插入或回溯的n元语法模型相对应的生成模型。本质上,一个新的词序列是由,在训练数据中经常出现的长度为1,2 …或多达n个词的非常短且重叠的片段,粘在一起生成的。 用于获得下一个片段的概率的规则隐含在回溯或插入n元语法算法的细节中。通常研究人员使用n=3,即三元组,并且获得了最先进的结果,但参见Goodman(2001)结合许多技巧可以产生实质性的改进。显然,序列中在词之前有更多的信息预测,而不仅仅是前几个单词的身份。在这种方法中至少有两个特征要求得到改进,我们将在本文中重点介绍。首先,它没有考虑超过1或2个词更远的上下文,其次没有考虑到词之间的相似性。例如,在训练语料库中看到句子”The cat is waljing in the bedroom”,我们就会觉得“A dog was running in a room”是可能的,因为“dog”和”cat”(还有”the”和“a”,“room”和“bedroom”)具有相似的语义和语法作用。

已经提出了许多解决这两个问题的方法,我们将在第1.2节中简要介绍这里提出的方法与以前的方法之间的关系。我们将首先讨论这个方法的基本思想。第2部分将更为正式的介绍,使用依赖于共享参数的多层神经网络的方法的实现。本文的另一个贡献涉及到用非常大的数据集(数百万或数千万的例子)取训练这样一个非常大的神经网络(数百万个参数)的挑战。最后,本文的一个重要贡献就是表明,这种大规模模型的训练是代价大的,但是是可行的,可以大规模的扩展到较大的上下文,并得出良好的比较结果(第4节)。
本文中的许多操作都是矩阵符号,小写v表示列向量,并且v’为其转置, Aj 是矩阵A的第j行, x.y=xy .

1.1用分布式表示法来解决维数灾难:

简而言之,这个方法的想法可概括如下:

(1)将词表中每个词和一个分布式的词特征向量联系起来(Rm中的一个实数值的向量)。

(2)根据序列中这些单词的特征向量来表达单词序列的联合概率函数,

(3)同时学习词特征向量和该概率函数的参数。

特征向量表示单词的不同方面:每个单词与向量空间中的一个点相关联。特征的数量(例如,实验中的m = 30,60或100)比词汇小很多(例如17,000)。概率函数表示为给定前一个词的下一个词的条件概率的乘积(例如,在实验中使用多层神经网络来预测给出先前的单词的情况下的下一个词)。 该函数具有可以迭代调整的参数,以便获得训练数据的最大对数似然估计或正则化标准,例如, 通过添加权重来较少误差。与每个词相关联的特征向量可以学到,但是可以用我们已经发现的语义特征的知识来初始化它们。

为什么这个方法可以奏效?在前面的例子中,如果我们知道dog和cat在句子中扮演类似的角色(在语义上和语法上),而对于(the,a),(bedroom,romm),(is,was),(running,walking)来说也是如此,我们可以自然地从
The cat is walking in the bedroom
推广到(即传输概率质量):
A dog was running in a room
同样还有
The cat is running in a room
A dog is walking in a bedroom
The dog was walking in the room

和更多可能情况。在所提出的模型中,由于相似的词具有相似的特征向量,并且概率函数是这些特征值的平滑函数,所以特征值中小的差别只会引起概率上小的改变。 因此,训练数据中仅存在上述句子之一将不仅会增加该句子的概率,也会增加与其相似的句子(由特征向量序列表示)的概率。

1.2与先前工作的关系

已经发现使用神经网络来模拟高维离散分布的想法有助于学习 Z1...Zn 的联合概率,这是一组随机变量,其中每一个都可能具有不同的性质(Bengio和Bengio,2000a,b)。在该模型中,联合概率被分解为条件概率的乘积

这里写图片描述

其中 g() 是由具有特殊的从左到右结构的神经网络表示的函数,以任意顺序给定前面的 Z ,用i个输出 gi() 计算参数来表示 Zi 的分布概率。四个UCI数据集的实验表明,这种方法的效果相对较好(Bengio和Bengio,2000a,b)。在这里,我们必须处理可变长度的数据,如句子,所以上述方法必须修改。另一个重要区别是这里,所有的 Zi (第i个位置的单词)都是指相同类型的对象(一个单词)。 因此,此处提出的模型引入了跨越时间参数的共享——跨越时间使用相同的gi——也就是跨不同位置的输入。同样的想法,伴随着在连接机制早期倡导的用于学习符号数据分布式表示的(旧)思想,也获得了成功的大规模应用(Hinton,1986,Elman,1990)。最近,Hinton的做法得到了改进,成功地论证了学习几个特征关系(Paccanaro和Hinton,2000)。使用神经网络进行语言建模的想法也不是最近才提出的(例如,Miikkulainen和Dyer,1991)。相比之下,这里我们大量推广这个想法,并且集中精力学习一个统计模型来分析单词序列,而不是学习单词在句子中的作用。这里提出的方法也与先前关于基于字符的文本压缩并用神经网络预测下一个字符的概率的方法相关(Schmidhuber,1996)。 Xu和Rudnicky(2000)也独立地提出了将神经网络用于语言建模的想法,尽管实验是使用的是没有隐藏神经元的网络和单个输入的单词,这从根本上限制了模型捕获单个词和两个词的统计。

发现词之间的一些相似之处,从训练序列到新序列获得泛化的想法并不新鲜。 例如,它在基于学习词汇聚类的方法中得到了应用(Brown et al., 1992, Pereira et al., 1993, Niesler et al., 1998, Baker and McCallum, 1998):每个单词与离散类确定或者有一定概率关联,同一类中的单词在某些方面是相似的。在这里提出的模型中,我们不使用离散的随机或确定性变量(对应于该组词的软或硬分区)来表示词的相似度,而是对于每个词使用连续的实数向量,也就是词向量,来表示词之间的相似度。本文中将会比较实验结果,包括基于类的n元语法模型(Brown et al., 1992, Ney and Kneser, 1993, Niesler et al., 1998).

使用向量空间表示的想法已经在信息检索领域得到了很好的应用,(for example see work by Schutze, 1993),其中基于在相同的文件同时发生的概率来学习词的特征向量(Latent Semantic Indexing, see Deerwester et al., 1990)。一个重要的区别是,在这里,我们寻找一个有助于表达自然语言文本中词序列的概率分布的表示。实验表明,同时学习词的表示(词特征)和模型是非常有用的。我们尝试(没有成功)使用词w周围的词出现的频率的第一个主成分作为每个词w的词特征。这与使用LSI进行信息检索的文档相似。然而,Bellegarda(1997)在基于n-gram的统计语言模型的背景下,利用LSI来动态地识别话语主题,成功地利用了使用词的连续表示的想法。
在神经网络的上下文中,用于符号向量空间表示的思想先前已经用于二级结构预测(e.g. Riis and Krogh, 1996) 和文本到语音的映射(Jensen and Riis, 2000)的参数共享层。


2.2. 神经模型

训练集是一个词序列 w1...wt ,并且 wV ,V是一个大的且有限的词汇集合。我们的目的是训练出一个好的模型这里写图片描述, 在这种情况下给出很高的样本外的可能性。下面我们将要讲述, 这里写图片描述的几何平均值,也叫做困惑度,也是平均负对数似然的指数。这个模型唯一的约束就是无论什么情况下都要满足 这里写图片描述并且 f>0 。通过这些条件概率的乘积,得到单词序列的联合概率的模型。
我们把函数这里写图片描述分解成两部分:
(1) 从V的任何元素i到真实向量 C(i)Rm 的映射C。 它表示与词汇表中的每个单词相关联的分布特征向量。 实际上,C由自由参数的 a|V|×m 矩阵的自由参数表示。
(2)用C表示的词的概率函数:函数g将上下文中的单词 (C(wtn+1,...,C(wt1)) 的特征向量的输入序列映射到下一个单词 wt 条件概率分布。 g的输出是其第i个元素估计概率 Pwt=i|wt11 的向量,如图1所示。

神经概率语言模型_第1张图片
图1:神经结构:这里写图片描述其中g是神经网络,C(i)是第i个特征向量。

这里写图片描述
函数f是这两个映射(C和g)的组合,其中C被上下文中的所有单词共享。 这两个部分中的每一个都与一些参数相关联。
映射C的参数就是由 a|V|×m 矩阵C表示的特征向量本身,其行i是词i的特征向量 C(i) 。 函数g可以通过前馈或循环神经网络或另一参数化函数以及参数ω来实现。 整个参数集是 θ=(C,ω)
训练是通过寻找使训练语料对数似然值最大的θ来实现的:
这里写图片描述
其中R(θ) 是正则化项。例如,在我们的实验中,R是仅适用于神经网络和C矩阵的权重而不是偏差的权重衰减惩罚。

在上述模型中,自由参数的数量只能与V线性相关,即词汇数量。它也只能按n阶线性地缩放:如果引入更多的共享结构,比例因子可以减少到亚线性,例如使用延时神经网络或循环神经网络(或两者的组合)。

在下面的大多数实验中,神经网络具有单词特征映射外的一个隐藏层,并且可选地,从单词特征到输出的直接连接。 因此,真正有两个隐藏层:共享单词特征层C,其没有非线性(不会增加任何有用的东西),以及普通双曲正切隐含层。 更准确地说,神经网络使用softmax输出层来计算以下功能,这保证了概率和为1:
这里写图片描述

yi 是每个输出字i的非归一化对数概率,包含参数b,W,U,d和H,其计算如下:
这里写图片描述

其中双曲正切tanh被逐个元素应用,W可为零(不直接连接),x是词特征层激活向量,其是来自矩阵C的输入词特征的乘积:
这里写图片描述

令h为隐藏单元的数量,m为与每个单词相关联的特征数。 当不需要从单词特征到输出的直接连接时,矩阵W被设置为0。模型的自由参数是偏置项b(具有|V|个元素),隐藏层偏差d(具有h个元素),隐藏层到输出层的权重U( a|V|×h 矩阵),词特征到输出层的权重W( a|V|×n1m 矩阵),隐藏层权重H( ah×n1m 矩阵),单词特征C( a|V|×m 矩阵)
这里写图片描述

自由参数的数量为 |V|(1+nm+h)+h(1+(n1)m) 。主要因素是 |V|(nm+h) 。 注意在理论上,如果在权重W和H上存在权重衰减,而C没有,那么W和H可以收敛到零,而C会发生爆炸。实际上,随机梯度上升时,我们没有观察到这种行为。
在神经网络上随机梯度上升包括在呈现训练语料库的第t个词之后执行以下迭代更新:
这里写图片描述

其中ε是“学习效率”。注意,在每个示例之后,大部分参数不需要更新或访问:所有单词j的单词特征C(j) 不出现在输入窗口中
模型混合。在我们的实验中(参见第4节),我们通过将神经网络的概率预测与插值三元模型的概率预测相结合,发现性能得到了改善,其简单固定权重为0.5,学习权重(测试集上的最大似然)或一组以上下文的频率为条件的权重(使用在插值三元组中组合三元,二元和单值的相同过程,这是一个混合)。


3.3. 并行实现方法

尽管参数的数量很好地减少了,即与输入窗口的大小呈线性关系并且与词汇表的大小呈线性关系,但获得输出概率所需的计算量远大于从n-gram模型所需的计算量。 主要原因是使用n元语法模型,获得特定的 Pwt|wt1,...,wtn+1 不需要计算词汇表中所有单词的概率,因为容易归一化(训练模型时执行)由相对频率的线性组合所拥有。神经实现的主要计算瓶颈是计算输出层的激活。

在并行计算机上运行模型(训练和测试)都是减少计算时间的一种方式。 我们探讨了两种平台上的并行化:共享内存处理器机器和快速网络的Linux集群。

3.1数据并行处理

在共享存储器处理器的情况下,由于处理器之间通过共享存储器的非常低的通信开销,容易实现并行化。在这种情况下,我们选择了一个数据并行实现,其中每个处理器在不同的数据子集上工作。每个处理器为其示例计算梯度,并且对模型的参数执行随机梯度更新,这些更新简单地存储在共享存储器区域中。我们的第一个实现非常慢,依赖于同步命令,以确保每个处理器不会与上述参数子集中的另一个同时写入。每个处理器的大部分周期花费在等待另一个处理器释放对参数的写入访问的锁定。

相反,我们选择了一个异步实现,每个处理器可以随时在共享内存区域中进行写入。 有时候,其中一个处理器的参数向量的更新的一部分丢失,被另一个处理器的更新所覆盖,这在参数更新中引入了一些噪点。 然而,这种噪音似乎很小,并没有显着地减缓训练。

不幸的是,大型共享内存并行计算机非常昂贵,处理器速度往往落后于可以集群连接的主流CPU。 因此,我们能够在快速网络集群上获得更快的培训。

3.2参数并行处理

如果并行计算机是CPU的网络,我们通常无法在处理器之间频繁地交换所有参数,因为这代表了几十兆字节(在我们最大的网络的情况下几乎是100兆字节),这将占用太多时间通过本地网络。相反,我们选择了跨参数并行化,特别是输出单元的参数,因为这是我们的架构中绝大多数的计算所在。每个CPU负责计算输出的子集的非归一化概率,并对相应的输出单元参数(进入该单元的权重)执行更新。这种策略使我们能够以可忽略的通信开销执行并行化随机梯度上升。 CPU本质上需要传达两个信息:(1)输出softmax的归一化因子,以及(2)隐藏层(表示为a)和单词特征层(表示为x)的梯度。所有CPU都复制计算输出单元激活之前的计算,即字特征的选择和隐藏层激活a的计算,以及相应的反向传播和更新步骤。但是,这些计算是我们网络总计算的一个可忽略的部分。

例如,考虑在AP(美联社)新闻数据实验中使用的以下架构:词汇大小为 |V|=17,964 ,隐藏单元数为 h=60 ,模型的顺序为 n=6 ,单词特征的数量为 m=100 。处理单个训练示例的数字操作的总数约为 |V|1+nm+h+h1+nm+nm (分别对应于输出层,隐藏层和单词特征)。在该示例中,计算输出单元的加权和所需的总体计算的分数因此约为这里写图片描述 =99.7 。该计算是近似的,因为与不同操作相关联的实际CPU时间不同,但是它表明并行化输出单元计算通常是好的。所有CPU将重复计算的很小一部分的事实不会损害在此寻求的并行化水平(即几十个处理器)的总计算时间。如果隐藏单位数量庞大,并行计算也将变得更合算,但是我们在实验中并没有对这种方法进行调查。

该策略的实施是通过使用MPI(消息传递接口)库(通过Mylinet网络(低延迟千兆局域网))连接的1.2 GHz时钟速度Athlon处理器(32x2 CPU)的集群完成的 Dongarra等,1995)用于并行化例程。 对于M处理器的集群中的CPU i并行执行的单个示例 wtn+1,...,wt ,下面绘制并行化算法。CPU i(i从0到M-1的范围)负责从数字 starti=i×[|V|/M] 开始的输出单元块,该块的长度为 min[|V|/M],|V|starti

处理器的计算 i,示例t
1.前向传导
(a)对特征层进行前向计算:
这里写图片描述

(b)对隐层执行前向计算:
这里写图片描述

(c)对第i个块中的输出单元进行前向运算:
神经概率语言模型_第2张图片

(d)计算并共享处理器之间的 S=isi 。 这可以通过MPI Allreduce操作轻松实现,可以有效地计算和共享这个总和。

(e)规范概率:
这里写图片描述

(f)更新对数似然。 如果 wt 落在CPU i>0 的块中,则CPU i将 pwt 发送到CPU 0. CPU 0计算 L=logpwt 并跟踪总对数似然。

2.反向传播/更新阶段,学习率ε。
(a)对第i个块中的输出单元执行反向梯度计算:
这里写图片描述
神经概率语言模型_第3张图片

(b)跨处理器求和并分享 Lx La 。 这可以通过MPI Allreduce操作轻松实现。

(c)反向传播并更新隐藏层权重:
这里写图片描述

(d)更新输入单词的单词特征向量:
这里写图片描述

重量衰减正则化在上述实施中未示出,但是可以容易地加上(通过从每个参数在每个更新时减去参数的乘积值乘以学习速率乘以重量衰减因子)。 注意,在我们的实验中,参数是被直接更新的而不是通过参数梯度向量来完成,这是为了提高速度,计算速度的限制因素是访问存储器。

在前向阶段的指数计算中可能存在数值问题,其中所有的p j都可以是数字上的零,或者其中一个可能太大以计算指数(上面的步骤1(c)ii)。为了避免这个问题,通常的解决方案是在采用softmax中的指数之前减去 yj 的最大值。因此,在计算 pj 中的指数之前,我们已经添加了一个额外的Allreduce操作来在M个处理器之间分配最大的 yj 。 让qi是块i中 yj 的最大值。然后在M个处理器之间共同计算和共享总体最大值 Q=maxiqi 。指数然后计算如下:这里写图片描述(而不是步骤1(c)ii)以保证 pj 中至少一个不为零,并且指数的参数的最大值为1。

通过在单个处理器上比较并行版本与时钟时间的时钟时间,我们发现通信开销仅为总时间的1/15(对于一个训练时期):因此我们在快速网络上使用此算法,通过并行化获得了几乎完美的加速。
在网络较慢的群集中,通过每K个例子(一个小批量)而不是每个例子执行通信,仍然可以获得高效的并行化。 这需要在每个处理器中存储神经网络每K个的活动和梯度。在K示例的正向传播之后,必须在处理器之间共享概率和。 然后启动K个后向传播阶段,以获得K个部分梯度向量 La Lx 。在处理器中交换这些梯度向量后,每个处理器可以完成后向阶段和更新参数。 由于节省了网络通信延迟(传输的数据量相同),这种方法主要节省时间。 如果K太大,则收敛时间可能会丢失,因为批量梯度下降通常比随机梯度下降慢得多(LeCun等,1998)。


4.实验结果

在Brown语料库中进行比较实验,该语料库是来自各种英文文本和书籍的1,181,041词的流。前80万字用于培训,以下20万个用于验证(型号选择,重量衰减,早期停机),剩余的181,041个用于测试。不同词的数量是47,578(包括标点符号,区分大小写,包括用于分隔文本和段落的语法标记)。频率≤3的罕见词被合并成单个符号,将词汇大小减小到|V| = 16,383。
1995年和1996年,对美国新闻社(AP)新闻的文本也进行了一次实验。训练集是大约1400万(13,994,528)字的流,验证集是约100万(963,138)字的流, 测试集也是一百万(963,071)字的流。原始数据具有148,721个不同的单词(包括标点符号),通过保留最常用的单词(并保持标点符号),将大写字母映射为小写,将数字形式映射到特殊符号,将稀有字映射到特殊符号,并将专有名词映射到另一个特殊符号,缩小为 |V|=17964
对于训练神经网络,将初始学习率设置为 εo=103 (经过少量数据集试验后),并按照以下方案逐渐减少: 这里写图片描述,其中t表示参数更新完成的数量,r是启发式地选择为 r=108 的减少因子。

4.1N-gram模型

神经网络比较的第一个基准是插值或平滑三角模型(Jelinek和Mercer,1980)。令这里写图片描述表示输入上下文 (wt1,wt2)4 的离散频率。然后条件概率估计具有条件混合的形式:
这里写图片描述
条件权重这里写图片描述。基本预测因子如下: p0=1/|V| p1(i) 是单元组(训练集中词i的相对频率), p2(i|j) 是二元组(当前一个单词为j时的单词i的相对频率), p3(i|j,k) 是三元组(当前2个单词为j和k时单词i的相对频率)。当 (wt1wt2) 的频率大时, p3 是最可靠的,而当它较低时, p2 p1 或甚至 p0 的低阶统计更可靠。对于 qt (它们是上下文频率仓)的每个离散值,存在不同的混合权重集合α。可以用大约5次迭代的EM算法轻松地估计,不用于估计单元组,二元组和三元组相对频率的一组数据(验证集)。将使用插值的n元语法与MLP混合起来,因为它们以非常不同的方式产生“错误”。

我们还与其他最先进的n元语法模型进行了比较:使用修改的Kneser-Ney算法的后退n元语法模型(Kneser和Ney,1995,Chen和Goodman,1999),以及基于类的n元语法模型(Brown等,1992,Ney和Kneser,1993,Niesler等,1998)。验证集用于为基于类的模型选择n元语法的顺序和单词类的数量。我们在Stolcke(2002)和www.speech.sri.com/projects/srilm/描述的SRI语言建模工具包中使用了这些算法的实现。 它们被用于计算下面报告的回退模型困惑度,指出我们没有在记录对数似然性的会计处理方面给出句末代码的特殊状态,就像我们的神经网络困惑度一样。 所有符号(单词和标点符号)在平均对数似然中被视为相同(因此获得困惑度)。

4.2结果

以下是不同模型P的测试设置困惑度(这里写图片描述的几何平均值)的度量。对于Brown语料库,在大约10到20个时期之后,获得随机梯度上升程序的表观收敛。在AP News语料库中,我们无法看到过拟合的迹象(在验证集上),可能是因为我们只运行了5个时期(使用40个CPU超过3周)。使用了验证集的早期停止,但仅在我们的Brown实验中才有必要。在Brown实验中使用10-4的权重衰减值,在AP News实验中使用10-5的权重衰减(通过几个试验选择,基于验证集的困惑度)。表1总结了在棕色语料库中获得的结果。表的所有退避模型都是经过修改的Kneser-Ney n-gram,其功能明显优于标准后退模式。当表中的退避模型指定m时,使用基于类的n-gram(m是单词类的数量)。单词特征的随机初始化(类似于神经网络权重的初始化)已完成,但是我们怀疑通过基于知识的初始化可以获得更好的结果。
神经概率语言模型_第4张图片
表1:Brown语料库的比较结果。删除的插值三元组具有比具有最低验证困惑度的神经网络高出33%的测试困惑度。在最佳n-gram(基于500个类别的基于类的模型)的情况下,差异为24%。
n:模型的顺序
c:基于类的n-gram中的单词类数。
h:隐藏单位数。
m:MLP的单词特征数,基于类的n-gram的类数。
direct:是否有从单词特征到输出的直接连接。
mix:神经网络的输出概率是否与三元组的输出混合(每个的权重为0.5)。
最后三列给培训,验证和测试集带来困惑。

主要结果是,使用神经网络时,与最好的n-gram相比,可以获得显着更好的结果,在Brown测试困惑度差异约为24%,AP News约为8%,MLP与在验证集上工作最好的是n-gram。该表还表明,神经网络能够利用更多的上下文(在Brown上,从2个词的上下文到4个词,使神经网络得到了改进,而不是n-gram)。它还显示隐藏单元是有用的(MLP3对MLP1和MLP4与MLP2),并且将神经网络的输出概率与内插三元组混合总是有助于减少困惑度。简单平均有助于表明神经网络和三角形在不同的地方产生错误(即给予观察词的概率较低)。结果不能说是否从输入到输出的直接连接是否有用,但是建议至少在较小的语料库中,更好的泛化可以在没有直接输入到输出连接的情况下获得,而代价较长的训练:没有直接连接,网络花费了两倍的时间来收敛(20个时间段,而不是10个),尽管困惑度稍低。一个合理的解释是,直接的输入到输出连接提供了更多的容量和更快的学习从词特征到对数概率的映射的“线性”部分。另一方面,没有这些联系,隐藏的单位形成了一个严格的瓶颈,这可能会推动更好的泛化。

表2给出了较大的语料库(AP News)的相似结果,尽管困惑度差异较小(8%)。只有5个时期(大概三个星期,40个CPU)。在这种情况下,基于类的模型似乎没有帮助n-gram模型,但是高阶修正的Kneser-Ney回归模型在n-gram模型中给出了最好的结果。

神经概率语言模型_第5张图片
表2:AP新闻语料库的比较结果。有关列标签,请参见上表。


5.扩展和未来工作

在本节中,我们将描述上述模型的扩展,以及将来工作的方向。

5.1能源最小化网络

上述神经网络的一个变体可以解释为Hinton最近关于专家产品的工作之后的能量最小化模型(Hinton,2000)。在前面部分描述的神经网络中,分布式字特征仅用于“输入”词而不用于“输出”词(下一个词)。此外,在输出层中扩展了大量参数(大多数):输出单词之间的语义或句法相似性不被利用。 在这里描述的变型中,输出字也由其特征向量表示。 网络接收输入字的子序列(映射到其特征向量),并且当字形成可能的子序列时输出低的能量函数E,当不太可能时,该值为高。 例如,网络输出一个“能量”函数
这里写图片描述
其中b是偏差向量(对应于无条件概率),d是隐藏单位偏差的向量,v是输出权重向量,H是隐藏层权重矩阵,与以前的模型不同,输入和输出对x有贡献:
这里写图片描述

能量函数 E(wtn+1...wt) 可以解释为 (wtn+1...wt) 的联合出现的非归一化对数概率。为了获得条件概率 这里写图片描述,对于可能的 wt 值进行标准化是足够(但是代价高的),如下所示:
这里写图片描述
注意,计算的总量与先前提出的模型相当,如果参数v由目标单词( wt )索引,则也可以匹配参数的数量。 注意,在上述softmax归一化之后,只有 bwt 保留(对于 i>0 wti 的任何线性函数都通过softmax归一化来抵消)。 如前所述,可以使用类似的计算,通过这里写图片描述上的随机梯度上升来调整模型的参数。

在专家产品框架中,隐藏单元可以被看作是专家:子序列 (wtn+1...wt) 的联合概率与项的和的指数成正比与每个隐藏单元j, vjtanh(dj+Hjx) 相关联。注意,因为我们已经选择按照每个元素的条件概率来分解整个序列的概率,所以梯度的计算是容易处理的。事实并非如此,HMM的产品(Brown和Hinton,2000),其中产品超过了查看整个序列的专家,并且可以用近似梯度算法,如对比度发散算法(Brown和Hinton,2000)。还要注意,这种架构和产品专家制定可以被看作是非常成功的最大熵模型的扩展(Berger等,1996),但是基础函数(或“特征”,这里是隐藏单元激活)是通过特征线性组合参数的同时受到惩罚最大似然的学习,而不是具有贪心特征子集选择方法的在外循环中学习。

我们已经实施和实验了上述架构,并基于重要性抽样开发了神经网络训练的加速技术,并提供了100倍的加速(Bengio和Senécal,2003)。

超出词汇的单词。这个架构比以前的一个优点是,它可以轻松地处理超出词汇的单词(甚至给他们一个概率!)。主要思想是首先通过采用可能在相同上下文中发生的其他单词的特征向量与其条件概率成比例的加权凸组合来首先猜测这样一个单词的初始特征向量。假设网络在上下文这里写图片描述中对词 iV 分配概率这里写图片描述,并且在本文中,我们观察到新的单词j∉V。我们初始化j的特征向量C(j),如下:这里写图片描述。然后,我们可以将j并入V中,并重新计算这个略大的集合的概率(只需要对所有单词进行重新归一化,除了需要通过神经网络的单词i)。当我们尝试预测单词i之后的单词的概率时,可以在输入上下文部分中使用该特征向量C(i)。

5.2其他未来的工作

这项工作的后续行动还有很多挑战。 在短期内,需要设计和评估加快培训和认可的方法。 从长远来看,除了在这里利用的两个主要方式之外,还应该引入更多的推广方法。 以下是我们打算探讨的一些想法:

1.在子网络中分解网络,例如使用这些单词的聚类。培训许多较小的网络应该更容易和更快。

2.用每个节点应用神经网络的树结构表示条件概率,每个节点表示给定上下文的单词类的概率,而叶表示给定上下文的单词的概率。这种类型的表示有可能通过因子 |V|/log|V| 减少计算时间(Bengio,2002年)。

3.仅从输出单词的子集传播渐变。这可能是有条件地最可能的词(基于更快的模型,如三元组,参见Schwenk和Gauvain,2002),或者它可以是三元组具有的单词的一个子集被发现表现不佳。如果语言模型耦合到语音识别器,则仅需要计算声学上含糊的单词的分数(非规范概率)。参见Bengio and Senécal(2003),使用重要抽样来选择这个词的新的加速训练方法。

4.介绍先验知识。可以引入几种形式的这种知识,例如:语义信息(例如,从WordNet,参见Fellbaum,1998),低级语法信息(例如,使用部分语音)和高级语法信息,例如 ,将模型耦合到随机语法,如Bengio(2002)所提。 可以通过在神经网络中引入更多的结构和参数共享来捕获长期上下文的影响,例如, 使用时间延迟或循环神经网络。 在这样的多层网络中,当网络输入窗口被移动时,对于小组连续字执行的计算不需要重做。 类似地,人们可以使用经常网络来捕获关于文本主题的甚至更长期的信息。

5.解释(并可能使用)由神经网络学习的单词特征表示。一个简单的第一步将从m = 2特征开始,这可以更容易地显示。我们认为更有意义的表述将需要大量的训练语料库,特别是对于较大的m值。

6.多义词可能不是由这里给出的模型很好地服务,其将每个单词分配给连续语义空间中的单个点。我们正在调查这个模型的扩展,其中每个单词与该空间中的多个点相关联,每个单词与该单词的不同感觉相关联。


6.结论

两个语料库的实验,一个超过一百万个例子,一个超过一千五百万个词的一个更大的实验表明,所提出的方法产生比最先进的方法更好,如平滑三元组,困惑度的差异在10%和20%之间。

我们认为,这些进步的主要原因是,所提出的方法允许利用所学习的分布式表示来利用自己的武器来抵抗维数灾难:每个训练句告知该模型关于其他句子的组合数量。

在架构水平,计算效率和利用先前的知识的基础上,改进模型可能还需要做更多的工作。未来研究的一个重要优先事项应该是改进加速技术以及增加能力的方法,而不会增加训练时间(以数百万字以上的语料来处理)。利用时间结构并扩展输入窗口的大小以包括可能的整个段落(不增加太多参数或计算时间)的简单思想是使用时间延迟和可能的复现神经网络。在适用语境中给出的模型类型的评估也将是有用的,但是看到Schwenk和Gauvain(2002)已经对语音识别字错误率的改进进行了研究。

更一般来说,这里提出的工作为统计语言模型的改进打开了大门,通过使用可以容纳更多条件变量的分布式表示,通过更紧凑和更平滑的表示来代替“条件概率表”。 尽管在统计语言模型(例如随机语法)中花费了许多努力来限制或总结调节变量以避免过度拟合,但是这里描述的模型类型将其他地方的困难转移到其他地方:需要更多的计算,但需要计算和记忆要求线性变化,与调节变量的数量呈指数关系。

致谢

作者要感谢LéonBottou,Yann Le Cun和Geoffrey Hinton进行有益的讨论。这项研究是通过NSERC授权机构以及MITACS和IRIS网络的资助实现的。

你可能感兴趣的:(神经网络,自然语言处理)