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
5f2df199
Commit
5f2df199
authored
Nov 25, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
f40249de
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
8 行增加
和
11 行删除
+8
-11
Chapter11/chapter11.tex
+8
-11
没有找到文件。
Chapter11/chapter11.tex
查看文件 @
5f2df199
...
...
@@ -347,7 +347,7 @@
\noindent
其中,
$
\mathbi
{
h
}^
l
$
表示
$
l
$
层神经网络的输入向量,
${
F
}
(
\mathbi
{
h
}^
l
)
$
是
$
l
$
层神经网络的运算。如果
$
l
=
2
$
,那么公式
\eqref
{
eq:11-3
}
可以解释为:第3层的输入
$
\mathbi
{
h
}^
3
$
等于第2层的输出
${
F
}
(
\mathbi
{
h
}^
2
)
$
加上第2层的输入
$
\mathbi
{
h
}^
2
$
。
\parinterval
在ConvS2S中残差连接主要应用于门控卷积神经网络和多跳自注意力机制中,比如在
多层的
门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,具体的数学描述如下:
\parinterval
在ConvS2S中残差连接主要应用于门控卷积神经网络和多跳自注意力机制中,比如在
编码器的多层
门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,具体的数学描述如下:
\begin{eqnarray}
%\mathbi{h}_i^l = \funp{v} (\mathbi{W}^l [\mathbi{h}_{i-\frac{k}{2}}^{l-1},...,\mathbi{h}_{i+\frac{k}{2}}^{l-1}] + b_{\mathbi{W}}^l ) + \mathbi{h}_i^{l-1}
\mathbi
{
h
}^{
l+1
}
=
\mathbi
{
A
}^{
l
}
\otimes
\sigma
(
\mathbi
{
B
}^{
l
}
) +
\mathbi
{
h
}^{
l
}
...
...
@@ -383,36 +383,33 @@
\noindent
其中,
$
\mathbi
{
h
}_
i
$
表示源语端第
$
i
$
个位置的隐层状态,即编码器在第
$
i
$
个位置的输出。
$
\mathbi
{
s
}_
j
$
表示目标端第
$
j
$
个位置的隐层状态。给定
$
\mathbi
{
s
}_
j
$
和
$
\mathbi
{
h
}_
i
$
,注意力机制通过函数
$
\funp
{
a
}
(
\cdot
)
$
计算目标语言表示
$
\mathbi
{
s
}_
j
$
与源语言表示
$
\mathbi
{
h
}_
i
$
之间的注意力权重
$
\alpha
_{
i,j
}$
,通过加权平均得到当前目标端位置所需的上下文表示
$
\mathbi
{
C
}_
j
$
。其中
$
\funp
{
a
}
(
\cdot
)
$
的具体计算方式在
{
\chapterten
}
已经详细讨论。
\parinterval
在ConvS2S模型中,解码
端的每一层中都引入了注意力机制,同时通过残差连接的方式将结果作用于上层网络的计算,因此称之为多跳注意力。 ConvS2S模型选取向量乘的方式作为
$
\funp
{
a
}
(
\cdot
)
$
函数具体的数学描述为
:
\parinterval
在ConvS2S模型中,解码
器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。ConvS2S选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多跳注意力。其具体计算方式如下
:
\begin{eqnarray}
\alpha
_{
ij
}^
l =
\frac
{
\textrm
{
exp
}
(
\mathbi
{
d
}_{
j
}^
l
,
\mathbi
{
h
}_
i)
}{
\sum
_{
i
^{
'
}
=1
}^
m
\textrm
{
exp
}
(
\mathbi
{
d
}_{
j
}^
l,
\mathbi
{
h
}_{
i
^{
'
}}
)
}
\alpha
_{
ij
}^
l =
\frac
{
\textrm
{
exp
}
(
\mathbi
{
d
}_{
j
}^
l
\mathbi
{
h
}_
i)
}{
\sum
_{
i
^{
'
}
=1
}^
m
\textrm
{
exp
}
(
\mathbi
{
d
}_{
j
}^
l
\mathbi
{
h
}_{
i
^{
'
}}
)
}
\label
{
eq:11-6-1
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
d
}_{
j
}^
l
$
表示了第
$
l
$
层的解码端第
$
j
$
个位置的输出状态,
$
\alpha
_{
ij
}^
l
$
代表第
$
l
$
层中源语言第
$
i
$
个位置与目标语言第
$
j
$
个位置之间的注意力权重。需要注意的是,这里
$
\mathbi
{
d
}_{
j
}^
l
$
并不是解码器隐藏层输出的状态
$
\mathbi
{
s
}_{
j
}^{
l
}
$
。而是先将
$
\mathbi
{
s
}_{
j
}^{
l
}$
进行卷积操作,之后与目标语言端的词嵌入
$
\mathbi
{
g
}_
j
$
进行累加得到
$
\mathbi
{
d
}_{
j
}^
l
$
,数学描述如下:
\noindent
不同于公式
\eqref
{
eq:11-5
}
中使用的目标语端隐层表示
$
\mathbi
{
s
}_{
j
-
1
}$
,公式
\eqref
{
eq:11-6-1
}
中的
$
\mathbi
{
d
}_{
j
}^
l
$
同时结合了
$
\mathbi
{
s
}_{
j
}$
的卷积计算结果和目标语端的词嵌入
$
\mathbi
{
g
}_
j
$
,其具体计算公式如下:
\begin{eqnarray}
\mathbi
{
d
}_{
j
}^
l
&
=
&
\mathbi
{
W
}_{
d
}^{
l
}
\mathbi
{
z
}_{
j
}^{
l
}
+
\mathbi
{
b
}_{
d
}^{
l
}
+
\mathbi
{
g
}_
j
\\
\mathbi
{
z
}_
j
^
l
&
=
&
Conv
(
\mathbi
{
s
}_
j
^
l)
\mathbi
{
z
}_
j
^
l
&
=
&
\textrm
{
Conv
}
(
\mathbi
{
s
}_
j
^
l)
\label
{
eq:11-6-2
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
W
}_{
d
}^{
l
}$
和
$
\mathbi
{
b
}_{
d
}^{
l
}$
是模型参数,同时解码端每一层都使用独立的矩阵参数,
$
Conv
(
\cdot
)
$
表示卷积操作。此外,第
$
l
$
层的上下文表示向量
$
\mathbi
{
C
}_
j
^
l
$
由如下步骤计算得到:将第
$
l
$
层编码端输出
$
\mathbi
{
h
}_
i
$
与源语言的词嵌入表示
$
\mathbi
{
e
}_
i
$
进行累加,之后将累加的结果用注意力权重
$
\alpha
_{
ij
}^
l
$
加权平均,数学描述如下
:
\noindent
其中,
$
\mathbi
{
z
}_
j
^
l
$
表示第
$
l
$
层卷积网络输出中第
$
j
$
个位置的表示,
$
\mathbi
{
W
}_{
d
}^{
l
}$
和
$
\mathbi
{
b
}_{
d
}^{
l
}$
是模型可学习的参数,
$
\textrm
{
Conv
}
(
\cdot
)
$
表示卷积操作。在获得第
$
l
$
层的注意力权重之后,就可以得到对应的一个上下文表示
$
\mathbi
{
C
}_
j
^
l
$
:
\begin{eqnarray}
\mathbi
{
C
}_
j
^
l =
\sum
_
i
\alpha
_{
ij
}^
l (
\mathbi
{
h
}_
i +
\mathbi
{
e
}_
i)
\label
{
eq:11-7
}
\end{eqnarray}
\noindent
通过结合底层的词嵌入表示,模型可以考虑到每个输入元素独立的信息,更好地帮助模型捕获源语言与目标语言之间的联系。
\parinterval
当得到上下文向量
$
\mathbi
{
C
}_
j
^
l
$
后,将其与
$
\mathbi
{
z
}_
j
^
l
$
相加后送入下一层计算,这种机制也被称为多跳机制。这个过程可以被描述为:
\noindent
模型使用了更全面的源语言信息,同时考虑了源语言端编码表示
$
\mathbi
{
h
}_
i
$
以及词嵌入表示
$
\mathbi
{
e
}_
i
$
。在获得第
$
l
$
层的上下文向量
$
\mathbi
{
C
}_
j
^
l
$
后,模型将其与
$
\mathbi
{
z
}_
j
^
l
$
相加后送入下一层网络,这个过程可以被描述为:
\begin{eqnarray}
\mathbi
{
s
}_
j
^{
l+1
}
=
\mathbi
{
C
}_
j
^
l +
\mathbi
{
z
}_
j
^
l
\label
{
eq:11-8
}
\end{eqnarray}
\
parinterval
与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的输入。 也就是说,多跳
注意力机制会考虑模型之前更关注哪些单词,并且之后层中执行多次注意力的“跳跃”。
\
noindent
与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的输入。也就是说,多跳的
注意力机制会考虑模型之前更关注哪些单词,并且之后层中执行多次注意力的“跳跃”。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论