首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

神经网络语言模型详解(转)(2)

神经网络语言模型详解(转)(2)

6.2 参数求解 该模型参数求解可以直接套用Log Bi-Linear和Hierarchical NNLM的方式,其中不同之处,Hinton提出了一种新的简单的构建层次结构的方法:通过递归的使用二维的高斯混合模型(GMM,Gaussian Mixture Model)进行聚类,直到每个cluster中仅包含两个词,这样所有的结果就构成一个二叉树。
7 SENNA SENNA中不仅仅提出了word embedding的构建方法,同时还从神经网络语言模型角度系统去解决自然语言处理任务(POS,Chunking,NER,SRL)。SENNA中,每个词可以直接从Lookup Table中直接查找到对应的向量。
其中,是词向量的维度,为词向量的矩阵,表示取矩阵的第列。SENNA中,表示句子或者词序列仅将对应的词向量拼接起来得到对应的向量。
SENNA中采用HLBL中同一个词存在不同的词向量,用于刻画不同的语义和语法用途,一个词的词向量最终由各种形态下的词向量组合起来,比 如,一个词可以有word stemming的向量,本身的向量(这些向量可能来自不同的Lookup table)等,需要将这些向量结合起来表示这个词。SENNA直接将这些向量拼接起来,构成了一个维度为。

7.1 模型结构 SENNA包含两种网络构建方式(1)window approach(图3)(2)sentence approach(图4)。
(1)window approach
window approach是一个前馈神经网络,包含线性层、HardTanh层。window approach的输入是包含当前词在内的窗口大小的序列,拼接所有词的向量得到的表示向量,维度,


图3 window approach
从图3可知,输入下一层或者几层线性层,记为。
其中,为待训练参数,为第层隐藏单元数。

SENNA中包含了一个特殊的层,HardTanh层,它的输入是前一个线性层。HardTanh层是一个非线性层,形式如下,
其中,
SENNA的输出层为输入序列对应的得分,大小具体任务有关。

(2) sentence approach
window approach能够完成绝大部分自然语言处理任务,但是在SRL上表现不佳。因此,SENNA提出了sentence approach用于适应SRL。sentence approach采用的卷积网络结构,除了线性层和HardTanh层外,还有一个卷积层和一个Max层。


图4 sentence approach
因为sentence的大小不一定相同,需要在sentence上选取滑窗将输入的向量进行卷积,得到如下形式,
其中,序列中所有滑窗共享。相比线性层,卷积层将局部的特征堆叠起来构建高层的特征,而线性层则需要一个非线性变换(比如HardTanh)才能达到这种效果。
Max层是将卷积层的输出的局部特征合并成为全局特征,卷积层输出处理常用的方法有AVG和MAX。SENNA中采用的是MAX运算,即,
其中,为卷积层的输入,为Max的输出。
7.2 参数估计 上述神经网络的参数均通过MLE + SGD得到,我们将参数记为,训练数据记为, 则参数估计记为,
其中,为输入的句子或词序列(window approach)对应的表示向量,表示具体任务(POS,NER,Chunking,SRL)的tag,为神经网络的输出结果,箭头右边为data log likelihood。

SENNA求解方式分为两种,word-level log-likelihood,sentence-level log-likelihood。
(1)word-level log-likelihood
在给定输入的情况下,神经网络输出一个得分,这里为输出的tag编号。这个得分不满足概率的约束,需要对它进行归一化,这里采用了softmax方程,
为方便运算,对上述等式取log值,记分母部分为,得到的形式带入data log likelihood中,最终形式为交叉熵(cross entropy)。但是,由于在句子中当前词和相邻的词的tag存在关联性,上述方案并非最好的求解方式,所以SENNA提出了sentence- level log-likelihood。

(2)sentence-level log-likelihood
在输入的句子中,有些tag不能在某些tag之后。从序列的角度看,tag和tag之间的转换是有条件的,这种转换是需要满足约束的。记,为句 子的网络输出得分,为输入序列中第个词,输出为第个tag的得分。基于上述考虑,SENNA引如一个转换矩阵用于保存tag和tag之间的转换关系,表示 从tag i到tag j的得分,转换得分需要通过从数据中训练得到,故参数为。按照上述处理,序列的得分是神经网络得分加上转换得分,
类似于word-level的处理,最终输出需要满足概率分布的约束,sentence level仅对所有可能的tag路径进行softmax归一化,我们定义这个结果比值为tag路径条件概率。对条件概率取log后,

上式中,logadd操作拥有特殊的性质可以递归的求解,可以方便的得到递推公式,

终止条件为,
上述过程理解可以参照HMM的前向算法。在训练时,对所有的样本最大化data log likelihood,注意其中为tag路径条件概率。
SENNA的推断部分采用的是Viterbi算法,推断过程理解可以参照HMM的推断过程,形式为,
类似于HMM中,也需要按照参数求解过程进行递归处理,但是每步需要用max操作替代logadd操作,然后回溯得到解。viterbi的过程理解可以参照动态规划问题,找出状态转移方程即可。
继承事业,薪火相传
返回列表