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
33ea06f6
Commit
33ea06f6
authored
Feb 26, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
1、2、15语法修正 查看合并请求
!1035
parents
9bd78d5a
6aacd2eb
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
46 行增加
和
45 行删除
+46
-45
Chapter1/Figures/figure-zh-sentences-into-en-sentences.tex
+29
-28
Chapter1/chapter1.tex
+10
-10
Chapter15/chapter15.tex
+2
-2
Chapter2/chapter2.tex
+5
-5
没有找到文件。
Chapter1/Figures/figure-zh-sentences-into-en-sentences.tex
查看文件 @
33ea06f6
...
...
@@ -12,10 +12,11 @@
{
\footnotesize
\node
[anchor=north west] (example1) at (0,0)
{
\textbf
{
1:
}
源=什么
\
时候
\
开始
}
;
\node
[anchor=north west] (example1part2) at ([yshift=0.5em]example1.south west)
{
\hspace
{
1em
}
译=
\
When will it start
}
;
\node
[anchor=north west] (example2) at ([yshift=0.1em]example1part2.south west)
{
\textbf
{
2:
}
源=我
\
对
\
他
\
感到
\
高兴
}
;
\node
[anchor=north west] (example2part2) at ([yshift=0.5em]example2.south west)
{
\hspace
{
1em
}
译=
\
I am
happy
with him
}
;
\node
[anchor=north west] (example2) at ([yshift=0.1em]example1part2.south west)
{
\textbf
{
2:
}
源=我
\
对
\
他
\
感到
\
失望
}
;
\node
[anchor=north west] (example2part2) at ([yshift=0.5em]example2.south west)
{
\hspace
{
1em
}
译=
\
I am
disappointed
with him
}
;
\node
[anchor=north west] (example3) at ([yshift=0.1em]example2part2.south west)
{
\hspace
{
1em
}
...
}
;
\node
[anchor=south west] (examplebaselabel) at (example1.north west)
{{
\color
{
ublue
}
资源1:翻译实例库
}}
;
\node
[anchor=north east,opacity=0] (empty) at ([yshift=-5em]example2part2.south east)
{
examplebaselab
}
;
}
}
...
...
@@ -40,7 +41,7 @@
\begin{pgfonlayer}
{
background
}
{
\node
[rectangle,draw=ublue, thick,inner sep=0mm]
[fit = (entry1) (entry2) (entry3) (entry4) (dictionarylabel)]
{}
;
\node
[rectangle,draw=ublue, thick,inner sep=0mm]
[fit = (entry1) (entry2) (entry3) (entry4) (dictionarylabel)
(empty)
]
{}
;
}
\end{pgfonlayer}
...
...
@@ -49,20 +50,20 @@
\begin{scope}
[xshift=2.3in]
{
\footnotesize
\node
[anchor=north west,inner sep=1mm] (w1) at (0,1.7em)
{
我
}
;
\node
[anchor=north west,inner sep=1mm] (w2) at ([xshift=
0.3
em]w1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (w3) at ([xshift=
0.3
em]w2.north east)
{
你
}
;
\node
[anchor=north west,inner sep=1mm] (w4) at ([xshift=
0.3
em]w3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (w5) at ([xshift=
0.3
em]w4.north east)
{
满意
}
;
\node
[anchor=north west,inner sep=1mm] (w2) at ([xshift=
1.05
em]w1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (w3) at ([xshift=
1.05
em]w2.north east)
{
你
}
;
\node
[anchor=north west,inner sep=1mm] (w4) at ([xshift=
1.05
em]w3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (w5) at ([xshift=
1.05
em]w4.north east)
{
满意
}
;
}
\end{scope}
\begin{scope}
[xshift=2.3in,yshift=-0.2in]
{
\footnotesize
\node
[anchor=north west,inner sep=1mm] (c1) at (0,0)
{
我
}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
0.3
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
0.3
em]c2.north east)
{
他
}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
0.3
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
0.3em]c4.north east)
{
高兴
}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
1.05
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
1.05
em]c2.north east)
{
他
}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
1.05
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
1.05em]c4.north east)
{
失望
}
;
}
\end{scope}
...
...
@@ -70,7 +71,7 @@
{
\footnotesize
\node
[anchor=west,inner sep=1mm] (e1) at (0,0)
{
I
}
;
\node
[anchor=west,inner sep=1mm] (e2) at ([xshift=0.3em]e1.east)
{
am
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.3em]e2.east)
{
happy
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.3em]e2.east)
{
disappointed
}
;
\node
[anchor=west,inner sep=1mm] (e4) at ([xshift=0.3em]e3.east)
{
with
}
;
\node
[anchor=west,inner sep=1mm] (e5) at ([xshift=0.3em]e4.east)
{
him
}
;
}
...
...
@@ -94,16 +95,16 @@
{
\draw
[double,->,thick,ublue]
(e3.south)--([yshift=-1.2em]e3.south) node[pos=0.5,right,xshift=0.2em,yshift=0.2em] (step1)
{
\color
{
red
}{
\tiny
{
用“你”替换“他”
}}}
;
\draw
[->,dotted,thick,red]
([xshift=
-0.1
em]entry2.east)..controls +(east:4) and +(west:4)..([yshift=-0.6em,xshift=-0.5em]e3.south) ;
\draw
[->,dotted,thick,red]
([xshift=
0.2
em]entry2.east)..controls +(east:4) and +(west:4)..([yshift=-0.6em,xshift=-0.5em]e3.south) ;
}
\begin{scope}
[xshift=2.3in,yshift=-0.9in]
{
\footnotesize
\node
[anchor=north west,inner sep=1mm] (c1) at (0,0)
{
我
}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
0.3
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
0.3
em]c2.north east)
{
\footnotesize
{{
\color
{
ublue
}
你
}}}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
0.3
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
0.3em]c4.north east)
{
高兴
}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
1.05
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
1.05
em]c2.north east)
{
\footnotesize
{{
\color
{
ublue
}
你
}}}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
1.05
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
1.05em]c4.north east)
{
失望
}
;
}
\end{scope}
...
...
@@ -111,7 +112,7 @@
{
\footnotesize
\node
[anchor=west,inner sep=1mm] (e1) at (0,0)
{
I
}
;
\node
[anchor=west,inner sep=1mm] (e2) at ([xshift=0.3em]e1.east)
{
am
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.3em]e2.east)
{
happy
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.3em]e2.east)
{
disappointed
}
;
\node
[anchor=west,inner sep=1mm] (e4) at ([xshift=0.3em]e3.east)
{
with
}
;
\node
[anchor=west,inner sep=1mm] (e5) at ([xshift=0.3em,yshift=-0.2em]e4.east)
{
\textbf
{{
\color
{
ublue
}
you
}}}
;
}
...
...
@@ -122,28 +123,28 @@
}
{
\draw
[double,->,thick,ublue]
(e3.south)--([yshift=-1.2em]e3.south) node[pos=0.5,right,xshift=0.2em,yshift=0.2em] (step1)
{
\color
{
red
}{
\tiny
{
用“满意”替换“
高兴
”
}}}
;
\draw
[double,->,thick,ublue]
(e3.south)--([yshift=-1.2em]e3.south) node[pos=0.5,right,xshift=0.2em,yshift=0.2em] (step1)
{
\color
{
red
}{
\tiny
{
用“满意”替换“
失望
”
}}}
;
\draw
[->,dotted,thick,red]
([xshift=
-1.2em,yshift=-0.6em]entry3.north
east)..controls +(east:2) and +(west:3)..([yshift=-0.6em,xshift=-0.5em]e3.south) ;
\draw
[->,dotted,thick,red]
([xshift=
0.2em,yshift=-0em]entry3.
east)..controls +(east:2) and +(west:3)..([yshift=-0.6em,xshift=-0.5em]e3.south) ;
}
\begin{scope}
[xshift=2.3in,yshift=-1.6in]
{
\footnotesize
\node
[anchor=north west,inner sep=1mm] (c1) at (0,0)
{
我
}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
0.3
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
0.3
em]c2.north east)
{
你
}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
0.3
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
0.3
em]c4.north east)
{
\footnotesize
{{
\color
{
ublue
}
满意
}}}
;
\node
[anchor=north west,inner sep=1mm] (c2) at ([xshift=
1.05
em]c1.north east)
{
对
}
;
\node
[anchor=north west,inner sep=1mm] (c3) at ([xshift=
1.05
em]c2.north east)
{
你
}
;
\node
[anchor=north west,inner sep=1mm] (c4) at ([xshift=
1.05
em]c3.north east)
{
感到
}
;
\node
[anchor=north west,inner sep=1mm] (c5) at ([xshift=
1.05
em]c4.north east)
{
\footnotesize
{{
\color
{
ublue
}
满意
}}}
;
}
\end{scope}
\begin{scope}
[xshift=2.3in,yshift=-2.0in]
{
\footnotesize
\node
[anchor=west,inner sep=1mm] (e1) at (0,0)
{
I
}
;
\node
[anchor=west,inner sep=1mm] (e2) at ([xshift=0.
3
em]e1.east)
{
am
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.
3
em]e2.east)
{
\textbf
{{
\color
{
ublue
}
satisfied
}}}
;
\node
[anchor=west,inner sep=1mm] (e4) at ([xshift=0.
3
em]e3.east)
{
with
}
;
\node
[anchor=west,inner sep=1mm] (e5) at ([xshift=0.
3
em,yshift=-0.2em]e4.east)
{
you
}
;
\node
[anchor=west,inner sep=1mm] (e2) at ([xshift=0.
7
em]e1.east)
{
am
}
;
\node
[anchor=west,inner sep=1mm] (e3) at ([xshift=0.
7
em]e2.east)
{
\textbf
{{
\color
{
ublue
}
satisfied
}}}
;
\node
[anchor=west,inner sep=1mm] (e4) at ([xshift=0.
7
em]e3.east)
{
with
}
;
\node
[anchor=west,inner sep=1mm] (e5) at ([xshift=0.
7
em,yshift=-0.2em]e4.east)
{
you
}
;
}
\end{scope}
...
...
Chapter1/chapter1.tex
查看文件 @
33ea06f6
...
...
@@ -152,7 +152,7 @@
\parinterval
事物的发展都是螺旋式上升的,机器翻译也是一样。早期基于规则的机器翻译方法需要人来书写规则,虽然对少部分句子具有较高的翻译精度,可是对翻译现象的覆盖度有限,而且对规则或者模板中的噪声非常敏感,系统健壮性差。
\parinterval
上世纪70年代中后期,特别是80年代到90年代初,国家之间往来日益密切,而不同语言之间形成的交流障碍愈发严重,传统的人工作业方式已经远远不能满足需求。与此同时,语料库语言学的发展也为机器翻译提供了新的思路。一方面,随着传统纸质文字资料不断电子化,计算机可读的语料越来越多,这使得人们可以用计算机对语言规律进行统计分析。另一方面,随着可用数据越来越多,用数学模型描述这些数据中的规律并进行推理逐渐成为可能。这也衍生出一类数学建模方法
\ \dash\
{
\small\bfnew
{
数据驱动
}}
\index
{
数据驱动
}
(Data-driven)
\index
{
Data-driven
}
的方法。同时这类方法也成为了随后出现的统计机器翻译的基础,比如,IBM研究人员提出的基于噪声信道模型的5种统计翻译模型
\upcite
{
brown1990statistical,DBLP:journals/coling/BrownPPM94
}
。
\parinterval
上世纪70年代中后期,特别是80年代到90年代初,国家之间往来日益密切,而不同语言之间形成的交流障碍愈发严重,传统的人工作业方式已经远远不能满足需求。与此同时,语料库语言学的发展也为机器翻译提供了新的思路。一方面,随着传统纸质文字资料不断电子化,计算机可读的语料越来越多,这使得人们可以用计算机对语言规律进行统计分析。另一方面,随着可用数据越来越多,用数学模型描述这些数据中的规律并进行推理逐渐成为可能。这也衍生出一类数学建模方法
\ \dash\
{
\small\bfnew
{
数据驱动
}}
\index
{
数据驱动
}
(Data-driven)
\index
{
Data-driven
}
的方法。同时这类方法也成为了随后出现的统计机器翻译的基础,比如,IBM研究人员提出的基于噪声信道模型的5种统计翻译模型
就使用了这类方法
\upcite
{
brown1990statistical,DBLP:journals/coling/BrownPPM94
}
。
\parinterval
基于数据驱动的方法不依赖于人书写的规则,机器翻译的建模、训练和推断都可以自动地从数据中学习。这使得整个机器翻译的范式发生了翻天覆地的变化,比如,日本学者长尾真提出的基于实例的方法
\upcite
{
nagao1984framework,DBLP:conf/coling/SatoN90
}
和统计机器翻译
\upcite
{
brown1990statistical,DBLP:journals/coling/BrownPPM94
}
就是在此期间兴起的。此外,这样的方法使得机器翻译系统的开发代价大大降低。
...
...
@@ -174,11 +174,11 @@
\vspace
{
0.5em
}
\item
第二,神经网络的连续空间模型有更强的表示能力。机器翻译中的一个基本问题是:如何表示一个句子?统计机器翻译把句子的生成过程看作是短语或者规则的推导,这本质上是一个离散空间上的符号系统。深度学习把传统的基于离散化的表示变成了连续空间的表示。比如,用实数空间的分布式表示代替了离散化的词语表示,而整个句子可以被描述为一个实数向量。这使得翻译问题可以在连续空间上描述,进而大大缓解了传统离散空间模型维度灾难等问题。更重要的是,连续空间模型可以用梯度下降等方法进行优化,具有很好的数学性质并且易于实现。
\vspace
{
0.5em
}
\item
第三,深度网络学习算法的发展和
GPU
\index
{
GPU
}
(Graphics Processing Unit)
\index
{
Graphics Processing Unit
}
等并行计算设备为训练神经网络提供了可能。早期的基于神经网络的方法一直没有在机器翻译甚至自然语言处理领域得到大规模应用,其中一个重要的原因是这类方法需要大量的浮点运算,但是以前计算机的计算能力无法达到这个要求。随着GPU等并行计算设备的进步,训练大规模神经网络也变为了可能。现在已经可以在几亿、几十亿,甚至上百亿句对上训练机器翻译系统,系统研发的周期越来越短,进展日新月异。
\item
第三,深度网络学习算法的发展和
{
\small\bfnew
{
图形处理单元
}}
(Graphics Processing Unit
\index
{
Graphics Processing Unit
}
,GPU)
等并行计算设备为训练神经网络提供了可能。早期的基于神经网络的方法一直没有在机器翻译甚至自然语言处理领域得到大规模应用,其中一个重要的原因是这类方法需要大量的浮点运算,但是以前计算机的计算能力无法达到这个要求。随着GPU等并行计算设备的进步,训练大规模神经网络也变为了可能。现在已经可以在几亿、几十亿,甚至上百亿句对上训练机器翻译系统,系统研发的周期越来越短,进展日新月异。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
今天,神经机器翻译已经成为新的范式,与统计机器翻译一同推动了机器翻译技术与应用产品的发展。比如,从世界上著名的机器翻译比赛WMT和CCMT中就可以看出这个趋势。如图
\ref
{
fig:1-5
}
所示,其中左图是WMT
\
19国际机器翻译比赛的参赛队伍的截图,这些参赛队伍基本上都在使用深度学习完成机器翻译的建模。而在WMT
\
19各个项目夺冠系统中(
\ref
{
fig:1-5
}
右图),神经机器翻译也占据了主导地位。
\parinterval
今天,神经机器翻译已经成为新的范式,与统计机器翻译一同推动了机器翻译技术与应用产品的发展。比如,从世界上著名的机器翻译比赛WMT和CCMT中就可以看出这个趋势。如图
\ref
{
fig:1-5
}
所示,其中左图是WMT
\
19国际机器翻译比赛的参赛队伍的截图,这些参赛队伍基本上都在使用深度学习完成机器翻译的建模。而在WMT
\
19各个项目
的
夺冠系统中(
\ref
{
fig:1-5
}
右图),神经机器翻译也占据了主导地位。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -186,7 +186,7 @@
\includegraphics
[scale=0.3]
{
./Chapter1/Figures/figure-wmt-participation.jpg
}
\includegraphics
[scale=0.3]
{
./Chapter1/Figures/figure-wmt-bestresults.jpg
}
\setlength
{
\belowcaptionskip
}{
-1.5em
}
\caption
{
WMT
\
19国际机器翻译大赛(左:WMT
\
19参赛队伍;右:WMT
\
19各项目的最
好
分数)
}
\caption
{
WMT
\
19国际机器翻译大赛(左:WMT
\
19参赛队伍;右:WMT
\
19各项目的最
高
分数)
}
\label
{
fig:1-5
}
\end{figure}
%-------------------------------------------
...
...
@@ -267,7 +267,7 @@
\end{figure}
%-------------------------------------------
\parinterval
图
\ref
{
fig:1-8
}
展示了一个使用转换法进行翻译的实例。这里,利用一个简单的汉译英规则库完成对句子“我对你感到满意”的翻译。当翻译“我”时,从规则库中找到规则1,该规则表示遇到单词“我”就翻译为“I”;类似地,也可以从规则库中找到规则4,该规则表示翻译调序,即将单词“you”放到“be satisfied with”后面。这种通过规则表示单词之间
的对应关系
也为统计机器翻译方法提供了思路。如统计机器翻译中,基于短语的翻译模型使用短语对对原文进行替换,详细描述可以参考
{
\chapterseven
}
。
\parinterval
图
\ref
{
fig:1-8
}
展示了一个使用转换法进行翻译的实例。这里,利用一个简单的汉译英规则库完成对句子“我对你感到满意”的翻译。当翻译“我”时,从规则库中找到规则1,该规则表示遇到单词“我”就翻译为“I”;类似地,也可以从规则库中找到规则4,该规则表示翻译调序,即将单词“you”放到“be satisfied with”后面。这种通过规则表示单词之间
对应关系的方式,
也为统计机器翻译方法提供了思路。如统计机器翻译中,基于短语的翻译模型使用短语对对原文进行替换,详细描述可以参考
{
\chapterseven
}
。
\parinterval
在上述例子中可以发现,规则不仅仅可以翻译句子之间单词的对应,如规则1,还可以表示句法甚至语法之间的对应,如规则6。因此基于规则的方法可以分成多个层次,如图
\ref
{
fig:1-9
}
所示。图中不同的层次表示采用不同的知识来书写规则,进而完成机器翻译过程。对于翻译问题,可以构建不同层次的基于规则的机器翻译系统。这里包括四个层次,分别为:词汇转换、句法转换、语义转换和中间语言层。其中,上层可以继承下层的翻译知识,比如说句法转换层会利用词汇转换层知识。早期基于规则的方法属于词汇转换层。
...
...
@@ -293,12 +293,12 @@
\begin{figure}
[htp]
\centering
\input
{
./Chapter1/Figures/figure-process-of-rule-based-translation
}
\caption
{
基于转换规则的机器翻译过程
}
\caption
{
基于转换规则的机器翻译
的
过程
}
\label
{
fig:1-10
}
\end{figure}
%-------------------------------------------
\parinterval
转换法的目标就是使用规则定义的词法和句法,将源语言句子分解成为一个蕴含语言学标志的结构。如一个汉语句子“她把一束花放在桌上。”,经过词法和句法分析之后可以被表示成如图
\ref
{
fig:1-11
}
所示的结构,这个结构就是图
\ref
{
fig:1-10
}
中的源
语言句子
结构。这种使用语言学提取句子结构化表示,并使用某种规则匹配源语言结构和目标语言结构的方式也为
{
\chaptereight
}
将要介绍的基于语言学句法的模型提供了思路。
\parinterval
转换法的目标就是使用规则定义的词法和句法,将源语言句子分解成为一个蕴含语言学标志的结构。如一个汉语句子“她把一束花放在桌上。”,经过词法和句法分析之后可以被表示成如图
\ref
{
fig:1-11
}
所示的结构,这个结构就是图
\ref
{
fig:1-10
}
中的源
文
结构。这种使用语言学提取句子结构化表示,并使用某种规则匹配源语言结构和目标语言结构的方式也为
{
\chaptereight
}
将要介绍的基于语言学句法的模型提供了思路。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -375,7 +375,7 @@
\parinterval
在实际使用上,
\ref
{
section-1.4
}
章提到的基于规则的方法更多地被使用在受限翻译场景中,比如受限词汇集的翻译。针对基于规则的方法存在的问题,基于实例的机器翻译于上世纪80年代中期被提出
\upcite
{
nagao1984framework
}
。该方法的基本思想是在双语句库中找到与待翻译句子相似的实例,之后对实例的译文进行修改,如对译文进行替换、增加、删除等一系列操作,从而得到最终译文。这个过程可以类比人类学习并运用语言的过程:人会先学习一些翻译实例或者模板,当遇到新的句子时,会用以前的实例和模板作对比,之后得到新的句子的翻译结果。这也是一种举一反三的思想。
\parinterval
图
\ref
{
fig:1-13
}
展示了一个基于实例的机器翻译过程。它利用简单的翻译实例库与翻译词典完成对句子“我对你感到满意”的翻译。首先,使用待翻译句子的源语言端在翻译实例库中进行比较,根据相似度大小找到相似的实例“我对他感到
高兴”。然后,标记实例中不匹配的部分,即“你”和“他”,“满意”和“高兴”。再查询翻译词典得到词“你”和“满意”所对应的翻译结果“you”和“satisfied”,用这两个词分别替换实例中的“him”和“happy
”,从而得到最终译文。
\parinterval
图
\ref
{
fig:1-13
}
展示了一个基于实例的机器翻译过程。它利用简单的翻译实例库与翻译词典完成对句子“我对你感到满意”的翻译。首先,使用待翻译句子的源语言端在翻译实例库中进行比较,根据相似度大小找到相似的实例“我对他感到
失望”。然后,标记实例中不匹配的部分,即“你”和“他”,“满意”和“失望”。再查询翻译词典得到词“你”和“满意”所对应的翻译结果“you”和“satisfied”,用这两个词分别替换实例中的“him”和“disappointed
”,从而得到最终译文。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -425,9 +425,9 @@
\subsection
{
神经机器翻译
}
\parinterval
随着机器学习技术的发展,基于深度学习的神经机器翻译逐渐兴起。自2014年开始,它在短短几年内已经在大部分任务上取得了明显的优势
\upcite
{
NIPS2014
_
5346,bahdanau2014neural,vaswani2017attention,DBLP:journals/corr/GehringAGYD17,DBLP:journals/corr/LuongPM15
}
。在神经机器翻译中,词串被表示成实数向量,即分布式向量表示。
这样,翻译过程并不
是在离散化的单词和短语上进行,而是在实数向量空间上计算。因此与之前的技术相比,它在词序列表示的方式上有着本质的改变。通常,机器翻译可以被看作一个序列到另一个序列的转化。在神经机器翻译中,序列到序列的转化过程可以由
{
\small\bfnew
{
编码器-解码器
}}
\index
{
编码器-解码器
}
(Encoder-Decoder)
\index
{
Encoder-Decoder
}
框架实现。其中,编码器把源语言序列进行编码,并提取源语言中的信息进行分布式表示,之后解码器再把这种信息转换为另一种语言的表达。
\parinterval
随着机器学习技术的发展,基于深度学习的神经机器翻译逐渐兴起。自2014年开始,它在短短几年内已经在大部分任务上取得了明显的优势
\upcite
{
NIPS2014
_
5346,bahdanau2014neural,vaswani2017attention,DBLP:journals/corr/GehringAGYD17,DBLP:journals/corr/LuongPM15
}
。在神经机器翻译中,词串被表示成实数向量,即分布式向量表示。
此时,翻译就不再
是在离散化的单词和短语上进行,而是在实数向量空间上计算。因此与之前的技术相比,它在词序列表示的方式上有着本质的改变。通常,机器翻译可以被看作一个序列到另一个序列的转化。在神经机器翻译中,序列到序列的转化过程可以由
{
\small\bfnew
{
编码器-解码器
}}
\index
{
编码器-解码器
}
(Encoder-Decoder)
\index
{
Encoder-Decoder
}
框架实现。其中,编码器把源语言序列进行编码,并提取源语言中的信息进行分布式表示,之后解码器再把这种信息转换为另一种语言的表达。
\parinterval
图
\ref
{
fig:1-15
}
展示了一个神经机器翻译的实例。首先,通过编码器,源语言序列“我对你感到满意”经过多层神经网络编码生成一个向量表示,即图中的向量(0.2,-1,6,5,0.7,-2)。再将该向量作为输入送到解码器中,解码器把这个向量解码成目标语言序列。注意,目标语言序列的生成是逐词进行的(虽然图中展示的是解码器一次生成了整个序列,但是在具体实现时是由左至右逐个单词地生成目标语译文),
产生某个词的时候依赖之前生成的目标语言的历史信息,直到产生句子结束符为止
。
\parinterval
图
\ref
{
fig:1-15
}
展示了一个神经机器翻译的实例。首先,通过编码器,源语言序列“我对你感到满意”经过多层神经网络编码生成一个向量表示,即图中的向量(0.2,-1,6,5,0.7,-2)。再将该向量作为输入送到解码器中,解码器把这个向量解码成目标语言序列。注意,目标语言序列的生成是逐词进行的(虽然图中展示的是解码器一次生成了整个序列,但是在具体实现时是由左至右逐个单词地生成目标语译文),
即在生成目标序列中的某个词时,该词的生成依赖之前生成的单词
。
%----------------------------------------------
\begin{figure}
[htp]
...
...
Chapter15/chapter15.tex
查看文件 @
33ea06f6
...
...
@@ -688,9 +688,9 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\vspace
{
0.5em
}
\item
类似于标准的Transformer初始化方式,使用Xavier初始化方式来初始化除了词嵌入以外的所有参数矩阵。词嵌入矩阵服从
$
\mathbb
{
N
}
(
0
,d
^{
-
\frac
{
1
}{
2
}}
)
$
的高斯分布,其中
$
d
$
代表词嵌入的维度。
\vspace
{
0.5em
}
\item
对编码器中
自注意力机制的参数矩阵以及前馈神经网络中所有
参数矩阵进行缩放因子为
$
0
.
67
{
L
}^{
-
\frac
{
1
}{
4
}}$
的缩放,
$
L
$
为编码器层数。
\item
对编码器中
部分自注意力机制的参数矩阵以及前馈神经网络的
参数矩阵进行缩放因子为
$
0
.
67
{
L
}^{
-
\frac
{
1
}{
4
}}$
的缩放,
$
L
$
为编码器层数。
\vspace
{
0.5em
}
\item
对解码器中
全部注意力机制的参数矩阵以及前馈神经网络中所有参数矩阵
进行缩放因子为
$
(
9
{
M
}
)
^{
-
\frac
{
1
}{
4
}}$
的缩放,其中
$
M
$
为解码器层数。
\item
对解码器中
部分注意力机制的参数矩阵、前馈神经网络的参数矩阵以及前馈前馈神经网络的嵌入式输入
进行缩放因子为
$
(
9
{
M
}
)
^{
-
\frac
{
1
}{
4
}}$
的缩放,其中
$
M
$
为解码器层数。
\vspace
{
0.5em
}
\end{itemize}
...
...
Chapter2/chapter2.tex
查看文件 @
33ea06f6
...
...
@@ -579,7 +579,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\label
{
eq:2-27
}
\end{eqnarray}
\noindent
其中,
$
V
$
表示词表,
$
|V|
$
为词表中单词的个数,
$
w
$
为词表中的一个词,c表示统计单词或短语出现的次数。有时候,加法平滑方法会将
$
\theta
$
取1,这时称之为加一平滑或是拉普拉斯平滑。这种方法比较容易理解,也比较简单,因此
也往往被用于对系统的快速原型中
。
\noindent
其中,
$
V
$
表示词表,
$
|V|
$
为词表中单词的个数,
$
w
$
为词表中的一个词,c表示统计单词或短语出现的次数。有时候,加法平滑方法会将
$
\theta
$
取1,这时称之为加一平滑或是拉普拉斯平滑。这种方法比较容易理解,也比较简单,因此
常被用于对系统的快速实现上
。
\parinterval
举一个例子。假设在一个英语文档中随机采样一些单词(词表大小
$
|V|
=
20
$
),各个单词出现的次数为:“look”出现4次,“people”出现3次,“am”出现2次,“what”出现1次,“want”出现1次,“do”出现1次。图
\ref
{
fig:2-11
}
给出了在平滑之前和平滑之后的概率分布。
...
...
@@ -803,7 +803,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\parinterval
从词序列建模的角度看,这两类预测问题本质上是一样的。因为,它们都在使用语言模型对词序列进行概率评估。但是,从实现上看,词序列的生成问题更难。因为,它不仅要对所有可能的词序列进行打分,同时要“找到”最好的词序列。由于潜在的词序列不计其数,因此这个“找”最优词序列的过程并不简单。
\parinterval
实际上,生成最优词序列的问题也是自然语言处理中的一大类问题
\ \dash\
{
\small\bfnew
{
序列生成
}}
\index
{
序列生成
}
(Sequence Generation)
\index
{
Sequence Generation
}
。机器翻译就是一个非常典型的序列生成
问题:在机器翻译任务中,需要根据源语言词序列生成与之相对应的目标语言词序列。但是语言模型本身并不能“制造”单词序列的。因此,严格地说,序列生成问题的本质并非让语言模型凭空“生成”序列,而是使用语言模型在所有候选的单词序列中“找出”最佳序列。这个过程对应着经典的
{
\small\bfnew
{
搜索问题
}}
\index
{
搜索问题
}
(Search Problem)
\index
{
Search Problem
}
。下面将着重介绍序列生成背后的建模方法,以及在序列生成
里常用的搜索技术。
\parinterval
实际上,生成最优词序列的问题也是自然语言处理中的一大类问题
\ \dash\
{
\small\bfnew
{
序列生成
}}
\index
{
序列生成
}
(Sequence Generation)
\index
{
Sequence Generation
}
。机器翻译就是一个非常典型的序列生成
任务:在机器翻译任务中,需要根据源语言词序列生成与之相对应的目标语言词序列。但是语言模型本身并不能“制造”单词序列的。因此,严格地说,序列生成任务的本质并非让语言模型凭空“生成”序列,而是使用语言模型在所有候选的单词序列中“找出”最佳序列。这个过程对应着经典的
{
\small\bfnew
{
搜索问题
}}
\index
{
搜索问题
}
(Search Problem)
\index
{
Search Problem
}
。下面将着重介绍序列生成任务背后的建模方法,以及在序列生成任务
里常用的搜索技术。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -811,7 +811,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\subsection
{
搜索问题的建模
}
\parinterval
基于语言模型的序列生成
问题
可以被定义为:在无数任意排列的单词序列中找到概率最高的序列。这里单词序列
$
w
=
w
_
1
w
_
2
\ldots
w
_
m
$
的语言模型得分
$
\funp
{
P
}
(
w
)
$
度量了这个序列的合理性和流畅性。在序列生成任务中,基于语言模型的搜索问题可以被描述为:
\parinterval
基于语言模型的序列生成
任务
可以被定义为:在无数任意排列的单词序列中找到概率最高的序列。这里单词序列
$
w
=
w
_
1
w
_
2
\ldots
w
_
m
$
的语言模型得分
$
\funp
{
P
}
(
w
)
$
度量了这个序列的合理性和流畅性。在序列生成任务中,基于语言模型的搜索问题可以被描述为:
\begin{eqnarray}
\hat
{
w
}
=
\argmax
_{
w
\in
\chi
}
\funp
{
P
}
(w)
\label
{
eq:2-42
}
...
...
@@ -832,7 +832,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\end{figure}
%-------------------------------------------
\parinterval
在这种序列生成
方式的基础上,实现搜索通常有两种方法
\ \dash\
深度优先遍历和宽度优先遍历
\upcite
{
DBLP:books/mg/CormenLR89
}
。在深度优先遍历中,每次从词表中可重复地选择一个单词
,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前词表中未被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词,而是枚举所有单词。
\parinterval
在这种序列生成
策略的基础上,实现搜索通常有两种方法
\ \dash\
深度优先遍历和宽度优先遍历
\upcite
{
DBLP:books/mg/CormenLR89
}
。在深度优先遍历中,每次从词表中选择一个单词(可重复)
,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前词表中未被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词,而是枚举所有单词。
\parinterval
有一个简单的例子。假设词表只含两个单词
$
\{
a, b
\}
$
,从<sos>开始枚举所有候选,有三种可能:
\begin{eqnarray}
...
...
@@ -916,7 +916,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\end{figure}
%-------------------------------------------
\parinterval
这样,语言模型的打分与解空间树的遍历就融合在一起了。于是,序列生成
的问题
可以被重新描述为:寻找所有单词序列组成的解空间树中权重总和最大的一条路径。在这个定义下,前面提到的两种枚举词序列的方法就是经典的
{
\small\bfnew
{
深度优先搜索
}}
\index
{
深度优先搜索
}
(Depth-first Search)
\index
{
Depth-first Search
}
和
{
\small\bfnew
{
宽度优先搜索
}}
\index
{
宽度优先搜索
}
(Breadth-first Search)
\index
{
Breadth-first Search
}
的雏形
\upcite
{
even2011graph,tarjan1972depth
}
。在后面的内容中,从遍历解空间树的角度出发,可以对这些原始的搜索策略的效率进行优化。
\parinterval
这样,语言模型的打分与解空间树的遍历就融合在一起了。于是,序列生成
任务
可以被重新描述为:寻找所有单词序列组成的解空间树中权重总和最大的一条路径。在这个定义下,前面提到的两种枚举词序列的方法就是经典的
{
\small\bfnew
{
深度优先搜索
}}
\index
{
深度优先搜索
}
(Depth-first Search)
\index
{
Depth-first Search
}
和
{
\small\bfnew
{
宽度优先搜索
}}
\index
{
宽度优先搜索
}
(Breadth-first Search)
\index
{
Breadth-first Search
}
的雏形
\upcite
{
even2011graph,tarjan1972depth
}
。在后面的内容中,从遍历解空间树的角度出发,可以对这些原始的搜索策略的效率进行优化。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论