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
1e80d9a6
Commit
1e80d9a6
authored
Feb 01, 2021
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'caorunzhe' 到 'master'
Caorunzhe 查看合并请求
!1003
parents
3e1425bc
c99d282e
显示空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
73 行增加
和
71 行删除
+73
-71
Chapter13/Figures/figure-curriculum-learning-framework.tex
+4
-4
Chapter14/chapter14.tex
+2
-2
Chapter15/Figures/figure-dynamic-linear-aggregation-network-structure.tex
+1
-1
Chapter15/Figures/figure-encoder-structure-of-transformer-model-optimized-by-nas.tex
+3
-3
Chapter15/Figures/figure-evolution-and-change-of-ml-methods.tex
+1
-1
Chapter15/Figures/figure-main-flow-of-neural-network-structure-search.tex
+2
-2
Chapter15/Figures/figure-multi-task-structure.tex
+1
-1
Chapter15/Figures/figure-structure-search-based-on-gradient-method.tex
+2
-2
Chapter15/Figures/figure-structure-search-based-on-reinforcement-learning.tex
+1
-1
Chapter15/chapter15.tex
+26
-24
Chapter16/chapter16.tex
+5
-4
Chapter17/chapter17.tex
+6
-6
Chapter2/Figures/figure-the-dice-game-model.tex
+6
-6
Chapter2/chapter2.tex
+9
-9
Chapter5/chapter5.tex
+2
-2
Chapter6/chapter6.tex
+0
-1
Chapter7/chapter7.tex
+1
-1
Chapter8/chapter8.tex
+1
-1
没有找到文件。
Chapter13/Figures/figure-curriculum-learning-framework.tex
查看文件 @
1e80d9a6
...
...
@@ -4,10 +4,10 @@
\tikzstyle
{
node
}
=[inner sep=0mm, draw,thick,minimum height=3em,minimum width=6em,rounded corners=5pt]
\node
[anchor=west,node,fill=ugreen!
15
]
(n1) at (0,0)
{
训练集
}
;
\node
[anchor=west,node,fill=yellow!
15
]
(n2) at ([xshift=4em,yshift=0em]n1.east)
{
难度评估器
}
;
\node
[anchor=west,node,fill=red!
15
]
(n3) at ([xshift=4em,yshift=0em]n2.east)
{
训练调度器
}
;
\node
[anchor=west,node,fill=blue!
15
]
(n4) at ([xshift=4em,yshift=0em]n3.east)
{
模型训练器
}
;
\node
[anchor=west,node,fill=ugreen!
30
]
(n1) at (0,0)
{
训练集
}
;
\node
[anchor=west,node,fill=yellow!
30
]
(n2) at ([xshift=4em,yshift=0em]n1.east)
{
难度评估器
}
;
\node
[anchor=west,node,fill=red!
30
]
(n3) at ([xshift=4em,yshift=0em]n2.east)
{
训练调度器
}
;
\node
[anchor=west,node,fill=blue!
30
]
(n4) at ([xshift=4em,yshift=0em]n3.east)
{
模型训练器
}
;
\draw
[->,very thick] ([xshift=0em,yshift=0em]n1.east) -- ([xshift=0em,yshift=0em]n2.west);
\draw
[->,very thick] ([xshift=0em,yshift=0em]n2.east) -- ([xshift=0em,yshift=0em]n3.west);
...
...
Chapter14/chapter14.tex
查看文件 @
1e80d9a6
...
...
@@ -680,8 +680,6 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
%----------------------------------------------------------------------
\parinterval
有了词格这样的结构,多模型集成又有了新的思路。首先,可以将多个模型的译文融合为词格。注意,这个词格会包含这些模型无法生成的完整译文句子。之后,用一个更强的模型在词格上搜索最优的结果。这个过程有可能找到一些“新”的译文,即结果可能是从多个模型的结果中重组而来的。词格上的搜索模型可以基于多模型的融合,也可以使用一个简单的模型,这里需要考虑的是将神经机器翻译模型适应到词格上进行推断
\upcite
{
DBLP:conf/aaai/SuTXJSL17
}
。其过程基本与原始的模型推断没有区别,只是需要把模型预测的结果附着到词格中的每条边上,再进行推断。
\parinterval
图
\ref
{
fig:14-11
}
对比了不同模型集成方法的区别。从系统开发的角度看,假设选择和模型预测融合的复杂度较低,适合快速开发原型系统,而且性能稳定。译文重组需要更多的模块,系统调试的复杂度较高,但是由于看到了更大的搜索空间,因此系统性能提升的潜力较大
\footnote
{
一般来说词格上的Oracle 要比
$
n
$
-best译文上的Oracle 的质量高。
}
。
%----------------------------------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -691,6 +689,8 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval
图
\ref
{
fig:14-11
}
对比了不同模型集成方法的区别。从系统开发的角度看,假设选择和模型预测融合的复杂度较低,适合快速开发原型系统,而且性能稳定。译文重组需要更多的模块,系统调试的复杂度较高,但是由于看到了更大的搜索空间,因此系统性能提升的潜力较大
\footnote
{
一般来说词格上的Oracle 要比
$
n
$
-best译文上的Oracle 的质量高。
}
。
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
...
...
Chapter15/Figures/figure-dynamic-linear-aggregation-network-structure.tex
查看文件 @
1e80d9a6
...
...
@@ -20,7 +20,7 @@
\node
[anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=purple!30,rounded corners=5pt,thick] (n9) at ([xshift=0em,yshift=-1em]n8.south)
{$
\mathbi
{
X
}
\ \quad
\mathbi
{
h
}^
1
\ \quad
\mathbi
{
h
}^
2
\quad
\ldots
\quad\ \mathbi
{
h
}^
l
$}
;
\node
[anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=teal!30,rounded corners=5pt,thick] (n10) at ([xshift=0em,yshift=-2em]n9.south)
{
权重累加
\
{
\red
$
\mathbi
{
g
}^
l
$}
}
;
\node
[anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=teal!30,rounded corners=5pt,thick] (n10) at ([xshift=0em,yshift=-2em]n9.south)
{
权重累加
\
$
\mathbi
{
g
}^
l
$
}
;
\node
[anchor=west,rectangle, inner sep=0mm,minimum height=1.2em, rounded corners=5pt,thick] (n11) at ([xshift=0em,yshift=-4.5em]n1.west)
{
聚合网络
}
;
...
...
Chapter15/Figures/figure-encoder-structure-of-transformer-model-optimized-by-nas.tex
查看文件 @
1e80d9a6
...
...
@@ -4,7 +4,7 @@
%left
\begin{scope}
\foreach
\x
/
\d
in
{
1/2em, 2/8em
}
\node
[unit,fill=
yellow
!30]
at (0,
\d
) (ln
_
\x
)
{
层标准化
}
;
\node
[unit,fill=
orange
!30]
at (0,
\d
) (ln
_
\x
)
{
层标准化
}
;
\foreach
\x
/
\d
in
{
1/4em
}
\node
[unit,fill=green!30]
at (0,
\d
) (sa
_
\x
)
{
8头自注意力:512
}
;
...
...
@@ -44,7 +44,7 @@
\foreach
\x
/
\d
in
{
1/2em, 2/8em, 3/16em
}
\node
[unit,fill=
yellow
!30]
at (0,
\d
) (ln
_
\x
)
{
层标准化
}
;
\node
[unit,fill=
orange
!30]
at (0,
\d
) (ln
_
\x
)
{
层标准化
}
;
\foreach
\x
/
\d
in
{
1/6em, 2/14em, 3/20em
}
\node
[draw,circle,minimum size=1em,inner sep=1pt]
at (0,
\d
) (add
_
\x
)
{
\scriptsize\bfnew
{
+
}}
;
...
...
@@ -83,7 +83,7 @@
\node
[minimum size=0.8em,inner sep=0pt,rounded corners=1pt,draw,fill=blue!30]
(act) at (8em, 20em)
{}
;
\node
[anchor=west,font=\footnotesize]
at ([xshift=0.1em]act.east)
{
激活函数
}
;
\node
[anchor=north,minimum size=0.8em,inner sep=0pt,rounded corners=1pt,draw,fill=
yellow
!30]
(nor) at ([yshift=-0.6em]act.south)
{}
;
\node
[anchor=north,minimum size=0.8em,inner sep=0pt,rounded corners=1pt,draw,fill=
orange
!30]
(nor) at ([yshift=-0.6em]act.south)
{}
;
\node
[anchor=west,font=\footnotesize]
at ([xshift=0.1em]nor.east)
{
层标准化
}
;
\node
[anchor=north,minimum size=0.8em,inner sep=0pt,rounded corners=1pt,draw,fill=cyan!30]
(wc) at ([yshift=-0.6em]nor.south)
{}
;
\node
[anchor=west,font=\footnotesize]
at ([xshift=0.1em]wc.east)
{
宽卷积
}
;
...
...
Chapter15/Figures/figure-evolution-and-change-of-ml-methods.tex
查看文件 @
1e80d9a6
\begin{tikzpicture}
\tikzstyle
{
opnode
}
=[rectangle,inner sep=0mm,minimum height=2em,minimum width=4em,rounded corners=5pt,fill=
teal
!30,draw,thick,drop shadow]
\tikzstyle
{
opnode
}
=[rectangle,inner sep=0mm,minimum height=2em,minimum width=4em,rounded corners=5pt,fill=
orange
!30,draw,thick,drop shadow]
\tikzstyle
{
cnode
}
=[circle,draw,minimum size=1.2em]
\tikzstyle
{
mnode
}
=[rectangle,inner sep=0mm,minimum height=5em,minimum width=11em,rounded corners=5pt,fill=yellow!30,draw,thick,drop shadow]
\tikzstyle
{
wnode
}
=[inner sep=0mm,minimum height=1.5em]
...
...
Chapter15/Figures/figure-main-flow-of-neural-network-structure-search.tex
查看文件 @
1e80d9a6
...
...
@@ -6,8 +6,8 @@
\tikzstyle
{
every node
}
=[scale=0.36]
\node
[draw,very thick,rounded corners=3pt,drop shadow,fill=red!30,minimum width=40em,minimum height=25em]
(rec3) at (2.25,0)
{}
;
\node
[draw,very thick,rounded corners=3pt,drop shadow,fill=
green
!30,minimum width=22em,minimum height=25em]
(rec2) at (-12.4,0)
{}
;
\node
[draw,very thick,rounded corners=3pt,drop shadow,fill=
yellow
!30,minimum width=24em,minimum height=25em]
(rec1) at (-24,0)
{}
;
\node
[draw,very thick,rounded corners=3pt,drop shadow,fill=
yellow
!30,minimum width=22em,minimum height=25em]
(rec2) at (-12.4,0)
{}
;
\node
[draw,very thick,rounded corners=3pt,drop shadow,fill=
orange
!30,minimum width=24em,minimum height=25em]
(rec1) at (-24,0)
{}
;
%left
\node
[]
(label1) at (-26.4,4)
{
\Huge\bfnew
{
结构空间
}}
;
...
...
Chapter15/Figures/figure-multi-task-structure.tex
查看文件 @
1e80d9a6
...
...
@@ -2,7 +2,7 @@
\begin{tikzpicture}
\begin{scope}
\tikzstyle
{
enode
}
=[rectangle,inner sep=0mm,minimum height=5em,minimum width=5em,rounded corners=7pt,fill=
green
!30,draw,thick]
\tikzstyle
{
enode
}
=[rectangle,inner sep=0mm,minimum height=5em,minimum width=5em,rounded corners=7pt,fill=
blue
!30,draw,thick]
\tikzstyle
{
dnode
}
=[rectangle,inner sep=0mm,minimum height=2em,minimum width=6.5em,rounded corners=5pt,fill=red!30,draw,thick]
\tikzstyle
{
wnode
}
=[inner sep=0mm,minimum height=2em,minimum width=4em]
...
...
Chapter15/Figures/figure-structure-search-based-on-gradient-method.tex
查看文件 @
1e80d9a6
...
...
@@ -4,9 +4,9 @@
\begin{tikzpicture}
\tikzstyle
{
node
}
=[minimum height=6em,inner sep=4pt,align=left,draw,font=
\footnotesize
,rounded corners=4pt,thick,drop shadow]
\node
[node,fill=
red
!30]
(n1) at (0,0)
{
\scriptsize\bfnew
{
超网络
}
:
\\
[1ex] 模型结构参数
\\
[0.4ex]
网络参数
}
;
\node
[node,fill=
orange
!30]
(n1) at (0,0)
{
\scriptsize\bfnew
{
超网络
}
:
\\
[1ex] 模型结构参数
\\
[0.4ex]
网络参数
}
;
\node
[anchor=west,node,fill=yellow!30]
(n2) at ([xshift=4em]n1.east)
{
\scriptsize\bfnew
{
优化后的超网络
}
:
\\
[1ex]模型
{
\color
{
red
}
结构参数
}
(已优化)
\\
[0.4ex]网络参数(已优化)
}
;
\node
[anchor=west,node,fill=
green
!30]
(n3) at ([xshift=6em]n2.east)
{
\scriptsize\bfnew
{
找到的模型结构
}}
;
\node
[anchor=west,node,fill=
red
!30]
(n3) at ([xshift=6em]n2.east)
{
\scriptsize\bfnew
{
找到的模型结构
}}
;
\draw
[-latex,thick]
(n1.0) -- node[above,align=center,font=
\scriptsize
]
{
优化后的
\\
超网络
}
(n2.180);
\draw
[-latex,thick]
(n2.0) -- node[above,align=center,font=
\scriptsize
]
{
根据结构参数
\\
离散化结构
}
(n3.180);
...
...
Chapter15/Figures/figure-structure-search-based-on-reinforcement-learning.tex
查看文件 @
1e80d9a6
...
...
@@ -5,7 +5,7 @@
\tikzstyle
{
node
}
=[minimum height=2.5em,minimum width=8em,draw,rounded corners=2pt,thick,drop shadow]
\node
[node,fill=red!30]
(n1) at (0,0)
{
\small\bfnew
{
环境
}}
;
\node
[anchor=south,node,fill=
green
!30]
(n2) at ([yshift=5em]n1.north)
{
\small\bfnew
{
智能体
}}
;
\node
[anchor=south,node,fill=
blue
!30]
(n2) at ([yshift=5em]n1.north)
{
\small\bfnew
{
智能体
}}
;
\node
[anchor=north,font=\footnotesize]
at ([yshift=-0.2em]n1.south)
{
(结构所应用于的任务)
}
;
\node
[anchor=south,font=\footnotesize]
at ([yshift=0.2em]n2.north)
{
(结构生成器)
}
;
...
...
Chapter15/chapter15.tex
查看文件 @
1e80d9a6
...
...
@@ -112,8 +112,10 @@
%----------------------------------------------
\begin{figure}
[htp]
\centering
\vspace
{
-1em
}
\input
{
./Chapter15/Figures/figure-relative-position-weight
}
\caption
{
相对位置权重
$
\mathbi
{
a
}_{
ij
}$
\upcite
{
DBLP:conf/emnlp/HuangLXX20
}}
\setlength
{
\belowcaptionskip
}{
-2em
}
\label
{
fig:15-2
}
\end{figure}
%-------------------------------------------
...
...
@@ -128,7 +130,7 @@
\noindent
可以注意到,公式
\eqref
{
eq:15-10
}
和公式
\eqref
{
eq:15-11
}
将位置编码信息直接暴露给每一层注意力机制的计算,而不是像标准Transformer中只将其作为整个模型的输入。
\vspace
{
0.5em
}
\item
Transformer-XL
\upcite
{
Dai2019TransformerXLAL
}
。在Transformer中,模型的输入由词嵌入表示与绝对位置编码组成,例如,对于输入层有,
$
\mathbi
{
x
}_
i
=
\mathbi
{
E
}_{
x
_
i
}
+
\mathbi
{
U
}_
i
$
,
$
\mathbi
{
x
}_
j
=
\mathbi
{
E
}_{
x
_
j
}
+
\mathbi
{
U
}_
j
$
,其中
$
\mathbi
{
E
}_{
x
_
i
}
$
和
$
\mathbi
{
E
}_{
x
_
j
}
$
表示词嵌入,
$
\mathbi
{
U
}_
i
$
和
$
\mathbi
{
U
}_
j
$
表示绝对位置编码(正余弦函数)。将
$
\mathbi
{
x
}_
i
$
与
$
\mathbi
{
x
}_
j
$
代入公式
\eqref
{
eq:15-6
}
中可以得到:
\item
{
\small\bfnew
{
Transformer-XL
}}
\upcite
{
Dai2019TransformerXLAL
}
。在Transformer中,模型的输入由词嵌入表示与绝对位置编码组成,例如,对于输入层有,
$
\mathbi
{
x
}_
i
=
\mathbi
{
E
}_{
x
_
i
}
+
\mathbi
{
U
}_
i
$
,
$
\mathbi
{
x
}_
j
=
\mathbi
{
E
}_{
x
_
j
}
+
\mathbi
{
U
}_
j
$
,其中
$
\mathbi
{
E
}_{
x
_
i
}
$
和
$
\mathbi
{
E
}_{
x
_
j
}
$
表示词嵌入,
$
\mathbi
{
U
}_
i
$
和
$
\mathbi
{
U
}_
j
$
表示绝对位置编码(正余弦函数)。将
$
\mathbi
{
x
}_
i
$
与
$
\mathbi
{
x
}_
j
$
代入公式
\eqref
{
eq:15-6
}
中可以得到:
\begin{eqnarray}
\mathbi
{
e
}_{
ij
}
&
=
&
\frac
{
(
\mathbi
{
E
}_{
x
_
i
}
+
\mathbi
{
U
}_
i)
\mathbi
{
W
}_
Q
{
((
\mathbi
{
E
}_{
x
_
j
}
+
\mathbi
{
U
}_
j)
\mathbi
{
W
}_
K)
}^{
T
}}{
\sqrt
{
d
_
k
}}
\label
{
eq:15-12
}
...
...
@@ -154,7 +156,7 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\
\item
{
\small\bfnew
{
结构化位置编码
}}
\index
{
基于结构化位置编码
}
(Structural Position Representations)
\index
{
Structural Position Representations
}
\upcite
{
DBLP:conf/emnlp/WangTWS19a
}
。 例如,可以通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\vspace
{
0.5em
}
\item
基于
{
\small\bfnew
{
连续动态系统
}}
\index
{
基于连续动态系统
}
(Continuous Dynamic Model)
\index
{
Continuous Dynamic Model
}
的位置编码
\upcite
{
Liu2020LearningTE
}
。使用神经常微分方程
{
\small\bfnew
{
求解器
}}
\index
{
求解器
}
(Solver)
\index
{
Solver
}
来建模位置信息
\upcite
{
DBLP:conf/nips/ChenRBD18
}
,模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
\item
{
\small\bfnew
{
基于连续动态系统
}}
\index
{
基于连续动态系统
}
(Continuous Dynamic Model)
\index
{
Continuous Dynamic Model
}{
\small\bfnew
{
的位置编码
}}
\upcite
{
Liu2020LearningTE
}
。使用神经常微分方程
{
\small\bfnew
{
求解器
}}
\index
{
求解器
}
(Solver)
\index
{
Solver
}
来建模位置信息
\upcite
{
DBLP:conf/nips/ChenRBD18
}
,模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -339,11 +341,11 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize}
\vspace
{
0.5em
}
\item
分块注意力
:顾名思义,就是将序列划分为固定大小的片段,注意力模型只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间
\upcite
{
DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18
}
。
\item
{
\small\bfnew
{
分块注意力
}}
:顾名思义,就是将序列划分为固定大小的片段,注意力模型只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间
\upcite
{
DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18
}
。
\vspace
{
0.5em
}
\item
跨步注意力
:该模型是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算
\upcite
{
DBLP:journals/corr/abs-2004-05150
}
。和分片段进行注意力计算类似,假设最终参与注意力计算的间隔长度为
$
N
/
B
$
,每次参与注意力计算的单词数为
$
B
$
,那么注意力的计算复杂度将从
$
O
(
N
^
2
)
$
缩减为
$
O
(
N
/
B
\times
B
^
2
)
$
,即
$
O
(
NB
)
$
。
\item
{
\small\bfnew
{
跨步注意力
}}
:该模型是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算
\upcite
{
DBLP:journals/corr/abs-2004-05150
}
。和分片段进行注意力计算类似,假设最终参与注意力计算的间隔长度为
$
N
/
B
$
,每次参与注意力计算的单词数为
$
B
$
,那么注意力的计算复杂度将从
$
O
(
N
^
2
)
$
缩减为
$
O
(
N
/
B
\times
B
^
2
)
$
,即
$
O
(
NB
)
$
。
\vspace
{
0.5em
}
\item
内存压缩注意力
:这种方式的主要的思想是使用一些操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用
{
\small\bfnew
{
跨步卷积
}}
\index
{
跨步卷积
}
(Stride Convolution)
\index
{
Stride Convolution
}
来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力权重计算时的复杂度
\upcite
{
DBLP:conf/iclr/LiuSPGSKS18
}
。其具体的计算复杂度取决于跨步卷积时步幅的大小
$
K
$
,形式上可以理解为每
$
K
$
个单元做一次特征融合后,将关注的目标缩减为
$
N
/
K
$
,整体的计算复杂度为
$
N
^
2
/
K
$
。相比于使用前两种方式对局部进行注意力计算,该方式仍是对全局的建模。
\item
{
\small\bfnew
{
内存压缩注意力
}}
:这种方式的主要的思想是使用一些操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用
{
\small\bfnew
{
跨步卷积
}}
\index
{
跨步卷积
}
(Stride Convolution)
\index
{
Stride Convolution
}
来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力权重计算时的复杂度
\upcite
{
DBLP:conf/iclr/LiuSPGSKS18
}
。其具体的计算复杂度取决于跨步卷积时步幅的大小
$
K
$
,形式上可以理解为每
$
K
$
个单元做一次特征融合后,将关注的目标缩减为
$
N
/
K
$
,整体的计算复杂度为
$
N
^
2
/
K
$
。相比于使用前两种方式对局部进行注意力计算,该方式仍是对全局的建模。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -410,7 +412,7 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\parinterval
令
$
\mathbi
{
x
}_
l
$
和
$
\mathbi
{
x
}_{
l
+
1
}$
表示第
$
l
$
个子层的输入和输出
\footnote
[4]
{
这里沿用Transformer中的定义,每一层(Layer)包含多个子层(Sub-layer)。比如,对于Transformer编码器,每一层包含一个自注意力子层和一个前馈神经网络子层。所有子层都需要进行层标准化和残差连接。
}
,
$
\mathbi
{
y
}_
l
$
表示中间的临时输出;
$
\textrm
{
LN
}
(
\cdot
)
$
表示层标准化操作,帮助减小子层输出的方差,从而让训练变得更稳定;
$
F
(
\cdot
)
$
表示子层所对应的函数,比如前馈神经网络、自注意力等。下面分别对Post-Norm和Pre-Norm进行简单的描述。
\begin{itemize}
\vspace
{
0.5em
}
\item
Post-Norm
:早期的Transformer遵循的是Post-Norm结构
\upcite
{
vaswani2017attention
}
。也就是层标准化作用于每一子层的输入和输出的残差结果上,如图
\ref
{
fig:15-9
}
(a)所示。可以表示如下:
\item
{
\small\bfnew
{
Post-Norm
}}
:早期的Transformer遵循的是Post-Norm结构
\upcite
{
vaswani2017attention
}
。也就是层标准化作用于每一子层的输入和输出的残差结果上,如图
\ref
{
fig:15-9
}
(a)所示。可以表示如下:
\begin{eqnarray}
\mathbi
{
x
}_{
l+1
}
&
=
&
\textrm
{
LN
}
(
\mathbi
{
x
}_
l+F(
\mathbi
{
x
}_
l;
{
\bm
\theta
_
l
}
))
\label
{
eq:15-26
}
...
...
@@ -418,7 +420,7 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\noindent
其中,
$
\bm
\theta
_
l
$
是子层
$
l
$
的参数。
\vspace
{
0.5em
}
\item
Pre-Norm
:通过调整层标准化的位置,将其放置于每一子层的输入之前,得到了Pre-Norm结构
\upcite
{
DBLP:conf/eccv/HeZRS16
}
,如图
\ref
{
fig:15-9
}
(b)所示。这种结构也被广泛应用于最新的Transformer开源系统中
\upcite
{
Vaswani2018Tensor2TensorFN,Ottfairseq,KleinOpenNMT
}
,公式如下:
\item
{
\small\bfnew
{
Pre-Norm
}}
:通过调整层标准化的位置,将其放置于每一子层的输入之前,得到了Pre-Norm结构
\upcite
{
DBLP:conf/eccv/HeZRS16
}
,如图
\ref
{
fig:15-9
}
(b)所示。这种结构也被广泛应用于最新的Transformer开源系统中
\upcite
{
Vaswani2018Tensor2TensorFN,Ottfairseq,KleinOpenNMT
}
,公式如下:
\begin{eqnarray}
\mathbi
{
x
}_{
l+1
}
&
=
&
\mathbi
{
x
}_
l+F(
\textrm
{
LN
}
(
\mathbi
{
x
}_
l);
{
\bm
\theta
_
l
}
)
\label
{
eq:15-27
}
...
...
@@ -476,29 +478,29 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize}
\vspace
{
0.5em
}
\item
线性平均
。即平均池化,通过对各层中间表示进行累加之后取平均值,表示如下:
\item
{
\small\bfnew
{
线性平均
}}
。即平均池化,通过对各层中间表示进行累加之后取平均值,表示如下:
\begin{eqnarray}
\mathbi
{
g
}
&
=
&
\frac
{
1
}{
L
}
\sum
_{
l=1
}^{
L
}{
\mathbi
{
h
}^
l
}
\label
{
eq:15-30
}
\end{eqnarray}
\vspace
{
0.5em
}
\item
权重平均
。在线性平均的基础上,为每一个中间层表示赋予一个相应的权重。权重的值通常采用可学习的参数矩阵
$
\mathbi
{
W
}_
l
$
表示。这种方法通常会略优于线性平均方法。可以用如下方式描述:
\item
{
\small\bfnew
{
权重平均
}}
。在线性平均的基础上,为每一个中间层表示赋予一个相应的权重。权重的值通常采用可学习的参数矩阵
$
\mathbi
{
W
}_
l
$
表示。这种方法通常会略优于线性平均方法。可以用如下方式描述:
\begin{eqnarray}
\mathbi
{
g
}
&
=
&
\sum
_{
l=1
}^{
L
}{
\mathbi
{
W
}_
l
\mathbi
{
h
}^
l
}
\label
{
eq:15-31
}
\end{eqnarray}
\vspace
{
0.5em
}
\item
前馈神经网络
。将之前中间层的表示进行级联,之后利用前馈神经网络得到融合的表示,如下:
\item
{
\small\bfnew
{
前馈神经网络
}}
。将之前中间层的表示进行级联,之后利用前馈神经网络得到融合的表示,如下:
\begin{eqnarray}
\mathbi
{
g
}
&
=
&
\textrm
{
FNN
}
([
\mathbi
{
h
}^
1,
{
\red
\ldots
}
,
\mathbi
{
h
}^
L])
\mathbi
{
g
}
&
=
&
\textrm
{
FNN
}
([
\mathbi
{
h
}^
1,
\ldots
,
\mathbi
{
h
}^
L])
\label
{
eq:15-32
}
\end{eqnarray}
\noindent
其中,
$
[
\cdot
]
$
表示级联操作。这种方式具有比权重平均更强的拟合能力。
\vspace
{
0.5em
}
\item
基于多跳的自注意力机制
。如图
\ref
{
fig:15-11
}
所示,其做法与前馈神经网络类似,首先将不同层的表示拼接成2维的句子级矩阵表示
\upcite
{
DBLP:journals/corr/LinFSYXZB17
}
。之后利用类似于前馈神经网络的思想将维度为
$
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
L
}$
的矩阵映射到维度为
$
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
n
_{
\rm
hop
}}$
的矩阵,如下:
\item
{
\small\bfnew
{
基于多跳的自注意力机制
}}
。如图
\ref
{
fig:15-11
}
所示,其做法与前馈神经网络类似,首先将不同层的表示拼接成2维的句子级矩阵表示
\upcite
{
DBLP:journals/corr/LinFSYXZB17
}
。之后利用类似于前馈神经网络的思想将维度为
$
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
L
}$
的矩阵映射到维度为
$
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
n
_{
\rm
hop
}}$
的矩阵,如下:
\begin{eqnarray}
\mathbi
{
o
}
&
=
&
\sigma
([
\mathbi
{
h
}^
1,
\ldots
,
\mathbi
{
h
}^
L]
^{
T
}
\cdot
\mathbi
{
W
}_
1)
\mathbi
{
W
}_
2
\label
{
eq:15-33
}
...
...
@@ -647,11 +649,11 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize}
\vspace
{
0.5em
}
\item
计算均值
:
${
\bm
\mu
}
=
\textrm
{
mean
}
(
\mathbi
{
x
}_
l
+
\mathbi
{
y
}_
l
)
$
\item
{
\small\bfnew
{
计算均值
}}
:
${
\bm
\mu
}
=
\textrm
{
mean
}
(
\mathbi
{
x
}_
l
+
\mathbi
{
y
}_
l
)
$
\vspace
{
0.5em
}
\item
计算方差
:
${
\bm
\sigma
}
=
\textrm
{
std
}
(
\mathbi
{
x
}_
l
+
\mathbi
{
y
}_
l
)
$
\item
{
\small\bfnew
{
计算方差
}}
:
${
\bm
\sigma
}
=
\textrm
{
std
}
(
\mathbi
{
x
}_
l
+
\mathbi
{
y
}_
l
)
$
\vspace
{
0.5em
}
\item
根据均值和方差对输入进行放缩
,如下:
\item
{
\small\bfnew
{
根据均值和方差对输入进行放缩
}}
,如下:
\begin{eqnarray}
\mathbi
{
x
}_{
l+1
}^{
\textrm
{
post
}}
&
=
&
\frac
{
\mathbi
{
x
}_
l+
\mathbi
{
y
}_
l-
{
\bm
\mu
}}{
\bm
\sigma
}
\cdot
\mathbi
{
w
}
+
\mathbi
{
b
}
\label
{
eq:15-44
}
...
...
@@ -710,9 +712,9 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize}
\vspace
{
0.5em
}
\item
Profiling阶段
:
${
\bm
\omega
_{
l
+
1
}}
=
1
$
,只进行前向计算,无需进行梯度计算。在训练样本上计算
$
F
_{
l
+
1
}
(
\mathbi
{
x
}_
l
)
$
的方差
\item
{
\small\bfnew
{
Profiling阶段
}}
:
${
\bm
\omega
_{
l
+
1
}}
=
1
$
,只进行前向计算,无需进行梯度计算。在训练样本上计算
$
F
_{
l
+
1
}
(
\mathbi
{
x
}_
l
)
$
的方差
\vspace
{
0.5em
}
\item
Initialization阶段
:通过Profiling阶段得到的
$
F
_{
l
+
1
}
(
\mathbi
{
x
}_
l
)
$
的方差来初始化
$
\bm
\omega
_{
l
+
1
}$
:
\item
{
\small\bfnew
{
Initialization阶段
}}
:通过Profiling阶段得到的
$
F
_{
l
+
1
}
(
\mathbi
{
x
}_
l
)
$
的方差来初始化
$
\bm
\omega
_{
l
+
1
}$
:
\begin{eqnarray}
{
\bm
\omega
_{
l+1
}}
&
=
&
\sqrt
{
\sum
_{
j<l
}
\textrm
{
Var
}
[F
_{
l+1
}
(
\mathbi
{
x
}_
l)]
}
\label
{
eq:15-48
}
...
...
@@ -758,8 +760,6 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\parinterval
很多研究工作已经发现深层模型不同层之间的稠密连接能够很明显地提高信息传递的效率
\upcite
{
WangLearning,DBLP:conf/cvpr/HuangLMW17,Dou2018ExploitingDR,DBLP:conf/acl/WuWXTGQLL19
}
。与此同时,对之前层信息的不断复用有助于得到更好的表示,但也带来了计算代价过大的问题。在动态线性层聚合方法(DLCL)中,每一次聚合时都需要重新计算之前每一层表示对当前层输入的贡献度,因此伴随着编码器整体深度的增加,这部分的计算代价变得不可忽略。例如,一个基于动态层聚合的48层Transformer模型比不使用动态层聚合的模型在进行训练时慢近2倍。同时,缓存中间结果也增加了显存的使用量。比如,即使在使用半精度计算的情况下,每张12G显存的GPU上计算的词也不能超过2048个,这导致训练开销急剧增大。
\parinterval
缓解这个问题的一种方法是使用更稀疏的层间连接方式。其核心思想与动态线性层聚合是类似的,不同点在于可以通过调整层之间连接的稠密程度来降低训练代价。比如,可以将每
$
p
$
层分为一组,之后动态线性层聚合只在不同组之间进行。这样,通过调节
$
p
$
值的大小可以控制神经网络中连接的稠密程度,作为一种训练代价与翻译性能之间的权衡。显然,标准的Transformer模型
\upcite
{
vaswani2017attention
}
和DLCL模型
\upcite
{
WangLearning
}
都可以看作是该方法的一种特例。如图
\ref
{
fig:15-16
}
所示:当
$
p
=
1
$
时,每一个单独的块被看作一个独立的组,它等价于基于动态层聚合的DLCL模型;当
$
p
=
\infty
$
时,它等价于正常的Transformer模型。值得注意的是,如果配合渐进式训练。在分组稠密连接中可以设置
$
p
$
等于模型层数。
%----------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -769,6 +769,8 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\end{figure}
%-------------------------------------------
\parinterval
缓解这个问题的一种方法是使用更稀疏的层间连接方式。其核心思想与动态线性层聚合是类似的,不同点在于可以通过调整层之间连接的稠密程度来降低训练代价。比如,可以将每
$
p
$
层分为一组,之后动态线性层聚合只在不同组之间进行。这样,通过调节
$
p
$
值的大小可以控制神经网络中连接的稠密程度,作为一种训练代价与翻译性能之间的权衡。显然,标准的Transformer模型
\upcite
{
vaswani2017attention
}
和DLCL模型
\upcite
{
WangLearning
}
都可以看作是该方法的一种特例。如图
\ref
{
fig:15-16
}
所示:当
$
p
=
1
$
时,每一个单独的块被看作一个独立的组,它等价于基于动态层聚合的DLCL模型;当
$
p
=
\infty
$
时,它等价于正常的Transformer模型。值得注意的是,如果配合渐进式训练。在分组稠密连接中可以设置
$
p
$
等于模型层数。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
...
...
@@ -1046,6 +1048,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\centering
\input
{
./Chapter15/Figures/figure-parallel-RNN-structure
}
\caption
{
词预测模型和动作模型
}
\setlength
{
\abovecaptionskip
}{
-1em
}
\label
{
fig:15-26
}
\end{figure}
%-------------------------------------------
...
...
@@ -1069,6 +1072,10 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\parinterval
网络结构搜索属于
{
\small\bfnew
{
自动机器学习
}}
\index
{
自动机器学习
}
(Automated Machine Learning)
\index
{
Automated Machine Learning
}
的范畴,其目的是根据对应任务上的数据找到最合适的模型结构。在这个过程中,模型结构就像神经网络中的参数一样被自动地学习出来。图
\ref
{
fig:15-27
}
(a) 展示了人工设计的Transformer编码器的局部结构,图
\ref
{
fig:15-27
}
(b) 给出对该结构使用进化算法优化后得到的结构
\upcite
{
DBLP:conf/icml/SoLL19
}
。可以看到,使用网络结构搜索方法得到的模型中,出现了与人工设计的结构不同的跨层连接,同时还搜索到了全新的多分支结构,这种结构也是人工不易设计出来的。
\parinterval
那么网络结构搜索究竟是一种什么样的技术呢?如图
\ref
{
fig:15-28
}
所示,在传统机器学习方法中,研究人员需要设计大量的特征来描述待解决的问题,即“特征工程”。在深度学习时代,神经网络模型可以完成特征的抽取和学习,但是却需要人工设计神经网络结构,这项工作仍然十分繁重。因此一些科研人员开始思考,能否将设计模型结构的工作也交由机器自动完成?深度学习方法中模型参数能够通过梯度下降等方式进行自动优化,那么模型结构是否可以也看做是一种特殊的参数,使用搜索算法自动找到最适用于当前任务的模型结构?基于上述想法,网络结构搜索应运而生。
\parinterval
早在上世纪八十年代,研究人员就开始使用进化算法对神经网络结构进行设计
\upcite
{
DBLP:conf/icga/MillerTH89
}
,也引发了之后的很多探索
\upcite
{
koza1991genetic,DBLP:conf/nips/HarpSG89,DBLP:journals/compsys/Kitano90
}
。近些年,随着深度学习技术的发展,网络结构搜索技术在很多任务中受到关注。例如,网络结构搜索就很好地应用在语言建模上,并取得了很好的结果
\upcite
{
DBLP:conf/iclr/LiuSY19,DBLP:conf/acl/LiHZXJXZLL20,DBLP:conf/emnlp/JiangHXZZ19
}
。下面将对网络结构搜索的基本方法和其在机器翻译中的应用进行介绍。
%----------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -1078,8 +1085,6 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\end{figure}
%-------------------------------------------
\parinterval
那么网络结构搜索究竟是一种什么样的技术呢?如图
\ref
{
fig:15-28
}
所示,在传统机器学习方法中,研究人员需要设计大量的特征来描述待解决的问题,即“特征工程”。在深度学习时代,神经网络模型可以完成特征的抽取和学习,但是却需要人工设计神经网络结构,这项工作仍然十分繁重。因此一些科研人员开始思考,能否将设计模型结构的工作也交由机器自动完成?深度学习方法中模型参数能够通过梯度下降等方式进行自动优化,那么模型结构是否可以也看做是一种特殊的参数,使用搜索算法自动找到最适用于当前任务的模型结构?基于上述想法,网络结构搜索应运而生。
%----------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -1089,8 +1094,6 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\end{figure}
%-------------------------------------------
\parinterval
早在上世纪八十年代,研究人员就开始使用进化算法对神经网络结构进行设计
\upcite
{
DBLP:conf/icga/MillerTH89
}
,也引发了之后的很多探索
\upcite
{
koza1991genetic,DBLP:conf/nips/HarpSG89,DBLP:journals/compsys/Kitano90
}
。近些年,随着深度学习技术的发展,网络结构搜索技术在很多任务中受到关注。例如,网络结构搜索就很好地应用在语言建模上,并取得了很好的结果
\upcite
{
DBLP:conf/iclr/LiuSY19,DBLP:conf/acl/LiHZXJXZLL20,DBLP:conf/emnlp/JiangHXZZ19
}
。下面将对网络结构搜索的基本方法和其在机器翻译中的应用进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
...
...
@@ -1098,7 +1101,6 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\subsection
{
结构搜索的基本方法
}
\parinterval
对于网络结构搜索任务来说,目标是通过数据驱动的方式自动地找到最合适的模型结构。以有监督学习为例,给定训练集合
$
\{
(
\mathbi
{
x
}_{
1
}
,
\mathbi
{
y
}_{
1
}
)
,
\ldots
,
(
\mathbi
{
x
}_{
n
}
,
\mathbi
{
y
}_{
n
}
)
\}
$
(其中
$
\mathbi
{
x
}_{
i
}$
表示的是第
$
i
$
个样本的输入,
$
\mathbi
{
y
}_{
i
}$
表示该样本的答案,并假设
$
\mathbi
{
x
}_{
i
}$
和
$
\mathbi
{
y
}_{
i
}$
均为向量表示),网络结构搜索过程可以被建模为根据数据找到最佳模型结构
$
\hat
{
a
}$
的过程,如下所示:
\begin{eqnarray}
\hat
{
a
}
&
=
&
\arg\max
_{
a
}
\sum
_{
i=1
}^{
n
}{
\funp
{
P
}
(
\mathbi
{
y
}_{
i
}
|
\mathbi
{
x
}_{
i
}
;a)
}
\label
{
eq:15-57
}
...
...
Chapter16/chapter16.tex
查看文件 @
1e80d9a6
...
...
@@ -262,7 +262,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION 16.2
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
双向翻译模型
}
\parinterval
在机器翻译任务中,对于给定的双语数据,可以同时学习源语言到目标语言和目标语言到源语言的翻译模型,因此机器翻译可被视为一种双向任务。那么,两个方向的翻译模型能否联合起来,相辅相成呢?下面将从双向训练和对偶学习两方面对双向翻译模型进行介绍。这些方法被大量使用在低资源翻译系统中,比如,可以用双向翻译模型反复迭代构造伪数据。
...
...
@@ -352,6 +352,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
多语言翻译模型
}
\label
{
multilingual-translation-model
}
\parinterval
低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务
\upcite
{
dabre2020survey
}
。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语言双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语言的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作,其中有三个典型研究方向:基于枢轴语言的方法
\upcite
{
DBLP:journals/mt/WuW07
}
、 基于知识蒸馏的方法
\upcite
{
DBLP:journals/corr/ChenLCL17
}
、基于迁移学习的方法
\upcite
{
DBLP:conf/emnlp/KimPPKN19,DBLP:journals/tacl/JohnsonSLKWCTVW17
}
,下面进行介绍。
...
...
@@ -476,7 +477,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION 16.4
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
无监督机器翻译
}
\label
{
sec:unsupervised-nmt
}
...
...
@@ -721,7 +722,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION 16.5
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
领域适应
}
\parinterval
机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,将一个在新闻类数据上训练的翻译系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而在化学领域的学术论文中,单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义。实例
\ref
{
eg:16-1
}
展示了英语单词pitch在不同领域的不同词义。
...
...
@@ -872,7 +873,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
小结及拓展阅读
}
低资源机器翻译是机器翻译大规模应用所面临的挑战之一,因此也备受关注。一方面,小样本学习技术的发展,使得研究人员可以有更多的手段对问题求解;另一方面,从多语言之间的联系出发,也可以进一步挖掘不同语言背后的知识,并应用于低资源机器翻译任务。本章从多个方面介绍了低资源机器翻译方法,并结合多语言、零资源翻译等问题给出了不同场景下解决问题的思路。除此之外,还有几方面工作值得进一步关注:
...
...
Chapter17/chapter17.tex
查看文件 @
1e80d9a6
...
...
@@ -108,7 +108,7 @@
\parinterval
由于声学特征提取在上一节中已经进行了描述,而且文本翻译可以直接使用本书介绍的统计机器翻译或者神经机器翻译方法。因此下面简要介绍一下语音识别模型,以便读者对级联式语音翻译系统有一个完整的认识。其中的部分概念在后续介绍的端到端语言翻译中也会有所涉及。
\parinterval
传统的语音识别模型和统计机器翻译相似,需要利用声学模型、语言模型和发音词典联合进行识别,系统较为复杂
\upcite
{
DBLP:journals/ftsig/GalesY07,DBLP:journals/taslp/MohamedDH12,DBLP:journals/spm/X12a
}
。而近些年来,随着神经网络的发展,基于神经网络的端到端语音识别模型逐渐受到关注,训练流程也大大被简化
\upcite
{
DBLP:conf/nips/ChorowskiBSCB15,DBLP:conf/icassp/ChanJLV16
}
。目前的端到端语音识别模型主要基于序列到序列结构,编码器根据输入的声学特征进一步提取高级特征,解码器根据编码器提取的特征识别对应的文本。在
后文中即将
介绍的端到端语音翻译模型也是基于十分相似的结构。因此,从某种意义上说,语音识别和翻译所使用的端到端方法与神经机器翻译是一致的。
\parinterval
传统的语音识别模型和统计机器翻译相似,需要利用声学模型、语言模型和发音词典联合进行识别,系统较为复杂
\upcite
{
DBLP:journals/ftsig/GalesY07,DBLP:journals/taslp/MohamedDH12,DBLP:journals/spm/X12a
}
。而近些年来,随着神经网络的发展,基于神经网络的端到端语音识别模型逐渐受到关注,训练流程也大大被简化
\upcite
{
DBLP:conf/nips/ChorowskiBSCB15,DBLP:conf/icassp/ChanJLV16
}
。目前的端到端语音识别模型主要基于序列到序列结构,编码器根据输入的声学特征进一步提取高级特征,解码器根据编码器提取的特征识别对应的文本。在
\ref
{
end-to-end-speech-translation
}
小节中
介绍的端到端语音翻译模型也是基于十分相似的结构。因此,从某种意义上说,语音识别和翻译所使用的端到端方法与神经机器翻译是一致的。
%----------------------------------------------------------------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -120,15 +120,15 @@
%----------------------------------------------------------------------------------------------------
\vspace
{
-1em
}
\parinterval
语音识别目前广泛使用基于Transformer的模型结构(见
{
\chaptertwelve
}
),如图
\ref
{
fig:17-5
}
所示。可以看出,相比文本翻译,模型结构上唯一的区别在于编码器的输入为声学特征,以及编码器底层会使用额外的卷积层来减小输入序列的长度。这是由于语音对应的特征序列过长,在计算注意力模型的时候,会占用大量的内存/显存,并增加训练时间。因此,一个常用的做法是在语音特征上进行两层步长为2的卷积操作,从而将输入序列的长度缩小为之前的1/4。通过使用大量的语音-标注平行数据对模型进行训练,可以得到高质量的语音识别模型。
\parinterval
语音识别目前广泛使用基于Transformer的模型结构(见
{
\chaptertwelve
}
),如图
\ref
{
fig:17-5
}
所示。可以看出,相比文本翻译,
语音识别
模型结构上唯一的区别在于编码器的输入为声学特征,以及编码器底层会使用额外的卷积层来减小输入序列的长度。这是由于语音对应的特征序列过长,在计算注意力模型的时候,会占用大量的内存/显存,并增加训练时间。因此,一个常用的做法是在语音特征上进行两层步长为2的卷积操作,从而将输入序列的长度缩小为之前的1/4。通过使用大量的语音-标注平行数据对模型进行训练,可以得到高质量的语音识别模型。
\parinterval
为了降低语音识别的错误对下游系统的影响,通常也会用词格来取代One-best语音识别结果。
另一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做
{
\small\bfnew
{
顺滑
}}
\index
{
顺滑
}
(Disfluency Detection
\index
{
Disfluency Detection
}
)处理,使得送给翻译系统的文本更加干净、流畅,比如除去一些导致停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。另外一
种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差
\upcite
{
DBLP:conf/acl/LiuTMCZ18
}
。
\parinterval
为了降低语音识别的错误对下游系统的影响,通常也会用词格来取代One-best语音识别结果。
除此之外,另一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做
{
\small\bfnew
{
顺滑
}}
\index
{
顺滑
}
(Disfluency Detection
\index
{
Disfluency Detection
}
)处理,使得送给翻译系统的文本更加干净、流畅,比如除去一些导致停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。第三
种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差
\upcite
{
DBLP:conf/acl/LiuTMCZ18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
端到端语音翻译
}
\subsection
{
端到端语音翻译
}
\label
{
end-to-end-speech-translation
}
\parinterval
级联语音翻译模型结构简单、易于实现,但不可避免地存在一些缺陷:
...
...
@@ -376,7 +376,7 @@
\subsubsection
{
1. 基础框架
}
\parinterval
在编码器-解码器框架中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。比如,可以通过卷积神经网络提取图像特征为一个向量表示。然后,利用长短时记忆网络(LSTMs)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与
\ref
{
sec:image-augmented-translation
}
描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。这时可以使用注意力机制来缓解该问题
\upcite
{
DBLP:conf/icml/XuBKCCSZB15
}
。
\parinterval
在编码器-解码器框架中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。比如,可以通过卷积神经网络提取图像特征为一个向量表示。然后,利用长短时记忆网络(LSTMs)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与
\ref
{
sec:image-augmented-translation
}
小节
描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。这时可以使用注意力机制来缓解该问题
\upcite
{
DBLP:conf/icml/XuBKCCSZB15
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -397,7 +397,7 @@
\end{figure}
%----------------------------------------------------------------------------------------------------
\parinterval
以上的方法大都是将图像中的实体、属性、场景等映射到文字上,并把这些信息显式地输入到编码器中。
另一种方式,把图像中的语义特征隐式地引入编码中
\upcite
{
DBLP:conf/cvpr/ChenZXNSLC17
}
。例如,图像数据可以分解为三个通道(红、绿、蓝),简单来说,就是将图像的每一个像素点按照红色、绿色、蓝色分成三个部分,这样就将图像分成了三个通道。在很多图像中,不同通道伴随的特征是不一样的,可以将其作用于编码器。另
一种方法是基于位置信息的编码增强。位置信息指的是图像中对象(物体)的位置。利用目标检测技术检测系统获得图中的对象和对应的特征,这样就确定了图中的对象位置。显然,这些信息可以加强编码器的表示能力
\upcite
{
DBLP:conf/eccv/YaoPLM18
}
。
\parinterval
以上的方法大都是将图像中的实体、属性、场景等映射到文字上,并把这些信息显式地输入到编码器中。
除此之外,一种方法是把图像中的语义特征隐式地引入编码中
\upcite
{
DBLP:conf/cvpr/ChenZXNSLC17
}
。例如,图像数据可以分解为三个通道(红、绿、蓝),简单来说,就是将图像的每一个像素点按照红色、绿色、蓝色分成三个部分,这样就将图像分成了三个通道。在很多图像中,不同通道伴随的特征是不一样的,可以将其作用于编码器。另外
一种方法是基于位置信息的编码增强。位置信息指的是图像中对象(物体)的位置。利用目标检测技术检测系统获得图中的对象和对应的特征,这样就确定了图中的对象位置。显然,这些信息可以加强编码器的表示能力
\upcite
{
DBLP:conf/eccv/YaoPLM18
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
Chapter2/Figures/figure-the-dice-game-model.tex
查看文件 @
1e80d9a6
...
...
@@ -8,7 +8,7 @@
\begin{tikzpicture}
[scale=0.6]
\begin{scope}
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,5
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{
1
}
;
}
...
...
@@ -17,7 +17,7 @@
\end{scope}
\begin{scope}
[yshift=-2.5em]
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,4
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{{
\color
{
red
}
2
}}
;
}
...
...
@@ -26,7 +26,7 @@
\end{scope}
\begin{scope}
[yshift=-5.0em]
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,6
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{{
\color
{
ublue
}
3
}}
;
}
...
...
@@ -35,7 +35,7 @@
\end{scope}
\begin{scope}
[yshift=-7.5em]
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,12
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{{
\color
{
ugreen
}
4
}}
;
}
...
...
@@ -44,7 +44,7 @@
\end{scope}
\begin{scope}
[yshift=-10.0em]
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,2
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{{
\color
{
purple
}
5
}}
;
}
...
...
@@ -53,7 +53,7 @@
\end{scope}
\begin{scope}
[yshift=-12.5em]
{
\
footnotesize
{
\
small
\foreach
\i
in
{
1,...,1
}{
\node
[draw,thick,minimum size=10pt] at (1.2*
\i
,0)
{{
\color
{
orange
}
6
}}
;
}
...
...
Chapter2/chapter2.tex
查看文件 @
1e80d9a6
...
...
@@ -118,11 +118,11 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\begin{itemize}
\vspace
{
0.5em
}
\item
边缘概率
:矩形
$
A
$
或者矩形
$
B
$
的面积。
\item
{
\small\bfnew
{
边缘概率
}}
:矩形
$
A
$
或者矩形
$
B
$
的面积。
\vspace
{
0.5em
}
\item
联合概率
:矩形
$
C
$
的面积。
\item
{
\small\bfnew
{
联合概率
}}
:矩形
$
C
$
的面积。
\vspace
{
0.5em
}
\item
条件概率
:联合概率/对应的边缘概率,如:
$
\funp
{
P
}
(
A
\mid
B
)
$
=矩形
$
C
$
的面积/矩形B的面积。
\item
{
\small\bfnew
{
条件概率
}}
:联合概率/对应的边缘概率,如:
$
\funp
{
P
}
(
A
\mid
B
)
$
=矩形
$
C
$
的面积/矩形B的面积。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -277,9 +277,9 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\begin{itemize}
\vspace
{
0.5em
}
\item
非负性
,即
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)
\ge
0
$
,等号成立条件是
$
\funp
{
P
}$
和
$
\funp
{
Q
}$
相等。
\item
{
\small\bfnew
{
非负性
}}
,即
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)
\ge
0
$
,等号成立条件是
$
\funp
{
P
}$
和
$
\funp
{
Q
}$
相等。
\vspace
{
0.5em
}
\item
不对称性
,即
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)
\neq
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
Q
}
\parallel
\funp
{
P
}
)
$
,所以
$
\textrm
{
KL
}$
距离并不是常用的欧式空间中的距离。为了消除这种不确定性,有时也会使用
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)+
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
Q
}
\parallel
\funp
{
P
}
)
$
作为度量两个分布差异性的函数。
\item
{
\small\bfnew
{
不对称性
}}
,即
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)
\neq
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
Q
}
\parallel
\funp
{
P
}
)
$
,所以
$
\textrm
{
KL
}$
距离并不是常用的欧式空间中的距离。为了消除这种不确定性,有时也会使用
$
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
P
}
\parallel
\funp
{
Q
}
)+
\funp
{
D
}_{
\textrm
{
KL
}}
(
\funp
{
Q
}
\parallel
\funp
{
P
}
)
$
作为度量两个分布差异性的函数。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -850,13 +850,13 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\begin{itemize}
\vspace
{
0.5em
}
\item
完备性
:当问题有解时,使用该策略能否找到问题的解。
\item
{
\small\bfnew
{
完备性
}}
:当问题有解时,使用该策略能否找到问题的解。
\vspace
{
0.5em
}
\item
最优性
:搜索策略能否找到最优解。
\item
{
\small\bfnew
{
最优性
}}
:搜索策略能否找到最优解。
\vspace
{
0.5em
}
\item
时间复杂度
:找到最优解需要多长时间。
\item
{
\small\bfnew
{
时间复杂度
}}
:找到最优解需要多长时间。
\vspace
{
0.5em
}
\item
空间复杂度
:执行策略需要多少内存。
\item
{
\small\bfnew
{
空间复杂度
}}
:执行策略需要多少内存。
\vspace
{
0.5em
}
\end{itemize}
...
...
Chapter5/chapter5.tex
查看文件 @
1e80d9a6
...
...
@@ -496,7 +496,7 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
噪声信道模型
}
\vspace
{
0.5em
}
...
...
@@ -571,7 +571,7 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
统计机器翻译的三个基本问题
}
\parinterval
公式
\eqref
{
eq:5-17
}
给出了统计机器翻译的数学描述。为了实现这个过程,面临着三个基本问题:
...
...
Chapter6/chapter6.tex
查看文件 @
1e80d9a6
...
...
@@ -31,7 +31,6 @@
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
基于扭曲度的模型
}
下面将介绍扭曲度在机器翻译中的定义及使用方法。这也带来了两个新的翻译模型
\ \dash\
IBM模型2
\upcite
{
DBLP:journals/coling/BrownPPM94
}
和HMM
\upcite
{
vogel1996hmm
}
。
...
...
Chapter7/chapter7.tex
查看文件 @
1e80d9a6
...
...
@@ -30,7 +30,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
翻译中的短语信息
}
不难发现,基于单词的模型并不能很好地捕捉单词间的搭配关系。相比之下,使用更大颗粒度的翻译单元是一种对搭配进行处理的方法。下面来一起看看,基于单词的模型所产生的问题以及如何使用基于短语的模型来缓解该问题。
...
...
Chapter8/chapter8.tex
查看文件 @
1e80d9a6
...
...
@@ -30,7 +30,7 @@
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section
{
翻译中句法信息的使用
}
\parinterval
使用短语的优点在于可以捕捉到具有完整意思的连续词串,因此能够对局部上下文信息进行建模。当单词之间的搭配和依赖关系出现在连续词串中时,短语可以很好地对其进行描述。但是,当单词之间距离很远时,使用短语的“效率”很低。同
$
n
$
-gram语言模型一样,当短语长度变长时,数据会变得非常稀疏。比如,很多实验已经证明,如果在测试数据中有一个超过5个单词的连续词串,那么它在训练数据中往往是很低频的现象,更长的短语甚至都很难在训练数据中找到。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论