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
f0282b7e
Commit
f0282b7e
authored
Dec 07, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates (sec 18, incremental training and small models)
parent
36e9f74b
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
31 行增加
和
12 行删除
+31
-12
Chapter18/chapter18.tex
+31
-12
没有找到文件。
Chapter18/chapter18.tex
查看文件 @
f0282b7e
...
...
@@ -23,9 +23,9 @@
\chapter
{
机器翻译应用技术
}
\parinterval
机器翻译的应用场景众多,特别是随着翻译品质的不断提升,有越来越多的机器翻译需求被挖掘出来。但是,仅凭一个翻译引擎是无法满足这些需求的。应用机器翻译时,需要“额外”考虑很多因素,例如,数据加工方式、交互方式、应用的领域等,甚至机器翻译模型也要经过改造才能适应到不同的场景中。
从某种意义上说,机器翻译应用技术是机器翻译走向实用的必要手段,可以被看做是机器翻译理论和模型的进一步延伸。
\parinterval
机器翻译的应用场景众多,特别是随着翻译品质的不断提升,有越来越多的机器翻译需求被挖掘出来。但是,仅凭一个翻译引擎是无法满足这些需求的。应用机器翻译时,需要“额外”考虑很多因素,例如,数据加工方式、交互方式、应用的领域等,甚至机器翻译模型也要经过改造才能适应到不同的场景中。
\parinterval
本章将重点介绍机器翻译应用中所面临的问题,以及解决
问题可以采用的策略。本章所涉及的内容较为广泛,一方面会大量使用本书前十七章的模型和方法,另一方面也会介绍新的技术手段。最终,本章会结合机器翻译的特点展示机器翻译可能的应用场景
。
\parinterval
本章将重点介绍机器翻译应用中所面临的问题,以及解决
这些问题可以采用的策略。本章所涉及的内容较为广泛,一方面会大量使用本书前十七章的模型和方法,另一方面也会介绍新的技术手段。最终,本章会结合机器翻译的特点展示机器翻译可能的应用场景,并进行一些对机器翻译未来的思考
。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -33,7 +33,7 @@
\section
{
机器翻译的应用并不简单
}
\parinterval
机器翻译一直是自然语言处理的热点,无论从评测比赛的结果,还是论文发表数量上看,机器翻译的研究可谓火热。但是,客观的说,我们离机器翻译完美的应用还有相当的距离。这主要是因为,
需求的多样化需要更多技术的融合,是一项复杂的系统工程,而机器翻译研究大多是对局部模型和方法的调整。这也会造成一个现象,很多论文里报道的技术方法可能无法直接应用于真实场景的系统。当然,这是一个复杂的问题,也并不是本章所要讨论的。
这里更加关注如何对具体的机器翻译应用问题进行求解。有几方面挑战:
\parinterval
机器翻译一直是自然语言处理的热点,无论从评测比赛的结果,还是论文发表数量上看,机器翻译的研究可谓火热。但是,客观的说,我们离机器翻译完美的应用还有相当的距离。这主要是因为,
成熟的系统需要很多技术的融合。因此,机器翻译系统研发也是一项复杂的系统工程。而机器翻译研究大多是对局部模型和方法的调整,这也会造成一个现象,很多论文里报道的技术方法可能无法直接应用于真实场景的系统。当然,也并不是本书所要讨论的,
这里更加关注如何对具体的机器翻译应用问题进行求解。有几方面挑战:
\begin{itemize}
\vspace
{
0.5em
}
...
...
@@ -47,7 +47,7 @@
\vspace
{
0.5em
}
\end{itemize}
\parinterval
下面本章将
就一些具体技术问题展开讨论,旨在给机器翻译应用提供一些可落地的思路
。
\parinterval
下面本章将
重点对机器翻译应用中的若干技术问题展开讨论,旨在给机器翻译应用提供一些可落地的思路。之后,本章也会结合笔者的经验,对机器翻译的方向展开一些讨论
。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -67,19 +67,19 @@
\parinterval
这时就产生一个问题,能否使用新的数据让系统变得更好?简单直接的方式是,将新的数据和原始数据混合重新训练系统,但是使用全量数据训练模型的周期很长,这种方法成本的很高。而且,新的数据可能是不断产生的,甚至是流式的。这时就需要快速、低成本的方式对模型进行更新。
\parinterval
增量训练就是满足上述需求的一种方法。本质上来说,神经机器翻译中使用的
基于小批次的模型更新就是典型的增量训练方法,其基本思想是:使用少量样本对模型进行更新,这个更新的代价并不高,而且可以反复不断执行。当新的数据到来时,可以把这些新的数据作为训练数据,把当前的模型作为初始模型。当新增加的数据量不大的时候
(比如,几万句对),训练的代价非常低。
\parinterval
增量训练就是满足上述需求的一种方法。本质上来说,神经机器翻译中使用的
随机梯度下降方法就是典型的增量训练方法,其基本思想是:每次选择一个样本对模型进行更新,这个过程反复不断执行,每次模型更新都是一次增量训练。当拥有由多个样本构成的新数据时,可以把这些新样本作为训练数据,把当前的模型作为初始模型,之后正常执行机器翻译的训练过程即可。如果新增加的数据量不大
(比如,几万句对),训练的代价非常低。
\parinterval
这里面的一个问题是,
原始训练数据量巨大,因此得到的基础模型相对稳定。新的数据虽然能代表一定的翻译现象,但是如果过分
依赖新数据进行更新,会使模型产生对新数据的过分拟合,进而造成无法很好地处理新数据之外的样本。这也可以被看做是一种灾难性遗忘的问题(
{
\color
{
red
}
参考文献!
}
),即:模型过分注重对新样本的拟合,丧失了旧模型的一部分能力。解决这个问题,有几种思路:
\parinterval
这里面的一个问题是,
新的数据虽然能代表一部分的翻译现象,但是如果仅仅
依赖新数据进行更新,会使模型产生对新数据的过分拟合,进而造成无法很好地处理新数据之外的样本。这也可以被看做是一种灾难性遗忘的问题(
{
\color
{
red
}
参考文献!
}
),即:模型过分注重对新样本的拟合,丧失了旧模型的一部分能力。解决这个问题,有几种思路:
\begin{itemize}
\vspace
{
0.5em
}
\item
数据混合。在增量训练时,除了使用新的数据,再混合一定量的旧数据,混合的比例可以训练的代价进行调整。这样,模型相当于在全量数据的一个采样结果上更新。
\item
数据混合。在增量训练时,除了使用新的数据,再混合一定量的旧数据,混合的比例可以训练的代价进行调整。这样,模型相当于在全量数据的一个采样结果上
进行
更新。
\vspace
{
0.5em
}
\item
模型插值(
{
\color
{
red
}
参考文献!
}
)。在增量训练之后,将新模型与旧模型进行插值。
\vspace
{
0.5em
}
\item
多目标训练(
{
\color
{
red
}
参考文献!
}
)。在增量训练时,除了在新数据上
的损失函数之外,可以再定义一个在旧数据上的损失,这样确保模型可以在两个数据上都有较好的表现。另一种方案是引入正则化项,控制新得到的
模型的参数不会偏离旧模型的参数太远。
\item
多目标训练(
{
\color
{
red
}
参考文献!
}
)。在增量训练时,除了在新数据上
定义损失函数之外,可以再定义一个在旧数据上的损失函数,这样确保模型可以在两个数据上都有较好的表现。另一种方案是引入正则化项,避免新
模型的参数不会偏离旧模型的参数太远。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -108,32 +108,51 @@
\section
{
小设备机器翻译
}
\parinterval
在机器翻译研究中,一般会假设计算资源是充足的。但是,在很多应用场景中,机器翻译使用的计算资源是非常
受限的,比如,一些离线设备上没有GPU处理器,而且CPU的处理能力也很低,甚至内存也非常有限。这时让模型变得更小、系统变得更快就成为了重要
需求。
\parinterval
在机器翻译研究中,一般会假设计算资源是充足的。但是,在很多应用场景中,机器翻译使用的计算资源是非常
有限的,比如,一些离线设备上没有GPU处理器,而且CPU的处理能力也很弱,甚至内存也非常有限。这时,让模型变得更小、系统变得更快就成为了一个重要的
需求。
\parinterval
本书中已经讨论了大量的技术方法,可用于小设备
机器翻译系统
,例如:
\parinterval
本书中已经讨论了大量的技术方法,可用于小设备
上的机器翻译
,例如:
\begin{itemize}
\vspace
{
0.5em
}
\item
知识蒸馏(
{
\chapterthirteen
}
)。这种方法可以有效地把翻译能力从大模型迁移到小模型。
\vspace
{
0.5em
}
\item
低精度存储及计算(
{
\chapterfourteen
}
)。可以使用量化的方式将模型压缩,同时使用整数等数据类型
进行计算也非常适合CPU等设备
。
\item
低精度存储及计算(
{
\chapterfourteen
}
)。可以使用量化的方式将模型压缩,同时使用整数等数据类型
也非常适合在CPU等设备上执行
。
\vspace
{
0.5em
}
\item
轻量模型结构(
{
\chapterfourteen
}
和
{
\chapterfifteen
}
)。对机器翻译模型的局部结构进行优化也是非常有效的手段,比如,使用更加轻量的卷积计算模块,或者使用深编码器-浅解码器等结构等。
\vspace
{
0.5em
}
\item
面向设备的结构学习(
{
\chapterfifteen
}
)。可以基于设备的存储及延时作为目标函数,自动搜索高效的翻译模型结构。
\item
面向设备的结构学习(
{
\chapterfifteen
}
)。可以把设备的存储及延时作为目标函数的一部分,自动搜索高效的翻译模型结构。
\vspace
{
0.5em
}
\item
动态适应性模型(引用:王强emnlp findings,还有Adaptive neural networks for fast test-time prediction,Multi-scale dense networks for resource efficient image classification)。让模型可以动态调整大小或者计算规模,以达到在不同设备上平衡延时和精度的目的。比如,可以根据延时的要求,动态生成合适深度的神经网络模型进行翻译。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
此外,机器翻译系统的工程实现方式也是十分重要的,例如,编译器的选择、底层线性代数库的选择等等。有时候,使用与运行设备相匹配的编译器
\footnote
{
以神经机器翻译为例,张量计算大多使用C++等语言编写,因此编译器与设备的适配程度对程序的执行效率影响很大。
}
,会带来明显的性能提升。如果希望追求更加极致的性能,甚至需要对一些热点模块进行修改。例如,在神经机器翻译中,矩阵乘法就是一个非常耗时的部分。但是这部分计算又与设备、矩阵的形状有很大关系。对于不同设备,根据不同的矩阵形状可以设计相应的矩阵乘法算法。不过,这部分工作对系统开发和硬件指令的使用水平要求较高。
\parinterval
另一个工程问题是,在很多系统中,机器翻译模块并不是单独执行,而是与其他的模块并发执行。这时,由于多个计算密集型任务存在竞争,处理器要进行更多的上下文切换,会造成程序变慢。比如,机器翻译和语音识别两个模块一起运行时
{
\footnote
{
在一些语音翻译场景中,由于采用了语音识别和翻译异步执行的方式,两个程序可能会并发。
}}
,机器翻译的速度会有较明显的下降。对于这种情况,需要设计更好的调度机制。而且在一些同时具有CPU和GPU的设备上,可以考虑合理调度CPU和GPU的资源,增加两种设备可并行处理的内容,避免在某个处理器上的拥塞。
\parinterval
除了运行速度,模型过大也是限制其在小设备上运行的障碍。在模型体积上,神经机器翻译具有天然的优势。因此,在对模型规模有苛刻要求的场景中,神经机器翻译是不二的选择。通过量化、剪枝、参数共享等方式,还可以将模型压缩一个数量级以上。
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\section
{
机器翻译系统部署
}
单模型多语言系统
单卡多语言
技术问题:
显存优化
batching策略(长度近似的放到一起,但是目标端长度无法预测,增加了难度)
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论