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
a87caa3e
Commit
a87caa3e
authored
Dec 07, 2020
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
13章前言 查看合并请求
!557
parents
06a447c2
143831e3
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
23 行增加
和
3 行删除
+23
-3
Chapter13/chapter13.tex
+23
-3
没有找到文件。
Chapter13/chapter13.tex
查看文件 @
a87caa3e
...
...
@@ -23,6 +23,22 @@
\chapter
{
神经机器翻译模型推断
}
\parinterval
神经机器翻译的一个关键步骤是对神经网络进行训练。也就是,在双语平行数据上优化训练目标函数,使模型参数自动调整到一个“最佳”状态,从而可以对新的句子进行翻译。通常,训练过程对模型性能的好坏起到关键性作用。因此,对模型训练方法的研究也机器翻译领域的重要研究方向,其中的很多发现也对其它自然语言处理任务有很好的借鉴意义。
\parinterval
神经机器翻译模型训练面临着一些挑战,例如:
\begin{itemize}
\vspace
{
0.5em
}
\item
如何对大容量模型进行有效的训练?例如,避免过拟合问题,并让模型更加健壮,同时有效地处理更大的词汇表;
\vspace
{
0.5em
}
\item
如何设计更好的模型训练策略?例如,在训练中更好地利用机器翻译评价指标,同时选择对翻译更有价值的样本进行参数更新;
\vspace
{
0.5em
}
\item
如何让模型学习到的“知识”在模型之间迁移?例如,把一个“强”模型的能力迁移到一个“弱”模型上,而这种能力可能是无法通过直接训练“弱”模型得到的。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
本章将就这些问题展开讨论,内容会覆盖开放词表、正则化、对抗样本训练、最小风险训练、知识蒸馏等多个主题。需要注意的是,神经机器翻译模型训练涉及的内容十分广泛。很多情况下,模型训练问题会和建模问题强相关。因此,本章的内容主要集中在相对独立的模型训练问题上。在后续章节中,仍然会有模型训练方面的介绍,其主要针对机器翻译的特定主题,如极深神经网络训练、无指导训练等。
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
...
...
@@ -52,9 +68,11 @@
\parinterval
如果要覆盖更多的翻译现象,词表会不断膨胀,并带来两个问题:
\begin{itemize}
\vspace
{
0.5em
}
\item
数据稀疏。很多不常见的低频词包含在词表中,而这些低频词的分布式表示很难得到充分学习;
\vspace
{
0.5em
}
\item
词向量矩阵的增大。这会增加计算和存储的负担。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
理想情况下,机器翻译应该是一个
{
\small\bfnew
{
开放词表
}}
\index
{
开放词表
}
(Open-Vocabulary)
\index
{
Open-Vocabulary
}
的翻译任务。也就是,不论测试数据中包含什么样的词,机器翻译系统都应该能够正常翻译。但是,现实的情况是,即使不断扩充词表,也不可能覆盖所有可能的单词。这时就会出现OOV问题(集外词问题)。这个问题在使用受限词表时会更加严重,因为低频词和未见过的词都会被看作OOV单词。这时会将这些单词用<UNK>代替。通常,数据中<UNK>的数量会直接影响翻译性能,过多的<UNK>会造成欠翻译、结构混乱等问题。因此神经机器翻译需要额外的机制解决大词表和OOV问题。
...
...
@@ -128,11 +146,13 @@
\parinterval
图
\ref
{
fig:7-9
}
给出了BPE算法执行的实例。在执行合并操作时,需要考虑不同的情况。假设词表中存在子词``ab''和``cd'',此时要加入子词``abcd''。可能会出现如下的情况:
\begin{itemize}
\vspace
{
0.5em
}
\item
若``ab''、``cd''、``abcd''完全独立,彼此的出现互不影响,将``abcd''加入词表,词表数目
$
+
1
$
;
\vspace
{
0.5em
}
\item
若``ab''和``cd''必同时出现则词表中加入``abcd'',去除``ab''和``cd'',词表数目
$
-
1
$
。这个操作是为了较少词表中的冗余;
\vspace
{
0.5em
}
\item
若出现``ab'',其后必出现``cd'',但是``cd''却可以作为独立的子词出现,则将``abcd''加入词表,去除``ab'',反之亦然,词表数目不变。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
在得到了子词词表后,便需要对单词进行切分。BPE要求从较长的子词开始替换。首先,对子词词表按照字符长度从大到小进行排序。然后,对于每个单词,遍历子词词表,判断每个子词是不是当前词的子串,若是则进行替换切分。将单词中所有的子串替换为子词后,如果仍有子串未被替换,则将其用<UNK>代替,如图
\ref
{
fig:7-10
}
。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论