基于狄式过程的卡尔曼滤波词向量学习方法与流程

文档序号:15236590发布日期:2018-08-24 05:41阅读:457来源:国知局

本发明涉及自然语言处理领域,具体而言,涉及基于狄式过程的卡尔曼滤波词向量学习方法。



背景技术:

自然语言处理(nlp)相关任务中,要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,因为机器只认数学符号。向量是人把自然界的东西抽象出来交给机器处理的东西,词向量就是用来将语言中的词进行数学化的一种方式。

一种最简单的词向量表示方式是one-hotrepresentation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一个1,其他全为0,1的位置对应该词在词典中的位置。但这种词词向量表示有两个缺点:(1)容易受维数灾难的困扰,尤其是将其用于deeplearning的一些算法时;(2)不能很好地刻画词与词之间的相似性。

另一种词向量表示方式是distributedrepresentation,它最早是hinton于1986年提出的,可以克服one-hotrepresentation的缺点。其基本原理是:通过训练将某种语言中的每一个词映射成一个固定长度的短向量(这里的“短”是相对于one-hotrepresentation的“长”而言的),将所有这些向量放在一起形成一个词向量空间,而每一向量则为该空间中的一个点,在这个空间上引入“距离”,则可以根据词之间的距离来判断它们之间(词法、语义上)的相似性。

由于文本数据自身的很多特点,例如近义词和多义词现象,因此表示文本数据的特征向量的维度往往较高,但这些高维特征向量未必都对分类有益,反而会导致特征稀疏,带来算法效率的降低甚至分类效果的下降。因此有一个好的词向量表示方法具有重要意义。

为了得到基于上下文的词向量,高斯线性动态系统(lds)被用于描述一个语言模型。此方法的优点是能够充分利用当前词的上下文。这个模型经过大量的未被标记的语料库学习,每个词的隐含向量表示能够通过卡尔曼滤波器推断。假设词典为v,语料库长度为t。用表示词t的指示向量,维度为|v|。,假如词t在词典中的第i个位置,则向量的第i个值不为零。定义μi为语料库中词t出现的频率。

lds模型为:

其中xt表示要学习的词的隐含向量表示,wt表示观测值,ηt和ξt表示系统的过程噪声和测量噪声,a和c表示状态转移矩阵和观测矩阵。定义(μ是μi中的一个元素),wt的均值为零。定义期望值函数e表示求期望函数。

将一句话中位于第i个位置的词与另外一个位于第j个位置的词之间相差的词数量定义为滞后,当滞后为k时,μi和在长度为t的语料库中估计值为:

其中e[]代表求期望值,是指关于x对求期望值。

下面是介绍对模型参数估计的过程,整个过程分为两步,首先对em算法用ssid(subspaceidentification)方法进行初始化,通过emwithasos(martens,2010)(一种增强的em算法)对参数a,c,q,r(q、r为卡尔曼滤波器的基本参数)优化,然后基于前t-1个观察值的估计值k为卡尔曼滤波增益以及基于全部语料的估计值(i、j为卡尔曼滤波器的基本参数)计算隐含向量表示xt,并将隐含向量表示xt表示为词向量。

现有技术假设系统过程噪声和测量噪声分布属于零均值的高斯白噪声,但是通常情况下系统噪声是不确定的,特别是对于语言模型,很多问题都是需要挖掘语料中新的、未知的信息,因此上述假设考虑不切合实际,基于该假设得出的词向量不准确。

狄式过程(dirichletprocess)是一种有名的变参数贝叶斯模型,特别适合于解决各种聚类问题。这类模型的优势是在建立混合模型时所使用的类别数目无需人工指定,而是由模型和数据来自主地计算。在自然语言处理领域中,很多问题都需要挖掘语料中新的、未知的信息,这些信息往往缺乏先验知识,因而狄式过程的这一优点在很多自然语言处理的应用问题中可以得到充分地体现。但现有技术尚未将狄式过程应用于自然语言处理的词向量表示中。

因此有必要开发一种新的词向量表示方法。



技术实现要素:

为实现本发明的发明目的,本发明提供了一种基于狄式过程的卡尔曼滤波词向量学习方法,所述方法包括:

对语料进行训练和预处理,

生成lds语言模型系统,对系统参数进行初始化,

假设过程噪声满足正态分布,定义聚类θt=(μt,∑t),μt为语料库中词t出现的频率,计算θt的狄利克雷先验分布,

通过卡尔曼滤波推导和gibbs抽样估计计算后验分布,

利用mcmc抽样算法抽取备选聚类,计算备选聚类的选择概率,并选择所述概率值最高的备选聚类作为θt,计算所述聚类的最小均方误差估计值,

将计算结果代入lds语言模型,通过em算法训练模型,使模型参数达到稳定,

将预处理好的语料输入训练好的lds语言模型,通过卡尔曼滤波器一步更新公式进行计算隐含向量表示。

其中,lds语言模型如下:

xt=axt-1+ηt

wt=cxt+ξt

其中xt表示要学习的词的隐含向量表示,wt表示观测值,ηt和ξt表示系统的过程噪声和测量噪声,a和c表示状态转移矩阵和观测矩阵。

其中,θt满足狄利克雷过程先验分布假设,计算θt~g;g~dp(α,g0),

其中符号~代表服从后面的分布,参数g、d、p为狄利克雷分布的表示符号,α为尺度因子,g0表示基础分布,g0=niw(μ0,κ0,ν0,λ0),μ0,κ0,ν0,λ0为超参数。

其中,所述后验分布的计算公式如下:

p(x0:t,θ1:t|w1:t)=p(x0:t|θ1:t,w1:t)p(θ1:t|w1:t)

p(x0:t|θ1:t,w1:t)可以通过卡尔曼滤波推导,p(θ1:t|w1:t)可以通过gibbs抽样估计。

其中,所述利用mcmc抽样算法抽取备选聚类,计算备选聚类的选择概率,并选择所述概率值最高的备选聚类作为θt的值的具体过程如下:

从1,…,t个词中抽取表示i次抽样排除词t后的抽取结果,i≥2;

mh算法从下式抽取备选聚类:

计算备选聚类的选择概率如果ρ>α,令否则令

其中,所述将计算结果代入lds语言模型,通过em算法训练模型,使模型参数达到稳定的具体过程如下:

e步:根据t-1时刻的参数值计算t时刻卡尔曼滤波器的状态估计值进而计算状态估计值的协方差矩阵:

(1)首先进行如下定义:

其中,r为观测噪声的协方差矩阵;

(2)利用bp神经网络模型计算t时刻的数据,

反向传播:t=t,…,1,计算协方差矩阵

其中,nv为单位对角矩阵,b(θt)=g0chol(∑t)t,则

通过卡尔曼滤波器可以推导出协方差矩阵

前向传播:t=1,…,t,

通过卡尔曼滤波器可以推导计算协方差矩阵和mt|t(θ1:t-1);

m步:利用协方差矩阵计算期望值,将期望值最大化,求解lds模型的相关参数,也就是状态转移矩阵a和观测矩阵c;

更新上述参数并重复以上两步直至lds模型达到稳定。

其中,所述通过卡尔曼滤波器一步更新公式进行计算隐含向量表示的具体过程如下:

卡尔曼滤波器一步更新公式为:

其中,k,r,b,q,p,i均为卡尔曼滤波器的基本参数,为利用卡尔曼滤波器一步更新公式计算出的隐含向量表示xt的估计值,利用估计值可以计算出隐含向量表示xt,并将隐含向量表示xt表示为词向量。

发明能充分利用语料中的未知信息,提供更好的学习词向量表示,使用本发明的模型得到的词向量能更精确的表达词本身代表的意义以及与其他词之间的潜在关系,例如近义词,同义词,反义词等。

通过参照以下附图及对本发明的具体实施方式的详细描述,本发明的特征及优点将会变得清楚。

附图说明

图1显示了本发明的词向量学习方法的流程图

具体实施方式

本发明的实施方式提供了一种基于狄式过程的卡尔曼滤波词向量学习方法,本发明假设系统的过程噪声和测量噪声服从狄式分布,进而能计算狄式后验分布,再采用mcmc(蒙特卡洛抽样算法)抽样算法进行抽样,得到选择概率最高的备选聚类,将其代入lds模型后训练模型参数,最后将预处理好的语料输入训练好的语言模型,利用卡尔曼滤波器一步更新公式计算出隐含向量表示的估计值。

下面结合附图1对本发明的技术方案进行详细说明。

首先,对语料进行训练和预处理,包括分词处理和生成词典等,这是自然语言处理领域中进行词向量学习的公知处理,在此不做赘述。

然后,生成本发明的lds语言模型系统,对系统参数进行初始化。

本发明的lds语言模型如下:

xt=axt-1+ηt

wt=cxt+ξt

其中xt表示要学习的词的隐含向量表示,wt表示观测值,我们用one-hotrepresentation表示,观测噪声包括系统的过程噪声和测量噪声,分别表示为ηt和ξt,a和c表示状态转移矩阵和观测矩阵。我们将测量噪声ξt设定成零均值高斯白噪声,过程噪声ηt的先验分布表示成狄式过程。

1.假设ηt满足正态分布,ηt~n(μt,∑t),定义聚类θt=(μt,∑t),μt为语料库中词t出现的频率,θt满足狄利克雷过程先验分布假设,计算θt~g;g~dp(α,g0),符号~代表服从后面的分布,参数g、d、p为狄利克雷分布的表示符号,α为尺度因子,g0表示基础分布,g0=niw(μ0,κ0,ν0,λ0),μ0,κ0,ν0,λ0为超参数。

2.计算后验分布:

p(x0:t,θ1:t|w1:t)=p(x0:t|θ1:t,w1:t)p(θ1:t|w1:t)

其中p(x0:t|θ1:t,w1:t)可以通过卡尔曼滤波推导,p(θ1:t|w1:t)可以通过gibbs抽样估计。

从1,…,t个词中抽取表示i次抽样排除词t后的抽取结果,i≥2;

然后利用mcmc抽样算法中的mh算法从下式抽取备选聚类:

计算备选聚类的选择概率如果ρ>α,令否则令

选择概率值最高的备选聚类作为θt,进行后续计算。

(3)计算聚类θt的最小均方误差估计值。

3.将计算结果代入lds语言模型,通过em算法训练模型,使模型参数达到稳定,具体过程如下:

e步:根据t-1时刻的参数值计算t时刻卡尔曼滤波器的状态估计值进而计算状态估计值的协方差矩阵。具体包括:

(1)首先进行如下定义:

其中,r为观测噪声的协方差矩阵。

(2)利用bp神经网络模型计算t时刻的数据,此模型由信息的正向传播和误差的反向传播两个过程组成,其中,前向传播是利用t时刻之前的数据推断t时刻数据,反向传播是利用t时刻之后的数据推断t时刻数据。

反向传播:t=t,…,1,计算协方差矩阵

其中,nv为单位对角矩阵,b(θt)=g0chol(∑t)t,则

通过卡尔曼滤波器可以推导出协方差矩阵

前向传播:t=1,…,t,

通过卡尔曼滤波器可以推导计算协方差矩阵和mt|t(θ1:t-1)。

m步:利用协方差矩阵计算期望值,将期望值最大化,求解lds模型的相关参数,也就是状态转移矩阵a和观测矩阵c。

更新上述参数并重复以上两步直至lds模型达到稳定。

4.将预处理好的语料输入训练好的lds语言模型,通过下面列举的卡尔曼滤波器一步更新公式进行计算隐含向量表示xt:

上述卡尔曼滤波器一步更新公式为现有技术中的已有公式,其中,k,r,b,q,p,i均为卡尔曼滤波器的基本参数,为利用卡尔曼滤波器一步更新公式计算出的隐含向量表示xt的估计值,利用估计值可以计算出隐含向量表示xt,并将隐含向量表示xt表示为词向量。

以上所描述的仅是说明性,并且要理解的是,本文所描述的布置和细节的修改和变化对于本领域技术人员而言将是明显的,在没有脱离本发明的发明构思的前提下,任何显而易见的替换均在本发明保护范围之内。因此,意在仅由所附权利要求的范围而不是由通过以上描述和解释的方式所呈现的特定细节来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1