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
0b640bc4
Commit
0b640bc4
authored
Jan 14, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
15章文字以及1、2章格式
parent
0485fffa
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
95 行增加
和
74 行删除
+95
-74
Chapter1/chapter1.tex
+10
-10
Chapter15/Figures/figure-introducing-rnn-mechanism-into-transformer.jpg
+0
-0
Chapter15/Figures/figure-relative-position-coding-and-absolute-position-coding.jpg
+0
-0
Chapter15/Figures/figure-relative-position-weight.tex
+2
-2
Chapter15/Figures/figure-weight-visualization-of-convergence-DLCL-network.tex
+23
-20
Chapter15/chapter15.tex
+60
-42
没有找到文件。
Chapter1/chapter1.tex
查看文件 @
0b640bc4
...
...
@@ -54,14 +54,6 @@
\parinterval
从机器翻译系统的组成上来看,通常可以抽象为两个部分,如图
\ref
{
fig:1-2
}
所示:
\begin{itemize}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
资源
}}
:如果把机器翻译系统比作一辆汽车,资源就好比是可以使汽车运行的“汽油”,它包括很多内容,如翻译规则、双(单)语数据、知识库等翻译知识,且这些“知识”都是计算机可读的。值得一提的是,如果没有翻译资源的支持,任何机器翻译系统都无法运行起来。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
系统
}}
:机器翻译算法的程序实现被称作系统,也就是机器翻译研究人员开发的软件。无论是翻译规则、翻译模板还是统计模型中的参数都需要通过机器翻译系统进行读取和使用。
\vspace
{
0.5em
}
\end{itemize}
%----------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -71,6 +63,14 @@
\end{figure}
%-------------------------------------------
\begin{itemize}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
资源
}}
:如果把机器翻译系统比作一辆汽车,资源就好比是可以使汽车运行的“汽油”,它包括很多内容,如翻译规则、双(单)语数据、知识库等翻译知识,且这些“知识”都是计算机可读的。值得一提的是,如果没有翻译资源的支持,任何机器翻译系统都无法运行起来。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
系统
}}
:机器翻译算法的程序实现被称作系统,也就是机器翻译研究人员开发的软件。无论是翻译规则、翻译模板还是统计模型中的参数都需要通过机器翻译系统进行读取和使用。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
构建一个强大的机器翻译系统需要“资源”和“系统”两方面共同作用。在资源方面,随着语料库语言学的发展,已经有大量的高质量的双语和单语数据(称为语料)被整理并且被电子化存储,因此可以说具备了研发机器翻译系统所需要的语料基础。特别是像英语、汉语等世界主流语种,相关语料资源已经非常丰富,这也大大加速了相关研究的进展。当然,对于一些稀缺资源语种或者特殊的领域,语料库中的语料仍然匮乏,但是这些并不影响机器翻译领域整体的发展速度。因此在现有语料库的基础上,很多研究者把精力集中在“系统”研发上。
%----------------------------------------------------------------------------------------
...
...
@@ -269,6 +269,8 @@
\parinterval
图
\ref
{
fig:1-8
}
展示了一个使用转换法进行翻译的实例。这里,利用一个简单的汉译英规则库完成对句子“我对你感到满意”的翻译。当翻译“我”时,从规则库中找到规则1,该规则表示遇到单词“我”就翻译为“I”;类似地,也可以从规则库中找到规则4,该规则表示翻译调序,即将单词“you”放到“be satisfied with”后面。这种通过规则表示单词之间的对应关系也为统计机器翻译方法提供了思路。如统计机器翻译中,基于短语的翻译模型使用短语对对原文进行替换,详细描述可以参考
{
\chapterseven
}
。
\parinterval
在上述例子中可以发现,规则不仅仅可以翻译句子之间单词的对应,如规则1,还可以表示句法甚至语法之间的对应,如规则6。因此基于规则的方法可以分成多个层次,如图
\ref
{
fig:1-9
}
所示。图中不同的层次表示采用不同的知识来书写规则,进而完成机器翻译过程。对于翻译问题,可以构建不同层次的基于规则的机器翻译系统。这里包括四个层次,分别为:词汇转换、句法转换、语义转换和中间语言层。其中,上层可以继承下层的翻译知识,比如说句法转换层会利用词汇转换层知识。早期基于规则的方法属于词汇转换层。
%----------------------------------------------
\begin{figure}
[htp]
\centering
...
...
@@ -279,8 +281,6 @@
\end{figure}
%-------------------------------------------
\parinterval
在上述例子中可以发现,规则不仅仅可以翻译句子之间单词的对应,如规则1,还可以表示句法甚至语法之间的对应,如规则6。因此基于规则的方法可以分成多个层次,如图
\ref
{
fig:1-9
}
所示。图中不同的层次表示采用不同的知识来书写规则,进而完成机器翻译过程。对于翻译问题,可以构建不同层次的基于规则的机器翻译系统。这里包括四个层次,分别为:词汇转换、句法转换、语义转换和中间语言层。其中,上层可以继承下层的翻译知识,比如说句法转换层会利用词汇转换层知识。早期基于规则的方法属于词汇转换层。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
...
...
Chapter15/Figures/figure-introducing-rnn-mechanism-into-transformer.jpg
0 → 100644
查看文件 @
0b640bc4
38.4 KB
Chapter15/Figures/figure-relative-position-coding-and-absolute-position-coding.jpg
0 → 100644
查看文件 @
0b640bc4
48.4 KB
Chapter15/Figures/figure-relative-position-weight.tex
查看文件 @
0b640bc4
\begin{tikzpicture}
\tikzstyle
{
node1
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=green!80]
\tikzstyle
{
node2
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=green!
4
0]
\tikzstyle
{
node2
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=green!
5
0]
\tikzstyle
{
node3
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=green!20]
\tikzstyle
{
node4
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt]
\tikzstyle
{
node5
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=red!20]
\tikzstyle
{
node6
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=red!
4
0]
\tikzstyle
{
node6
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=red!
5
0]
\tikzstyle
{
node7
}
= [anchor=center,draw,minimum height=2em,minimum width=2em,inner sep=0pt,fill=red!80]
\begin{scope}
[scale=1.0]
...
...
Chapter15/Figures/figure-weight-visualization-of-convergence-DLCL-network.tex
查看文件 @
0b640bc4
\begin{tikzpicture}
[node distance = 0,scale = 1]
\tikzstyle
{
every node
}
=[scale=1]
\node
[draw=white]
(input) at (0,0)
{
\includegraphics
[width=0.62\textwidth]
{
./Chapter15/Figures/DLCL-picture.png
}}
;(1.9,-1.4);
\node
[scale = 2]
at (4.5,3.6)
{
4
}
;
\node
[scale = 2]
at (4.5,1.8)
{
2
}
;
\node
[scale = 2]
at (4.5,0)
{
0
}
;
\node
[scale = 2]
at (4.5,-1.8)
{
-2
}
;
\node
[scale = 2]
at (4.5,-3.6)
{
-4
}
;
\node
[scale = 1.5]
at (-4.5,3.75)
{$
\rm
x
_{
1
}$}
;
\node
[scale = 1.5]
at (-4.5,2.5)
{$
\rm
x
_{
6
}$}
;
\node
[scale = 1.5]
at (-4.5,1.4)
{$
\rm
x
_{
11
}$}
;
\node
[scale = 1.5]
at (-4.5,0.1)
{$
\rm
x
_{
16
}$}
;
\node
[scale = 1.5]
at (-4.5,-1.1)
{$
\rm
x
_{
21
}$}
;
\node
[scale = 1.5]
at (-4.5,-2.3)
{$
\rm
x
_{
26
}$}
;
\node
[scale = 1.5]
at (-4.5,-3.4)
{$
\rm
x
_{
31
}$}
;
\node
[scale = 1.5]
at (-3.8,-4)
{$
\rm
y
_{
0
}$}
;
\node
[scale = 1.5]
at (-2.7,-4)
{$
\rm
y
_{
5
}$}
;
\node
[scale = 1.5]
at (-1.5,-4)
{$
\rm
y
_{
10
}$}
;
\node
[scale = 1.5]
at (-0.3,-4)
{$
\rm
y
_{
15
}$}
;
\node
[scale = 1.5]
at (0.9,-4)
{$
\rm
y
_{
20
}$}
;
\node
[scale = 1.5]
at (2.1,-4)
{$
\rm
y
_{
25
}$}
;
\node
[scale = 1.5]
at (3.3,-4)
{$
\rm
y
_{
30
}$}
;
\node
[draw=white]
(input) at (0,0)
{
\includegraphics
[width=0.62\textwidth]
{
./Chapter15/Figures/DLCL-picture.png
}}
;
{
\footnotesize
\node
[anchor=center]
at (4.1,3)
{
4
}
;
\node
[anchor=center]
at (4.1,1.5)
{
2
}
;
\node
[anchor=center]
at (4.1,0)
{
0
}
;
\node
[anchor=center]
at (4.1,-1.5)
{
-2
}
;
\node
[anchor=center]
at (4.1,-3)
{
-4
}
;
\node
[anchor=center]
at (-4.2,3.6)
{$
x
_{
1
}$}
;
\node
[anchor=center]
at (-4.2,2.45)
{$
x
_{
6
}$}
;
\node
[anchor=center]
at (-4.2,1.3)
{$
x
_{
11
}$}
;
\node
[anchor=center]
at (-4.2,0.15)
{$
x
_{
16
}$}
;
\node
[anchor=center]
at (-4.2,-1)
{$
x
_{
21
}$}
;
\node
[anchor=center]
at (-4.2,-2.15)
{$
x
_{
26
}$}
;
\node
[anchor=center]
at (-4.2,-3.3)
{$
x
_{
31
}$}
;
\node
[anchor=center]
at (-3.75,-3.8)
{$
y
_{
0
}$}
;
\node
[anchor=center]
at (-2.6,-3.8)
{$
y
_{
5
}$}
;
\node
[anchor=center]
at (-1.45,-3.8)
{$
y
_{
10
}$}
;
\node
[anchor=center]
at (-0.3,-3.8)
{$
y
_{
15
}$}
;
\node
[anchor=center]
at (0.85,-3.8)
{$
y
_{
20
}$}
;
\node
[anchor=center]
at (2,-3.8)
{$
y
_{
25
}$}
;
\node
[anchor=center]
at (3.15,-3.8)
{$
y
_{
30
}$}
;
}
\end{tikzpicture}
\ No newline at end of file
Chapter15/chapter15.tex
查看文件 @
0b640bc4
...
...
@@ -46,7 +46,16 @@
\parinterval
但是,Transformer模型中的自注意力机制本身并不具有这种性质,而且它直接忽略了输入单元之间的位置关系。虽然,Transformer中引入了基于正余弦函数的绝对位置编码(见
{
\chaptertwelve
}
),但是该方法仍然无法显性区分局部依赖与长距离依赖
\footnote
[1]
{
局部依赖指当前位置与局部的相邻位置之间的联系。
}
。
\parinterval
针对上述问题,研究人员设计了“相对位置”编码,对原有的“绝对位置”编码进行补充,强化了局部依赖
\upcite
{
Dai2019TransformerXLAL,Shaw2018SelfAttentionWR
}
。此外,由于模型中每一层均存在自注意力机制计算,因此模型捕获位置信息的能力也逐渐减弱,这种现象在深层模型中尤为明显。而利用相对位置编码能够把位置信息显性加入到每一层的注意力机制的计算中,进而强化深层模型中局部位置的表示能力
\upcite
{
li2020shallow
}
。
{
\color
{
red
}
图XXX对比了Transformer中相对位置编码和绝对位置编码方法。
}
\parinterval
针对上述问题,研究人员设计了“相对位置”编码,对原有的“绝对位置”编码进行补充,强化了局部依赖
\upcite
{
Dai2019TransformerXLAL,Shaw2018SelfAttentionWR
}
。此外,由于模型中每一层均存在自注意力机制计算,因此模型捕获位置信息的能力也逐渐减弱,这种现象在深层模型中尤为明显。而利用相对位置编码能够把位置信息显性加入到每一层的注意力机制的计算中,进而强化深层模型中局部位相对位置编码和绝对位置编码方法置的表示能力
\upcite
{
li2020shallow
}
。图
\ref
{
fig:15-1
}
对比了Transformer中相对位置编码和绝对位置编码方法。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\includegraphics
[scale=0.5]
{
./Chapter15/Figures/figure-relative-position-coding-and-absolute-position-coding.jpg
}
\caption
{
绝对位置编码(左)和相对位置编码(右)
}
\label
{
fig:15-1
}
\end{figure}
%-------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -94,12 +103,22 @@
\label
{
eq:15-9
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
w
}^
K
\in
\mathbb
{
R
}^{
d
_
k
}$
和
$
\mathbi
{
w
}^
V
\in
\mathbb
{
R
}^{
d
_
k
}$
是模型中可学习的参数矩阵;
$
\textrm
{
clip
}
(
\cdot
,
\cdot
)
$
表示截断操作,由公式
\eqref
{
eq:15-9
}
定义。可以看出,
$
\mathbi
{
a
}^
K
$
与
$
\mathbi
{
a
}^
V
$
是根据输入的相对位置信息(由
$
\textrm
{
clip
}
(
j
-
i,k
)
$
确定)对
$
\mathbi
{
w
}^
K
$
和
$
\mathbi
{
w
}^
V
$
进行查表得到的向量,即相对位置表示。这里通过预先设定的最大相对位置
$
k
$
,强化模型对当前词为中心的左右各
$
k
$
个词的注意力计算。因此,最终的窗口大小为
$
2
k
+
1
$
。 对于边缘位置窗口大小不足
$
2
k
$
的单词,采用了裁剪的机制,即只对有效的临近词进行建模。此时,注意力模型的计算可以调整为:
\noindent
其中,
$
\mathbi
{
w
}^
K
\in
\mathbb
{
R
}^{
d
_
k
}$
和
$
\mathbi
{
w
}^
V
\in
\mathbb
{
R
}^{
d
_
k
}$
是模型中可学习的参数矩阵;
$
\textrm
{
clip
}
(
\cdot
,
\cdot
)
$
表示截断操作,由公式
\eqref
{
eq:15-9
}
定义。可以看出,
$
\mathbi
{
a
}^
K
$
与
$
\mathbi
{
a
}^
V
$
是根据输入的相对位置信息(由
$
\textrm
{
clip
}
(
j
-
i,k
)
$
确定)对
$
\mathbi
{
w
}^
K
$
和
$
\mathbi
{
w
}^
V
$
进行查表得到的向量,即相对位置表示
,如图
\ref
{
fig:15-2
}
所示
。这里通过预先设定的最大相对位置
$
k
$
,强化模型对当前词为中心的左右各
$
k
$
个词的注意力计算。因此,最终的窗口大小为
$
2
k
+
1
$
。 对于边缘位置窗口大小不足
$
2
k
$
的单词,采用了裁剪的机制,即只对有效的临近词进行建模。此时,注意力模型的计算可以调整为:
\begin{eqnarray}
\mathbi
{
z
}_{
i
}
&
=
&
\sum
_{
j=1
}^
m
\alpha
_{
ij
}
(
\mathbi
{
x
}_
j
\mathbi
{
W
}_
V +
\mathbi
{
a
}_{
ij
}^
V)
\label
{
eq:15-10
}
\end{eqnarray}
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-relative-position-weight
}
\caption
{
相对位置权重
$
\mathbi
{
a
}_{
ij
}$}
\label
{
fig:15-2
}
\end{figure}
%-------------------------------------------
\noindent
相比于公式
\eqref
{
eq:15-4
}
,公式
\eqref
{
eq:15-10
}
在计算
$
\mathbi
{
z
}_
i
$
时引入了额外的向量
$
\mathbi
{
a
}_{
ij
}^
V
$
,用它来表示位置
$
i
$
与位置
$
j
$
之间的相对位置信息。同时在计算注意力权重时对
$
\mathbi
{
K
}$
进行修改,同样引入了
$
\mathbi
{
a
}_{
ij
}^
K
$
向量表示位置
$
i
$
与位置
$
j
$
之间的相对位置。在公式
\eqref
{
eq:15-6
}
的基础上,注意力权重的计算方式调整为:
\begin{eqnarray}
\mathbi
{
e
}_{
ij
}
&
=
&
\frac
{
\mathbi
{
x
}_
i
\mathbi
{
W
}_
Q
{
(
\mathbi
{
x
}_
j
\mathbi
{
W
}_
K +
\mathbi
{
a
}_{
ij
}^
K )
}^{
T
}}{
\sqrt
{
d
_
k
}}
\nonumber
\\
...
...
@@ -109,15 +128,6 @@
\noindent
可以注意到,公式
\eqref
{
eq:15-10
}
和公式
\eqref
{
eq:15-11
}
将位置编码信息直接暴露给每一层注意力机制的计算,而不是像标准Transformer中只将其作为整个模型的输入。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-relative-position-weight
}
\caption
{
相对位置权重
$
\mathbi
{
a
}_{
ij
}$}
\label
{
fig:15-1
}
\end{figure}
%-------------------------------------------
\vspace
{
0.5em
}
\item
Transformer-XL
\upcite
{
Dai2019TransformerXLAL
}
。在Transformer中,模型的输入由词嵌入表示与绝对位置编码组成,例如,对于输入层有,
$
x
_
i
=
\mathbi
{
E
}_{
x
_
i
}
+
\mathbi
{
U
}_
i
$
,
$
x
_
j
=
\mathbi
{
E
}_{
x
_
j
}
+
\mathbi
{
U
}_
j
$
,其中
$
\mathbi
{
E
}_{
x
_
i
}
$
和
$
\mathbi
{
E
}_{
x
_
j
}
$
表示词嵌入,
$
\mathbi
{
U
}_
i
$
和
$
\mathbi
{
U
}_
j
$
表示绝对位置编码(正余弦函数)。将其代入公式
\eqref
{
eq:15-6
}
中可以得到:
\begin{eqnarray}
...
...
@@ -159,12 +169,21 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\
\begin{itemize}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
引入高斯约束
}}
\upcite
{
Yang2018ModelingLF
}
。如图
\ref
{
fig:15-
2
}
所示,这类方法的核心思想是引入可学习的高斯分布
$
\mathbi
{
G
}$
作为局部约束,与注意力权重进行融合,具体的形式如下:
\item
{
\small\bfnew
{
引入高斯约束
}}
\upcite
{
Yang2018ModelingLF
}
。如图
\ref
{
fig:15-
3
}
所示,这类方法的核心思想是引入可学习的高斯分布
$
\mathbi
{
G
}$
作为局部约束,与注意力权重进行融合,具体的形式如下:
\begin{eqnarray}
\mathbi
{
e
}_{
ij
}
&
=
&
\frac
{
(
\mathbi
{
x
}_
i
\mathbi
{
W
}_
Q)
{
(
\mathbi
{
x
}_
j
\mathbi
{
W
}_
K)
}^{
T
}}{
\sqrt
{
d
_
k
}}
+
\mathbi
{
G
}
\label
{
eq:15-15
}
\end{eqnarray}
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-attention-distribution-based-on-gaussian-distribution
}
\caption
{
融合高斯分布的注意力分布
}
\label
{
fig:15-3
}
\end{figure}
%-------------------------------------------
\noindent
其中,
$
\mathbi
{
G
}
\in
\mathbb
{
R
}^{
m
\times
m
}$
。
$
\mathbi
{
G
}$
中的每个元素
$
G
_{
ij
}$
表示位置
$
j
$
和预测的中心位置
$
P
_
i
$
之间的关联程度,计算公式如下:
\begin{eqnarray}
G
_{
ij
}
&
=
&
-
\frac
{{
(j - P
_
i)
}^
2
}{
2
\sigma
_
i
^
2
}
...
...
@@ -186,24 +205,15 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\noindent
其中,
$
\mathbi
{
W
}_
p
$
、
$
\mathbi
{
W
}_
d
$
、
$
\mathbi
{
I
}_
p
$
、
$
\mathbi
{
I
}_
d
$
均为模型中可学习的参数矩阵。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-attention-distribution-based-on-gaussian-distribution
}
\caption
{
融合高斯分布的注意力分布
}
\label
{
fig:15-2
}
\end{figure}
%-------------------------------------------
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
多尺度局部建模
}}
\upcite
{
DBLP:conf/aaai/GuoQLXZ20
}
。不同于上述方法直接作用于注意力权重,多尺度局部建模通过赋予多头不一样的局部感受野,间接地引入局部约束(图
\ref
{
fig:15-
3
}
)。
\item
{
\small\bfnew
{
多尺度局部建模
}}
\upcite
{
DBLP:conf/aaai/GuoQLXZ20
}
。不同于上述方法直接作用于注意力权重,多尺度局部建模通过赋予多头不一样的局部感受野,间接地引入局部约束(图
\ref
{
fig:15-
4
}
)。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-multi-scale-local-modeling
}
\caption
{
多尺度局部建模
\upcite
{
DBLP:conf/aaai/GuoQLXZ20
}}
\label
{
fig:15-
3
}
\label
{
fig:15-
4
}
\end{figure}
%-------------------------------------------
...
...
@@ -242,16 +252,16 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
使用轻量卷积和动态卷积神经网络
}}
\upcite
{
Wu2019PayLA,DBLP:conf/interspeech/GulatiQCPZYHWZW20
}
。比如,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见
{
\chapternine
}
)替换Transformer的自注意力机制,同时保留解码端的编码-解码注意力机制,一定程度上加强了模型对局部信息的建模能力,同时提高了计算效率。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
使用1维卷积注意力网络
}}
(图
\ref
{
fig:15-
4
}
(b))。可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小
$
D
$
,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\item
{
\small\bfnew
{
使用1维卷积注意力网络
}}
(图
\ref
{
fig:15-
5
}
(b))。可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小
$
D
$
,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
使用2维卷积注意力网络
}}
(图
\ref
{
fig:15-
4
}
(c))。在一维卷积注意力网络的基础上,对多个注意力头之间的信息进行交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为
$
1
\times
D
$
,当将其扩展为二维矩形
$
D
\times
N
$
,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第
$
i
$
个元素和另一个头中的第
$
j
$
个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
\item
{
\small\bfnew
{
使用2维卷积注意力网络
}}
(图
\ref
{
fig:15-
5
}
(c))。在一维卷积注意力网络的基础上,对多个注意力头之间的信息进行交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为
$
1
\times
D
$
,当将其扩展为二维矩形
$
D
\times
N
$
,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第
$
i
$
个元素和另一个头中的第
$
j
$
个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-convolutional-attention-network
}
\caption
{
卷积注意力模型示意图
\upcite
{
DBLP:journals/corr/abs-1904-03107
}}
\label
{
fig:15-
4
}
\label
{
fig:15-
5
}
\end{figure}
%-------------------------------------------
\end{itemize}
...
...
@@ -272,14 +282,14 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace
{
0.5em
}
\item
Weighted Transformer
\upcite
{
DBLP:journals/corr/abs-1711-02132
}
。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。传统方法使用级联操作并通过线性映射矩阵来融合不同头之间的信息,而Weighted Transformer直接利用线性映射将维度为
$
d
_
k
$
的向量表示映射到
$
d
_{
\rm
model
}$
维的向量。之后,将这个
$
d
_{
\rm
model
}$
维向量分别送入每个分支中的前馈神经网络,最后对不同分支的输出进行线性加权。但是,这个模型的计算复杂度要大于标准的Transformer模型。
\vspace
{
0.5em
}
\item
多分支注意力模型
\upcite
{
DBLP:journals/corr/abs-2006-10270
}
。不同于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力模型的计算(图
\ref
{
fig:15-
5
}
)。同时为了避免结构相同的多个多头注意力机制之间的协同适应,这种模型使用Dropout方法在训练过程中以一定的概率随机地丢弃一些分支。
\item
多分支注意力模型
\upcite
{
DBLP:journals/corr/abs-2006-10270
}
。不同于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力模型的计算(图
\ref
{
fig:15-
6
}
)。同时为了避免结构相同的多个多头注意力机制之间的协同适应,这种模型使用Dropout方法在训练过程中以一定的概率随机地丢弃一些分支。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter15/Figures/figure-multi-branch-attention-model
}
\caption
{
多分支注意力模型
}
\label
{
fig:15-
5
}
\label
{
fig:15-
6
}
\end{figure}
%-------------------------------------------
...
...
@@ -307,7 +317,16 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\parinterval
虽然,Transformer模型完全摒弃了循环单元与卷积单元,仅通过位置编码来区分序列中的不同位置。但是,循环神经网络也非常适用于处理序列结构,且其结构成熟、易于优化。因此,有研究人员尝试将其与Transformer模型融合。这种方式一方面能够发挥循环神经网络简单高效的特点,另一方面也能够发挥Transformer模型在特征提取方面的优势,是一种非常值得探索的思路
\upcite
{
Chen2018TheBO
}
。
\parinterval
在Transformer模型中引入循环神经网络的一种方法是,对深层网络的不同层使用循环机制。早在残差网络提出时,研究人员已经开始尝试探讨残差网络成功背后的原因
\upcite
{
DBLP:conf/nips/VeitWB16,DBLP:journals/corr/GreffSS16,DBLP:conf/iclr/ChangMHTB18
}
。本质上,在卷积神经网络中引入残差连接后,神经网络从深度上隐性地利用循环的特性。也就是,多层Transformer的不同层本身也可以被看作是一个处理序列,只是序列中不同位置(对应不同层)的模型参数独立,而非共享。Transformer编码器与解码器分别由
$
N
$
个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2和3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置
\upcite
{
DBLP:conf/iclr/DehghaniGVUK19
}
。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息,
{
\color
{
red
}
如图XXX所示
}
。在训练大容量预训练模型时同样也采取了共享层间参数的方式
\upcite
{
Lan2020ALBERTAL
}
。
\parinterval
在Transformer模型中引入循环神经网络的一种方法是,对深层网络的不同层使用循环机制。早在残差网络提出时,研究人员已经开始尝试探讨残差网络成功背后的原因
\upcite
{
DBLP:conf/nips/VeitWB16,DBLP:journals/corr/GreffSS16,DBLP:conf/iclr/ChangMHTB18
}
。本质上,在卷积神经网络中引入残差连接后,神经网络从深度上隐性地利用循环的特性。也就是,多层Transformer的不同层本身也可以被看作是一个处理序列,只是序列中不同位置(对应不同层)的模型参数独立,而非共享。Transformer编码器与解码器分别由
$
N
$
个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2和3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置
\upcite
{
DBLP:conf/iclr/DehghaniGVUK19
}
。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息,如图
\ref
{
fig:15-8
}
所示。在训练大容量预训练模型时同样也采取了共享层间参数的方式
\upcite
{
Lan2020ALBERTAL
}
。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\includegraphics
[scale=0.5]
{
./Chapter15/Figures/figure-introducing-rnn-mechanism-into-transformer.jpg
}
\caption
{
在Transformer中引入循环机制
}
\label
{
fig:15-8
}
\end{figure}
%-------------------------------------------
\parinterval
另一种方法是,利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的结果与Transformer进行融合
\upcite
{
DBLP:conf/naacl/HaoWYWZT19
}
。融合机制可以采用串行计算或并行计算。
...
...
@@ -620,7 +639,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\label
{
eq:15-43
}
\end{eqnarray}
\noindent
其中,
$
l
$
为对应的神经网络的层
次
,
$
\alpha
$
为预先设定的超参数来控制缩放的比例。这样,可以通过缩减顶层神经网络输出与输入之间的差异,减少顶层神经网络参数的梯度范数,从而缓解由于神经网络过深所带来的梯度消失问题。
\noindent
其中,
$
l
$
为对应的神经网络的层
数
,
$
\alpha
$
为预先设定的超参数来控制缩放的比例。这样,可以通过缩减顶层神经网络输出与输入之间的差异,减少顶层神经网络参数的梯度范数,从而缓解由于神经网络过深所带来的梯度消失问题。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -637,17 +656,16 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\item
计算方差:
${
\bm
\sigma
}
=
\textrm
{
std
}
(
\mathbi
{
x
}_
l
+
\mathbi
{
y
}_
l
)
$
\vspace
{
0.5em
}
\item
根据均值和方差对输入进行放缩,如下:
\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-4
1
}
\label
{
eq:15-4
4
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
w
}$
和
$
\mathbi
{
b
}$
为可学习参数。进一步将公式
\eqref
{
eq:15-4
1
}
展开后可得:
\noindent
其中,
$
\mathbi
{
w
}$
和
$
\mathbi
{
b
}$
为可学习参数。进一步将公式
\eqref
{
eq:15-4
4
}
展开后可得:
\begin{eqnarray}
\mathbi
{
x
}_{
l+1
}^{
\textrm
{
post
}}
&
=
&
\frac
{
\mathbi
{
x
}_
l+
\mathbi
{
y
}_
l
}{
\bm
\sigma
}
\cdot
\mathbi
{
w
}
-
\frac
{
\bm
\mu
}{
\bm
\sigma
}
\cdot
\mathbi
{
w
}
+
\mathbi
{
b
}
\nonumber
\\
&
=
&
\frac
{
\mathbi
{
w
}}{
\bm
\sigma
}
\cdot
\mathbi
{
x
}_{
l+1
}^{
\textrm
{
pre
}}
-
\frac
{
\mathbi
{
w
}}{
\bm
\sigma
}
\cdot
{
\bm
\mu
}
+
\mathbi
{
b
}
\label
{
eq:15-4
2
}
\label
{
eq:15-4
5
}
\end{eqnarray}
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -655,7 +673,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\parinterval
可以看到相比于Pre-Norm的计算方式,基于Post-Norm的Transformer中子层的输出为Pre-Norm形式的
$
\frac
{
\mathbi
{
w
}}{
\bm
\sigma
}$
倍。当
$
\frac
{
\mathbi
{
w
}}{
\bm
\sigma
}
<
1
$
时,
$
\mathbi
{
x
}_
l
$
较小,输入与输出之间差异过大,导致深层Transformer系统难以收敛。Lipschitz 初始化策略通过维持条件
$
\frac
{
\mathbi
{
w
}}{
\bm
\sigma
}
>
1
$
,保证网络输入与输出范数一致,进而缓解梯度消失的问题
\upcite
{
DBLP:conf/acl/XuLGXZ20
}
。一般情况下,
$
\mathbi
{
w
}$
可以被初始化为1,因此Lipschitz 初始化方法最终的约束条件则为:
\begin{eqnarray}
0
\
<
\
{
\bm
\sigma
}
&
=
&
\textrm
{
std
}
(
\mathbi
{
x
}_
l+
\mathbi
{
y
}_
l)
\ \leq\
1
\label
{
eq:15-4
3
}
\label
{
eq:15-4
6
}
\end{eqnarray}
%----------------------------------------------------------------------------------------
...
...
@@ -664,7 +682,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsubsection
{
3. T-Fixup初始化策略
}
\parinterval
另外一种初始化方法是从神经网络结构与优化器的计算方式入手。Post-Norm结构在Warmup阶段难以
很精确地估计参数的二阶动量,导致训练不稳定问题
\upcite
{
huang2020improving
}
。 也就是,层标准化是导致深层Transformer难以优化的主要原因之一
\upcite
{
WangLearning
}
。Post-Norm方式下Transformer的底层网络,尤其是编码器的词嵌入层面临严重的梯度消失问题。问题的原因在于,在不改变层标准化位置的条件下,由于Adam优化器利用滑动平均的方式来估计参数的二阶矩,其方差是无界的。这样,在前期模型只能看到有限数量样本的前提下,其二阶矩很难进行有效的估计。因此反向更新参数时会导致
参数的梯度方差过大。
\parinterval
另外一种初始化方法是从神经网络结构与优化器的计算方式入手。Post-Norm结构在Warmup阶段难以
精确地估计参数的二阶动量,这导致了训练不稳定问题
\upcite
{
huang2020improving
}
。也就是,层标准化是导致深层Transformer难以优化的主要原因之一
\upcite
{
WangLearning
}
。Post-Norm方式下Transformer的底层网络,尤其是编码器的词嵌入层面临严重的梯度消失问题。该问题的原因在于,在不改变层标准化位置的条件下,Adam优化器利用滑动平均的方式来估计参数的二阶矩,其方差是无界的。在训练阶段的前期,由于模型只能看到有限数量样本,因此很难有效的估计参数的二阶矩,导致反向更新参数时
参数的梯度方差过大。
\parinterval
除了用Pre-Norm代替Post-Norm结构来训练深层网络,也可以采用去除Warmup策略并移除层标准化机制的方式,并对神经网络中不同的参数矩阵制定相应的缩放机制来保证训练的稳定性
\upcite
{
huang2020improving
}
。具体的缩放策略如下:
...
...
@@ -672,13 +690,13 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace
{
0.5em
}
\item
类似于标准的Transformer初始化方式,使用Xavier初始化方式来初始化除了词嵌入以外的所有参数矩阵。词嵌入矩阵服从
$
\mathbb
{
N
}
(
0
,d
^{
-
\frac
{
1
}{
2
}}
)
$
的高斯分布,其中
$
d
$
代表词嵌入的维度。
\vspace
{
0.5em
}
\item
对编码器中自注意力
模型中的参数矩阵以及前馈神经网络
中所有参数矩阵进行缩放因子为
$
0
.
67
{
L
}^{
-
\frac
{
1
}{
4
}}$
的缩放,
$
M
$
为编码器层数。
\item
对编码器中自注意力
子层的参数矩阵以及前馈神经网络子层
中所有参数矩阵进行缩放因子为
$
0
.
67
{
L
}^{
-
\frac
{
1
}{
4
}}$
的缩放,
$
M
$
为编码器层数。
\vspace
{
0.5em
}
\item
对解码器中
注意力模型中的参数矩阵以及前馈神经网络
中所有参数矩阵进行缩放因子为
$
(
9
{
M
}
)
^{
-
\frac
{
1
}{
4
}}$
的缩放,其中
$
L
$
为解码器层数。
\item
对解码器中
全部注意力子层的参数矩阵以及前馈神经网络子层
中所有参数矩阵进行缩放因子为
$
(
9
{
M
}
)
^{
-
\frac
{
1
}{
4
}}$
的缩放,其中
$
L
$
为解码器层数。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
这种初始化方法由于没有Warmup策略,学习率会直接从峰值根据参数的更新次数进行退火,大幅度增大了模型收敛的时间。
但是
,如何进一步解决该初始化方法下的模型收敛速度是比较关键的问题。
\parinterval
这种初始化方法由于没有Warmup策略,学习率会直接从峰值根据参数的更新次数进行退火,大幅度增大了模型收敛的时间。
因此
,如何进一步解决该初始化方法下的模型收敛速度是比较关键的问题。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -686,10 +704,10 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsubsection
{
4. ADMIN初始化策略
}
\parinterval
也有研究发现Post-Norm结构在训练过程中过度依赖残差支路,在训练初期很容易发生参数梯度方差过大的现象
\upcite
{
DBLP:conf/emnlp/LiuLGCH20
}
。经过分析发现,虽然底层神经网络发生梯度消失是导致训练不稳定的重要因素,但并不是唯一因素。例如,标准Transformer模型中梯度消失的原因在于使用Post-Norm 结构的解码器。尽管通过调整模型结构解决
梯度消失问题,模型训练不稳定的问题仍然没有很好地解决。研究人员观测到Post-Norm 结构在训练过程中过于依赖残差支路,而Pre-Norm结构在训练过程中逐渐呈现出对残差支路的依赖性,这更易于网络的训练。进一步从参数更新的角度出发,Pre-Norm由于参数的改变导致网络输出变化的方差经推导后可以表示为
$
O
(
\log
L
)
$
,而Post-Norm对应的方差为O(
$
L
$
)
。因此,可以尝试减小Post-Norm中由于参数更新导致的输出的方差值,从而达到稳定训练的目的。针对该问题,可以采用两阶段的初始化方法。这里,可以重新定义子层之间的残差连接如下:
\parinterval
也有研究发现Post-Norm结构在训练过程中过度依赖残差支路,在训练初期很容易发生参数梯度方差过大的现象
\upcite
{
DBLP:conf/emnlp/LiuLGCH20
}
。经过分析发现,虽然底层神经网络发生梯度消失是导致训练不稳定的重要因素,但并不是唯一因素。例如,标准Transformer模型中梯度消失的原因在于使用Post-Norm 结构的解码器。尽管通过调整模型结构解决
了梯度消失问题,但是模型训练不稳定的问题仍然没有被很好地解决。研究人员观测到Post-Norm结构在训练过程中过于依赖残差支路,而Pre-Norm结构在训练过程中逐渐呈现出对残差支路的依赖性,这更易于网络的训练。进一步,从参数更新的角度出发,Pre-Norm由于参数的改变导致网络输出变化的方差经推导后可以表示为
$
O
(
\log
L
)
$
,而Post-Norm对应的方差为
$
O
(
L
)
$
。因此,可以尝试减小Post-Norm中由于参数更新导致的输出的方差值,从而达到稳定训练的目的。针对该问题,可以采用两阶段的初始化方法。这里,可以重新定义子层之间的残差连接如下:
\begin{eqnarray}
\mathbi
{
x
}_{
l+1
}
&
=
&
\mathbi
{
x
}_
l
\cdot
{
\bm
\omega
_{
l+1
}}
+ F
_{
l+1
}
(
\mathbi
{
x
}_
l)
\label
{
eq:15-4
4
}
\label
{
eq:15-4
7
}
\end{eqnarray}
\noindent
其两阶段的初始化方法如下所示:
...
...
@@ -701,7 +719,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\item
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-4
5
}
\label
{
eq:15-4
8
}
\end{eqnarray}
\vspace
{
0.5em
}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论