Commit 56e2b861 by zengxin

11

parent ce418ee5
......@@ -45,9 +45,9 @@
%$o$: & 卷积核深度
%\end{tabular}};
\node[] (sub) at ([xshift=3.3cm,yshift=2cm]num1_1.east) {:卷积核窗口的长度};
\node[] (sub2) at ([xshift=-3.9cm,yshift=-2.15cm]num1.north) {度宽的口窗核积卷:};
\node[] (sub3) at ([xshift=2.9cm,yshift=0.25cm]num9_9.south) {:卷积核深度};
\node[] (sub) at ([xshift=3.35cm,yshift=2cm]num1_1.east) {:卷积核窗口的长度};
\node[] (sub2) at ([xshift=-3.9cm,yshift=-2.15cm]num1.north) {卷积核窗口的宽度:};
\node[] (sub3) at ([xshift=2.85cm,yshift=0.25cm]num9_9.south) {:卷积核深度};
%\node[minimum width = 1.8cm] (sub) at ([xshift=-5.5cm,yshift=2cm]num9_9.east) {};
......
......@@ -3,15 +3,15 @@
\begin{tikzpicture}[node distance = 0cm]
\node(num1)[num]{\textbf1};
\node(num2)[num,right of = num1,xshift = 1.2cm]{\textbf{\textcolor{blue!70}2}};
\node(num3)[num,right of = num2,xshift = 1.2cm]{\textbf{\textcolor{blue!70}3}};
\node(num4)[num,right of = num3,xshift = 1.2cm]{\textbf{\textcolor{blue!70}4}};
\node(num5)[num,right of = num4,xshift = 1.2cm]{\textbf{\textcolor{blue!70}5}};
\node(num6)[num,right of = num5,xshift = 1.2cm]{\textbf{\textcolor{blue!70}6}};
\node(num7)[num,right of = num6,xshift = 1.2cm]{\textbf{\textcolor{blue!70}7}};
\node(num8)[num,right of = num7,xshift = 1.2cm]{\textbf{\textcolor{blue!70}8}};
\node(num9)[num,right of = num8,xshift = 1.2cm]{\textbf9};
\node(num1)[num]{$\mathbi{e}_1$};
\node(num2)[num,right of = num1,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_2$}};
\node(num3)[num,right of = num2,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_3$}};
\node(num4)[num,right of = num3,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_4$}};
\node(num5)[num,right of = num4,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_5$}};
\node(num6)[num,right of = num5,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_6$}};
\node(num7)[num,right of = num6,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_7$}};
\node(num8)[num,right of = num7,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_8$}};
\node(num9)[num,right of = num8,xshift = 1.2cm]{$\mathbi{e}_9$};
\node(A)[below of = num2,yshift = -0.6cm]{A};
\node(B)[below of = num8,yshift = -0.6cm]{B};
......
......@@ -3,15 +3,15 @@
\begin{tikzpicture}[node distance = 0cm]
\node(num1_0)[num, fill = blue!40]{\textbf{\textcolor{white}0}};
\node(num1_1)[num,right of = num1_0,xshift = 1.2cm]{\textbf1};
\node(num1_2)[num,right of = num1_1,xshift = 1.2cm]{\textbf{\textcolor{blue!70}2}};
\node(num1_3)[num,right of = num1_2,xshift = 1.2cm]{\textbf{\textcolor{blue!70}3}};
\node(num1_4)[num,right of = num1_3,xshift = 1.2cm]{\textbf{\textcolor{blue!70}4}};
\node(num1_5)[num,right of = num1_4,xshift = 1.2cm]{\textbf{\textcolor{blue!70}5}};
\node(num1_6)[num,right of = num1_5,xshift = 1.2cm]{\textbf{\textcolor{blue!70}6}};
\node(num1_7)[num,right of = num1_6,xshift = 1.2cm]{\textbf{\textcolor{blue!70}7}};
\node(num1_8)[num,right of = num1_7,xshift = 1.2cm]{\textbf{\textcolor{blue!70}8}};
\node(num1_9)[num,right of = num1_8,xshift = 1.2cm]{\textbf9};
\node(num1_1)[num,right of = num1_0,xshift = 1.2cm]{$\mathbi{e}_1$};
\node(num1_2)[num,right of = num1_1,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_2$}};
\node(num1_3)[num,right of = num1_2,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_3$}};
\node(num1_4)[num,right of = num1_3,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_4$}};
\node(num1_5)[num,right of = num1_4,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_5$}};
\node(num1_6)[num,right of = num1_5,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_6$}};
\node(num1_7)[num,right of = num1_6,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_7$}};
\node(num1_8)[num,right of = num1_7,xshift = 1.2cm]{\textcolor{blue!70}{$\mathbi{e}_8$}};
\node(num1_9)[num,right of = num1_8,xshift = 1.2cm]{$\mathbi{e}_9$};
\node(num1_10)[num,right of = num1_9,xshift = 1.2cm, fill = blue!40]{\textbf0};
\node(A)[below of = num2,yshift = -0.6cm]{A};
\node(B)[below of = num8,yshift = -0.6cm]{B};
......
......@@ -34,7 +34,7 @@
\section{卷积神经网络}
\parinterval {\small\bfnew{卷积神经网络}}\index{卷积神经网络}(Convolutional Neural Network,CNN)\index{Convolutional Neural Network,CNN} 是一种前馈神经网络,由若干的卷积层与池化层组成。其最早在语音识别任务上提出\upcite{Waibel1989PhonemeRU},但之后在图像处理领域取得了很好的效果\upcite{LeCun1989BackpropagationAT,726791}。近年来,卷积神经网络已经成为众多语音、语言、图像处理任务的基础框架\upcite{DBLP:journals/corr/HeZRS15,DBLP:conf/cvpr/HuangLMW17,Girshick2015FastR,He2020MaskR}
\parinterval {\small\bfnew{卷积神经网络}}\index{卷积神经网络}(Convolutional Neural Network,CNN)\index{Convolutional Neural Network,CNN} 是一种前馈神经网络,由若干的卷积层与池化层组成。其最早在语音识别任务上提出\upcite{Waibel1989PhonemeRU},但之后在图像处理领域取得了很好的效果\upcite{LeCun1989BackpropagationAT,726791}。近年来,卷积神经网络已经成为众多语音、语言、图像处理任务的基础框架\upcite{DBLP:journals/corr/HeZRS15,DBLP:conf/cvpr/HuangLMW17,Girshick2015FastR,He2020MaskR}在自然语言处理领域,卷积神经网络已经得到广泛应用,在文本分类\upcite{Kalchbrenner2014ACN,Kim2014ConvolutionalNN,Ma2015DependencybasedCN}、情感分析\upcite{Santos2014DeepCN,}、语言建模\upcite{Dauphin2017LanguageMW}、机器翻译\upcite{Gehring2017ACE,DBLP:journals/corr/GehringAGYD17,Kaiser2018DepthwiseSC,Wu2019PayLA}等任务中取得不错的成绩。
\parinterval\ref{fig:11-1}展示了全连接层和卷积层的结构对比,可以看到在全连接层中,模型考虑了所有的输入,层输出中的每一个元素都依赖于所有输入。这种全连接层适用于大多数任务,但是当处理图像这种网格数据的时候,规模过大的数据会导致模型参数量过大,难以处理。其次,在一些网格数据中,通常具有局部不变性的特征,比如图像中不同位置的相同物体,语言序列中相同的$n$-gram等。而全连接网络很难提取这些局部不变性特征。为此,一些研究人员提出使用卷积层来替换全连接层。
......@@ -53,8 +53,6 @@
\end{figure}
%----------------------------------------------
\parinterval 在自然语言处理领域,卷积神经网络已经得到广泛应用,在文本分类\upcite{Kalchbrenner2014ACN,Kim2014ConvolutionalNN,Ma2015DependencybasedCN}、情感分析\upcite{Santos2014DeepCN,}、语言建模\upcite{Dauphin2017LanguageMW}、机器翻译\upcite{Gehring2017ACE,DBLP:journals/corr/GehringAGYD17,Kaiser2018DepthwiseSC,Wu2019PayLA}等任务中取得不错的成绩。
\parinterval\ref{fig:11-2}展示了一个标准的卷积神经网络模块,其中包括了卷积层、激活函数和池化层三个部分。本节将对卷积神经网络中的基本结构进行介绍。
%----------------------------------------------
......@@ -176,9 +174,9 @@
\begin{figure}[htp]
\centering
%\input{./Chapter11/Figures/figure-f }
\subfigure[$O(n)$]{\input{./Chapter11/Figures/figure-structural-comparison-a}}
\subfigure[$O(n/k)$]{\input{./Chapter11/Figures/figure-structural-comparison-b}}
\caption{串行及层级结构对比}
\subfigure[循环神经网络的串行结构($O(n)$)]{\input{./Chapter11/Figures/figure-structural-comparison-a}}
\subfigure[卷积神经网络的层级结构($O(n/k)$)]{\input{./Chapter11/Figures/figure-structural-comparison-b}}
\caption{串行及层级结构对比$\mathbi{e}_i$表示词嵌入,0表示0向量,2,3,4表示第几层)}
\label{fig:11-9}
\end{figure}
%----------------------------------------------
......@@ -219,16 +217,16 @@
\parinterval ConvS2S模型是一种高并行的序列到序列的神经计算模型。该模型分别利用卷积网络对源语言端与目标语言端的输入数据进行特征提取,并使用注意力机制来捕获两个序列之间映射关系。相比于基于多层循环神经网络的GNMT模型\upcite{Wu2016GooglesNM},其主要优势在于每一层的网络计算是完全并行化的,避免了循环神经网络中计算顺序对时序的依赖。同时,利用多层卷积神经网络的层级结构可以有效的捕捉序列不同位置之间的依赖。即使是远距离依赖,也可以通过若干层卷积单元进行有效的捕捉,而且其信息传递的路径相比循环神经网络更短。除此之外,模型同时使用门控线性单元、残差网络和位置编码等技术来进一步提升模型性能,达到了和GNMT模型相媲美的翻译性能,同时大大缩短了训练时间。
\parinterval\ref{fig:11-12}为ConvS2S模型的整体结构示意图,其内部由若干不同的模块组成,包括:
\parinterval\ref{fig:11-12}为ConvS2S模型的结构示意图,其内部由若干不同的模块组成,包括:
\begin{itemize}
\item {\small\bfnew{位置编码}}(Position Embedding):图中绿色背景框表示源语端词嵌入部分,相比于RNN中的词嵌入(Word Embedding),该模型还引入了位置编码,帮助模型获得词位置信息。
\item {\small\bfnew{卷积层与门控线性单元}}(Gated Linear Units, GLU):黄色背景框是卷积模块,这里使用门控线性单元作为非线性函数,之前的研究工作\upcite{Dauphin2017LanguageMW}表明这种非线性函数更适合于序列建模任务。图中为了简化,只展示了一层卷积,但在实际中为了更好地捕获句子信息,通常使用多层卷积叠加计算。
\item {\small\bfnew{残差连接}}\index{残差连接}(Residual Connection)\index{Residual Connection}:对于源语言端和目标语言端的卷积层网络之间,都存在一个从输入到输出的额外连接,即跨层连接\upcite{DBLP:journals/corr/HeZRS15}。该连接方式确保每个隐层输出都能包含输入序列中的更多信息,同时能够有效促进深层网络的信息传递效率。
\item {\small\bfnew{残差连接}}\index{残差连接}(Residual Connection)\index{Residual Connection}:对于源语言端和目标语言端的卷积层网络之间,都存在一个从输入到输出的额外连接,即跨层连接\upcite{DBLP:journals/corr/HeZRS15}。该连接方式确保每个隐层输出都能包含输入序列中的更多信息,同时能够有效促进深层网络的信息传递效率(该部分在图\ref{fig:11-12}中没有显示,具体结构详见\ref{sec:11.2.3}节)
\item {\small\bfnew{多跳注意力机制}}\index{多跳注意力机制}(Multi-step Attention)\index{Multi-step Attention}:蓝色框内部展示了基于多跳结构的注意力机制模块\upcite{Sukhbaatar2015EndToEndMN}可以看出使用多跳注意力帮助解码器最后一层卷积模块关注源语言和目标语言信息;同时每一层卷积层都会执行同样的注意力机制,帮助模型获得更多历史信息。下面我们将以此模型为例对基于CNN的机器翻译模型进行介绍。
\item {\small\bfnew{多跳注意力机制}}\index{多跳注意力机制}(Multi-step Attention)\index{Multi-step Attention}:蓝色框内部展示了基于多跳结构的注意力机制模块\upcite{Sukhbaatar2015EndToEndMN}使用多跳注意力机制可以帮助解码器最后一层的卷积模块关注源语言和目标语言信息;同时每一层卷积层都会执行同样的注意力机制,这样可以帮助模型获得更多历史信息。下面我们将以此模型为例对基于CNN的机器翻译模型进行介绍。
\end{itemize}
%----------------------------------------------
......@@ -259,7 +257,7 @@
\parinterval 单层卷积神经网络的感受野受限于卷积核的大小,因此只能捕捉序列中局部的上下文信息,不能很好地进行序列建模。为了捕捉更长的长下文信息,最简单的做法就是堆叠多个卷积层。相比于循环神经网络的链式结构,对相同的上下文跨度,多层卷积神经网络的层级结构可以通过更少的非线性计算对其进行建模,缓解了长距离建模中的梯度消失问题。因此,卷积神经网络相对更容易进行训练优化。
\parinterval 在ConvS2S模型中,编码端和解码端分别使用堆叠的门控卷积网络对源语和目标语序列进行建模。门控卷积在传统卷积网络的基础上引入了门控线性单元(Gated Linear Units,GLU)\upcite{Dauphin2017LanguageMW},通过门控机制对卷积输出进行控制,它在模型中的位置如图\ref{fig:11-13}黄色色方框所示:
\parinterval 在ConvS2S模型中,编码端和解码端分别使用堆叠的门控卷积网络对源语和目标语序列进行建模在传统卷积网络的基础上引入了门控线性单元(Gated Linear Units,GLU)\upcite{Dauphin2017LanguageMW},通过门控机制对卷积输出进行控制,它在模型中的位置如图\ref{fig:11-13}黄色色方框所示:
%----------------------------------------------
% 图13.
......@@ -290,7 +288,7 @@
\label{eq:11-1}
\end{eqnarray}
\noindent 其中$\mathbi{A},\mathbi{B}\in \mathbb{R}^d$$\mathbi{W}\in \mathbb{R}^d$$\mathbi{V}\in \mathbb{R}^d$$\mathbi{b}_\mathbi{W}$$\mathbi{b}_\mathbi{V} \in \mathbb{R}^d $$\mathbi{W}$$\mathbi{V}$在此表示卷积核,$\mathbi{b}_\mathbi{W}$$\mathbi{b}_\mathbi{V}$为偏置矩阵。在卷积操作之后,引入非线性变换:
\noindent 其中$\mathbi{A},\mathbi{B}\in \mathbb{R}^d$$\mathbi{W}\in \mathbb{R}^{K\times d \times d}$$\mathbi{V}\in \mathbb{R}^{K\times d \times d}$$\mathbi{b}_\mathbi{W}$$\mathbi{b}_\mathbi{V} \in \mathbb{R}^d $$\mathbi{W}$$\mathbi{V}$在此表示卷积核,$\mathbi{b}_\mathbi{W}$$\mathbi{b}_\mathbi{V}$为偏置矩阵。在卷积操作之后,引入非线性变换:
\begin{eqnarray}
\mathbi{Y} = \mathbi{A} \otimes \sigma ( \mathbi{B} )
\label{eq:11-2}
......@@ -315,6 +313,7 @@
%----------------------------------------------------------------------------------------
\subsection{残差网络}
\label{sec:11.2.3}
\parinterval 残差连接是一种训练深层网络的技术,其结构如图\ref{fig:11-15}所示,即在子层之间通过增加直接连接的方式,从而将底层信息直接传递给上层。
......@@ -336,7 +335,7 @@
\noindent 其中,$\mathbi{h}^l$表示$l$层网络的输入向量,${F} (\mathbi{h}^l)$是子层运算。如果$l=2$,那么公式\eqref{eq:11-3}可以解释为,第3层的输入($\mathbi{h}^3$)等于第2层的输出(${F}(\mathbi{h}^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}
......@@ -464,13 +463,16 @@
\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 \}$。在标准卷积中,$ \mathbi{z}_i^\textrm{std} \in \mathbb{R}^N$ ,std是standard的缩写,N为卷积核的个数,也就是标准卷积输出序列的通道数。针对$ \mathbi{z}_i^\textrm{std} $ 中的第$n$个通道$ \mathbi{z}_{i,n}^\textrm{std}$,标准卷积具体计算方式如下:
\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}
\label{eq:11-11}
\end{eqnarray}
\noindent 其中 $\mathbi{W}^\textrm{std} \in \mathbb{R}^{K \times O \times N} $ 为标准卷积的参数。可以看出,标准卷积中每个输出元素需要考虑卷积核尺度内所有词的所有特征,参数量相对较多,对应图\ref{fig:11-17}中的连接数也最多。
%在标准卷积中,$ \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}中的连接数也最多。
\parinterval 相应的,深度卷积只考虑不同词之间的依赖性,而不考虑不同通道之间的关系,相当于使用$O$个卷积核逐个通道对不同的词进行卷积操作。因此深度卷积不改变输出的表示维度,输出序列表示的通道数与输入序列一致,其计算方式如下:
\begin{eqnarray}
......@@ -478,7 +480,7 @@
\label{eq:11-12}
\end{eqnarray}
\noindent 其中dw是depth wise的缩写,$\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}
......@@ -487,7 +489,7 @@
\label{eq:11-13}
\end{eqnarray}
\noindent 其中pw是position wise的缩写,$\mathbi{z}_{i}^\textrm{pw} \in \mathbb{R}^{N}$$\mathbi{W}^\textrm{pw} \in \mathbb{R}^{O \times N}$
\noindent 其中$\mathbi{z}^\textrm{pw}$表示逐点卷积的输出,$\mathbi{z}_{i}^\textrm{pw} \in \mathbb{R}^{N}$$\mathbi{W}^\textrm{pw} \in \mathbb{R}^{O \times N}$为逐点卷积的参数
\parinterval\ref{tab:11-1}展示了这几种不同类型卷积的参数量,深度可分离卷积通过将标准卷积进行分解,降低了整体模型的参数量。在相同参数量的情况下,深度可分离卷积可以采用更大的卷积窗口,考虑序列中更大范围的依赖关系。因此相比于标准卷积,深度可分离卷积具有更强的表示能力,在机器翻译任务中也能获得更好的性能。
......@@ -521,7 +523,7 @@
\parinterval 在序列建模的模型中,一个很重要的模块就是对序列中不同位置信息的提取,如ConvS2S中的卷积网络等。虽然考虑局部上下文的卷积神经网络只在序列这一维度进行操作,具有线性的复杂度,但是由于标准卷积操作中考虑了不同通道的信息交互,整体复杂度依旧较高。一种简化的策略就是采取通道独立的卷积操作,也就是\ref{sec:11.3.1}节中介绍的深度卷积。
\parinterval 在神经机器翻译模型中,多层表示的维度通常一致,即$O=N=d$。因此,深度卷积可以使得卷积网络参数量从 $d^2K$ 降到$dK$(参考表\ref{tab:11-1})。从形式上来看,深度卷积和注意力很类似,区别在于注意力机制考虑了序列全局上下文信息,权重来自于当前位置对其他位置的“注意力”,而深度卷积中仅考虑了局部的上下文信息,权重采用了在不同通道上独立的固定参数。为了进一步降低参数量,轻量卷积共享了部分通道的卷积参数。如图\ref{fig:11-18}所示,深度卷积中4种颜色的连接代表了4个通道上独立的卷积核,而轻量卷积中,第一和第三通道,第二和第四通道采用了共享的卷积核参数。通过共享,可以将参数量压缩到$aK$,其中压缩比例为$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.
......@@ -539,7 +541,7 @@
\label{eq:11-14}
\end{eqnarray}
\noindent 其中lw是Lightweight的缩写,$\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
......@@ -548,13 +550,13 @@
\parinterval 轻量卷积和动态卷积的概念最早都是在图像领域被提出,大大减少了卷积网络模型中的参数和计算量\upcite{726791,Taigman2014DeepFaceCT,Chen2015LocallyconnectedAC}。虽然轻量卷积在存储和速度上具有优势,但其参数量的减少也导致了其表示能力的下降,损失了一部分模型性能。为此,研究人员提出了动态卷积,旨在不增加网络深度和宽度的情况下来增强模型的表示能力,其思想就是根据输入来动态地生成卷积参数\upcite{Wu2019PayLA,Chen2020DynamicCA}
\parinterval 在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关, 维度大小为$a\times k$;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换,具体如下:
\parinterval 在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关, 维度大小为$K\times a$;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换,具体如下:
\begin{eqnarray}
\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}^{a \times k \times d}$为变换矩阵,$\mathbi{W}_{:,:,c}$表示其只在$d$这一维进行计算,最后生成的$\funp{f} (\mathbi{X}_i)\in \mathbb{R}^{a \times k}$就是与输入相关的卷积核参数。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。同时,相比于注意力机制中两两位置确定出来的注意力权重,动态卷积线性复杂度的做法具有更高的计算效率。
\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}$就是与输入相关的卷积核参数。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。同时,相比于注意力机制中两两位置确定出来的注意力权重,动态卷积线性复杂度的做法具有更高的计算效率。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论