Commit 46446896 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

Shanweiqiao

查看合并请求 !988
parents 6e447bcd a751182a
......@@ -20,7 +20,7 @@
\node [anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=purple!30,rounded corners=5pt,thick] (n9) at ([xshift=0em,yshift=-1em]n8.south) {$\mathbi{X}\ \quad \mathbi{h}^1\ \quad \mathbi{h}^2\quad \ldots \quad\ \mathbi{h}^l$};
\node [anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=teal!30,rounded corners=5pt,thick] (n10) at ([xshift=0em,yshift=-2em]n9.south) {权重累加};
\node [anchor=north,rectangle,draw, inner sep=0mm,minimum height=1.2em,minimum width=15em,fill=teal!30,rounded corners=5pt,thick] (n10) at ([xshift=0em,yshift=-2em]n9.south) {权重累加\ {\red $\mathbi{g}^l$}};
\node [anchor=west,rectangle, inner sep=0mm,minimum height=1.2em, rounded corners=5pt,thick] (n11) at ([xshift=0em,yshift=-4.5em]n1.west) {聚合网络};
......
......@@ -46,7 +46,7 @@
\parinterval 但是,Transformer模型中的自注意力机制本身并不具有这种性质,而且它直接忽略了输入单元之间的位置关系。虽然,Transformer中引入了基于正余弦函数的绝对位置编码(见{\chaptertwelve}),但是该方法仍然无法显性区分局部依赖与长距离依赖\footnote[1]{局部依赖指当前位置与局部的相邻位置之间的联系。}
\parinterval 针对上述问题,研究人员设计了“相对位置”编码,对原有的“绝对位置”编码进行补充{\red (要不要用编码?)},强化了局部依赖\upcite{Dai2019TransformerXLAL,Shaw2018SelfAttentionWR}。此外,由于模型中每一层均存在自注意力机制计算,因此模型捕获位置信息的能力也逐渐减弱,这种现象在深层模型中尤为明显。而利用相对位置编码能够把位置信息显性加入到每一层的注意力机制的计算中,{\red 进而强化深层模型中局部位置相对位置编码和绝对位置编码方法的表示能力(表意不对吧?)}\upcite{li2020shallow}。图\ref{fig:15-1}对比了Transformer中绝对位置编码和相对位置编码方法。
\parinterval 针对上述问题,研究人员{\red 尝试引入}“相对位置”{\red 信息},对原有的“绝对位置”{\red 信息}进行补充,强化了局部依赖\upcite{Dai2019TransformerXLAL,Shaw2018SelfAttentionWR}。此外,由于模型中每一层均存在自注意力机制计算,因此模型捕获位置信息的能力也逐渐减弱,这种现象在深层模型中尤为明显。而利用相对位置编码能够把位置信息显性加入到每一层的注意力机制的计算中,{\red 进而强化深层模型的位置表示能力}\upcite{li2020shallow}。图\ref{fig:15-1}对比了Transformer中绝对位置编码和相对位置编码方法。
%----------------------------------------------
\begin{figure}[htp]
......@@ -95,7 +95,7 @@
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{相对位置编码}}\index{相对位置编码}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下:{\red (下面的wk和上面的wk是一个东西吗?)}
\item {\small\bfnew{相对位置编码}}\index{相对位置编码}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下:
\begin{eqnarray}
\mathbi{a}_{ij}^K &=& \mathbi{w}^K_{\textrm{clip}(j-i,k)} \label{eq:15-7} \\
\mathbi{a}_{ij}^V &=& \mathbi{w}^V_{\textrm{clip}(j-i,k)} \label{eq:15-8} \\
......@@ -148,7 +148,7 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\
\label{eq:15-14}
\end{eqnarray}
\noindent 其中{\red (上式,u,v,R没解释)}$A_{ij}^{\rm rel}$为使用相对位置编码后位置$i$$j$关系的表示结果。公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d) 表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\noindent 其中$A_{ij}^{\rm rel}$为使用相对位置编码后位置$i$$j$关系的表示结果,{\red $\mathbi{R}$是一个固定的正弦矩阵。不同于公式\eqref{eq:15-13},公式\eqref{eq:15-14}对(c)中的$\mathbi{E}_{x_j}^{T}$与(d)中的$\mathbi{R}_{i-j}^{T}$采用了不同的映射矩阵,分别为$\mathbi{W}_{K,E}^{T}$$\mathbi{W}_{K,R}^{T}$,这两项分别代表了键$\mathbi{K}$中的词嵌入表示和相对位置编码表示,并且由于此时只采用了相对位置编码,因此公式\eqref{eq:15-14}在(c)与(d)部分使用了$\mathbi{u}$$\mathbi{v}$两个可学习的矩阵代替$\mathbi{U}_i\mathbi{W}_Q$$\mathbi{U}_i\mathbi{W}_Q$,即查询$\mathbi{Q}$中的绝对位置编码部分。此时}公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d)表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 例如,可以通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
......@@ -207,7 +207,7 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\noindent 其中,$\mathbi{W}_p$$\mathbi{W}_d$$\mathbi{I}_p$$\mathbi{I}_d$均为模型中可学习的参数矩阵。
\vspace{0.5em}
\item {\small\bfnew{多尺度局部建模}}\upcite{DBLP:conf/aaai/GuoQLXZ20}。不同于上述方法直接作用于注意力权重,多尺度局部建模通过赋予多头不一样的局部感受野{\red(什么是感受野,是否是专有名词)},间接地引入局部约束(图\ref{fig:15-4})。
\item {\small\bfnew{多尺度局部建模}}\upcite{DBLP:conf/aaai/GuoQLXZ20}。不同于上述方法直接作用于注意力权重,多尺度局部建模通过赋予多头不一样的局部感受野,间接地引入局部约束(图\ref{fig:15-4})。
%----------------------------------------------
\begin{figure}[htp]
......@@ -218,28 +218,45 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\end{figure}
%-------------------------------------------
\noindent 于是,注意力每个头的计算过程如下{\red (20的分子维度是否对应?)}
\noindent {\red 于是,在计算第$i$个词对第$j$个词的相关系数时,通过超参数$\omega$控制实际的感受野为$j-\omega,\ldots,j+\omega$,注意力计算中$\mathbi{e}_{ij}$的计算方式与公式\eqref{eq:15-6}相同,权重$\alpha_{ij}$的具体计算公式为
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){(C(\mathbi{x}_j \mathbi{W}_K,\omega))}^{T}}{\sqrt{d_k}}
\alpha_{ij} &=& \frac{\exp (\mathbi{e}_{ij})}{\sum_{k=j-\omega}^{j+\omega}\exp (\mathbi{e}_{ik})}
\label{eq:15-20}
\end{eqnarray}
\noindent 其中,$C(\mathbi{x}_j \mathbi{W}_K,\omega)$表示根据超参数$\omega$自适应的Key{\red (这里确实容易有歧义,因为一般xj这种都是第j列,或者第j个,但是这里取得应该是K的第j-w到第j+w行,最好加点维度说明)}
\noindent 之后在计算注意力输出时同样利用上述思想进行局部约束
\begin{eqnarray}
C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}_{j+\omega})
\mathbi{z}_{i} &=& \sum_{j=j-\omega}^{j+\omega} \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V)
\label{eq:15-22}
\end{eqnarray}
\noindent 其中,约束的具体作用范围会根据实际句长进行一定的裁剪,通过对不同的头设置不同的超参数来控制感受野的大小,最终实现多尺度局部建模。
\parinterval 值得注意的是上述两种添加局部约束的方法都更适用于Transformer模型的底层网络。这是由于模型离输入更近的层更倾向于捕获局部信息\upcite{Jawahar2019WhatDB,Yang2018ModelingLF},伴随着神经网络的加深,模型更倾向于逐渐加强全局建模的能力。类似的结论在针对BERT模型的解释性研究工作中也有论述\upcite{Jawahar2019WhatDB,DBLP:conf/emnlp/Ethayarajh19}
}
\noindent 于是,注意力每个头的计算过程如下:
\begin{eqnarray}
{\red \mathbi{e}_{i\cdot}} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){({\red C_j(\mathbi{x}} \mathbi{W}_K,\omega))}^{T}}{\sqrt{d_k}}
\label{eq:15-20}
\end{eqnarray}
\noindent 其中,{\red $\mathbi{e}_{i\cdot}$表示第$i$个词与以第$j$个词为中心的$2\omega+1$个词的注意力权重}${\red C_j(\mathbi{x}} \mathbi{W}_K,\omega)$表示根据超参数$\omega$自适应的Key:
\begin{eqnarray}
{\red C_j(\mathbi{x}} \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}_{j+\omega})
\label{eq:15-21}
\end{eqnarray}
\noindent {\red 其中,$\mathbi{K}=\mathbi{x} \mathbi{W}_K$$\mathbi{x}_j$表示输入向量序列$\mathbi{x}$中的第$j$个词,$\mathbi{K}_{j}$表示第$j$个词对应的key。}之后在计算注意力输出时同样利用上述思想进行局部约束:
\noindent {\red 其中,$\mathbi{K}=\mathbi{x} \mathbi{W}_K$$\mathbi{K}_{j}$表示第$j$个词对应的key。}之后在计算注意力输出时同样利用上述思想进行局部约束:
\begin{eqnarray}
\mathbi{z}_i &=& \sum_{j=1}^m \alpha_{ij}C(\mathbi{x}_j \mathbi{W}_V,\omega)
\mathbi{z}_i &=& \sum_{j=1}^m \alpha_{ij}{\red C_j(\mathbi{x}} \mathbi{W}_V,\omega)
\label{eq:15-22}
\end{eqnarray}
\vspace{0.5em}
\end{itemize}
\parinterval 值得注意的是上述两种添加局部约束的方法都更适用于Transformer模型的底层网络。这是由于模型离输入更近的层更倾向于捕获局部信息{\red (是否需要引用论文,或者使用公式证明)},伴随着神经网络的加深,模型更倾向于逐渐加强全局建模的能力。类似的结论在针对BERT模型的解释性研究工作中也有论述\upcite{Jawahar2019WhatDB,DBLP:conf/emnlp/Ethayarajh19}
\parinterval 值得注意的是上述两种添加局部约束的方法都更适用于Transformer模型的底层网络。这是由于模型离输入更近的层更倾向于捕获局部信息\upcite{Jawahar2019WhatDB,Yang2018ModelingLF},伴随着神经网络的加深,模型更倾向于逐渐加强全局建模的能力。类似的结论在针对BERT模型的解释性研究工作中也有论述\upcite{Jawahar2019WhatDB,DBLP:conf/emnlp/Ethayarajh19}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -255,7 +272,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\vspace{0.5em}
\item {\small\bfnew{使用1维卷积注意力网络}}\upcite{DBLP:journals/corr/abs-1904-03107}(图\ref{fig:15-5}(b))。可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小$D$,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内。
\vspace{0.5em}
\item {\small\bfnew{使用2维卷积注意力网络}}(图\ref{fig:15-5}(c))。在一维卷积注意力网络的基础上,对多个注意力头之间的信息进行交互建模,打破了注意力头之间的界限。1D-CSAN的关注区域为$1\times D$,当将其扩展为二维矩形$D \times N$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第$i$个元素和另一个头中的第$j$个元素之间的相关性系数,实现了对不同子空间之间关系的建模,所得到的注意力分布{\red (哪里得到了?)}表示了头之间的依赖关系。
\item {\small\bfnew{使用2维卷积注意力网络}}(图\ref{fig:15-5}(c))。在一维卷积注意力网络的基础上,对多个注意力头之间的信息进行交互建模,打破了注意力头之间的界限。1D-CSAN的关注区域为$1\times D$,当将其扩展为二维矩形$D \times N$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第$i$个元素和另一个头中的第$j$个元素之间的相关性系数,实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
%----------------------------------------------
\begin{figure}[htp]
......@@ -329,7 +346,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\end{figure}
%-------------------------------------------
\parinterval 另一种方法是,利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的结果与Transformer进行融合\upcite{DBLP:conf/naacl/HaoWYWZT19}。融合机制可以采用串行计算或并行计算{\red (有点少?啥意思?)}
\parinterval 另一种方法是,利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的结果与Transformer进行融合\upcite{DBLP:conf/naacl/HaoWYWZT19}。融合机制可以采用串行计算或并行计算。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -337,7 +354,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\subsection{高效的自注意力模型}
\parinterval 除了机器翻译,Transformer模型同样被广泛应用于自然语言理解、图像处理、语音处理等任务。但是,自注意力机制的时间复杂度是序列长度$N$的平方项{\red (这里要不要乘隐藏层维度?)},同时其对内存(显存)的消耗巨大,尤其当处理较长序列的文本时,这种问题尤为严重。因此如何提高Transformer模型的效率也受到了广泛的关注。{\chapterfourteen}已经从模型推断的角度介绍了Transformer系统加速的方法,这里重点讨论一些高效的Transformer变种模型。
\parinterval 除了机器翻译,Transformer模型同样被广泛应用于自然语言理解、图像处理、语音处理等任务。但是,自注意力机制的时间复杂度是序列长度$N$的平方项,同时其对内存(显存)的消耗巨大,尤其当处理较长序列的文本时,这种问题尤为严重。因此如何提高Transformer模型的效率也受到了广泛的关注。{\chapterfourteen}已经从模型推断的角度介绍了Transformer系统加速的方法,这里重点讨论一些高效的Transformer变种模型。
\parinterval 自注意力机制的时间复杂度较高,正是因为其需要对序列中的每一个位置计算与其他所有位置的相关性。因此一个自然的想法就是限制自注意力机制的作用范围,大体上可以分为如下几种方式:
......@@ -429,9 +446,9 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\end{eqnarray}
\end{itemize}
\parinterval 从上述公式中可以发现,在前向传播过程中,Pre-Norm结构可以通过残差路径将底层神经网络的输出直接暴露给上层神经网络。此外,在反向传播过程中,使用Pre-Norm结构也可以使得顶层网络的梯度更容易地反馈到底层网络。这里以一个含有$L$个子层的结构为例,令$Loss$表示整个神经网络输出上的损失,$\mathbi{x}_L$为顶层的输出。对于Post-Norm结构,根据链式法则,损失$Loss$相对于$\mathbi{x}_l$ 的梯度可以表示为:
\parinterval 从上述公式中可以发现,在前向传播过程中,Pre-Norm结构可以通过残差路径将底层神经网络的输出直接暴露给上层神经网络。此外,在反向传播过程中,使用Pre-Norm结构也可以使得顶层网络的梯度更容易地反馈到底层网络。这里以一个含有$L$个子层的结构为例,令$\textrm{Loss}$表示整个神经网络输出上的损失,$\mathbi{x}_L$为顶层的输出。对于Post-Norm结构,根据链式法则,损失$\textrm{Loss}$相对于$\mathbi{x}_l$ 的梯度可以表示为:
\begin{eqnarray}
\frac{\partial Loss}{\partial \mathbi{x}_l} &=& \frac{\partial Loss}{\partial \mathbi{x}_L} \times \prod_{k=l}^{L-1}\frac{\partial \textrm{LN}(\mathbi{y}_k)}{\partial \mathbi{y}_k} \times \prod_{k=l}^{L-1}\big(1+\frac{\partial F(\mathbi{x}_k;{\bm \theta_k})}{\partial \mathbi{x}_k} \big)
\frac{\partial \textrm{Loss}}{\partial \mathbi{x}_l} &=& \frac{\partial \textrm{Loss}}{\partial \mathbi{x}_L} \times \prod_{k=l}^{L-1}\frac{\partial \textrm{LN}(\mathbi{y}_k)}{\partial \mathbi{y}_k} \times \prod_{k=l}^{L-1}\big(1+\frac{\partial F(\mathbi{x}_k;{\bm \theta_k})}{\partial \mathbi{x}_k} \big)
\label{eq:15-28}
\end{eqnarray}
......@@ -439,11 +456,11 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\parinterval 类似的,也能得到Pre-Norm结构的梯度计算结果,如下:
\begin{eqnarray}
\frac{\partial Loss}{\partial \mathbi{x}_l} &=& \frac{\partial Loss}{\partial \mathbi{x}_L} \times \big(1+\sum_{k=l}^{L-1}\frac{\partial F(\textrm{LN}(\mathbi{x}_k);{\bm \theta_k})}{\partial \mathbi{x}_l} \big)
\frac{\partial \textrm{Loss}}{\partial \mathbi{x}_l} &=& \frac{\partial \textrm{Loss}}{\partial \mathbi{x}_L} \times \big(1+\sum_{k=l}^{L-1}\frac{\partial F(\textrm{LN}(\mathbi{x}_k);{\bm \theta_k})}{\partial \mathbi{x}_l} \big)
\label{eq:15-29}
\end{eqnarray}
\parinterval 对比公式\eqref{eq:15-28}和公式\eqref{eq:15-29}可以看出,Pre-Norm结构直接把顶层的梯度$\frac{\partial Loss}{\partial \mathbi{x}_L}$传递给下层,并且如果将公式\eqref{eq:15-29}右侧展开,可以发现$\frac{\partial Loss}{\partial \mathbi{x}_l}$中直接含有$\frac{\partial Loss}{\partial \mathbi{x}_L}$部分。这个性质弱化了梯度计算对模型深度$L$的依赖;而如公式\eqref{eq:15-28}右侧所示,Post-Norm结构则包含一个与$L$相关的多项导数的积,伴随着$L$的增大更容易发生梯度消失和梯度爆炸问题。因此,Pre-Norm结构更适于堆叠多层神经网络的情况。比如,使用Pre-Norm 结构可以很轻松地训练一个30层(60个子层)编码器的Transformer网络,并带来可观的BLEU提升。这个结果相当于标准Transformer编码器深度的6倍,相对的,用Post-Norm结构训练深层网络的时候,训练结果很不稳定,当编码器深度超过12层后很难完成有效训练\upcite{WangLearning},尤其是在低精度设备环境下损失函数{\red 更容易出现}发散情况。这里把使用Pre-Norm的深层Transformer模型称为Transformer-Deep。
\parinterval 对比公式\eqref{eq:15-28}和公式\eqref{eq:15-29}可以看出,Pre-Norm结构直接把顶层的梯度$\frac{\partial \textrm{Loss}}{\partial \mathbi{x}_L}$传递给下层,并且如果将公式\eqref{eq:15-29}右侧展开,可以发现$\frac{\partial \textrm{Loss}}{\partial \mathbi{x}_l}$中直接含有$\frac{\partial \textrm{Loss}}{\partial \mathbi{x}_L}$部分。这个性质弱化了梯度计算对模型深度$L$的依赖;而如公式\eqref{eq:15-28}右侧所示,Post-Norm结构则包含一个与$L$相关的多项导数的积,伴随着$L$的增大更容易发生梯度消失和梯度爆炸问题。因此,Pre-Norm结构更适于堆叠多层神经网络的情况。比如,使用Pre-Norm 结构可以很轻松地训练一个30层(60个子层)编码器的Transformer网络,并带来可观的BLEU提升。这个结果相当于标准Transformer编码器深度的6倍,相对的,用Post-Norm结构训练深层网络的时候,训练结果很不稳定,当编码器深度超过12层后很难完成有效训练\upcite{WangLearning},尤其是在低精度设备环境下损失函数{\red 更容易出现}发散情况。这里把使用Pre-Norm的深层Transformer模型称为Transformer-Deep。
\parinterval 另一个有趣的发现是,使用深层网络后,网络可以更有效地利用较大的学习率和较大的批量训练,大幅度缩短了模型达到收敛状态的时间。相比于Transformer-Big等宽网络,Transformer-Deep并不需要太大的隐藏层维度就可以取得更优的翻译品质\upcite{WangLearning}。也就是说,Transformer-Deep是一个更“窄”更“深”的神经网络。这种结构的参数量比Transformer-Big少,系统运行效率更高。
......@@ -496,11 +513,11 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\vspace{0.5em}
\item 前馈神经网络。将之前中间层的表示进行级联,之后利用前馈神经网络得到融合的表示,如下:
\begin{eqnarray}
\mathbi{g} &=& \textrm{FNN}([\mathbi{h}^1,\cdot,\mathbi{h}^L])
\mathbi{g} &=& \textrm{FNN}([\mathbi{h}^1,{\red \ldots},\mathbi{h}^L])
\label{eq:15-32}
\end{eqnarray}
\noindent 其中,$[\cdot]$表示级联操作{\red (点代表级联不太对)}。这种方式具有比权重平均更强的拟合能力。
\noindent 其中,$[\cdot]$表示级联操作。这种方式具有比权重平均更强的拟合能力。
\vspace{0.5em}
\item 基于多跳的自注意力机制。如图\ref{fig:15-11}所示,其做法与前馈神经网络类似,首先将不同层的表示拼接成2维的句子级矩阵表示\upcite{DBLP:journals/corr/LinFSYXZB17}。之后利用类似于前馈神经网络的思想将维度为$\mathbb{R}^{d_{\textrm{model}} \times L}$的矩阵映射到维度为$\mathbb{R}^{d_{\textrm{model}} \times n_{\rm hop}}$的矩阵,如下:
\begin{eqnarray}
......@@ -556,7 +573,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\label{eq:15-37}
\end{eqnarray}
\noindent 这里,$\mathbi{h}^0${\red(h0到底要不要改一下,上下文也是)}表示词嵌入层的输出,$\mathbi{h}^l$$l>0$)代表Transformer模型第$l$层的{\red(隐藏层?)}表示。
\noindent 这里,$\mathbi{h}^0$表示词嵌入层的输出{\red $\mathbi{X}$}$\mathbi{h}^l$$l>0$)代表Transformer模型第$l$层的{\red 隐藏层}表示。
\vspace{0.5em}
\item 定义一个维度为$(L+1)\times (L+1)$的权值矩阵$\mathbi{W}$,矩阵中每一行表示之前各层对当前层的贡献度。令$\mathbi{W}_{l,i}$代表权值矩阵$\mathbi{W}$$l$行第$i$列的权重,则第$0 \sim l$ 层的聚合结果为$\mathbi{h}_i$的线性加权和:
......@@ -573,12 +590,12 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-dynamic-linear-aggregation-network-structure}
\caption{线性层聚合网络{\red (X为词嵌入,没有LN,上面还用的h0)}}
\caption{线性层聚合网络}
\label{fig:15-13}
\end{figure}
%-------------------------------------------
\parinterval 根据上述描述可以发现,权值矩阵$\mathbi{W}$每个位置的值由先前层对应的位置的值计算得到,因此该矩阵是一个下三角矩阵。开始时,对{\red(权值?)}矩阵的每行进行平均初始化,即初始化矩阵$\mathbi{W}_0$的每一行各个位置的值为$\frac{1}{\lambda}$$\lambda \in (1,2,\ldots,l+1)$。伴随着神经网络的训练,不断更新$\mathbi{W}$中每一行不同位置权重的大小。
\parinterval 根据上述描述可以发现,权值矩阵$\mathbi{W}$每个位置的值由先前层对应的位置的值计算得到,因此该矩阵是一个下三角矩阵。开始时,对{\red 权值}矩阵的每行进行平均初始化,即初始化矩阵$\mathbi{W}_0$的每一行各个位置的值为$\frac{1}{\lambda}$$\lambda \in (1,2,\ldots,l+1)$。伴随着神经网络的训练,不断更新$\mathbi{W}$中每一行不同位置权重的大小。
\parinterval 动态线性层聚合的一个好处是,系统可以自动学习不同层对当前层的贡献度。在实验中也发现,离当前层更近的部分的贡献度(权重)会更大,如图\ref{fig:15-14}所示,在每一行中颜色越深代表对当前层的贡献度越大。
......@@ -704,7 +721,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\subsubsection{4. ADMIN初始化策略}
\parinterval 也有研究发现Post-Norm结构在训练过程中过度依赖残差支路,在训练初期很容易发生参数梯度方差过大的现象\upcite{DBLP:conf/emnlp/LiuLGCH20}。经过分析发现,虽然底层神经网络发生梯度消失是导致训练不稳定的重要因素,但并不是唯一因素。例如,标准Transformer模型中梯度消失的原因在于使用Post-Norm 结构的解码器{\red (只与解码器有关?)}。尽管通过调整模型结构解决了梯度消失问题,但是模型训练不稳定的问题仍然没有被很好地解决。研究人员观测到Post-Norm结构在训练过程中过于依赖残差支路,而Pre-Norm结构在训练过程中逐渐呈现出对残差支路的依赖性,这更易于网络的训练。进一步,从参数更新的角度出发,Pre-Norm由于参数的改变导致网络输出变化的方差经推导后可以表示为$O(\log L)$,而Post-Norm对应的方差为$O(L)$。因此,可以尝试减小Post-Norm中由于参数更新导致的输出的方差值,从而达到稳定训练的目的。针对该问题,可以采用两阶段的初始化方法。这里,可以重新定义子层之间的残差连接如下:
\parinterval 也有研究发现Post-Norm结构在训练过程中过度依赖残差支路,在训练初期很容易发生参数梯度方差过大的现象\upcite{DBLP:conf/emnlp/LiuLGCH20}。经过分析发现,虽然底层神经网络发生梯度消失是导致训练不稳定的重要因素,但并不是唯一因素。例如,标准Transformer模型中梯度消失的原因在于使用了Post-Norm结构的解码器。尽管通过调整模型结构解决了梯度消失问题,但是模型训练不稳定的问题仍然没有被很好地解决。研究人员观测到Post-Norm结构在训练过程中过于依赖残差支路,而Pre-Norm结构在训练过程中逐渐呈现出对残差支路的依赖性,这更易于网络的训练。进一步,从参数更新的角度出发,Pre-Norm由于参数的改变导致网络输出变化的方差经推导后可以表示为$O(\log L)$,而Post-Norm对应的方差为$O(L)$。因此,可以尝试减小Post-Norm中由于参数更新导致的输出的方差值,从而达到稳定训练的目的。针对该问题,可以采用两阶段的初始化方法。这里,可以重新定义子层之间的残差连接如下:
\begin{eqnarray}
\mathbi{x}_{l+1} &=& \mathbi{x}_l \cdot {\bm \omega_{l+1}} + F_{l+1}(\mathbi{x}_l)
\label{eq:15-47}
......@@ -731,7 +748,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{K}_{j-\omega},\ldots,\mathbi{K}
\subsection{深层模型的训练加速}
\parinterval 尽管窄而深的神经网络比宽网络有更快的收敛速度\upcite{WangLearning},但伴随着训练数据的增加,以及模型进一步的加深,训练代价成为不可忽视的问题。例如,在几千万甚至上亿的双语平行句对上训练一个48层的Transformer模型需要几周的时间才能达到收敛\footnote[5]{训练时间的估算是在单台8卡Titan V GPU服务器上得到的}。因此,在保证模型性能不变的前提下,高效地完成深层模型的训练也是至关重要的{\red (概括性不足,三种方法是并列还是依赖?)}
\parinterval 尽管窄而深的神经网络比宽网络有更快的收敛速度\upcite{WangLearning},但伴随着训练数据的增加,以及模型进一步的加深,训练代价成为不可忽视的问题。例如,在几千万甚至上亿的双语平行句对上训练一个48层的Transformer模型需要几周的时间才能达到收敛\footnote[5]{训练时间的估算是在单台8卡Titan V GPU服务器上得到的}。因此,在保证模型性能不变的前提下,高效地完成深层模型的训练也是至关重要的。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -943,7 +960,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\parinterval 在标准的英语到日语的翻译中,英语短语“a cup of green tea”只会被翻译为“緑茶”一词。在加入句法树后,“a cup of green tea”会作为树中一个节点,这样可以更容易把英语短语作为一个整体进行翻译。
\parinterval 只是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好地利用句法树中的上下文信息。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21} 所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态{\red (向上传输没看出来)},虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。显然,自下而上的传递,可以保证句子的浅层信息(如短距离词汇搭配)被传递给上层节点,而自上而下的传递,可以保证句子上层结构的抽象被有效地传递给下层节点。这样,每个节点就同时含有浅层和深层句子表示的信息。
\parinterval 只是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好地利用句法树中的上下文信息。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21} 所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态,虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。显然,自下而上的传递,可以保证句子的浅层信息(如短距离词汇搭配)被传递给上层节点,而自上而下的传递,可以保证句子上层结构的抽象被有效地传递给下层节点。这样,每个节点就同时含有浅层和深层句子表示的信息。
%----------------------------------------------
\begin{figure}[htp]
......@@ -1125,7 +1142,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\subsubsection{1. 搜索空间}
\parinterval 对搜索空间建模是结构搜索任务中的基础部分。如图\ref{fig:15-30}所示,结构空间中包含着所有潜在的模型结构。图\ref{fig:15-30}以结构之间的相似性为衡量指标对模型结构在搜索空间中的相对位置进行了刻画,同时颜色的深浅表示了该结构在指定任务下的性能情况{\red (图中的注释太小了,看不清)}。可以看到对于特定任务来说,性能较好的模型结构往往会聚集在一起。因此,在研究人员设计搜索空间的时候,为了增加找到最优结构的可能性,往往会根据经验或者实验将易产出高性能模型结构的区域设定为搜索空间。以自然语言处理任务为例,最初的网络结构搜索工作主要对基于循环神经网络构成的搜索空间进行探索\upcite{DBLP:conf/iclr/ZophL17,DBLP:conf/icml/PhamGZLD18,DBLP:conf/iclr/LiuSY19},而近些年,在Transformer模型的基础上进行结构搜索也引起了研究人员的广泛关注\upcite{DBLP:conf/icml/SoLL19,DBLP:conf/ijcai/ChenLQWLDDHLZ20,DBLP:conf/acl/WangWLCZGH20}
\parinterval 对搜索空间建模是结构搜索任务中的基础部分。如图\ref{fig:15-30}所示,结构空间中包含着所有潜在的模型结构。图\ref{fig:15-30}以结构之间的相似性为衡量指标对模型结构在搜索空间中的相对位置进行了刻画,同时颜色的深浅表示了该结构在指定任务下的性能情况。可以看到对于特定任务来说,性能较好的模型结构往往会聚集在一起。因此,在研究人员设计搜索空间的时候,为了增加找到最优结构的可能性,往往会根据经验或者实验将易产出高性能模型结构的区域设定为搜索空间。以自然语言处理任务为例,最初的网络结构搜索工作主要对基于循环神经网络构成的搜索空间进行探索\upcite{DBLP:conf/iclr/ZophL17,DBLP:conf/icml/PhamGZLD18,DBLP:conf/iclr/LiuSY19},而近些年,在Transformer模型的基础上进行结构搜索也引起了研究人员的广泛关注\upcite{DBLP:conf/icml/SoLL19,DBLP:conf/ijcai/ChenLQWLDDHLZ20,DBLP:conf/acl/WangWLCZGH20}
%----------------------------------------------
\begin{figure}[htp]
......@@ -1158,7 +1175,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\vspace{0.5em}
\item {\small\bfnew{进化算法}}。进化算法最初被用来对神经网络模型结构、以及其中的权重参数进行优化\upcite{DBLP:conf/icga/MillerTH89,DBLP:journals/tnn/AngelineSP94,stanley2002evolving}。随着最优化算法的发展,近年来,对于网络参数的学习开始更多地采用梯度下降的方式,但是进化算法依旧被用于对模型结构进行优化\upcite{DBLP:conf/icml/RealMSSSTLK17,DBLP:conf/iclr/ElskenMH19,DBLP:conf/iclr/LiuSVFK18}。从结构优化的角度来说,一般是将模型结构看做遗传算法中种群的个体,使用轮盘赌或锦标赛等抽取方式,对种群中的结构进行取样作为亲本,之后通过亲本模型的突变产生新的模型结构,最终对这些新的模型结构进行适应度评估。根据模型结构在校验集上的性能确定是否将其加入种群。
\vspace{0.5em}
\item {\small\bfnew{强化学习}}。强化学习方法在{\chapterthirteen}已经进行了介绍,这里可以将神经网络结构的设计看做是一种序列生成任务,使用字符序列对网络结构进行表述\upcite{DBLP:conf/iclr/ZophL17}。这种方法的执行过程如图\ref{fig:15-33}所示{\red 由智能体对模型结构进行生成,之后将生成的结构应用于对应的任务(如机器翻译、语言建模等),根据模型在对应任务中的输出以及表现水平来进一步对智能体进行反馈,促使智能体生成更适用于当前任务的模型结构。}
\item {\small\bfnew{强化学习}}。强化学习方法在{\chapterthirteen}已经进行了介绍,这里可以将神经网络结构的设计看做是一种序列生成任务,使用字符序列对网络结构进行表述\upcite{DBLP:conf/iclr/ZophL17}。这种方法的执行过程如图\ref{fig:15-33}所示{\red 。其执行过程为由智能体对模型结构进行生成,之后将生成的结构应用于对应的任务(如机器翻译、语言建模等),根据模型在对应任务中的输出以及表现水平来进一步对智能体进行反馈,促使智能体生成更适用于当前任务的模型结构。}
%----------------------------------------------
\begin{figure}[htp]
......@@ -1170,7 +1187,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
%-------------------------------------------
\vspace{0.5em}
\item {\small\bfnew{基于梯度的方法}}。这种方法的思想是在连续空间中对模型结构进行表示\upcite{DBLP:conf/iclr/LiuSY19}{\red 通常将模型结构建模为超网络中的结构参数,使用基于梯度的方法对超网络中的参数进行优化,最终根据其中的结构参数离散出最终的模型结构,达到结构搜索的目的,}如图\ref{fig:15-34}所示。基于梯度的方法十分高效,因此也受到了很多关注\upcite{DBLP:conf/cvpr/WuDZWSWTVJK19,DBLP:conf/iclr/XuX0CQ0X20,DBLP:conf/acl/LiHZXJXZLL20}
\item {\small\bfnew{基于梯度的方法}}。这种方法的思想是在连续空间中对模型结构进行表示\upcite{DBLP:conf/iclr/LiuSY19}{\red 通常将模型结构建模为超网络中的结构参数,接下来使用基于梯度的方法对超网络中的参数进行优化,最终根据其中的结构参数离散出最终的模型结构,达到结构搜索的目的,整体过程}如图\ref{fig:15-34}所示。基于梯度的方法十分高效,因此也受到了很多关注\upcite{DBLP:conf/cvpr/WuDZWSWTVJK19,DBLP:conf/iclr/XuX0CQ0X20,DBLP:conf/acl/LiHZXJXZLL20}
\vspace{0.5em}
%----------------------------------------------
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论