Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
Toy-MT-Introduction
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
Toy-MT-Introduction
Commits
ee6a42e1
Commit
ee6a42e1
authored
May 13, 2020
by
单韦乔
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
第七章第二次反馈后修改
parent
6e513a24
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
6 行增加
和
6 行删除
+6
-6
Book/Chapter7/Chapter7.tex
+6
-6
没有找到文件。
Book/Chapter7/Chapter7.tex
查看文件 @
ee6a42e1
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
\parinterval
作为机器翻译的前沿方向,神经机器翻译方法是近些年来最受关注的热点之一。凭借其高品质的译文,神经机器翻译的身影在各种机器翻译比赛和产品中随处可见。第六章已经介绍了神经机器翻译的基础模型,包括:基于循环神经网络的翻译模型、基于Transformer的翻译模型、注意力机制等等。但是,简单使用这些模型和方法显然无法取得最好的结果。实际上,先进的系统往往依赖多种技术的综合运用,是一项庞大的系统工程。
\parinterval
作为机器翻译的前沿方向,神经机器翻译方法是近些年来最受关注的热点之一。凭借其高品质的译文,神经机器翻译的身影在各种机器翻译比赛和产品中随处可见。第六章已经介绍了神经机器翻译的基础模型,包括:基于循环神经网络的翻译模型、基于Transformer的翻译模型、注意力机制等等。但是,简单使用这些模型和方法显然无法取得最好的结果。实际上,先进的系统往往依赖多种技术的综合运用,是一项庞大的系统工程。
\parinterval
本章将沿着神经机器翻译框架继续探讨:如何研发性能更为突出的机器翻译系统。这里将介绍若干常用的提升神经机器翻译系统品质和速度的方法。同时,也会讨论一些开放性的前沿课题,旨在使机器翻译达到更加先进的水平。本章的绝大部分内容都经过笔者所在团队的实验,具有实践方面的参考价值。正如本章的副标题一样,希望这里所讨论的内容可以帮助读者了解如何开发出一套足以参加高水平机器翻译比赛的系统,为相关研究建立更加科学、合理的基线,同时为机器翻译的应用提供一些具体可落地的思路。
\parinterval
本章将沿着神经机器翻译框架继续探讨:如何研发性能更为突出的机器翻译系统。这里将介绍若干常用的提升神经机器翻译系统品质和速度的方法。同时,也会讨论一些开放性的前沿课题,旨在使机器翻译达到更加先进的水平。本章的绝大部分内容都经过
了
笔者所在团队的实验,具有实践方面的参考价值。正如本章的副标题一样,希望这里所讨论的内容可以帮助读者了解如何开发出一套足以参加高水平机器翻译比赛的系统,为相关研究建立更加科学、合理的基线,同时为机器翻译的应用提供一些具体可落地的思路。
%----------------------------------------------------------------------------------------
%----------------------------------------------------------------------------------------
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
\begin{itemize}
\begin{itemize}
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
神经网络模型很脆弱
}}
。神经机器翻译对超参数
、训练策略的选择、
网络结构的细微差别都非常敏感。比如,学习率、Dropout比率上下浮动一点点都会给翻译结果带来明显区别。这也导致系统研发人员需要花费大量的时间来寻找合理的系统配置。虽然也有一些研究工作探讨自动化调参和结构设计(如:AutoML),但是为了确保翻译品质,现在普遍的做法仍然是``人肉''搜索最佳的网络架构和系统配置。
\item
{
\small\bfnew
{
神经网络模型很脆弱
}}
。神经机器翻译对超参数
和训练策略的选择以及
网络结构的细微差别都非常敏感。比如,学习率、Dropout比率上下浮动一点点都会给翻译结果带来明显区别。这也导致系统研发人员需要花费大量的时间来寻找合理的系统配置。虽然也有一些研究工作探讨自动化调参和结构设计(如:AutoML),但是为了确保翻译品质,现在普遍的做法仍然是``人肉''搜索最佳的网络架构和系统配置。
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
神经机器翻译需要对不同翻译任务进行适应
}}
。理想中一套``包打天下''的模型和设置是不存在的。针对不同语种、不同领域,机器翻译系统都需要进行调整。比如,一个在新闻数据上训练的系统在专利数据上的表现往往不会很好。这里并不否认在很多研究工作中为了缩短研究周期,可以用同一套系统及设置在所有任务上进行实验。但是,具体到每个翻译任务上,高质量翻译都离不开对系统细致地调整,比如,与语言相关的数据加工等。
\item
{
\small\bfnew
{
神经机器翻译需要对不同翻译任务进行适应
}}
。理想中一套``包打天下''的模型和设置是不存在的。针对不同语种、不同领域,机器翻译系统都需要进行调整。比如,一个在新闻数据上训练的系统在专利数据上的表现往往不会很好。这里并不否认在很多研究工作中为了缩短研究周期,可以用同一套系统及设置在所有任务上进行实验。但是,具体到每个翻译任务上,高质量翻译都离不开对系统细致地调整,比如,与语言相关的数据加工等。
\vspace
{
0.5em
}
\vspace
{
0.5em
}
...
@@ -447,7 +447,7 @@ y = f(x)
...
@@ -447,7 +447,7 @@ y = f(x)
\label
{
eq:7-2
}
\label
{
eq:7-2
}
\end{eqnarray}
\end{eqnarray}
\noindent
其中,
$
L
(
\mathbf
{
w
}
)
$
是损失函数,
$
R
(
\mathbf
{
w
}
)
$
是正则项
;
$
\lambda
$
是正则项的系数,用于控制正则化对训练影响的程度。
$
R
(
\mathbf
{
w
}
)
$
通常也可以被看作是一种先验,因为在数据不充分且存在噪声的情况下,可以根据一些先验知识让模型偏向正确的方向一些,而不是一味地根据受噪声影响的不准确的
$
L
(
\mathbf
{
w
}
)
$
进行优化。相应的,引入正则化后的模型可以获得更好的
{
\small\bfnew
{
泛化
}}
\index
{
泛化
}
(Generalization)
\index
{
Generalization
}
能力,即模型在新的未见数据上表现会更好。
\noindent
其中,
$
L
(
\mathbf
{
w
}
)
$
是损失函数,
$
R
(
\mathbf
{
w
}
)
$
是正则项
,
$
\lambda
$
是正则项的系数,用于控制正则化对训练影响的程度。
$
R
(
\mathbf
{
w
}
)
$
通常也可以被看作是一种先验,因为在数据不充分且存在噪声的情况下,可以根据一些先验知识让模型偏向正确的方向一些,而不是一味地根据受噪声影响的不准确的
$
L
(
\mathbf
{
w
}
)
$
进行优化。相应的,引入正则化后的模型可以获得更好的
{
\small\bfnew
{
泛化
}}
\index
{
泛化
}
(Generalization)
\index
{
Generalization
}
能力,即模型在新的未见数据上表现会更好。
\parinterval
实践中已经证明,正则化方法有助于像神经机器翻译这样复杂的模型获得稳定的模型参数。甚至有些情况下,如果不引入正则化,训练得到的翻译模型根本无法使用。
\parinterval
实践中已经证明,正则化方法有助于像神经机器翻译这样复杂的模型获得稳定的模型参数。甚至有些情况下,如果不引入正则化,训练得到的翻译模型根本无法使用。
...
@@ -572,7 +572,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
...
@@ -572,7 +572,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\parinterval
那么是否还有类似的方法可以改善系统性能呢?答案显然是肯定的。这里,把这类方法统称为基于大容量模型的方法。在传统机器学习的观点中,神经网络的性能不仅依赖于架构设计,同样与容量密切相关。那么什么是模型的
{
\small\bfnew
{
容量
}}
\index
{
容量
}
(Capacity)
\index
{
Capacity
}
?简单理解,容量是指神经网络的参数量,即神经元之间连接权重的个数。另一种定义是把容量看作神经网络所能表示的假设空间大小
\cite
{
DBLP:journals/nature/LeCunBH15
}
,也就是神经网络能表示的不同函数所构成的空间。
\parinterval
那么是否还有类似的方法可以改善系统性能呢?答案显然是肯定的。这里,把这类方法统称为基于大容量模型的方法。在传统机器学习的观点中,神经网络的性能不仅依赖于架构设计,同样与容量密切相关。那么什么是模型的
{
\small\bfnew
{
容量
}}
\index
{
容量
}
(Capacity)
\index
{
Capacity
}
?简单理解,容量是指神经网络的参数量,即神经元之间连接权重的个数。另一种定义是把容量看作神经网络所能表示的假设空间大小
\cite
{
DBLP:journals/nature/LeCunBH15
}
,也就是神经网络能表示的不同函数所构成的空间。
\parinterval
而学习一个神经网络就是要找到一个``最优''的函数,它可以准确地拟合数据。当假设空间变大时,训练系统有机会找到更好的函数,但是同时也需要依赖更多的训练样本才能完成最优函数的搜索。相反,当假设空间变小时,训练系统会更容易完成函数搜索,但是很多优质的函数可能都没有包含在假设空间里。这也体现了一种简单的辩证思想:如果训练(搜索)的代价高,会有更大的机会找到更好的解;另一方面,如果想少花力气进行训练(搜索),那就设计一个小一些的假设空间,在小一些规模的样本集上进行训练,当然搜索到的解可能不是最好的。
\parinterval
而学习一个神经网络就是要找到一个``最优''的函数,它可以准确地拟合数据。当假设空间变大时,训练系统有机会找到更好的函数,但是同时也需要依赖更多的训练样本才能完成最优函数的搜索。相反,当假设空间变小时,训练系统会更容易完成函数搜索,但是很多优质的函数可能都没有
被
包含在假设空间里。这也体现了一种简单的辩证思想:如果训练(搜索)的代价高,会有更大的机会找到更好的解;另一方面,如果想少花力气进行训练(搜索),那就设计一个小一些的假设空间,在小一些规模的样本集上进行训练,当然搜索到的解可能不是最好的。
\parinterval
在很多机器翻译任务中,训练数据是相对充分的。这时增加模型容量是提升性能的一种很好的选择。常见的方法有三种:
\parinterval
在很多机器翻译任务中,训练数据是相对充分的。这时增加模型容量是提升性能的一种很好的选择。常见的方法有三种:
...
@@ -701,7 +701,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
...
@@ -701,7 +701,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
\parinterval
此外,前人工作表明,使用大批量训练复杂网络结构时要配合略大一些的学习率,加快模型在梯度方向上的更新速度,进而达到更优的翻译性能
\cite
{
DBLP:conf/wmt/OttEGA18
}
。例如,深层网络也需要对学习率进行适当的调整才能发挥较好的性能。表
\ref
{
tab:7-3
}
展示了30层网络在不同批次大小和学习率峰值的条件下的BLEU值(WMT14 En-De)
\footnote
{
学习率峰值是指Transformer模型训练的预热阶段,学习率所到达的最高值。
}
。可以发现,在固定学习率峰值的条件下增大批次大小并不能带来性能上的增益,必须同时调整学习率的峰值。也有研究团队验证了
,
Transformer-Big模型在128张GPU上进行分布式训练时,适当的增大学习率会带来明显的BLEU提升
\cite
{
DBLP:conf/wmt/OttEGA18
}
。
\parinterval
此外,前人工作表明,使用大批量训练复杂网络结构时要配合略大一些的学习率,加快模型在梯度方向上的更新速度,进而达到更优的翻译性能
\cite
{
DBLP:conf/wmt/OttEGA18
}
。例如,深层网络也需要对学习率进行适当的调整才能发挥较好的性能。表
\ref
{
tab:7-3
}
展示了30层网络在不同批次大小和学习率峰值的条件下的BLEU值(WMT14 En-De)
\footnote
{
学习率峰值是指Transformer模型训练的预热阶段,学习率所到达的最高值。
}
。可以发现,在固定学习率峰值的条件下增大批次大小并不能带来性能上的增益,必须同时调整学习率的峰值。也有研究团队验证了Transformer-Big模型在128张GPU上进行分布式训练时,适当的增大学习率会带来明显的BLEU提升
\cite
{
DBLP:conf/wmt/OttEGA18
}
。
%----------------------------------------------
%----------------------------------------------
\begin{table}
[htp]
\begin{table}
[htp]
...
@@ -914,7 +914,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
...
@@ -914,7 +914,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\parinterval
另一种思路是化简Transformer的解码端神经网络。比如,可以使用平均注意力机制代替原始的Transformer自注意力机制
\cite
{
DBLP:journals/corr/abs-1805-00631
}
,也可以使用运算更轻的卷积操作代替注意力模块
\cite
{
Wu2019PayLA
}
。前面提到的基于共享注意力机制的模型也是一种典型的轻量模型
\cite
{
Xiao2019SharingAW
}
。
\parinterval
另一种思路是化简Transformer的解码端神经网络。比如,可以使用平均注意力机制代替原始的Transformer自注意力机制
\cite
{
DBLP:journals/corr/abs-1805-00631
}
,也可以使用运算更轻的卷积操作代替注意力模块
\cite
{
Wu2019PayLA
}
。前面提到的基于共享注意力机制的模型也是一种典型的轻量模型
\cite
{
Xiao2019SharingAW
}
。
\parinterval
此外,使用异构神经网络也是一种平衡精度和速度的有效方法。在很多研究中发现,基于Transformer的编码器对翻译品质的影响更大,
但是
解码端的作用会小一些。因此,一种想法是用更快速的解码端结构,比如,用基于循环神经网络的解码端替换基于Transformer的解码端
\cite
{
Chen2018TheBO
}
。这样,既能发挥Transformer在编码上的优势,同时也能利用循环神经网络在解码端速度上的优势。使用类似的思想,也可以用卷积网络等结构进行解码端网络的设计。
\parinterval
此外,使用异构神经网络也是一种平衡精度和速度的有效方法。在很多研究中发现,基于Transformer的编码器对翻译品质的影响更大,
而
解码端的作用会小一些。因此,一种想法是用更快速的解码端结构,比如,用基于循环神经网络的解码端替换基于Transformer的解码端
\cite
{
Chen2018TheBO
}
。这样,既能发挥Transformer在编码上的优势,同时也能利用循环神经网络在解码端速度上的优势。使用类似的思想,也可以用卷积网络等结构进行解码端网络的设计。
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\noindent
{
\small\bfnew
{
d) 批量推断
}}
\noindent
{
\small\bfnew
{
d) 批量推断
}}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论