Commit 759119e1 by xiaotong

wording (sec 10, training)

parent 15c8412f
......@@ -897,14 +897,15 @@ a (\vectorn{\emph{s}},\vectorn{\emph{h}}) = \left\{ \begin{array}{ll}
\centering
\caption{GNMT与其他翻译模型对比\upcite{Wu2016GooglesNM}}
\label{tab:10-10}
\begin{tabular}{l l l l}
\multicolumn{1}{l|}{\multirow{2}{*}{\#}} & \multicolumn{2}{c}{BLEU} & \multirow{2}{*}{CPU decoding time} \\
\multicolumn{1}{l|}{} & EN-DE & EN-FR & \\ \hline
\multicolumn{1}{l|}{PBMT} & 20.7 & 37.0 & - \\
\multicolumn{1}{l|}{RNNSearch} & 16.5 & - & - \\
\multicolumn{1}{l|}{LSTM(6 layers)} & - & 31.5 & - \\
\multicolumn{1}{l|}{Deep-Att} & 20.6 & 37.7 & - \\
\multicolumn{1}{l|}{GNMT} & 24.6 & 39.0 & 0.2s per sentence \\
\begin{tabular}{l l l}
\multicolumn{1}{l|}{\multirow{3}{*}{\#}} & \multicolumn{2}{c}{BLEU[\%]} \\
\multicolumn{1}{l|}{} & 英德 & 英法 \\
\multicolumn{1}{l|}{} & EN-DE & EN-FR \\ \hline
\multicolumn{1}{l|}{PBMT} & 20.7 & 37.0 \\
\multicolumn{1}{l|}{RNNSearch} & 16.5 & - \\
\multicolumn{1}{l|}{LSTM(6 layers)} & - & 31.5 \\
\multicolumn{1}{l|}{Deep-Att} & 20.6 & 37.7 \\
\multicolumn{1}{l|}{GNMT} & 24.6 & 39.0 \\
\end{tabular}
\end{table}
%----------------------------------------------
......@@ -915,18 +916,21 @@ a (\vectorn{\emph{s}},\vectorn{\emph{h}}) = \left\{ \begin{array}{ll}
\sectionnewpage
\section{训练及推断}
神经机器翻译模型的训练大多使用基于梯度的方法(见{\chapternine}),本节将介绍这种方法训练循环神经网络的应用细节。进一步,会介绍神经机器翻译模型的推断方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{训练}
\parinterval 第九章已经介绍了神经网络的训练方法。其中最常用的是基于梯度的方法,即:使用一定量样本进行神经网络的前向计算,之后进行反向计算,并得到所有参数的梯度信息,再使用下面的规则进行参数更新:
\parinterval 在基于梯度的方法中,模型参数可以通过损失函数$L$对于参数的梯度进行不断更新。对于第$step$步参数更新,首先进行神经网络的前向计算,之后进行反向计算,并得到所有参数的梯度信息,再使用下面的规则进行参数更新:
\begin{eqnarray}
\vectorn{\emph{w}}_{step+1} = \vectorn{\emph{w}}_{step} - \alpha \cdot \frac{ \partial L(\vectorn{\emph{w}}_{step})} {\partial \vectorn{\emph{w}}_{step} }
\label{eq:10-30}
\end{eqnarray}
\noindent 其中,$\vectorn{\emph{w}}_{step}$表示更新前的模型参数,$\vectorn{\emph{w}}_{step+1}$表示更新后的模型参数,$L(\vectorn{\emph{w}}_{step})$表示模型相对于$\vectorn{\emph{w}}_{step}$的损失,$\frac{\partial L(\vectorn{\emph{w}}_{step})} {\partial \vectorn{\emph{w}}_{step} }$表示损失函数的梯度,$\alpha$是更新的步进值。也就是说,给定一定量的训练数据,不断执行公式\ref{eq:10-30}的过程。反复使用训练数据,直至模型参数达到收敛或者损失函数不再变化。通常,把公式的一次执行称为“一步”更新/训练,把访问完所有样本的训练称为“一轮”训练。
\noindent 其中,$\vectorn{\emph{w}}_{step}$表示更新前的模型参数,$\vectorn{\emph{w}}_{step+1}$表示更新后的模型参数,$L(\vectorn{\emph{w}}_{step})$表示模型相对于$\vectorn{\emph{w}}_{step}$ 的损失,$\frac{\partial L(\vectorn{\emph{w}}_{step})} {\partial \vectorn{\emph{w}}_{step} }$表示损失函数的梯度,$\alpha$是更新的步进值。也就是说,给定一定量的训练数据,不断执行公式\ref{eq:10-30}的过程。反复使用训练数据,直至模型参数达到收敛或者损失函数不再变化。通常,把公式的一次执行称为“一步”更新/训练,把访问完所有样本的训练称为“一轮”训练。
\parinterval 将公式\ref{eq:10-30}应用于神经机器翻译有几个基本问题需要考虑:1)损失函数的选择;2)参数初始化的策略,也就是如何设置$\vectorn{\emph{w}}_0$;3)优化策略和学习率调整策略;4)训练加速。下面对这些问题进行讨论。
......@@ -936,13 +940,13 @@ a (\vectorn{\emph{s}},\vectorn{\emph{h}}) = \left\{ \begin{array}{ll}
\subsubsection{1. 损失函数}
\parinterval 因为神经机器翻译在每个目标语言位置都会输出一个概率分布,表示这个位置上不同单词出现的可能性,因此需要知道当前位置输出的分布相比于标准答案的“损失”。对于这个问题,常用的是交叉熵损失函数。令$\vectorn{\emph{y}}$表示机器翻译模型输出的分布,$\hat{\vectorn{\emph{y}}}$ 表示标准答案,则交叉熵损失可以被定义为:
\parinterval 神经机器翻译在目标端的每个位置都会输出一个概率分布,表示这个位置上不同单词出现的可能性。设计损失函数时,需要知道当前位置输出的分布相比于标准答案的“差异”。对于这个问题,常用的是交叉熵损失函数。令$\vectorn{\emph{y}}$表示机器翻译模型输出的分布,$\hat{\vectorn{\emph{y}}}$ 表示标准答案,则交叉熵损失可以被定义为:
\begin{eqnarray}
L_{\textrm{ce}}(\vectorn{\emph{y}},\hat{\vectorn{\emph{y}}}) = - \sum_{k=1}^{|V|} \vectorn{\emph{y}}[k] \textrm{log} (\hat{\vectorn{\emph{y}}}[k])
\label{eq:10-3222}
\end{eqnarray}
\noindent 其中$\vectorn{\emph{y}}[k]$$\hat{\vectorn{\emph{y}}}[k]$分别表示向量$\vectorn{\emph{y}}$$\hat{\vectorn{\emph{y}}}$的第$k$维,$|V|$表示输出向量的维度(等于词表大小)。对于一个模型输出的概率分布$\vectorn{\emph{Y}} = \{ \vectorn{\emph{y}}_1,\vectorn{\emph{y}}_2,..., \vectorn{\emph{y}}_n \}$和标准答案分布$\widehat{\vectorn{\emph{Y}}}=\{ \hat{\vectorn{\emph{y}}}_1, \hat{\vectorn{\emph{y}}}_2,...,\hat{\vectorn{\emph{y}}}_n \}$损失函数可以被定义为:
\noindent 其中$\vectorn{\emph{y}}[k]$$\hat{\vectorn{\emph{y}}}[k]$分别表示向量$\vectorn{\emph{y}}$$\hat{\vectorn{\emph{y}}}$的第$k$维,$|V|$表示输出向量的维度(等于词表大小)。假设有$n$个训练样本,模型输出的概率分布为$\vectorn{\emph{Y}} = \{ \vectorn{\emph{y}}_1,\vectorn{\emph{y}}_2,..., \vectorn{\emph{y}}_n \}$,标准答案的分布$\widehat{\vectorn{\emph{Y}}}=\{ \hat{\vectorn{\emph{y}}}_1, \hat{\vectorn{\emph{y}}}_2,...,\hat{\vectorn{\emph{y}}}_n \}$。这个训练样本集合上的损失函数可以被定义为:
\begin{eqnarray}
L(\vectorn{\emph{Y}},\widehat{\vectorn{\emph{Y}}}) = \sum_{j=1}^n L_{\textrm{ce}}(\vectorn{\emph{y}}_j,\hat{\vectorn{\emph{y}}}_j)
\label{eq:10-31}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论