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
a2705ec6
Commit
a2705ec6
authored
Aug 17, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
8.17终审修改
parent
fc76f27b
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
14 行增加
和
14 行删除
+14
-14
Chapter14/chapter14.tex
+3
-3
Chapter3/chapter3.tex
+4
-4
Chapter4/chapter4.tex
+3
-3
Chapter9/chapter9.tex
+4
-4
没有找到文件。
Chapter14/chapter14.tex
查看文件 @
a2705ec6
...
...
@@ -444,7 +444,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
图
\ref
{
fig:14-12
}
对比了自回归翻译模型和简单的非自回归翻译模型。可以看到这种自回归翻译模型可以一次性生成完整的译文。不过,高并行性也带来了翻译品质的下降。例如,对于IWSLT英德等数据,非自回归翻译模型的BLEU值只有个位数,而现在最好的自回归模型的BLEU值已经能够达到30左右。这是因为每个位置词的预测只依赖于源语言句子
$
\seq
{
x
}$
,使得预测不准确。需要注意的是,图
\ref
{
fig:14-12
}
(b)中将位置编码作为非自回归翻译模型解码器的输入只是一个最简单的例子,在真实的系统中,非自回归解码器的输入一般是复制编码器端的输入,即源语言句子词嵌入与位置编码的融合。
\parinterval
图
\ref
{
fig:14-12
}
对比了自回归翻译模型和简单的非自回归翻译模型。可以看到这种自回归翻译模型可以一次性生成完整的译文。不过,高并行性也带来了翻译品质的下降。例如,对于IWSLT英德等数据,非自回归翻译模型的BLEU值只有个位数,而现在最好的自回归
翻译
模型的BLEU值已经能够达到30左右。这是因为每个位置词的预测只依赖于源语言句子
$
\seq
{
x
}$
,使得预测不准确。需要注意的是,图
\ref
{
fig:14-12
}
(b)中将位置编码作为非自回归翻译模型解码器的输入只是一个最简单的例子,在真实的系统中,非自回归解码器的输入一般是复制编码器端的输入,即源语言句子词嵌入与位置编码的融合。
\parinterval
完全独立地对每个词建模,会出现什么问题呢?来看一个例子,将汉语句子“干/得/好/!”翻译成英文,可以翻译成“Good job !”或者“Well done !”。假设生成这两种翻译的概率是相等的,即一半的概率是“Good job !”,另一半的概率是“Well done !”。由于非自回归翻译模型的条件独立性假设,推断时第一个词“Good”和“Well”的概率是差不多大的,如果第二个词“job”和“done”的概率也差不多大,会使得模型生成出“Good done !”或者“Well job !”这样错误的翻译,如图
\ref
{
fig:14-13
}
所示。这便是影响句子质量的关键问题,称之为
{
\small\sffamily\bfseries
{
多峰问题
}}
\index
{
多峰问题
}
(Multimodality Problem)
\index
{
Multimodality Problem
}
\upcite
{
Gu2017NonAutoregressiveNM
}
。如何有效处理非自回归翻译模型中的多峰问题 是提升非自回归翻译模型质量的关键。
...
...
@@ -479,7 +479,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
实际上,使用繁衍率的另一个好处在于可以缓解多峰问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在
翻译
率的作用下,不同单词译文组合的情况变少了,因此多峰问题也就被缓解了。
\parinterval
实际上,使用繁衍率的另一个好处在于可以缓解多峰问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在
繁衍
率的作用下,不同单词译文组合的情况变少了,因此多峰问题也就被缓解了。
\parinterval
另外,在每个解码器层中还新增了额外的位置注意力模块,该模块与其它部分中使用的多头注意力机制相同。其仍然基于
$
\mathbi
{
Q
}$
、
$
\mathbi
{
K
}$
、
$
\mathbi
{
V
}$
之间的计算(见
{
\chaptertwelve
}
),只是把位置编码作为
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
, 解码器端前一层的输出作为
$
\mathbi
{
V
}$
。这种方法提供了更强的位置信息。
...
...
@@ -708,7 +708,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\vspace
{
0.5em
}
\item
目前的翻译模型使用交叉熵损失作为优化函数,这在自回归翻译模型上取得了非常优秀的性能。交叉熵是一个严格的损失函数,每个预测错误的单词所对应的位置都会受到惩罚,即使是编辑距离很小的输出序列
\upcite
{
Ghazvininejad2020AlignedCE
}
。自回归翻译模型会很大程度上避免这种惩罚,因为当前位置的单词是根据先前生成的词得到的,然而非自回归翻译模型无法获得这种信息。如果在预测时漏掉一个单词,就可能会将正确的单词放在错误的位置上。为此,一些研究工作通过改进损失函数来提高非自回归翻译模型的性能。一种做法使用一种新的交叉熵函数
\upcite
{
Ghazvininejad2020AlignedCE
}
,它通过忽略绝对位置、关注相对顺序和词汇匹配来为非自回归翻译模型提供更精确的训练信号。另外,也可以使用基于
$
n
$
-gram的训练目标
\upcite
{
Shao2020MinimizingTB
}
来最小化模型与参考译文之间的
$
n
$
-gram差异。该训练目标在
$
n
$
-gram 的层面上评估预测结果,因此能够建模目标序列单词之间的依赖关系。
\vspace
{
0.5em
}
\item
自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模
\upcite
{
Ma2019FlowSeqNC
}
。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入
\upcite
{
Guo2019NonAutoregressiveNM
}
。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断
\upcite
{
Ran2019GuidingNN
}
。大多数非自回归模型都可以被看作是一种基于隐含变量的模型,因为目标语言单词的并行生成是基于源语言编码器生成的一个(一些)隐含变量。因此,也有很多方法来生成隐含变量,例如,利用自编码生成一个较短的离散化序列,将其作为隐含变量,之后在这个较短的变量上并行生成目标语言序列
\upcite
{
Kaiser2018FastDI
}
。类似的思想也可以用于局部块内的单词并行生成
\upcite
{
DBLP:conf/nips/SternSU18
}
。
\item
自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模
\upcite
{
Ma2019FlowSeqNC
}
。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入
\upcite
{
Guo2019NonAutoregressiveNM
}
。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断
\upcite
{
Ran2019GuidingNN
}
。大多数非自回归
翻译
模型都可以被看作是一种基于隐含变量的模型,因为目标语言单词的并行生成是基于源语言编码器生成的一个(一些)隐含变量。因此,也有很多方法来生成隐含变量,例如,利用自编码生成一个较短的离散化序列,将其作为隐含变量,之后在这个较短的变量上并行生成目标语言序列
\upcite
{
Kaiser2018FastDI
}
。类似的思想也可以用于局部块内的单词并行生成
\upcite
{
DBLP:conf/nips/SternSU18
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
Chapter3/chapter3.tex
查看文件 @
a2705ec6
...
...
@@ -217,7 +217,7 @@ $计算这种切分的概率值。
\label
{
eq:3.2-1
}
\end{eqnarray}
\parinterval
经过充分训练的统计模型
$
\funp
{
P
}
(
\cdot
)
$
就是
我们所说
的分词模型。对于输入的新句子
$
S
$
,通过这个模型找到最佳的分词结果输出。假设输入句子
$
S
$
是“确实现在数据很多”,可以通过列举获得不同切分方式的概率,其中概率最高的切分方式,就是系统的目标输出。
\parinterval
经过充分训练的统计模型
$
\funp
{
P
}
(
\cdot
)
$
就是
本章介绍
的分词模型。对于输入的新句子
$
S
$
,通过这个模型找到最佳的分词结果输出。假设输入句子
$
S
$
是“确实现在数据很多”,可以通过列举获得不同切分方式的概率,其中概率最高的切分方式,就是系统的目标输出。
\parinterval
这种分词方法也被称作基于1-gram语言模型的分词,或全概率分词
\upcite
{
刘挺1998最大概率分词问题及其解法,丁洁2010基于最大概率分词算法的中文分词方法研究
}
。全概率分词最大的优点在于方法简单、效率高,因此被广泛应用在工业界系统里。它本质上就是一个1-gram语言模型,因此可以直接复用
$
n
$
-gram语言模型的训练方法和未登录词处理方法。与传统
$
n
$
-gram语言模型稍有不同的是,分词的预测过程需要找到一个在给定字符串所有可能切分中1-gram语言模型得分最高的切分。因此,可以使用
{
\chaptertwo
}
中所描述的搜索算法实现这个预测过程,也可以使用动态规划方法
\upcite
{
bellman1966dynamic
}
快速找到最优切分结果。由于本节的重点是介绍中文分词的基础方法和统计建模思想,因此不会对相关搜索算法进行进一步介绍,有兴趣的读者可以参考
{
\chaptertwo
}
和本章
\ref
{
sec3:summary
}
节的相关文献做进一步深入研究。
...
...
@@ -378,7 +378,7 @@ $计算这种切分的概率值。
\begin{itemize}
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
隐含状态序列的概率计算
}}
,即给定模型(转移概率和发射概率),根据可见状态序列(抛硬币的结果)计算在该模型下得到这个结果的概率,这个问题的求解需要用到
{
\small\sffamily\bfseries
{
前向
后向算法
}}
\index
{
前向
后向算法
}
(Forward-Backward Algorithm)
\index
{
Forward-Backward Algorithm
}
\upcite
{
baum1970maximization
}
。
\item
{
\small\sffamily\bfseries
{
隐含状态序列的概率计算
}}
,即给定模型(转移概率和发射概率),根据可见状态序列(抛硬币的结果)计算在该模型下得到这个结果的概率,这个问题的求解需要用到
{
\small\sffamily\bfseries
{
前向
-后向算法
}}
\index
{
前向-
后向算法
}
(Forward-Backward Algorithm)
\index
{
Forward-Backward Algorithm
}
\upcite
{
baum1970maximization
}
。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
参数学习
}}
,即给定硬币种类(隐含状态数量),根据多个可见状态序列(抛硬币的结果)估计模型的参数(转移概率),这个问题的求解需要用到EM算法
\upcite
{
1977Maximum
}
。
\vspace
{
0.5em
}
...
...
@@ -753,7 +753,7 @@ s_0 \overset{r_1}{\Rightarrow} s_1 \overset{r_2}{\Rightarrow} s_2 \overset{r_3}{
\end{figure}
%-------------------------------------------
\parinterval
在统计句法分析中,需要对每个推导进行统计建模,于是定义一个模型
$
\funp
{
P
}
(
\cdot
)
$
,对于任意的推导
$
d
$
,都可以用
$
\funp
{
P
}
(
d
)
$
计算出推导
$
d
$
的概率。这样,给定一个输入句子,
我们
可以对所有可能的推导用
$
\funp
{
P
}
(
d
)
$
计算其概率值,并选择概率最大的结果作为句法分析的结果输出(图
\ref
{
fig:3.4-6
}
)。
\parinterval
在统计句法分析中,需要对每个推导进行统计建模,于是定义一个模型
$
\funp
{
P
}
(
\cdot
)
$
,对于任意的推导
$
d
$
,都可以用
$
\funp
{
P
}
(
d
)
$
计算出推导
$
d
$
的概率。这样,给定一个输入句子,可以对所有可能的推导用
$
\funp
{
P
}
(
d
)
$
计算其概率值,并选择概率最大的结果作为句法分析的结果输出(图
\ref
{
fig:3.4-6
}
)。
%-------------------------------------------
\begin{figure}
[htp]
...
...
@@ -871,7 +871,7 @@ r_6: & & \textrm{VP} \to \textrm{VV}\ \textrm{NN} \nonumber
\vspace
{
0.5em
}
\item
在建模方面,本章描述了基于1-gram语言模型的分词、基于上下文无关文法的句法分析等,它们都是基于人工先验知识进行模型设计的思路。也就是,问题所表达的现象被“一步一步”生成出来。这是一种典型的生成式建模思想,它把要解决的问题看作一些观测结果的隐含变量(比如,句子是观测结果,分词结果是隐含在背后的变量),之后通过对隐含变量生成观测结果的过程进行建模,以达到对问题进行数学描述的目的。这类模型一般需要依赖一些独立性假设,假设的合理性对最终的性能有较大影响。相对于生成模型,另一类方法是
{
\small\sffamily\bfseries
{
判别模型
}}
\index
{
判别模型
}
(Discriminative Model)
\index
{
Discriminative Model
}
。本章序列标注内容中提到一些模型就是判别模型,如条件随机场
\upcite
{
lafferty2001conditional
}
。它直接描述了从隐含变量生成观测结果的过程,这样对问题的建模更加直接,同时这类模型可以更加灵活的引入不同的特征。判别模型在自然语言处理中也有广泛应用
\upcite
{
ng2002discriminative,manning2008introduction,berger1996maximum,mitchell1996m,DBLP:conf/acl/OchN02
}
。 在本书的第七章也会使用到判别模型。
\vspace
{
0.5em
}
\item
事实上,本章并没有对分词、句法分析中的预测问题进行深入介绍。比如,如何找到概率最大的分词结果?这个问题的解决可以直接借鉴
{
\chaptertwo
}
中介绍的搜索方法:对于基于
$
n
$
-gram 语言模型的分词方法,可以使用动态规划方法
\upcite
{
huang2008coling
}
进行搜索;在不满足动态规划的使用条件时,可以考虑使用更加复杂的搜索策略,并配合一定的剪枝方法找到最终的分词结果。实际上,无论是基于
$
n
$
-gram 语言模型的分词还是简单的上下文无关文法都有高效的推断方法。比如,
$
n
$
-gram语言模型可以被视为概率有限状态自动机,因此可以直接使用成熟的自动机工具
\upcite
{
mohri2008speech
}
。对于更复杂的句法分析问题,可以考虑使用
{
\small\sffamily\bfseries
{
移进-
规约算法
}}
\index
{
移进-
规约算法
}
(Shift-Reduce Algorithm)
\index
{
Shift-Reduce Algorithm
}
来解决预测问题
\upcite
{
aho1972theory
}
。
\item
事实上,本章并没有对分词、句法分析中的预测问题进行深入介绍。比如,如何找到概率最大的分词结果?这个问题的解决可以直接借鉴
{
\chaptertwo
}
中介绍的搜索方法:对于基于
$
n
$
-gram 语言模型的分词方法,可以使用动态规划方法
\upcite
{
huang2008coling
}
进行搜索;在不满足动态规划的使用条件时,可以考虑使用更加复杂的搜索策略,并配合一定的剪枝方法找到最终的分词结果。实际上,无论是基于
$
n
$
-gram 语言模型的分词还是简单的上下文无关文法都有高效的推断方法。比如,
$
n
$
-gram语言模型可以被视为概率有限状态自动机,因此可以直接使用成熟的自动机工具
\upcite
{
mohri2008speech
}
。对于更复杂的句法分析问题,可以考虑使用
{
\small\sffamily\bfseries
{
移进-
规约算法
}}
\index
{
移进-
规约算法
}
(Shift-Reduce Algorithm)
\index
{
Shift-Reduce Algorithm
}
来解决预测问题
\upcite
{
aho1972theory
}
。
\vspace
{
0.5em
}
\item
从自然语言处理的角度来看,词法分析和句法分析中的很多问题都是序列标注问题,例如本章介绍的分词和命名实体识别。此外序列标注还可以被扩展到词性标注
\upcite
{
brants-2000-tnt
}
、组块识别
\upcite
{
tsuruoka-tsujii-2005-chunk
}
、关键词抽取
\upcite
{
li-etal-2003-news-oriented
}
、词义角色标注
\upcite
{
chomsky1993lectures
}
等任务,本章着重介绍了传统的方法,前沿方法大多与深度学习相结合,感兴趣的读者可以自行了解,其中比较有代表性的使用双向长短时记忆网络对序列进行建模,之后于不同模型进行融合得到最终的结果,例如,与条件随机场相结合的模型(BiLSTM-CRF)
\upcite
{
2015Bidirectional
}
、与卷积神经网络相结合的模型(BiLSTM-CNNs)
\upcite
{
chiu2016named
}
、与简单的Softmax结构相结合的模型
\upcite
{
vzukov2018named
}
等。此外,对于序列标注任务,模型性能很大程度上依赖对输入序列的表示能力,因此基于预训练语言模型的方法也非常流行
\upcite
{
Li2020A
}
,如:BERT
\upcite
{
devlin2019bert
}
、GPT
\upcite
{
radford2018improving
}
、XLM
\upcite
{
conneau2019unsupervised
}
等。
\vspace
{
0.5em
}
...
...
Chapter4/chapter4.tex
查看文件 @
a2705ec6
...
...
@@ -23,7 +23,7 @@
\chapter
{
翻译质量评价
}
\parinterval
人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为
{
\small\sffamily\bfseries
{
译文质量评价
}}
\index
{
译文质量评价
}
(Quality Evaluation of Translation)
\index
{
Quality Evaluation of Translation
}
。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法
{
\small\sffamily\bfseries
{
BLEU
}}
\index
{
BLEU
}
(Bilingual Evaluation Understudy)
\index
{
Bilingual Evaluation Understudy
}
\upcite
{
DBLP:conf/acl/PapineniRWZ02
}
。该方法使得机器系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。
\parinterval
人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为
{
\small\sffamily\bfseries
{
译文质量评价
}}
\index
{
译文质量评价
}
(Quality Evaluation of Translation)
\index
{
Quality Evaluation of Translation
}
。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法
{
\small\sffamily\bfseries
{
BLEU
}}
\index
{
BLEU
}
(Bilingual Evaluation Understudy)
\index
{
Bilingual Evaluation Understudy
}
\upcite
{
DBLP:conf/acl/PapineniRWZ02
}
。该方法使得机器
翻译
系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。
\parinterval
时至今日,译文质量评价方法已经非常丰富,针对不同的使用场景研究人员陆续提出了不同的方法。本章将会对其中的典型方法进行介绍,包括:人工评价、有参考答案自动评价、无参考答案自动评价等。相关方法及概念也会在本章的后续章节中被广泛使用。
...
...
@@ -477,7 +477,7 @@ His house is on the south bank of the river .
\end{figure}
%----------------------------------------------
\parinterval
从图
\ref
{
fig:4-7
}
中可以看出,HyTER方法通过构造同义单元的方式,可以列举出译文中每个片段的所有可能的表
达
方式,从而增大参考答案的数量,图
\ref
{
fig:4-7
}
中的每一条路径都代表一个参考答案。但是这种对参考答案集的编码方式存在问题,同义单元之间的组合往往存在一定的限制关系
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
,使用HyTER方法会导致参考答案集中包含有错误的参考答案。
\parinterval
从图
\ref
{
fig:4-7
}
中可以看出,HyTER方法通过构造同义单元的方式,可以列举出译文中每个片段的所有可能的表
示
方式,从而增大参考答案的数量,图
\ref
{
fig:4-7
}
中的每一条路径都代表一个参考答案。但是这种对参考答案集的编码方式存在问题,同义单元之间的组合往往存在一定的限制关系
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
,使用HyTER方法会导致参考答案集中包含有错误的参考答案。
\begin{example}
将中文“市政府批准了一项新规定”分别翻译为英语和捷克语,使用HyTER构造的参考答案集分别如图
\ref
{
fig:4-8
}
(a)和(b)所示
\upcite
{
DBLP:conf/tsd/BojarMTZ13
}
:
...
...
@@ -773,7 +773,7 @@ d&=&t \frac{s}{\sqrt{n}}
\parinterval
句子级质量评估的目标是生成能够反映译文句子整体质量的标签
\ \dash
\
可以是离散型的表示某种质量等级的标签,也可以是连续型的基于评分的标签。虽然以不同的标准进行评估,同一个译文句子的质量标签可能有所不同,但可以肯定的是句子的最终质量绝不是句子中单词质量的简单累加。因为与词级的质量评估相比,句子级质量评估也会关注是否保留源句的语义、译文的语义是否连贯、译文中的单词顺序是否合理等因素。
\parinterval
句子级质量系统需要根据某种评价标准,通过建立预测模型来生成一个反映句子质量的标签。人们可以根据句子翻译的目的、后编辑的工作难度、是否达到发表要求或是是否能让非母语者读懂等各个角度、各个标准去设定句子级质量评估的标准。句子级质量评估任务有多种形式:
\parinterval
句子级质量
评估
系统需要根据某种评价标准,通过建立预测模型来生成一个反映句子质量的标签。人们可以根据句子翻译的目的、后编辑的工作难度、是否达到发表要求或是是否能让非母语者读懂等各个角度、各个标准去设定句子级质量评估的标准。句子级质量评估任务有多种形式:
\begin{itemize}
\vspace
{
0.5em
}
...
...
Chapter9/chapter9.tex
查看文件 @
a2705ec6
...
...
@@ -88,7 +88,7 @@
\subsubsection
{
3. 深度学习和神经网络方法的崛起
}
\parinterval
21世纪初,随着深度学习浪潮席卷世界,人工神经网络又一次出现在人们的视野中。深度学习的流行源于2006年Hinton等人成功训练了一个
深度信念网络(Deep Belief Network)
,在深度神经网络方法完全不受重视的情况下,大家突然发现深度神经网络完全是一个魔鬼般的存在,可以解决很多当时其他方法无法解决的问题。神经网络方法终于在一次又一次的被否定后,迎来了它的春天。随之针对神经网络和深度学习的一系列研究前赴后继地展开了,延续至今。
\parinterval
21世纪初,随着深度学习浪潮席卷世界,人工神经网络又一次出现在人们的视野中。深度学习的流行源于2006年Hinton等人成功训练了一个
{
\small\bfnew
{
深度信念网络
}}
\index
{
深度信念网络
}
(Deep Belief Network)
\index
{
Deep Belief Network
}
,在深度神经网络方法完全不受重视的情况下,大家突然发现深度神经网络完全是一个魔鬼般的存在,可以解决很多当时其他方法无法解决的问题。神经网络方法终于在一次又一次的被否定后,迎来了它的春天。随之针对神经网络和深度学习的一系列研究前赴后继地展开了,延续至今。
\parinterval
回过头来看,现代深度学习的成功主要有三方面的原因:
...
...
@@ -119,7 +119,7 @@
\subsection
{
为什么需要深度学习
}
\parinterval
深度神经网络提供了一种简单的学习机制,即直接学习输入与输出的关系,通常把这种机制称为
{
\small\bfnew
{
端到端学习
}}
\index
{
端到端学习
}
(End-to-End Learning)
\index
{
End-to-End Learning
}
。与传统方法不同,端到端学习并不需要人工定义特征或者进行过多的先验性假设,所有的学习过程都是由一个模型完成。从外面看这个模型只是建立了一种输入到输出的映射,而这种映射具体是如何形成的完全由模型的结构和参数决定。这样做的最大好处是,模型可以更加“自由”的进行学习。此外,端到端学习也引发了一个新的思考
\ \dash
\
如何表示问题?这也就是所谓的
{
\small\bfnew
{
表示学习
}}
\index
{
表示学习
}
(Representation Learning)
\index
{
Representation Learning
}
问题。在深度学习时代,问题输入和输出的表示已经不再是人类通过简单地总结得到的规律,而是可以让计算机自己进行描述的一种可计算“量”,比如一个实数向量。由于这种表示可以被自动学习,因此也大大
促进
了计算机对语言文字等复杂现象的处理能力。
\parinterval
深度神经网络提供了一种简单的学习机制,即直接学习输入与输出的关系,通常把这种机制称为
{
\small\bfnew
{
端到端学习
}}
\index
{
端到端学习
}
(End-to-End Learning)
\index
{
End-to-End Learning
}
。与传统方法不同,端到端学习并不需要人工定义特征或者进行过多的先验性假设,所有的学习过程都是由一个模型完成。从外面看这个模型只是建立了一种输入到输出的映射,而这种映射具体是如何形成的完全由模型的结构和参数决定。这样做的最大好处是,模型可以更加“自由”的进行学习。此外,端到端学习也引发了一个新的思考
\ \dash
\
如何表示问题?这也就是所谓的
{
\small\bfnew
{
表示学习
}}
\index
{
表示学习
}
(Representation Learning)
\index
{
Representation Learning
}
问题。在深度学习时代,问题输入和输出的表示已经不再是人类通过简单地总结得到的规律,而是可以让计算机自己进行描述的一种可计算“量”,比如一个实数向量。由于这种表示可以被自动学习,因此也大大
提升
了计算机对语言文字等复杂现象的处理能力。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -1109,7 +1109,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}{\mathbi{W}}^{[1]}+{\mathbi{b
\sectionnewpage
\section
{
神经网络的参数训练
}
\parinterval
简单来说,神经网络可以被看作是由变量和函数组成的表达式,例如:
$
{
\mathbi
{
y
}}
=
{
\mathbi
{
x
}}
+
{
\mathbi
{
b
}}
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}
{
\mathbi
{
W
}}
+
{
\mathbi
{
b
}}
)
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
Sigmoid
}}
(
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}{
\mathbi
{
W
}}^{
[
1
]
}
+
{
\mathbi
{
b
}}^{
[
1
]
}
)
{
\mathbi
{
W
}}^{
[
2
]
}
+
{
\mathbi
{
b
}}^{
[
2
]
}
)
$
等等,其中的
$
{
\mathbi
{
x
}}
$
和
$
{
\mathbi
{
y
}}
$
作为输入和输出向量,
${
\mathbi
{
W
}}$
、
${
\mathbi
{
b
}}$
等其他变量作为
{
\small\sffamily\bfseries
{
模型参数
}}
\index
{
模型参数
}
(Model Parameters)
\index
{
Model Parameters
}
。确定了函数表达式和模型参数,也就确定了神经网络模型。通常,表达式的形式需要
系统开发者
设计,而模型参数的数量有时会非常巨大,因此需要自动学习,这个过程也被称为模型学习或训练。为了实现这个目标,通常会准备一定量的带有标准答案的数据,称之为有标注数据。这些数据会用于对模型参数的学习,这也对应了统计模型中的参数估计过程。在机器学习中,一般把这种使用有标注数据进行统计模型参数训练的过程称为
{
\small\sffamily\bfseries
{
有指导的训练
}}
\index
{
有指导的训练
}
或
{
\small\sffamily\bfseries
{
有监督的训练
}}
\index
{
有监督的训练
}
(Supervised Training)
\index
{
Supervised Training
}
。在本章中,如果没有特殊说明,模型训练都是指有监督的训练。那么神经网络内部是怎样利用有标注数据对参数进行训练的呢?
\parinterval
简单来说,神经网络可以被看作是由变量和函数组成的表达式,例如:
$
{
\mathbi
{
y
}}
=
{
\mathbi
{
x
}}
+
{
\mathbi
{
b
}}
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}
{
\mathbi
{
W
}}
+
{
\mathbi
{
b
}}
)
$
、
$
{
\mathbi
{
y
}}
=
{
\textrm
{
Sigmoid
}}
(
{
\textrm
{
ReLU
}}
(
{
\mathbi
{
x
}}{
\mathbi
{
W
}}^{
[
1
]
}
+
{
\mathbi
{
b
}}^{
[
1
]
}
)
{
\mathbi
{
W
}}^{
[
2
]
}
+
{
\mathbi
{
b
}}^{
[
2
]
}
)
$
等等,其中的
$
{
\mathbi
{
x
}}
$
和
$
{
\mathbi
{
y
}}
$
作为输入和输出向量,
${
\mathbi
{
W
}}$
、
${
\mathbi
{
b
}}$
等其他变量作为
{
\small\sffamily\bfseries
{
模型参数
}}
\index
{
模型参数
}
(Model Parameters)
\index
{
Model Parameters
}
。确定了函数表达式和模型参数,也就确定了神经网络模型。通常,表达式的形式需要
开发人员
设计,而模型参数的数量有时会非常巨大,因此需要自动学习,这个过程也被称为模型学习或训练。为了实现这个目标,通常会准备一定量的带有标准答案的数据,称之为有标注数据。这些数据会用于对模型参数的学习,这也对应了统计模型中的参数估计过程。在机器学习中,一般把这种使用有标注数据进行统计模型参数训练的过程称为
{
\small\sffamily\bfseries
{
有指导的训练
}}
\index
{
有指导的训练
}
或
{
\small\sffamily\bfseries
{
有监督的训练
}}
\index
{
有监督的训练
}
(Supervised Training)
\index
{
Supervised Training
}
。在本章中,如果没有特殊说明,模型训练都是指有监督的训练。那么神经网络内部是怎样利用有标注数据对参数进行训练的呢?
\parinterval
为了回答这个问题,可以把模型参数的学习过程看作是一个优化问题,即找到一组参数,使得模型达到某种最优的状态。这个问题又可以被转化为两个新的问题:
...
...
@@ -1513,7 +1513,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
同步更新
}}
\index
{
同步更新
}
(Synchronous Update)
\index
{
Synchronous Update
}
是指所有计算设备完成计算后,统一汇总并更新参数。当所有设备的反向传播算法完成之后同步更新参数,不会出现单个设备单独对参数进行更新的情况。这种方法效果稳定,但是效率比较低,在同步更新时,每一次参数更新都需要所有设备统一开始、统一结束,如果设备的运行速度不一致,那么每一次参数更新都需要等待最慢的设备结束才能开始。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
异步更新
}}
\index
{
异步更新
}
(Asynchronous Update)
\index
{
Asynchronous Update
}
是指每个计算设备可以随时更新参数。不同设备可以随时读取参数的最新值,然后根据当前参数值和分配的训练样本,各自执行反向传播过程并独立更新参数。由于设备间不需要相互等待,这种方法并行度高。但是不同设备读取参数的时间可能不同,会造成不同设备上的参数不同步,导致这种方法不
十分
稳定,有可能无法达到较好的训练结果。
\item
{
\small\sffamily\bfseries
{
异步更新
}}
\index
{
异步更新
}
(Asynchronous Update)
\index
{
Asynchronous Update
}
是指每个计算设备可以随时更新参数。不同设备可以随时读取参数的最新值,然后根据当前参数值和分配的训练样本,各自执行反向传播过程并独立更新参数。由于设备间不需要相互等待,这种方法并行度高。但是不同设备读取参数的时间可能不同,会造成不同设备上的参数不同步,导致这种方法不
太
稳定,有可能无法达到较好的训练结果。
\vspace
{
0.5em
}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论