神经联合模型

  神经联合模型的训练;

  输入:双语语料 C={x,y}1N

  输出:模型参数 Θ

 (1)使用对其工具对双语语料进行对齐,获得 C={ x, y, a}1N ,其中 a 为对齐矩阵。

 (2)随机初始化神经网络参数 Θ

 (3)从双语语料 C 中随机采样一个句对{xk,yk,ak},并且从 y中随机采样一个 n 元组(yik,yi-1k,......,yi-N+1k) 

  通过对齐信息获得源语言句子中大小为 M 的上下文窗口 Cik (Xai-(M+1)/2,....,Xai-1,Xai,....,Xai+(M+1)/2)

 (4)将 n 元组(yik,yi-1k,......,yi-N+1k) 和上下文窗口 Ci输入神经网络,计算损失 Lik

 (5)使用损失函数 Lik  计算参数梯度 σik ,并使用梯度下降法更新模型参数 Θ = Θ - α σik ,其中 α 是学习率

 (6)若损失函数 L>ε 则重复步骤 (3)—(5)  

语言模型:

  最早成功的语言模型是基于固定长度的序列的标记模型,成为 n-gram 模型,一个n-gram  模型是一个包含 n 个标记的序列。

  基于n-gram 模型定义了一个条件概率,给定前 n-1 个标记后的第 n 个标记的条件概率,该模型使用这些条件分布的乘积来定义较长序列的概率分布:

             P(x1,...,xτ)= P(x1,...,xn-1)∏ τ t=n   P(xt | xt-n+1,....,xt-1

神经语言联合模型:

  N元神经网络语言模型讲前边 N-1 个词转换为词向量,然后输入到神经网络,经过若干线性层和非线性层来预测下一个词,与N元神经网络语言模型不同

  的地方在于神经网络语言模型除了使用目标语言的前 N-1 个词作为输入外,源语言句子的信息同样作为输入来对下一个目标语言次进行预测。

   例如:

 

 

 

 

 

 

 

 

 

 

 

  (1)将 “ 经济、发展、变 ” 通过词向量-表映射为对应的词向量,并将这三个词的词向量进行拼接,然后作为线性层的输入。

  (2)拼接后的向量经过一个非线性层(一般采用双正切函数 tanh )得到特征表示

  (3)基于学到的特征表示,在经过一个线性层映射为词表大小的向量

  (4)最终使用 softmax 层获得词 “ 慢 ” 作为 “ 经济、发展、变 ” 之后的第四个词的概率 ( P(慢 |  经济、发展、变 ))。

假设中文句子 y = { 在近几年经济发展变慢了 } 是从英文句子 x = { economic growth has slowed down in recent years } 得来:

  根据已知的对齐信息,中文 “ 慢 ” 对齐到英文句子的词是 slowed ,则以 slowed 为中心,取一个大小为 m ( 假设为5 ) 的窗口 { growth、 has 、slowed、 down、 in }

  此时语言模型和翻译模型的联合模型便是计算 P(慢 |  经济、发展、变 、growth、 has 、slowed、 down、 in } 

  (1)若 y对齐到源语言的多个词,则以这几个词为中心当做源语言句子上下文窗口的中心。

  (2)若 yi 没有对齐到源语言句子中的任何词,则向前找一个距离最近的存在对齐关系的目标语言词,继承该次对应的源语言句子的上下层窗口。

softmax函数:

  softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类,而这些值的累和为1(满足概率的性质)。

熵:

  熵是一个不确定性的测度,也就是说,我们对于某件事情知道的越多,则熵就越小,我们对其结果就越不感到意外。关于未知分布最合理的推断应该是符合已知知识最不

  确定或最大随机的推断。

交叉熵:

  基于神经网络的联合模型通常使用交叉熵作为损失函数。

 

 

 

 

 

 

 

 

 

 

 

一个随机变量 ,为用于近似的改路分布,则随机变量和模型之间的交叉熵定义为:

交叉熵常常用于模型的选择,若越小,则model越好。

posted @ 2019-03-19 20:50  胡~萝~卜  阅读(429)  评论(0编辑  收藏  举报