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
31e47c71
Commit
31e47c71
authored
Nov 30, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
12
parent
752ce135
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
7 行增加
和
6 行删除
+7
-6
Chapter12/chapter12.tex
+7
-6
没有找到文件。
Chapter12/chapter12.tex
查看文件 @
31e47c71
...
...
@@ -118,7 +118,7 @@
\end{table}
%----------------------------------------------
\parinterval
Transformer在被提出之后,很快就席卷了整个自然语言处理领域。实际上,也可以把Transformer当作一种表示模型,因此也被大量地使用在自然语言处理的其他领域,甚至图像处理
\upcite
{
DBLP:journals/corr/abs-1802-05751
}
和语音处理
\upcite
{
DBLP:conf/icassp/DongXX18,DBLP:conf/interspeech/GulatiQCPZYHWZW20
}
中也能看到它的影子。比如,目前非常流行的BERT等预训练模型就是基于Transformer。表
\ref
{
tab:12-2
}
展示了Transformer在WMT英德和英法机器翻译任务上的性能。它能用更少的计算量(FLOP
S)达到比其他模型更好的翻译品质
\footnote
{
FLOPS = floating-point operations per second,即每秒浮点运算次数。它是度量计算机运算规模
的常用单位
}
。
\parinterval
Transformer在被提出之后,很快就席卷了整个自然语言处理领域。实际上,也可以把Transformer当作一种表示模型,因此也被大量地使用在自然语言处理的其他领域,甚至图像处理
\upcite
{
DBLP:journals/corr/abs-1802-05751
}
和语音处理
\upcite
{
DBLP:conf/icassp/DongXX18,DBLP:conf/interspeech/GulatiQCPZYHWZW20
}
中也能看到它的影子。比如,目前非常流行的BERT等预训练模型就是基于Transformer。表
\ref
{
tab:12-2
}
展示了Transformer在WMT英德和英法机器翻译任务上的性能。它能用更少的计算量(FLOP
s)达到比其他模型更好的翻译品质
\footnote
{
FLOPs = Floating Point Operations,即浮点运算数。它是度量算法/模型复杂度
的常用单位
}
。
%----------------------------------------------
\begin{table}
[htp]
...
...
@@ -131,6 +131,7 @@
\multicolumn
{
1
}{
l|
}{
GNMT+RL
}
&
24.6
&
39.92
&
1.4
$
\times
10
^{
20
}$
\\
\multicolumn
{
1
}{
l|
}{
ConvS2S
}
&
25.16
&
40.46
&
1.5
$
\times
10
^{
20
}$
\\
\multicolumn
{
1
}{
l|
}{
MoE
}
&
26.03
&
40.56
&
1.2
$
\times
10
^{
20
}$
\\
\multicolumn
{
1
}{
l|
}{
Transformer(Base Model)
}
&
27.3
&
38.1
&
3.3
$
\times
10
^{
18
}$
\\
\multicolumn
{
1
}{
l|
}{
Transformer (Big)
}
&
{
\small\sffamily\bfseries
{
28.4
}}
&
{
\small\sffamily\bfseries
{
41.8
}}
&
2.3
$
\times
10
^{
19
}$
\\
\end{tabular}
\end{table}
...
...
@@ -157,9 +158,9 @@
\begin{itemize}
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
自注意力子层
}}
\index
{
自注意力子层
}
(Self-
attention Sub-layer)
\index
{
Self-a
ttention Sub-layer
}
:使用自注意力机制对输入的序列进行新的表示;
\item
{
\small\sffamily\bfseries
{
自注意力子层
}}
\index
{
自注意力子层
}
(Self-
Attention Sub-layer)
\index
{
Self-A
ttention Sub-layer
}
:使用自注意力机制对输入的序列进行新的表示;
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
前馈神经网络子层
}}
\index
{
前馈神经网络子层
}
(Feed-
forward Sub-layer)
\index
{
Feed-f
orward Sub-layer
}
:使用全连接的前馈神经网络对输入向量序列进行进一步变换;
\item
{
\small\sffamily\bfseries
{
前馈神经网络子层
}}
\index
{
前馈神经网络子层
}
(Feed-
Forward Sub-layer)
\index
{
Feed-F
orward Sub-layer
}
:使用全连接的前馈神经网络对输入向量序列进行进一步变换;
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
残差连接
}}
(标记为“Add”):对于自注意力子层和前馈神经网络子层,都有一个从输入直接到输出的额外连接,也就是一个跨子层的直连。残差连接可以使深层网络的信息传递更为有效;
\vspace
{
0.5em
}
...
...
@@ -274,7 +275,7 @@
\parinterval
在
\ref
{
sec:12.1
}
节中已经介绍,自注意力机制中至关重要的是获取相关性系数,也就是在融合不同位置的表示向量时各位置的权重。Transformer模型采用了一种基于点乘的方法来计算相关性系数。这种方法也称为
{
\small\bfnew
{
缩放的点乘注意力
}}
\index
{
缩放的点乘注意力
}
(Scaled Dot-product Attention)
\index
{
Scaled Dot-product Attention
}
机制。它的运算并行度高,同时并不消耗太多的存储空间。
\parinterval
具体来看,在注意力机制的计算过程中,包含三个重要的参数,分别是
Query,
\\
Key和Value。在下面的描述中,分别用
$
\mathbi
{
Q
}$
,
$
\mathbi
{
K
}$
,
$
\mathbi
{
V
}$
对它们进行表示,其中
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
的维度为
$
L
\times
d
_
k
$
,
$
\mathbi
{
V
}$
的维度为
$
L
\times
d
_
v
$
。这里,
$
L
$
为序列的长度,
$
d
_
k
$
和
$
d
_
v
$
分别表示每个Key和V
alue的大小,通常设置为
$
d
_
k
=
d
_
v
=
d
_{
\textrm
{
model
}}$
。
\parinterval
具体来看,在注意力机制的计算过程中,包含三个重要的参数,分别是
query,
\\
key和value。在下面的描述中,分别用
$
\mathbi
{
Q
}$
,
$
\mathbi
{
K
}$
,
$
\mathbi
{
V
}$
对它们进行表示,其中
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
的维度为
$
L
\times
d
_
k
$
,
$
\mathbi
{
V
}$
的维度为
$
L
\times
d
_
v
$
。这里,
$
L
$
为序列的长度,
$
d
_
k
$
和
$
d
_
v
$
分别表示每个key和v
alue的大小,通常设置为
$
d
_
k
=
d
_
v
=
d
_{
\textrm
{
model
}}$
。
\parinterval
在自注意力机制中,
$
\mathbi
{
Q
}$
、
$
\mathbi
{
K
}$
、
$
\mathbi
{
V
}$
都是相同的,对应着源语言或目标语言序列的表示。而在编码-解码注意力机制中,由于要对双语之间的信息进行建模,因此,将目标语每个位置的表示视为编码-解码注意力机制的
$
\mathbi
{
Q
}$
,源语言句子的表示视为
$
\mathbi
{
K
}$
和
$
\mathbi
{
V
}$
。
...
...
@@ -328,7 +329,7 @@
\vspace
{
0.5em
}
\item
其次,对每个头分别执行点乘注意力操作,并得到每个头的注意力操作的输出
$
\mathbi
{
head
}_
i
$
;
\vspace
{
0.5em
}
\item
最后,将
$
h
$
个头的注意力输出在最后一维
$
d
_
v
$
进行拼接(Concat)重新得到维度为
$
h
\times
d
_
v
$
的输出,并通过对其右乘一个权重矩阵
$
\mathbi
{
W
}^{
\,
o
}$
进行线性变换,从而对多头计算得到的信息进行融合,且将多头注意力输出的维度映射为模型的隐层大小(即
$
d
_{
model
}$
),这里参数矩阵
$
\mathbi
{
W
}^{
\,
o
}
\in
\mathbb
{
R
}^{
h d
_
v
\times
d
_{
model
}}$
。
\item
最后,将
$
h
$
个头的注意力输出在最后一维
$
d
_
v
$
进行拼接(Concat)重新得到维度为
$
hd
_
v
$
的输出,并通过对其右乘一个权重矩阵
$
\mathbi
{
W
}^{
\,
o
}$
进行线性变换,从而对多头计算得到的信息进行融合,且将多头注意力输出的维度映射为模型的隐层大小(即
$
d
_{
model
}$
),这里参数矩阵
$
\mathbi
{
W
}^{
\,
o
}
\in
\mathbb
{
R
}^{
h d
_
v
\times
d
_{
model
}}$
。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -348,7 +349,7 @@
\label
{
eq:12-11
}
\end{eqnarray}
\parinterval
多头机制的好处是允许模型在不同的表示子空间里学习。在很多实验中发现,不同表示空间的头捕获的信息是不同的,比如,在使用Transformer处理自然语言时,有的头可以捕捉句法信息,有头可以捕捉词法信息。
\parinterval
多头机制的好处是允许模型在不同的表示子空间里学习。在很多实验中发现,不同表示空间的头捕获的信息是不同的,比如,在使用Transformer处理自然语言时,有的头可以捕捉句法信息,有
的
头可以捕捉词法信息。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论