376 Chapter 10. 基于循环神经网络的模型 肖桐 朱靖波
损失函数,这时只需要替换 L
ce
(·) 即可。这里使用交叉熵损失函数的好处在于,它非
常容易优化,特别是与 Softmax 组合,其反向传播的实现非常高效。此外,交叉熵损
失(在一定条件下)也对应了极大似然的思想,这种方法在自然语言处理中已经被
证明是非常有效的。
除了交叉熵,很多系统也使用了面向评价的损失函数,比如,直接利用评价指
标 BLEU 定义损失函数
[235]
。不过这类损失函数往往不可微分,因此无法直接获取梯
度。这时可以引入强化学习技术,通过策略梯度等方法进行优化。不过这类方法需
要采样等手段,这里不做重点讨论,相关内容会在第十三章进行介绍。
2. 参数初始化
神经网络的参数主要是各层中的线性变换矩阵和偏置。在训练开始时,需要对
参数进行初始化。但是,由于神经机器翻译的网络结构复杂,因此损失函数往往不
是凸函数,不同初始化会导致不同的优化结果。而且在大量实践中已经发现,神经
机器翻译模型对初始化方式非常敏感,性能优异的系统往往需要特定的初始化方式。
因为 LSTM 是神经机器翻译中常用的一种模型,下面以 LSTM 模型为例(见10.3.2
节),介绍机器翻译模型的初始化方法,这些方法也可以推广到 GRU 等结构。具体
内容如下:
• LSTM 遗忘门偏置初始化为 1,也就是始终选择遗忘记忆 c,这样可以有效防止
初始化时 c 里包含的错误信号传播到后面的时刻。
• 网络中的其他偏置一般都初始化为 0,可以有效防止加入过大或过小的偏置后
使得激活函数的输出跑到“饱和区”,也就是梯度接近 0 的区域,防止训练一
开始就无法跳出局部极小的区域。
• 网络的权重矩阵 w 一般使用 Xavier 参数初始化方法
[472]
,可以有效稳定训练过
程,特别是对于比较“深”的网络。令 d
in
和 d
out
分别表示 w 的输入和输出的
维度大小
5
,则该方法的具体实现如下:
w ∼ U(−
r
6
d
in
+ d
out
,
r
6
d
in
+ d
out
) (10.27)
其中 U(a,b) 表示以 [a,b] 为范围的均匀分布。
3. 优化策略
公式(10.24)展示了最基本的优化策略,也被称为标准的 SGD 优化器。实际上,
训练神经机器翻译模型时,还有非常多的优化器可以选择,在第九章也有详细介绍,
本章介绍的循环神经网络考虑使用 Adam 优化器
[417]
。Adam 通过对梯度的一阶矩估计
(First Moment Estimation)和二阶矩估计(Second Moment Estimation)进行综合考虑,
计算出更新步长。
5
对于变换 y = xw,w 的列数为 d
in
,行数为 d
out
。