Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
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
mtbookv2
Commits
4abb9223
Commit
4abb9223
authored
Jan 02, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
孟霞文献引用
parent
73b07ab2
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
5 行增加
和
5 行删除
+5
-5
Chapter14/chapter14.tex
+2
-2
Chapter4/chapter4.tex
+3
-3
没有找到文件。
Chapter14/chapter14.tex
查看文件 @
4abb9223
...
...
@@ -329,7 +329,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsection
{
轻量解码器及小模型
}
\parinterval
在推断时,神经机器翻译的解码器是最耗时的,因为每个目标语言位置需要单独输出单词的分布,同时在搜索过程中每一个翻译假设都要被扩展成多个翻译假设,进一步增加了计算量。因此,另一种思路是使用更加轻量的解码器加快翻译假设的生成速度
\upcite
{
DBLP:journals/corr/HintonVD15
,Munim2019SequencelevelKD
}
。
\parinterval
在推断时,神经机器翻译的解码器是最耗时的,因为每个目标语言位置需要单独输出单词的分布,同时在搜索过程中每一个翻译假设都要被扩展成多个翻译假设,进一步增加了计算量。因此,另一种思路是使用更加轻量的解码器加快翻译假设的生成速度
\upcite
{
Hinton2015Distilling
,Munim2019SequencelevelKD
}
。
\parinterval
比较简单的做法是把解码器的网络变得更“浅”、更“窄”。所谓浅网络是指使用更少的层构建神经网络,比如,使用3 层,甚至1 层网络的Transformer 解码器。所谓窄网络是指将网络中某些层中神经元的数量减少。不过,直接训练这样的小模型会带来翻译品质的下降。这时会考虑使用知识蒸馏(也称作知识精炼)等技术来提升小模型的品质。
...
...
@@ -709,7 +709,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\vspace
{
0.5em
}
\item
推断系统也可以受益于更加高效的网络结构。这方面工作集中在结构化剪枝、减少模型的冗余计算、低秩分解等方向。结构化剪枝中的代表性工作是LayerDrop
\upcite
{
DBLP:conf/iclr/FanGJ20,DBLP:conf/emnlp/WangXZ20,DBLP:journals/corr/abs-2002-02925
}
,这类方法在训练时随机选择部分子结构,在推断时根据输入来选择模型中的部分层进行计算,而跳过其余层,达到加速和减少参数量的目的。有关减少冗余计算的研究主要集中在改进注意力机制上,本章已经有所介绍。低秩分解则针对词向量或者注意力的映射矩阵进行改进,例如词频自适应表示
\upcite
{
DBLP:conf/iclr/BaevskiA19
}
,词频越高则对应的向量维度越大,反之则越小,或者层数越高注意力映射矩阵维度越小
\upcite
{
DBLP:journals/corr/abs-2006-04768,DBLP:journals/corr/abs-1911-12385,DBLP:journals/corr/abs-1906-09777,DBLP:conf/nips/YangLSL19
}
。在实践中比较有效的是较深的编码器与较浅的解码器结合的方式,极端情况下解码器仅使用1层神经网络即可取得与多层神经网络相媲美的翻译精度,而极大地提升翻译效率
\upcite
{
DBLP:journals/corr/abs-2006-10369,DBLP:conf/aclnmt/HuLLLLWXZ20,DBLP:journals/corr/abs-2010-02416
}
。在
{
\chapterfifteen
}
还会进一步对高效神经机器翻译的模型结构进行讨论。
\vspace
{
0.5em
}
\item
在对机器翻译推断系统进行实际部署时,对存储的消耗也是需要考虑的因素。因此如何让模型变得更小也是研发人员所关注的方向。当前的模型压缩方法主要可以分为几类:剪枝、量化、知识蒸馏和轻量方法,其中轻量方法主要是基于更轻量模型结构的设计,这类方法已经在上文进行了介绍。剪枝主要包括权重大小剪枝
\upcite
{
Han2015LearningBW,Lee2019SNIPSN,Frankle2019TheLT,Brix2020SuccessfullyAT
}
、面向多头注意力的剪枝
\upcite
{
Michel2019AreSH,DBLP:journals/corr/abs-1905-09418
}
、网络层以及其他部分的剪枝等
\upcite
{
Liu2017LearningEC,Liu2019RethinkingTV
}
,还有一些方法也通过在训练期间采用正则化的方式来提升剪枝能力
\upcite
{
DBLP:conf/iclr/FanGJ20
}
。量化方法主要通过截断浮点数来减少模型的存储大小,使其仅使用几个比特位的数字表示方法便能存储整个模型,虽然会导致舍入误差,但压缩效果显著
\upcite
{
DBLP:journals/corr/abs-1906-00532,Cheong2019transformersZ,Banner2018ScalableMF,Hubara2017QuantizedNN
}
。一些方法利用知识蒸馏手段还将Transformer模型蒸馏成如LSTMs 等其他各种推断速度更快的结构
\upcite
{
DBLP:journals/corr/HintonVD15
,Munim2019SequencelevelKD,Tang2019DistillingTK
}
。另外还有一些方法不仅在输出上,还在权重矩阵和隐藏的激活层上对“教师模型”知识进行更深入的挖掘
\upcite
{
Jiao2020TinyBERTDB
}
。
\item
在对机器翻译推断系统进行实际部署时,对存储的消耗也是需要考虑的因素。因此如何让模型变得更小也是研发人员所关注的方向。当前的模型压缩方法主要可以分为几类:剪枝、量化、知识蒸馏和轻量方法,其中轻量方法主要是基于更轻量模型结构的设计,这类方法已经在上文进行了介绍。剪枝主要包括权重大小剪枝
\upcite
{
Han2015LearningBW,Lee2019SNIPSN,Frankle2019TheLT,Brix2020SuccessfullyAT
}
、面向多头注意力的剪枝
\upcite
{
Michel2019AreSH,DBLP:journals/corr/abs-1905-09418
}
、网络层以及其他部分的剪枝等
\upcite
{
Liu2017LearningEC,Liu2019RethinkingTV
}
,还有一些方法也通过在训练期间采用正则化的方式来提升剪枝能力
\upcite
{
DBLP:conf/iclr/FanGJ20
}
。量化方法主要通过截断浮点数来减少模型的存储大小,使其仅使用几个比特位的数字表示方法便能存储整个模型,虽然会导致舍入误差,但压缩效果显著
\upcite
{
DBLP:journals/corr/abs-1906-00532,Cheong2019transformersZ,Banner2018ScalableMF,Hubara2017QuantizedNN
}
。一些方法利用知识蒸馏手段还将Transformer模型蒸馏成如LSTMs 等其他各种推断速度更快的结构
\upcite
{
Hinton2015Distilling
,Munim2019SequencelevelKD,Tang2019DistillingTK
}
。另外还有一些方法不仅在输出上,还在权重矩阵和隐藏的激活层上对“教师模型”知识进行更深入的挖掘
\upcite
{
Jiao2020TinyBERTDB
}
。
\vspace
{
0.5em
}
\item
目前的翻译模型使用交叉熵损失作为优化函数,这在自回归模型上取得了非常优秀的性能。交叉熵是一个严格的损失函数,每个预测错误的单词所对应的位置都会受到惩罚,即使是编辑距离很小的输出序列。自回归模型会很大程度上避免这种惩罚,因为当前位置的单词是根据先前生成的词得到的,然而非自回归模型无法获得这种信息。如果在预测时漏掉一个单词,就可能会将正确的单词放在错误的位置上。为此,一些研究工作通过改进损失函数来提高非自回归模型的性能。一种做法使用一种新的交叉熵函数
\upcite
{
Ghazvininejad2020AlignedCE
}
,它通过忽略绝对位置、关注相对顺序和词汇匹配来为非自回归模型提供更精确的训练信号。另外,也可以使用基于
$
n
$
-gram的训练目标
\upcite
{
Shao2020MinimizingTB
}
来最小化模型与参考译文之间的
$
n
$
-gram差异。该训练目标在
$
n
$
-gram 的层面上评估预测结果,因此能够建模目标序列之间的依赖关系。
\vspace
{
0.5em
}
...
...
Chapter4/chapter4.tex
查看文件 @
4abb9223
...
...
@@ -532,9 +532,9 @@ His house is on the south bank of the river.
\hline
\rule
{
0pt
}{
10pt
}
One-hot词向量
&
RAE编码
\upcite
{
DBLP:conf/emnlp/SocherPHNM11
}
\\
\rule
{
0pt
}{
10pt
}
Word2Vec词向量
\upcite
{
DBLP:journals/corr/abs-1301-3781
}
&
Doc2Vec向量
\upcite
{
DBLP:conf/icml/LeM14
}
\\
\rule
{
0pt
}{
10pt
}
Prob-fasttext词向量
\upcite
{
DBLP:conf/acl/AthiwaratkunW17
}
&
ELMO预训练句子表示
\upcite
{
DBLP:conf/naacl/PetersNIGCLZ18
}
\\
\rule
{
0pt
}{
10pt
}
Prob-fasttext词向量
\upcite
{
DBLP:conf/acl/AthiwaratkunW17
}
&
ELMO预训练句子表示
\upcite
{
Peters2018DeepCW
}
\\
\rule
{
0pt
}{
10pt
}
GloVe词向量
\upcite
{
DBLP:conf/emnlp/PenningtonSM14
}
&
GPT句子表示
\upcite
{
radford2018improving
}
\\
\rule
{
0pt
}{
10pt
}
ELMO预训练词向量
\upcite
{
DBLP:conf/naacl/PetersNIGCLZ18
}
&
BERT预训练句子表示
\upcite
{
devlin2019bert
}
\\
\rule
{
0pt
}{
10pt
}
ELMO预训练词向量
\upcite
{
Peters2018DeepCW
}
&
BERT预训练句子表示
\upcite
{
devlin2019bert
}
\\
\rule
{
0pt
}{
10pt
}
BERT预训练词向量
\upcite
{
devlin2019bert
}
&
Skip-thought向量
\upcite
{
DBLP:conf/nips/KirosZSZUTF15
}
\\
\end{tabular}
\label
{
tab:4-2
}
...
...
@@ -874,7 +874,7 @@ d&=&t \frac{s}{\sqrt{n}}
\vspace
{
0.5em
}
\end{itemize}
\parinterval
随着深度学习技术的发展,另一种思路是使用表示学习技术生成句子的分布式表示,并在此基础上利用神经网络自动提取高度抽象的句子特征
\upcite
{
DBLP:conf/wmt/KreutzerSR15,DBLP:conf/wmt/MartinsAHK16,DBLP:conf/wmt/ChenTZXZLW17
}
,这样就避免了人工设计特征所带来的时间以及人工代价,同时表示学习所得到的分布式表示可以涵盖更多人工设计难以捕获到的特征,更加全面地反映句子的特点,因此在质量评估任务上也取得了很好的效果
\upcite
{
kreutzer2015quality,DBLP:conf/wmt/ShahLPBBBS15,DBLP:conf/wmt/ScartonBSSS16,DBLP:conf/wmt/AbdelsalamBE16,DBLP:conf/wmt/BasuPN18
,DBLP:conf/wmt/Lo19,DBLP:conf/wmt/YankovskayaTF19
}
。比如,最近的一些工作中大量使用了神经机器翻译模型来获得双语句子的表示结果,并用于质量评估
\upcite
{
DBLP:conf/wmt/Qi19,DBLP:conf/wmt/ZhouZH19,DBLP:conf/wmt/Hokamp17,wang2019niutrans
}
。这样做的好处在于,质量评估可以直接复用机器翻译的模型,从某种意义上降低了质量评估系统开发的代价。此外,随着近几年各种预训练模型的出现,使用预训练模型来获取用于质量评估的句子表示也成为一大流行趋势,这种方法大大减少了质量评估模型自身的训练时间,在该领域内的表现也十分亮眼
\upcite
{
kepler2019unbabel,DBLP:conf/wmt/YankovskayaTF19,DBLP:conf/wmt/KimLKN19
}
。关于表示学习、神经机器翻译、预训练模型的内容在第九章和第十章会有进一步介绍。
\parinterval
随着深度学习技术的发展,另一种思路是使用表示学习技术生成句子的分布式表示,并在此基础上利用神经网络自动提取高度抽象的句子特征
\upcite
{
DBLP:conf/wmt/KreutzerSR15,DBLP:conf/wmt/MartinsAHK16,DBLP:conf/wmt/ChenTZXZLW17
}
,这样就避免了人工设计特征所带来的时间以及人工代价,同时表示学习所得到的分布式表示可以涵盖更多人工设计难以捕获到的特征,更加全面地反映句子的特点,因此在质量评估任务上也取得了很好的效果
\upcite
{
kreutzer2015quality,DBLP:conf/wmt/ShahLPBBBS15,DBLP:conf/wmt/ScartonBSSS16,DBLP:conf/wmt/AbdelsalamBE16,DBLP:conf/wmt/BasuPN18
}
。比如,最近的一些工作中大量使用了神经机器翻译模型来获得双语句子的表示结果,并用于质量评估
\upcite
{
DBLP:conf/wmt/Qi19,DBLP:conf/wmt/ZhouZH19,DBLP:conf/wmt/Hokamp17,wang2019niutrans
}
。这样做的好处在于,质量评估可以直接复用机器翻译的模型,从某种意义上降低了质量评估系统开发的代价。此外,随着近几年各种预训练模型的出现,使用预训练模型来获取用于质量评估的句子表示也成为一大流行趋势,这种方法大大减少了质量评估模型自身的训练时间,在该领域内的表现也十分亮眼
\upcite
{
kepler2019unbabel,DBLP:conf/wmt/YankovskayaTF19,DBLP:conf/wmt/KimLKN19
}
。关于表示学习、神经机器翻译、预训练模型的内容在第九章和第十章会有进一步介绍。
\parinterval
在得到句子表示之后,可以使用质量评估模块对译文质量进行预测。质量评估模型通常由回归算法或分类算法实现:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论