神经联合模型
神经联合模型的训练;
输入:双语语料 C={x,y}1N
输出:模型参数 Θ
(1)使用对其工具对双语语料进行对齐,获得 C={ x, y, a}1N ,其中 a 为对齐矩阵。
(2)随机初始化神经网络参数 Θ
(3)从双语语料 C 中随机采样一个句对{xk,yk,ak},并且从 yk 中随机采样一个 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) 和上下文窗口 Cik 输入神经网络,计算损失 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)若 yi 对齐到源语言的多个词,则以这几个词为中心当做源语言句子上下文窗口的中心。
(2)若 yi 没有对齐到源语言句子中的任何词,则向前找一个距离最近的存在对齐关系的目标语言词,继承该次对应的源语言句子的上下层窗口。
softmax函数:
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类,而这些值的累和为1(满足概率的性质)。
熵:
熵是一个不确定性的测度,也就是说,我们对于某件事情知道的越多,则熵就越小,我们对其结果就越不感到意外。关于未知分布最合理的推断应该是符合已知知识最不
确定或最大随机的推断。
交叉熵:
基于神经网络的联合模型通常使用交叉熵作为损失函数。
一个随机变量 ,为用于近似的改路分布,则随机变量和模型之间的交叉熵定义为:
交叉熵常常用于模型的选择,若越小,则model越好。