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
157c3507
Commit
157c3507
authored
Nov 24, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'master' 到 'caorunzhe'
Master 查看合并请求
!462
parents
ef5f227c
ca5603f9
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
21 行增加
和
20 行删除
+21
-20
Chapter11/Figures/figure-standard.tex
+4
-3
Chapter11/chapter11.tex
+17
-17
没有找到文件。
Chapter11/Figures/figure-standard.tex
查看文件 @
157c3507
...
...
@@ -40,7 +40,7 @@
\node
[vuale]
at ([xshift=0.9em]r3
_
1.east)
{$
\mathbi
{
z
}_
1
$}
;
\node
(t1) at (2.5em, -1em)
{
\large
{$
\cdots
$}}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t1.south)
{
传统卷积
}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t1.south)
{
(a)
传统卷积
}
;
\end{scope}
\begin{scope}
[xshift=4cm]
...
...
@@ -74,7 +74,7 @@
\node
[vuale]
at ([xshift=0.9em]r3
_
1.east)
{$
\mathbi
{
z
}_
1
$}
;
\node
(t2) at (2.5em, -1em)
{
\large
{$
\cdots
$}}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t2.south)
{
深度卷积
}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t2.south)
{
(b)
深度卷积
}
;
\end{scope}
\begin{scope}
[xshift=8cm]
...
...
@@ -110,7 +110,7 @@
\node
[vuale]
at ([xshift=0.9em]r3
_
1.east)
{$
\mathbi
{
z
}_
1
$}
;
\node
(t3) at (2.5em, -1em)
{
\large
{$
\cdots
$}}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t3.south)
{
逐点卷积
}
;
\node
[anchor=north,font=
\tiny
] at ([yshift=-0.2em]t3.south)
{
(c)
逐点卷积
}
;
\end{scope}
\end{tikzpicture}
\ No newline at end of file
Chapter11/chapter11.tex
查看文件 @
157c3507
...
...
@@ -432,7 +432,7 @@
\mathbi
{
v
}_
t
&
=
&
\beta
\mathbi
{
v
}_{
t-1
}
+ (1-
\beta
)
\frac
{
\partial
J(
\mathbi
{
w
}_
t)
}{
\partial
\mathbi
{
w
}_
t
}
\label
{
eq:11-9-momentum
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
w
}_
t
$
表示第
$
t
$
步更新时的模型参数;
$
J
(
\mathbi
{
w
}
)
$
表示损失函数均值期望的估计;
$
\frac
{
\partial
J
(
\mathbi
{
w
}
)
}{
\partial
\mathbi
{
w
}_
t
}$
将指向
$
J
(
\mathbi
{
w
}
)
$
在
$
\mathbi
{
w
}$
处变化最大的方向,即梯度方向;
$
\alpha
$
为学习率;
$
\mathbi
{
v
}_
t
$
为损失函数在前
$
t
-
1
$
步更新中累积的梯度动量,利用超参数
$
\beta
$
控制累积的范围。
\noindent
其中,
$
\mathbi
{
w
}_
t
$
表示第
$
t
$
步更新时的模型参数;
$
J
(
\mathbi
{
w
}
_
t
)
$
表示损失函数均值期望的估计;
$
\frac
{
\partial
J
(
\mathbi
{
w
}_
t
)
}{
\partial
\mathbi
{
w
}_
t
}$
将指向
$
J
(
\mathbi
{
w
}_
t
)
$
在
$
\mathbi
{
w
}$
处变化最大的方向,即梯度方向;
$
\alpha
$
为学习率;
$
\mathbi
{
v
}_
t
$
为损失函数在前
$
t
-
1
$
步更新中累积的梯度动量,利用超参数
$
\beta
$
控制累积的范围。
\parinterval
而在Nesterov加速梯度下降法中,使用的梯度不是来自于当前参数位置,而是按照之前梯度方向更新一小步的位置,以便于更好的“预测未来”,提前调整更新速率,因此,其动量的更新方式为:
\begin{eqnarray}
...
...
@@ -444,7 +444,7 @@
\parinterval
此外,ConvS2S模型为了进一步提升训练效率及性能,还使用了小批量训练,即每次从样本中选择出一小部分数据进行训练。同时,ConvS2S模型中也使用了Dropout方法
\upcite
{
JMLR:v15:srivastava14a
}
。除了在词嵌入层和解码器输出层应用Dropout外,ConvS2S模型还对卷积块的输入层应用了Dropout。
\parinterval
ConvS2S模型的推断过程与第十章中描述的推断过程一样。其基本思想是:依靠源语言句子和前面已经生成的译文单词来预测下一个译文单词。这个过程也可以结合贪婪搜索或者束搜索等解码策略
(见
{
\chapterten
}
)
。
\parinterval
ConvS2S模型的推断过程与第十章中描述的推断过程一样。其基本思想是:依靠源语言句子和前面已经生成的译文单词来预测下一个译文单词。这个过程也可以结合贪婪搜索或者束搜索等解码策略。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -452,7 +452,7 @@
\section
{
局部模型的改进
}
\parinterval
在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,如图
\ref
{
fig:11-11
}
所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积
,参数量为
$
K
\times
O
$
。其中
$
K
$
为卷积核大小,
$
O
$
为输入的通道数,即单词表示的维度大小。因此
$
N
$
个卷积核总共的参数量为
$
K
\times
O
\times
N
$
。这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出
{
\small\bfnew
{
深度可分离卷积
}}
\index
{
深度可分离卷积
}
(Depthwise Separable Convolution)
\index
{
Depthwise Separable Convolution
}
,将空间维度和通道间的信息交互分离成深度卷积(也叫逐通道卷积,Depthwise Convolution)
\index
{
逐通道卷积
}
\index
{
Depthwise Convolution
}
和
{
\small\bfnew
{
逐点卷积
}}
\index
{
逐点卷积
}
(Pointwise Convolution)
\index
{
Pointwise Convolution
}
两部分
\upcite
{
Chollet2017XceptionDL,Howard2017MobileNetsEC
}
。
除了直接将深度可分离卷积应用到神经机器翻译中
\upcite
{
Kaiser2018DepthwiseSC
}
,研究人员提出使用更高效的
{
\small\bfnew
{
轻量卷积
}}
\index
{
轻量卷积
}
(Lightweight Convolution)
\index
{
Lightweight Convolution
}
和
{
\small\bfnew
{
动态卷积
}}
\index
{
动态卷积
}
(Dynamic Convolution)
\index
{
Dynamic convolution
}
来进行不同词之间的特征提取
\upcite
{
Wu2019PayLA
}
。本节将主要介绍这些改进的卷积操作。在后续章节中也会看到这些模型在神经机器翻译中的应用。
\parinterval
在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,如图
\ref
{
fig:11-11
}
所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积
操作,参数量为
$
K
\times
O
$
,其中,
$
K
$
为卷积核大小,
$
O
$
为输入的通道数,即单词表示的维度大小。如果使用
$
N
$
个卷积核,得到
$
N
$
个特征(即输出通道数),总共的参数量为
$
K
\times
O
\times
N
$
。 这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出
{
\small\bfnew
{
深度可分离卷积
}}
\index
{
深度可分离卷积
}
(Depthwise Separable Convolution)
\index
{
Depthwise Separable Convolution
}
,将空间维度和通道间的信息交互分离成
{
\small\bfnew
{
深度卷积
}}
(Depthwise Convolution,也叫逐通道卷积)
\index
{
逐通道卷积
}
\index
{
Depthwise Convolution
}
和
{
\small\bfnew
{
逐点卷积
}}
\index
{
逐点卷积
}
(Pointwise Convolution)
\index
{
Pointwise Convolution
}
两部分
\upcite
{
Chollet2017XceptionDL,Howard2017MobileNetsEC
}
。
除了直接将深度可分离卷积应用到神经机器翻译中
\upcite
{
Kaiser2018DepthwiseSC
}
,研究人员提出使用更高效的
{
\small\bfnew
{
轻量卷积
}}
\index
{
轻量卷积
}
(Lightweight Convolution)
\index
{
Lightweight Convolution
}
和
{
\small\bfnew
{
动态卷积
}}
\index
{
动态卷积
}
(Dynamic Convolution)
\index
{
Dynamic convolution
}
来进行不同词之间的特征提取
\upcite
{
Wu2019PayLA
}
。本节将主要介绍这些改进的卷积操作。在后续章节中也会看到这些模型在神经机器翻译中的应用。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -461,21 +461,21 @@
\subsection
{
深度可分离卷积
}
\label
{
sec:11.3.1
}
\parinterval
根据前面介绍,可以看到卷积神经网络容易处理在局部检测和位置不变的特征。对于特定的表达,比如地点、情绪等,使用卷积神经网络能达到不错的识别效果,因此它常被用在文本分类中
\upcite
{
Minaee2020DeepLB
}
。不过机器翻译所面临的情况更复杂,除了局部句子片段信息,我们还希望模型能够捕获句子结构,语义等信息。虽然单层卷积神经网络在文本分类中已经取得了很好的效果
\upcite
{
Kim2014ConvolutionalNN
}
,神经机器翻译等任务仍然需要有效的卷积神经网络。随着深度可分离卷积在机器翻译中的探索
\upcite
{
Kaiser2018DepthwiseSC
}
,更
复杂且高效的网络结构被设计出来,获得了比ConS2S
\upcite
{
DBLP:journals/corr/GehringAGYD17
}
更好的性能。
\parinterval
根据前面介绍,可以看到卷积神经网络容易处理在局部检测和位置不变的特征。对于特定的表达,比如地点、情绪等,使用卷积神经网络能达到不错的识别效果,因此它常被用在文本分类中
\upcite
{
Minaee2020DeepLB
}
。不过机器翻译所面临的情况更复杂,除了局部句子片段信息,我们还希望模型能够捕获句子结构,语义等信息。虽然单层卷积神经网络在文本分类中已经取得了很好的效果
\upcite
{
Kim2014ConvolutionalNN
}
,神经机器翻译等任务仍然需要有效的卷积神经网络。随着深度可分离卷积在机器翻译中的探索
\upcite
{
Kaiser2018DepthwiseSC
}
,更
高效的网络结构被设计出来,获得了比ConS2S模型
更好的性能。
%----------------------------------------------
% 图17.
\begin{figure}
[htp]
\centering
\input
{
./Chapter11/Figures/figure-standard
}
\caption
{
标准卷积、深度卷积和逐点卷积
}
\caption
{
标准卷积、深度卷积和逐点卷积
示意图
}
\label
{
fig:11-17
}
\end{figure}
%----------------------------------------------
\parinterval
深度可分离卷积
\upcite
{
Sifre2013RotationSA
}
由深度卷积和逐点卷积两部分结合而成
。图
\ref
{
fig:11-17
}
展示了标准卷积、深度卷积和逐点卷积的对比,为了方便显示,图中只画出了部分连接。
\parinterval
深度可分离卷积
由深度卷积和逐点卷积两部分结合而成
\upcite
{
Sifre2013RotationSA
}
。图
\ref
{
fig:11-17
}
展示了标准卷积、深度卷积和逐点卷积的对比,为了方便显示,图中只画出了部分连接。
\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
\}
$
。
\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
}$
,其标准卷积具体计算方式如下:
\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
}
...
...
@@ -484,7 +484,7 @@
%在标准卷积中,$ \mathbi{z}^\textrm{std}$表示标准卷积的输出,$ \mathbi{z}_i^\textrm{std} \in \mathbb{R}^N$ ,N为卷积核的个数,也就是标准卷积输出序列的通道数。针对$ \mathbi{z}_i^\textrm{std} $ 中的第$n$个通道$ \mathbi{z}_{i,n}^\textrm{std}$,标准卷积具体计算方式如下:
\noindent
其中
$
\mathbi
{
z
}^
\textrm
{
std
}$
表示标准卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
std
}
\in
\mathbb
{
R
}^
N
$
,
$
\mathbi
{
W
}^
\textrm
{
std
}
\in
\mathbb
{
R
}^{
K
\times
O
\times
N
}
$
为标准卷积的参数。可以看出,标准卷积中每个输出元素需要考虑卷积核尺度内所有词的所有特征,参数量相对较多,对应图
\ref
{
fig:11-17
}
中的连接数也最多。
\noindent
其中
,
$
\mathbi
{
z
}^
\textrm
{
std
}$
表示标准卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
std
}
\in
\mathbb
{
R
}^
N
$
,
$
\mathbi
{
W
}^
\textrm
{
std
}
\in
\mathbb
{
R
}^{
K
\times
O
\times
N
}
$
为标准卷积的参数。可以看出,标准卷积中每个输出元素需要考虑卷积核尺度内所有词的所有特征,参数量相对较多,对应图
\ref
{
fig:11-17
}
中的连接数也最多。
\parinterval
相应的,深度卷积只考虑不同词之间的依赖性,而不考虑不同通道之间的关系,相当于使用
$
O
$
个卷积核逐个通道对不同的词进行卷积操作。因此深度卷积不改变输出的表示维度,输出序列表示的通道数与输入序列一致,其计算方式如下:
\begin{eqnarray}
...
...
@@ -492,7 +492,7 @@
\label
{
eq:11-12
}
\end{eqnarray}
\noindent
其中
$
\mathbi
{
z
}^
\textrm
{
dw
}$
表示深度卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
dw
}
\in
\mathbb
{
R
}^{
O
}$
,
$
\mathbi
{
W
}^
\textrm
{
dw
}
\in
\mathbb
{
R
}^{
K
\times
O
}$
为深度卷积的参数,参数量只涉及卷积核大小及输入表示维度。
\noindent
其中
,
$
\mathbi
{
z
}^
\textrm
{
dw
}$
表示深度卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
dw
}
\in
\mathbb
{
R
}^{
O
}$
,
$
\mathbi
{
W
}^
\textrm
{
dw
}
\in
\mathbb
{
R
}^{
K
\times
O
}$
为深度卷积的参数,参数量只涉及卷积核大小及输入表示维度。
\parinterval
与深度卷积互为补充的是,逐点卷积只考虑不同通道之间的依赖性,而不考虑不同词之间的依赖。换句话说,逐点卷积对每个词表示做了一次线性变换,将输入表示
$
\mathbi
{
x
}_
i
$
从
$
\mathbb
{
R
}^{
O
}$
的空间映射到
$
\mathbb
{
R
}^{
N
}$
的空间,计算方式如下:
\begin{eqnarray}
...
...
@@ -526,16 +526,16 @@
\subsection
{
轻量卷积和动态卷积
}
\parinterval
深度可分离卷积将标准卷积分成两部分,其中深度卷积的作用就是用来捕捉相邻词之间的依赖关系,这和
基于自注意力机制的模型(
{
\chaptertwelve
}
)
类似。基于深度卷积,一些研究人员提出了轻量卷积和动态卷积,用来替换注意力机制,并将其应用于基于自注意力机制的模型中
\upcite
{
Wu2019PayLA
}
。同时,卷积操作的线性复杂度使得它具有较高的运算效率,相比注意力机制的平方复杂度,卷积操作是一种更加“轻量”的方法。接下来分别介绍轻量卷积与动态卷积的思想。
\parinterval
深度可分离卷积将标准卷积分成两部分,其中深度卷积的作用就是用来捕捉相邻词之间的依赖关系,这和
{
\chaptertwelve
}
即将介绍的基于自注意力机制的模型
类似。基于深度卷积,一些研究人员提出了轻量卷积和动态卷积,用来替换注意力机制,并将其应用于基于自注意力机制的模型中
\upcite
{
Wu2019PayLA
}
。同时,卷积操作的线性复杂度使得它具有较高的运算效率,相比注意力机制的平方复杂度,卷积操作是一种更加“轻量”的方法。接下来分别介绍轻量卷积与动态卷积的思想。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 轻量卷积
}
\parinterval
在序列建模的模型中,一个很重要的模块就是对序列中不同位置信息的提取,如ConvS2S中的卷积神经网络等。虽然考虑局部上下文的卷积神经网络只在序列这一维度进行操作,具有线性的复杂度,但是由于标准卷积操作中考虑了不同通道的信息交互,整体复杂度依旧较高。一种简化的策略就是采取通道独立的卷积操作,也就是
\ref
{
sec:11.3.1
}
节中介绍的深度卷积。
\parinterval
在序列建模的模型中,一个很重要的模块就是对序列中不同位置信息的提取,如ConvS2S
模型
中的卷积神经网络等。虽然考虑局部上下文的卷积神经网络只在序列这一维度进行操作,具有线性的复杂度,但是由于标准卷积操作中考虑了不同通道的信息交互,整体复杂度依旧较高。一种简化的策略就是采取通道独立的卷积操作,也就是
\ref
{
sec:11.3.1
}
节中介绍的深度卷积。
\parinterval
在神经机器翻译模型中,
多层表示的维度通常一致,即
$
O
=
N
=
d
$
。因此,深度卷积可以使得卷积神经网络参数量从
$
Kd
^
2
$
降到
$
Kd
$
(参考表
\ref
{
tab:11-1
}
)。从形式上来看,深度卷积和注意力
很类似,区别在于注意力机制考虑了序列全局上下文信息,权重来自于当前位置对其他位置的“注意力”,而深度卷积中仅考虑了局部的上下文信息,权重采用了在不同通道上独立的固定参数。为了进一步降低参数量,轻量卷积共享了部分通道的卷积参数。如图
\ref
{
fig:11-18
}
所示,深度卷积中4种颜色的连接代表了4个通道上独立的卷积核,而轻量卷积中,第一和第三通道,第二和第四通道采用了共享的卷积核参数。通过共享,可以将参数量压缩到
$
Ka
$
,其中压缩比例为
$
d
/
a
$
(
$
a
$
为压缩后保留的共享通道数)。
\parinterval
在神经机器翻译模型中,
神经网络不同层的维度通常一致,即
$
O
=
N
=
d
$
。因此,深度卷积可以使得卷积神经网络参数量从
$
Kd
^
2
$
降到
$
Kd
$
(参考表
\ref
{
tab:11-1
}
)。从形式上来看,深度卷积和注意力机制
很类似,区别在于注意力机制考虑了序列全局上下文信息,权重来自于当前位置对其他位置的“注意力”,而深度卷积中仅考虑了局部的上下文信息,权重采用了在不同通道上独立的固定参数。为了进一步降低参数量,轻量卷积共享了部分通道的卷积参数。如图
\ref
{
fig:11-18
}
所示,深度卷积中4种颜色的连接代表了4个通道上独立的卷积核,而轻量卷积中,第一和第三通道,第二和第四通道采用了共享的卷积核参数。通过共享,可以将参数量压缩到
$
Ka
$
,其中压缩比例为
$
d
/
a
$
(
$
a
$
为压缩后保留的共享通道数)。
%----------------------------------------------
% 图18.
...
...
@@ -553,22 +553,22 @@
\label
{
eq:11-14
}
\end{eqnarray}
\noindent
其中
$
\mathbi
{
z
}^
\textrm
{
lw
}$
表示轻量卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
lw
}
\in
\mathbb
{
R
}^
d
$
,
$
\mathbi
{
W
}^
\textrm
{
lw
}
\in
\mathbb
{
R
}^{
K
\times
a
}$
为轻量卷积的参数。在这里,轻量卷积用来捕捉相邻词的特征,通过Softmax可以在保证关注到不同词的同时,对输出大小进行限制。
\noindent
其中
,
$
\mathbi
{
z
}^
\textrm
{
lw
}$
表示轻量卷积的输出,
$
\mathbi
{
z
}_
i
^
\textrm
{
lw
}
\in
\mathbb
{
R
}^
d
$
,
$
\mathbi
{
W
}^
\textrm
{
lw
}
\in
\mathbb
{
R
}^{
K
\times
a
}$
为轻量卷积的参数。在这里,轻量卷积用来捕捉相邻词的特征,通过Softmax可以在保证关注到不同词的同时,对输出大小进行限制。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 动态卷积
}
\parinterval
轻量卷积和动态卷积的概念最早都是在图像领域被提出,大大减少了卷积神经网络模型中的参数和计算量
\upcite
{
726791,Taigman2014DeepFaceCT,Chen2015LocallyconnectedAC
}
。虽然轻量卷积在存储和速度上具有优势,但其参数量的减少也导致了
其
表示能力的下降,损失了一部分模型性能。为此,研究人员提出了动态卷积,旨在不增加网络深度和宽度的情况下来增强模型的表示能力,其思想就是根据输入来动态地生成卷积参数
\upcite
{
Wu2019PayLA,Chen2020DynamicCA
}
。
\parinterval
轻量卷积和动态卷积的概念最早都是在图像领域被提出,大大减少了卷积神经网络模型中的参数和计算量
\upcite
{
726791,Taigman2014DeepFaceCT,Chen2015LocallyconnectedAC
}
。虽然轻量卷积在存储和速度上具有优势,但其参数量的减少也导致了表示能力的下降,损失了一部分模型性能。为此,研究人员提出了动态卷积,旨在不增加网络深度和宽度的情况下来增强模型的表示能力,其思想就是根据输入来动态地生成卷积参数
\upcite
{
Wu2019PayLA,Chen2020DynamicCA
}
。
\parinterval
在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关, 维度大小为
$
K
\times
a
$
;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换,具体如下:
\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-15
}
\end{eqnarray}
\parinterval
这里采用了最简单的线性变换,其中
$
\odot
$
表示矩阵的点乘(详见第九章介绍),
$
\mathbi
{
X
}$
是序列表示,
$
d
$
为通道数,
$
i
$
和
$
c
$
分别对应序列中不同的位置以及不同的通道,
$
\mathbi
{
W
}
\in
\mathbb
{
R
}^{
K
\times
a
\times
d
}$
为变换矩阵,
$
\mathbi
{
W
}_{
:,:,c
}$
表示其只在
$
d
$
这一维进行计算,最后生成的
$
\funp
{
f
}
(
\mathbi
{
X
}_
i
)
\in
\mathbb
{
R
}^{
K
\times
a
}$
就是与输入相关的卷积核参数。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。同时,相比于注意力机制中两两位置确定出来的注意力权重,动态卷积线性复杂度的做法具有更高的计算效率。
\parinterval
这里采用了最简单的线性变换,其中
$
\odot
$
表示矩阵的点乘(详见第九章介绍),
$
d
$
为通道数,
$
\mathbi
{
x
}_
i
$
是序列第
$
i
$
个位置的表示,
$
c
$
表示某个通道,
$
\mathbi
{
W
}
\in
\mathbb
{
R
}^{
K
\times
a
\times
d
}$
为变换矩阵,
$
\mathbi
{
W
}_{
:,:,c
}$
表示其只在
$
d
$
这一维进行计算,最后生成的
$
\funp
{
f
}
(
\mathbi
{
x
}_
i
)
\in
\mathbb
{
R
}^{
K
\times
a
}$
就是与输入相关的卷积核参数。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。同时,相比于注意力机制中两两位置确定出来的注意力权重,动态卷积线性复杂度的做法具有更高的计算效率。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -576,7 +576,7 @@
\section
{
小节及拓展阅读
}
\parinterval
卷积是一种高效
处理网格数据的计算方式,在图像、语音等领域取得了令人瞩目的成绩。本章介绍了卷积的概念及其特性,并对池化、填充等操作进行了详细的讨论。前面介绍的基于循环神经网络的翻译模型在引入注意力机制后已经大幅度超越了基于统计的机器翻译模型,但由于循环神经网络的计算方式导致网络整体的并行能力差,训练耗时。本章介绍了具有高并行计算的能力的模型范式,即基于卷积神经网络的编码器-解码器框架。其在机器翻译任务上取得了与基于循环神经网络的GNMT模型相当的性能,并大幅度缩短了模型的训练周期。除了基础部分,本章还针对卷积计算进行了延伸,包括逐通道卷积、逐点卷积、轻量卷积和动态卷积等。除了上述提及的内容,卷积神经网络及其变种在文本分类、命名实体识别等其他自然语言处理任务上也有许多应用
。
\parinterval
卷积是一种高效
的神经网络结构,在图像、语音处理等领域取得了令人瞩目的成绩。本章介绍了卷积的概念及其特性,并对池化、填充等操作进行了讨论。本章介绍了具有高并行计算的能力的机器翻译范式,即基于卷积神经网络的编码器-解码器框架。其在机器翻译任务上表现出色,并大幅度缩短了模型的训练周期。除了基础部分,本章还针对卷积计算进行了延伸,内容涉及逐通道卷积、逐点卷积、轻量卷积和动态卷积等。除了上述提及的内容,卷积神经网络及其变种在文本分类、命名实体识别、关系分类、事件抽取等其他自然语言处理任务上也有许多应用
\upcite
{
Kim2014ConvolutionalNN,2011Natural,DBLP:conf/cncl/ZhouZXQBX17,DBLP:conf/acl/ChenXLZ015
}
。
\parinterval
和机器翻译任务不同的是,文本分类任务侧重于对序列特征的提取,然后通过压缩后的特征表示做出类别预测。卷积神经网络可以对序列中一些
$
n
$
-gram特征进行提取,也可以用在文本分类任务中,其基本结构包括输入层、卷积层、池化层和全连接层。除了在本章介绍过的TextCNN模型
\upcite
{
Kim2014ConvolutionalNN
}
,不少研究工作在此基础上对其进行改进。比如,通过改变输入层来引入更多特征
\upcite
{
DBLP:conf/acl/NguyenG15,DBLP:conf/aaai/LaiXLZ15
}
,对卷积层的改进
\upcite
{
DBLP:conf/acl/ChenXLZ015,DBLP:conf/emnlp/LeiBJ15
}
以及对池化层的改进
\upcite
{
Kalchbrenner2014ACN,DBLP:conf/acl/ChenXLZ015
}
。在命名实体识别任务中,同样可以使用卷积神经网络来进行特征提取
\upcite
{
2011Natural,DBLP:conf/cncl/ZhouZXQBX17
}
,或者使用更高效的空洞卷积对更长的上下文进行建模
\upcite
{
DBLP:conf/emnlp/StrubellVBM17
}
。此外,也有一些研究工作尝试使用卷积神经网络来提取字符级特征
\upcite
{
DBLP:conf/acl/MaH16,DBLP:conf/emnlp/LiDWCM17,DBLP:conf/acl-codeswitch/WangCK18
}
。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论