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
502d7c67
Commit
502d7c67
authored
4 years ago
by
zengxin
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'zengxin' 到 'caorunzhe'
12 查看合并请求
!516
parents
84f95704
31e47c71
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
7 行增加
和
6 行删除
+7
-6
Chapter12/chapter12.tex
+7
-6
没有找到文件。
Chapter12/chapter12.tex
查看文件 @
502d7c67
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论