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
4955d974
Commit
4955d974
authored
Dec 19, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
41881716
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
9 行增加
和
9 行删除
+9
-9
Chapter11/chapter11.tex
+9
-9
没有找到文件。
Chapter11/chapter11.tex
查看文件 @
4955d974
...
...
@@ -87,7 +87,7 @@
\parinterval
在卷积计算中,不同深度下卷积核不同但是执行操作相同,这里以二维卷积核为例展示具体卷积计算。若设输入矩阵为
$
\mathbi
{
x
}$
,输出矩阵为
$
\mathbi
{
y
}$
,卷积滑动步幅为
$
\textrm
{
stride
}$
,卷积核为
$
\mathbi
{
w
}$
,且
$
\mathbi
{
w
}
\in
\mathbb
{
R
}^{
Q
\times
U
}
$
,那么卷积计算过程如公式
\eqref
{
eq:11-1
}
所示:
\begin{eqnarray}
\mathbi
{
y
}_{
i,j
}
=
\sum
\sum
(
\mathbi
{
x
}_{
[j
\times
\textrm
{
stride
}
:j
\times
\textrm
{
stride
}
+U-1,i
\times
\textrm
{
stride
}
:i
\times
\textrm
{
stride
}
+Q-1]
}
\odot
\mathbi
{
w
}
)
\mathbi
{
y
}_{
i,j
}
&
=
&
\sum
\sum
(
\mathbi
{
x
}_{
[j
\times
\textrm
{
stride
}
:j
\times
\textrm
{
stride
}
+U-1,i
\times
\textrm
{
stride
}
:i
\times
\textrm
{
stride
}
+Q-1]
}
\odot
\mathbi
{
w
}
)
\label
{
eq:11-1
}
\end{eqnarray}
...
...
@@ -340,7 +340,7 @@
\parinterval
残差连接是一种训练深层网络的技术,其内容在
{
\chapternine
}
已经进行了介绍,即在多层神经网络之间通过增加直接连接的方式,从而将底层信息直接传递给上层。通过增加这样的直接连接,可以让不同层之间的信息传递更加高效,有利于深层神经网络的训练,其计算如公式
\eqref
{
eq:11-6
}
所示:
\begin{eqnarray}
\mathbi
{
h
}^{
l+1
}
=
F (
\mathbi
{
h
}^
l) +
\mathbi
{
h
}^
l
\mathbi
{
h
}^{
l+1
}
&
=
&
F (
\mathbi
{
h
}^
l) +
\mathbi
{
h
}^
l
\label
{
eq:11-6
}
\end{eqnarray}
...
...
@@ -349,7 +349,7 @@
\parinterval
在ConvS2S中残差连接主要应用于门控卷积神经网络和多跳自注意力机制中,比如在编码器的多层门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,具体的数学描述如公式
\eqref
{
eq:11-7
}
所示:
\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
}
\mathbi
{
h
}^{
l+1
}
&
=
&
\mathbi
{
A
}^{
l
}
\otimes
\sigma
(
\mathbi
{
B
}^{
l
}
) +
\mathbi
{
h
}^{
l
}
\label
{
eq:11-7
}
\end{eqnarray}
...
...
@@ -383,7 +383,7 @@
\parinterval
在ConvS2S模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。ConvS2S选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多跳注意力。其具体计算方式如公式
\eqref
{
eq:11-10
}
所示:
\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-10
}
\end{eqnarray}
...
...
@@ -395,13 +395,13 @@
\noindent
其中,
$
\mathbi
{
z
}_
j
^
l
$
表示第
$
l
$
层卷积网络输出中第
$
j
$
个位置的表示,
$
\mathbi
{
W
}_{
d
}^{
l
}$
和
$
\mathbi
{
b
}_{
d
}^{
l
}$
是模型可学习的参数,
$
\textrm
{
Conv
}
(
\cdot
)
$
表示卷积操作。在获得第
$
l
$
层的注意力权重之后,就可以得到对应的一个上下文表示
$
\mathbi
{
C
}_
j
^
l
$
,具体计算如公式
\eqref
{
eq:11-13
}
所示:
\begin{eqnarray}
\mathbi
{
C
}_
j
^
l
=
\sum
_
i
\alpha
_{
ij
}^
l (
\mathbi
{
h
}_
i +
\mathbi
{
e
}_
i)
\mathbi
{
C
}_
j
^
l
&
=
&
\sum
_
i
\alpha
_{
ij
}^
l (
\mathbi
{
h
}_
i +
\mathbi
{
e
}_
i)
\label
{
eq:11-13
}
\end{eqnarray}
\noindent
模型使用了更全面的源语言信息,同时考虑了源语言端编码表示
$
\mathbi
{
h
}_
i
$
以及词嵌入表示
$
\mathbi
{
e
}_
i
$
。在获得第
$
l
$
层的上下文向量
$
\mathbi
{
C
}_
j
^
l
$
后,模型将其与
$
\mathbi
{
z
}_
j
^
l
$
相加后送入下一层网络,这个过程可以被描述为公式
\eqref
{
eq:11-14
}
:
\begin{eqnarray}
\mathbi
{
s
}_
j
^{
l+1
}
=
\mathbi
{
C
}_
j
^
l +
\mathbi
{
z
}_
j
^
l
\mathbi
{
s
}_
j
^{
l+1
}
&
=
&
\mathbi
{
C
}_
j
^
l +
\mathbi
{
z
}_
j
^
l
\label
{
eq:11-14
}
\end{eqnarray}
...
...
@@ -478,7 +478,7 @@
\parinterval
给定输入序列表示
$
\seq
{
x
}
=
\{
\mathbi
{
x
}_
1
,
\mathbi
{
x
}_
2
,...,
\mathbi
{
x
}_
m
\}
$
,其中
$
m
$
为序列长度,
$
\mathbi
{
x
}_
i
\in
\mathbb
{
R
}^{
O
}
$
,
$
O
$
即输入序列的通道数。为了获得与输入序列长度相同的卷积输出结果,首先需要进行填充。为了方便描述,这里在输入序列尾部填充
$
K
-
1
$
个元素(
$
K
$
为卷积核窗口的长度),其对应的卷积结果为
$
\seq
{
z
}
=
\{
\mathbi
{
z
}_
1
,
\mathbi
{
z
}_
2
,...,
\mathbi
{
z
}_
m
\}
$
。
在标准卷积中,若使用N表示卷积核的个数,也就是标准卷积输出序列的通道数,那么对于第
$
i
$
个位置的第
$
n
$
个通道
$
\mathbi
{
z
}_{
i,n
}^
\textrm
{
\,
std
}$
,其标准卷积具体计算如公式
\eqref
{
eq:11-18
}
所示:
\begin{eqnarray}
\mathbi
{
z
}_{
i,n
}^
\textrm
{
\,
std
}
=
\sum
_{
o=1
}^{
O
}
\sum
_{
k=0
}^{
K-1
}
\mathbi
{
W
}_{
k,o,n
}^
\textrm
{
\,
std
}
\mathbi
{
x
}_{
i+k,o
}
\mathbi
{
z
}_{
i,n
}^
\textrm
{
\,
std
}
&
=
&
\sum
_{
o=1
}^{
O
}
\sum
_{
k=0
}^{
K-1
}
\mathbi
{
W
}_{
k,o,n
}^
\textrm
{
\,
std
}
\mathbi
{
x
}_{
i+k,o
}
\label
{
eq:11-18
}
\end{eqnarray}
...
...
@@ -488,7 +488,7 @@
\parinterval
相应的,深度卷积只考虑不同词之间的依赖性,而不考虑不同通道之间的关系,相当于使用
$
O
$
个卷积核逐个通道对不同的词进行卷积操作。因此深度卷积不改变输出的表示维度,输出序列表示的通道数与输入序列一致,其计算如公式
\eqref
{
eq:11-19
}
所示:
\begin{eqnarray}
\mathbi
{
z
}_{
i,o
}^
\textrm
{
\,
dw
}
=
\sum
_{
k=0
}^{
K-1
}
\mathbi
{
W
}_{
k,o
}^
\textrm
{
\,
dw
}
\mathbi
{
x
}_{
i+k,o
}
\mathbi
{
z
}_{
i,o
}^
\textrm
{
\,
dw
}
&
=
&
\sum
_{
k=0
}^{
K-1
}
\mathbi
{
W
}_{
k,o
}^
\textrm
{
\,
dw
}
\mathbi
{
x
}_{
i+k,o
}
\label
{
eq:11-19
}
\end{eqnarray}
...
...
@@ -564,7 +564,7 @@
\parinterval
在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关, 维度大小为
$
K
\times
a
$
;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换,具体如公式
\eqref
{
eq:11-22
}
:
\begin{eqnarray}
\funp
{
f
}
(
\mathbi
{
x
}_{
i
}
)
=
\sum
_{
c=1
}^
d
\mathbi
{
W
}_{
:,:,c
}
\odot
\mathbi
{
x
}_{
i,c
}
\funp
{
f
}
(
\mathbi
{
x
}_{
i
}
)
&
=
&
\sum
_{
c=1
}^
d
\mathbi
{
W
}_{
:,:,c
}
\odot
\mathbi
{
x
}_{
i,c
}
\label
{
eq:11-22
}
\end{eqnarray}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论