Commit d30a593c by xiaotong

wording (sec 15)

parent 0abaea5a
......@@ -94,13 +94,13 @@
\textrm{clip}(x,k) &=& \max(-k,\min(k,x)) \label{eq:15-9}
\end{eqnarray}
\noindent 其中,$\mathbi{w}^K \in \mathbb{R}^{d_k}$$\mathbi{w}^V \in \mathbb{R}^{d_k}$是模型中可学习的参数矩阵;$\textrm{clip}(\cdot,\cdot)$表示截断操作,由公式\eqref{eq:15-9}定义。可以发现$\mathbi{a}^K$$\mathbi{a}^V$ 是根据输入数据对$\mathbi{w}^K$$\mathbi{w}^V$进行查表得到的向量,即相对位置表示。这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各$k$ 个词的注意力计算。因此,最终的窗口大小为$2k + 1$。 对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。此时,注意力模型的计算可以调整为公式\ref{eq:15-4}
\noindent 其中,$\mathbi{w}^K \in \mathbb{R}^{d_k}$$\mathbi{w}^V \in \mathbb{R}^{d_k}$是模型中可学习的参数矩阵;$\textrm{clip}(\cdot,\cdot)$表示截断操作,由公式\eqref{eq:15-9}定义。可以看出,$\mathbi{a}^K$$\mathbi{a}^V$ 是根据输入的相对位置信息(由$\textrm{clip}(j-i,k)$确定)对$\mathbi{w}^K$$\mathbi{w}^V$进行查表得到的向量,即相对位置表示。这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各$k$ 个词的注意力计算。因此,最终的窗口大小为$2k + 1$。 对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。此时,注意力模型的计算可以调整为
\begin{eqnarray}
\mathbi{z}_{i} &=& \sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V + \mathbi{a}_{ij}^V)
\label{eq:15-4}
\end{eqnarray}
\noindent 相比于公式\eqref{eq:15-1},此处在计算$\mathbi{z}_i$时引入了额外的向量$\mathbi{a}_{ij}^V$,使用$\mathbi{a}_{ij}^V$来表示位置$i$与位置$j$之间的相对位置。同时在计算注意力权重时对$\mathbi{K}$进行修改,同样引入了$\mathbi{a}_{ij}^K$向量表示位置$i$与位置$j$之间的相对位置。在公式\eqref{eq:15-3}的基础上,注意力权重的计算方式调整为:
\parinterval 相比于公式\eqref{eq:15-1},公式\eqref{eq:15-4}在计算$\mathbi{z}_i$时引入了额外的向量$\mathbi{a}_{ij}^V$,用它来表示位置$i$与位置$j$之间的相对位置信息。同时在计算注意力权重时对$\mathbi{K}$进行修改,同样引入了$\mathbi{a}_{ij}^K$向量表示位置$i$与位置$j$之间的相对位置。在公式\eqref{eq:15-3}的基础上,注意力权重的计算方式调整为:
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{\mathbi{x}_i \mathbi{W}_Q{(\mathbi{x}_j \mathbi{W}_K + \mathbi{a}_{ij}^K )}^{T}}{\sqrt{d_k}} \\
&=& \frac{\mathbi{x}_i \mathbi{W}_Q{(\mathbi{x}_j \mathbi{W}_K)}^{T} + \mathbi{x}_i \mathbi{W}_Q{(\mathbi{a}_{ij}^K )}^{T}}{\sqrt{d_k}}
......@@ -108,33 +108,34 @@
\end{eqnarray}
\vspace{0.5em}
\item Transformer-XL\upcite{Dai2019TransformerXLAL},基于相对位置编码进一步改进。由于输入特征是由词嵌入表示与绝对位置编码组成,例如$x_i = \mathbi{E}_{x_i} + \mathbi{U}_i$$x_j=\mathbi{E}_{x_j} + \mathbi{U}_j$将其代入公式\eqref{eq:15-3}中可以得到:
\item Transformer-XL\upcite{Dai2019TransformerXLAL}。由于输入特征是由词嵌入表示与绝对位置编码组成,例如,$x_i = \mathbi{E}_{x_i} + \mathbi{U}_i$$x_j=\mathbi{E}_{x_j} + \mathbi{U}_j$,其中$\mathbi{E}_{x_i} $$\mathbi{E}_{x_j} $表示词嵌入,$\mathbi{U}_i$$\mathbi{U}_j$表示绝对位置编码(正余弦函数)。将其代入公式\eqref{eq:15-3}中可以得到:
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{(\mathbi{E}_{x_i} + \mathbi{U}_i)\mathbi{W}_Q{((\mathbi{E}_{x_j} + \mathbi{U}_j)\mathbi{W}_K)}^{T}}{\sqrt{d_k}}
\label{eq:15-10}
\end{eqnarray}
\noindent 通过将$\mathbi{e}_{ij}$展开得到:
\noindent 通过将$\mathbi{e}_{ij}$展开可以得到公式\eqref{eq:15-10}的分子部分:
\begin{eqnarray}
A_{ij}^{abs} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{E}_{x_j}^{T}}_{\textrm{(a)}} + \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{U}_{j}^{T}}_{\textrm{(b)}} + \nonumber \\
& & \underbrace{\mathbi{U}_i\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{E}_{x_j}^{T}}_{\textrm{(c)}} + \underbrace{\mathbi{U}_i\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{U}_{j}^{T}}_{\textrm{(d)}}
\label{eq:15-11}
\end{eqnarray}
\noindent 这里,$A_{ij}^{abs}$表示使用绝对位置编码时$\mathbi{e}_{ij}$的分子,$\mathbi{E}_{x_i}$$\mathbi{E}_{x_j}$表示位置$i$$j$的词嵌入,$\mathbi{W}_Q$$\mathbi{W}_K$表示线性变换的权重矩阵,$\mathbi{U}_{i}$$\mathbi{U}_{j}$表示正余弦函数矩阵。为了引入相对位置信息,可以将公式\eqref{eq:15-11}修改为如下形式:
\noindent 这里,$\mathbi{W}_Q$$\mathbi{W}_K$表示线性变换的权重矩阵。为了引入相对位置信息,可以将公式\eqref{eq:15-11}修改为如下形式:
\begin{eqnarray}
A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{E}_{x_j}^{T}}_{\textrm{(a)}} + \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\mathbi{R}_{i-j}^{T}}_{\textrm{(b)}} + \nonumber \\
& & \underbrace{\mathbi{u}\mathbi{W}_{K,E}^{T}\mathbi{E}_{x_j}^{T}}_{\textrm{(c)}} + \underbrace{\mathbi{v}\mathbi{W}_{K,R}^{T}\mathbi{R}_{i-j}^{T}}_{\textrm{(d)}}
\label{eq:15-12}
\end{eqnarray}
\noindent 其中,$A_{ij}^{rel}$为使用相对位置编码后的表示。公式中各项的含义为:(a)表示基于内容的表,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d) 表示全局位置的偏置。公式\eqref{eq:15-11}中的(a)、(b)两项与前面介绍的相对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\noindent 其中,$A_{ij}^{rel}$为使用相对位置编码后的表示。公式中各项的含义为:(a)表示基于内容的表示({\color{red} 啥意思没看懂,啥是基于内容?谁的内容?},(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d) 表示全局位置的偏置。公式\eqref{eq:15-11}中的(a)、(b)两项与前面介绍的相对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}例如,可以通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\vspace{0.5em}
\item {\small\bfnew{连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}的位置编码\upcite{Liu2020LearningTE}。使用神经常微分方程\upcite{DBLP:conf/nips/ChenRBD18}{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息,模型具有更好的归纳偏置能力,可以处理变长的输入样本,同时能够从不同的数据中进行自适应学习。
\item 基于{\small\bfnew{连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}的位置编码\upcite{Liu2020LearningTE}。使用神经常微分方程{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息\upcite{DBLP:conf/nips/ChenRBD18},模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
\vspace{0.5em}
\end{itemize}
......@@ -144,51 +145,49 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math
\subsubsection{2. 注意力分布约束}
\parinterval 局部注意力机制一直是机器翻译中受关注的研究方向\upcite{DBLP:journals/corr/LuongPM15}。通过对自注意力模型中注意力权重的可视化,可以观测到不同位置的词受关注的程度相对平滑。这样的建模方式利于全局建模,但一定程度上分散了注意力,导致模型忽略了邻近单词之间的关系。为了提高模型对局部信息的感知,有以下几种方法:
\parinterval 局部注意力机制一直是机器翻译中受关注的研究方向\upcite{DBLP:journals/corr/LuongPM15}。通过对注意力权重的可视化,可以观测到不同位置的词受关注的程度相对平滑。这样的建模方式利于全局建模,但一定程度上分散了注意力,导致模型忽略了邻近单词之间的关系。为了提高模型对局部信息的感知,有以下几种方法:
\begin{itemize}
\vspace{0.5em}
\item 引入高斯约束\upcite{Yang2018ModelingLF}。这类方法的核心思想是引入可学习的高斯分布$\mathbi{G}$作为局部约束,之后与自注意力机制中计算得到的注意力分布进行融合,具体的形式如下:
\item 引入高斯约束\upcite{Yang2018ModelingLF}。这类方法的核心思想是引入可学习的高斯分布$\mathbi{G}$作为局部约束,与注意力权重进行融合,具体的形式如下:
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){(\mathbi{x}_j \mathbi{W}_K)}^{T}}{\sqrt{d_k}} + \mathbi{G}
\label{eq:15-13}
\end{eqnarray}
这里,高斯分布G的中心与偏差的值依赖于自注意力机制中的中间表示,得到高斯分布$\mathbi{G}$后,累加在模型计算得到的相关性系数之上再进行归一化计算:{\red{下面图片中的曲线再调整一下}}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-attention-distribution-based-on-gaussian-distribution}
\caption{融合高斯分布的注意力分布}
\label{fig:15-1}
\end{figure}
%-------------------------------------------
\noindent 其中,$\mathbi{G} \in \mathbb{R}^{m\times m}$$m$是源语言的句子长度。$\mathbi{G}$中的每个元素$G_{ij}$表示当前单词$\mathbi{x}_j$和预测的中心位置$P_i$之间的关联程度,计算公式如下:
\noindent 其中,$\mathbi{G} \in \mathbb{R}^{m\times m}$$\mathbi{G}$中的每个元素$G_{ij}$表示当前单词$\mathbi{x}_j$和预测的中心位置$P_i$之间的关联程度,计算公式如下:
\begin{eqnarray}
G_{ij} &=& - \frac{{(j - P_i)}^2}{2\sigma_i^2}
\label{eq:15-14}
\end{eqnarray}
\noindent 其中,$\sigma_i$$\sigma_i = \frac{D_i}{2}$)表示偏差。中心位置$P_i$和局部建模窗口大小$D_i$的计算方式如下:
\noindent 其中,$\sigma_i$表示偏差,被定义为$\sigma_i = \frac{D_i}{2}$。中心位置$P_i$和局部建模窗口大小$D_i$的计算方式如下:
\begin{eqnarray}
\begin{pmatrix} P_i \\ D_i \end{pmatrix} &=& m \cdot \textrm{Sigmoid}(\begin{pmatrix} p_i \\ v_i \end{pmatrix})
\label{eq:15-15}
\end{eqnarray}
\noindent $p_i$$v_i$为网络计算的中间结果,用如下方式计算:
\noindent 其中,$m$表示序列长度,$p_i$$v_i$为网络计算的中间结果,用如下方式计算:
\begin{eqnarray}
p_i &=& \mathbi{I}_p^T\textrm{Tanh}(\mathbi{W}_p\mathbi{Q}_i) \\
v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_p\mathbi{Q}_i)
v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\label{eq:15-17}
\end{eqnarray}
\noindent 其中\mathbi{W}\mathbi{I}均为模型中可学习的参数矩阵。
\noindent 其中,$\mathbi{W}_p$$\mathbi{W}_d$$\mathbi{I}_p$$\mathbi{I}_d$均为模型中可学习的参数矩阵。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-attention-distribution-based-on-gaussian-distribution}
\caption{融合高斯分布的注意力分布}
\label{fig:15-1}
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\item 多尺度局部建模\upcite{DBLP:conf/aaai/GuoQLXZ20}。不同于上述方法直接作用于注意力分布,这里通过赋予多头不一样的局部感受野(图\ref{fig:15-2}),进而间接地引入局部约束
\item 多尺度局部建模\upcite{DBLP:conf/aaai/GuoQLXZ20}。不同于上述方法直接作用于注意力权重,多尺度局部建模通过赋予多头不一样的局部感受野,间接地引入局部约束(图\ref{fig:15-2}
%----------------------------------------------
\begin{figure}[htp]
......@@ -199,13 +198,13 @@ v_i &=& \mathbi{I}_d^T\textrm{Tanh}(\mathbi{W}_p\mathbi{Q}_i)
\end{figure}
%-------------------------------------------
\noindent 这种受限制的多头注意力计算过程如下:
\noindent 于是,注意力每个头的计算过程如下:
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){(C(\mathbi{x}_j \mathbi{W}_K,\omega))}^{T}}{\sqrt{d_k}}
\label{eq:15-18}
\end{eqnarray}
\noindent 其中$C(\mathbi{x}_j \mathbi{W}_K,\omega)$表示根据超参数$\omega$自适应的Key:
\noindent 其中$C(\mathbi{x}_j \mathbi{W}_K,\omega)$表示根据超参数$\omega$自适应的Key:
\begin{eqnarray}
C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}_{j+\omega})
\label{eq:15-19}
......@@ -220,7 +219,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace{0.5em}
\end{itemize}
\parinterval 值得注意的是上述两种添加局部约束的方法都更适用于Transformer模型的底层网络。即在早期计算注意力分布时让模型更倾向于局部信息的捕获,之后伴随着网络的加深逐渐加强全局建模的能力。类似的结论在针对BERT模型的解释性研究工作中也有所提及\upcite{Jawahar2019WhatDB,DBLP:conf/emnlp/Ethayarajh19}
\parinterval 值得注意的是上述两种添加局部约束的方法都更适用于Transformer模型的底层网络,即在模型离输入更近的层更倾向于捕获局部信息,之后伴随着神经网络的加深逐渐加强全局建模的能力。类似的结论在针对BERT模型的解释性研究工作中也有所提及\upcite{Jawahar2019WhatDB,DBLP:conf/emnlp/Ethayarajh19}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -228,15 +227,15 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsubsection{3. 卷积vs.注意力}
\parinterval 第十一章已经提到,卷积神经网络能够很好地捕获序列中局部信息。因此,充分地利用卷积神经网络的特性,也是进一步优化注意力模型的一种思路。常见的做法是在Transformer中引入卷积操作,甚至用卷积操作替换自注意力模型。常见的方法有:
\parinterval 第十一章已经提到,卷积神经网络能够很好地捕获序列中的局部信息。因此,充分地利用卷积神经网络的特性,也是进一步优化注意力模型的一种思路。常见的做法是在注意力模型中引入卷积操作,甚至用卷积操作替换自注意力模型。常见的方法有:
\begin{itemize}
\vspace{0.5em}
\item 使用轻量卷积和动态卷积神经网络\upcite{Wu2019PayLA,DBLP:conf/interspeech/GulatiQCPZYHWZW20}。卷积神经网络天然更适用于捕获输入序列不同位置间的局部依赖。这里,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见{\chapternine})替换自注意力机制,同时保留目标端的编码-解码注意力机制,一定程度上加强了模型对局部信息的建模能力,同时提高了计算效率。
\item 使用轻量卷积和动态卷积神经网络\upcite{Wu2019PayLA,DBLP:conf/interspeech/GulatiQCPZYHWZW20}。卷积神经网络天然更适用于捕获输入序列不同位置间的局部依赖。这里,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见{\chapternine})替换Transformer的自注意力机制,同时保留目标端的编码-解码注意力机制,一定程度上加强了模型对局部信息的建模能力,同时提高了计算效率。
\vspace{0.5em}
\item 使用1维卷积注意力网络(图\ref{fig:15-3}(b))。可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小范围D,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\item 使用1维卷积注意力网络(图\ref{fig:15-3}(b))。可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小范围$D$,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\vspace{0.5em}
\item 使用2维卷积注意力网络(图\ref{fig:15-3}(c))。在1维卷积注意力网络的基础上对多个注意力头之间的信息进行了交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为$1\times D$,当将其扩展为2维矩形$(N\times D)$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第$i$个元素和第$s$个头中的第$j$个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
\item 使用2维卷积注意力网络(图\ref{fig:15-3}(c))。在1维卷积注意力网络的基础上对多个注意力头之间的信息进行了交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为$1\times D$,当将其扩展为2维矩形$(N\times D)$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。这样,模型可以计算某个头中的第$i$个元素和另一个头中的第$j$个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
%----------------------------------------------
\begin{figure}[htp]
......@@ -254,17 +253,17 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsection{多分支结构}
\parinterval 在神经网络模型中,有的模块包含多个平行的组件用来捕捉输入表示的多种不同特征,这种结构被称为{\small\bfnew{多分支}}\index{多分支}(Multi-branch)\index{Multi-branch}结构。多分支结构在图像领域被广泛应用\upcite{DBLP:conf/cvpr/XieGDTH17},在许多人工设计或者自动搜索获得的网络结构中都有它的身影\upcite{DBLP:conf/icml/SoLL19,DBLP:conf/emnlp/YanMZ20,DBLP:journals/corr/abs-2006-10270}
\parinterval 在神经网络模型中,可以使用多个平行的组件用来捕捉输入中不同角度所表现出来特征,这种结构被称为{\small\bfnew{多分支}}\index{多分支}(Multi-branch)\index{Multi-branch}结构。多分支结构在图像领域被广泛应用\upcite{DBLP:conf/cvpr/XieGDTH17},在许多人工设计或者自动搜索获得的网络结构中都有它的身影\upcite{DBLP:conf/icml/SoLL19,DBLP:conf/emnlp/YanMZ20,DBLP:journals/corr/abs-2006-10270}
\parinterval 在自然语言处理领域,多分支结构同样也有很多应用。比如,{\chapterten}介绍过的基于循环神经网络的翻译模型中,为了更好地对源语言进行表示,编码端可以采用双向循环神经网络。这里双向循环神经网络就可以看作一个两分支的结构,分别用来建模正向序列和反向序列的表示,之后将这两种表示进行拼接得到更丰富的表示。另一个典型的例子是{\chaptertwelve}介绍的多头注意力机制。在Transformer 模型中,多头注意力将输入空间表示分割成多个独立的表示,然后分别进行点积注意力的计算,最后再将多个输出表示拼接后通过线性变化进行不同子空间信息的融合。在这个过程中,多个不同的头对应着不同的特征空间,可以捕捉到不同的特征信息。
\parinterval 在自然语言处理领域,多分支结构同样也有很多应用。比如,{\chapterten}介绍过模型中,为了更好地对源语言进行表示,编码端可以采用双向循环神经网络。这种模型就可以被看作一个两分支的结构,分别用来建模正向序列和反向序列的表示,之后将这两种表示进行拼接得到更丰富的表示。另一个典型的例子是{\chaptertwelve}介绍的多头注意力机制。在Transformer 模型中,多头注意力将输入空间表示分割成多个独立的表示,然后分别进行点积注意力的计算,最后再将多个输出表示拼接后通过线性变化进行不同子空间信息的融合。在这个过程中,多个不同的头对应着不同的特征空间,可以捕捉到不同的特征信息。
\parinterval 近几年,在Transformer的结构基础上,一些研究人员探索了更为丰富的多分支结构。下面分别介绍几种在Transformer网络中引入多分支结构的方法:
\parinterval 近几年,在Transformer的结构基础上,研究人员探索了更为丰富的多分支结构。下面介绍几种在Transformer网络中引入多分支结构的方法:
\begin{itemize}
\vspace{0.5em}
\item Weighted Transformer\upcite{DBLP:journals/corr/abs-1711-02132}。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。传统方法使用级联操作并通过线性映射矩阵来融合不同头之间的信息,而Weighted Transformer直接利用线性映射矩阵$\mathbi{W} \in \mathbb{R}^{d_k \times d_{model}}$将维度为$d_k$ 的向量表示映射到$d_{model}$,并赋予适当的权重。之后分别送入每个分支中的前馈神经网络,对得到的不同分支输出进行线性加权。但是,这个模型的计算复杂度要大于标准的Transformer模型。
\item Weighted Transformer\upcite{DBLP:journals/corr/abs-1711-02132}。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。传统方法使用级联操作并通过线性映射矩阵来融合不同头之间的信息,而Weighted Transformer直接利用线性映射矩阵$\mathbi{W} \in \mathbb{R}^{d_k \times d_{model}}$将维度为$d_k$ 的向量表示映射到$d_{model}$维的向量,并赋予适当的权重。之后分别送入每个分支中的前馈神经网络,对得到的不同分支输出进行线性加权。但是,这个模型的计算复杂度要大于标准的Transformer模型。
\vspace{0.5em}
\item 多分支注意力模型\upcite{DBLP:journals/corr/abs-2006-10270}。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力网络的计算(图\ref{fig:15-6})。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用基于分支的dropout方法在训练过程中以一定的概率随机地丢弃一些分支。
\item 多分支注意力模型\upcite{DBLP:journals/corr/abs-2006-10270}。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力模型的计算(图\ref{fig:15-6})。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用基于分支的Dropout方法在训练过程中以一定的概率随机地丢弃一些分支。
%----------------------------------------------
\begin{figure}[htp]
......@@ -276,11 +275,11 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
%-------------------------------------------
\vspace{0.5em}
\item 多模型集成。例如基于多单元的Transformer模型\upcite{DBLP:conf/emnlp/YanMZ20},其模型结构如图15.7所示。为了进一步加强不同分支的作用,可以进行序列不同位置表示的交换,或使用不同的掩码策略对不同分支的输入进行扰动,保证分支间的多样性与互补性。本质上,所谓的多单元思想与集成学习十分相似,类似于在训练过程中同时训练多个编码器。此外,通过增大子单元之间的结构差异性也能够进一步增大分支之间的多样性\upcite{李北2019面向神经机器翻译的集成学习方法分析}
\item 多模型集成。例如,为了进一步加强不同分支的作用,基于多单元的Transformer模型\upcite{DBLP:conf/emnlp/YanMZ20}进行了序列不同位置表示的交换,或使用不同的掩码策略对不同分支的输入进行扰动,保证分支间的多样性与互补性。本质上,所谓的多单元思想与集成学习十分相似,类似于在训练过程中同时训练多个编码器。此外,通过增大子单元之间的结构差异性也能够进一步增大分支之间的多样性\upcite{李北2019面向神经机器翻译的集成学习方法分析}
\vspace{0.5em}
\end{itemize}
\parinterval 此外,在\ref{subsec-15.1.1}节中曾提到过,利用卷积神经网络可以与自注意力机制形成互补。类似的想法在多分支结构中也有体现,如图\ref{fig:15-8}所示,可以使用自注意力机制和卷积神经网络分别提取全局和局部两种依赖关系\upcite{DBLP:conf/iclr/WuLLLH20}。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息使用自注意力机制进行提取,局部信息使用轻量卷积提取\upcite{Wu2019PayLA}。此外,由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
\parinterval 此外,在\ref{subsec-15.1.1}节中曾提到过,利用卷积神经网络可以与自注意力机制形成互补。类似的想法在多分支结构中也有体现。如图\ref{fig:15-8}所示,可以使用自注意力机制和卷积神经网络分别提取全局和局部两种依赖关系\upcite{DBLP:conf/iclr/WuLLLH20}。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息使用自注意力机制进行提取,局部信息使用轻量卷积进行提取\upcite{Wu2019PayLA}。此外,由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
%----------------------------------------------
\begin{figure}[htp]
......@@ -297,11 +296,11 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsection{引入循环机制}
\parinterval 前面提到Transformer模型完全摒弃了循环单元与卷积单元,仅通过绝对位置编码来区分序列中的不同位置。另一方面,由于循环神经网络也非常适用于处理序列结构,且其结构成熟、易于优化。因此,将其与Transformer模型融合,一方面发挥循环神经网络简单高效的特点,另一方面发挥Transformer模型在特征提取方面的优势,也是一种非常值得探索的思路\upcite{Chen2018TheBO}
\parinterval Transformer模型完全摒弃了循环单元与卷积单元,仅通过绝对位置编码来区分序列中的不同位置。另一方面,由于循环神经网络也非常适用于处理序列结构,且其结构成熟、易于优化。因此,将其与Transformer模型融合,一方面发挥循环神经网络简单高效的特点,另一方面发挥Transformer模型在特征提取方面的优势,也是一种非常值得探索的思路\upcite{Chen2018TheBO}
\parinterval 一种方法是,对深层网络的不同层使用循环机制。早在残差网络提出时,研究人员已经开始尝试探讨残差网络成功背后的原因\upcite{DBLP:conf/nips/VeitWB16,DBLP:journals/corr/GreffSS16,DBLP:conf/iclr/ChangMHTB18}。本质上,在卷积神经网络中引入残差连接后,网络从深度上隐性地利用循环的特性。对比循环神经网络的区别是不同层之间的参数独立,而非共享。Transformer网络的编码端与解码端分别由$N$个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2/3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置\upcite{DBLP:conf/iclr/DehghaniGVUK19}。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息。之后,在训练大容量预训练模型时同样也采取了共享层间参数的方式\upcite{Lan2020ALBERTAL}
\parinterval 一种方法是,对深层网络的不同层使用循环机制。早在残差网络提出时,研究人员已经开始尝试探讨残差网络成功背后的原因\upcite{DBLP:conf/nips/VeitWB16,DBLP:journals/corr/GreffSS16,DBLP:conf/iclr/ChangMHTB18}。本质上,在卷积神经网络中引入残差连接后,网络从深度上隐性地利用循环的特性。也就是,多层Transformer本身的不同层本身也可以被看作是一个处理序列,只是序列中不同位置(对应不同层)的模型参数独立,而非共享。Transformer编码器与解码器分别由$N$个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2和3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置\upcite{DBLP:conf/iclr/DehghaniGVUK19}。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息。之后,在训练大容量预训练模型时同样也采取了共享层间参数的方式\upcite{Lan2020ALBERTAL}
\parinterval 另一种方法是,利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的结果与Transformer进行融合\upcite{DBLP:conf/naacl/HaoWYWZT19}。融合机制可以采用顺序计算或并行计算。
\parinterval 另一种方法是,利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的结果与Transformer进行融合\upcite{DBLP:conf/naacl/HaoWYWZT19}。融合机制可以采用串行计算或并行计算。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -309,36 +308,36 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\subsection{高效的自注意力模型}
\parinterval 除了机器翻译,Transformer模型同样被广泛应用于自然语言理解、图像处理、语音处理等任务。但是,基于自注意力机制的时间复杂度仍是序列长度$N$的平方项,同时其对内存(显存)的消耗巨大,尤其当处理较长序列的文本时,问题尤为严重。因此如何提高Transformer模型的效率也是广泛关注的方向之一。
\parinterval 除了机器翻译,Transformer模型同样被广泛应用于自然语言理解、图像处理、语音处理等任务。但是,自注意力机制的时间复杂度是序列长度$N$的平方项,同时其对内存(显存)的消耗巨大,尤其当处理较长序列的文本时,问题尤为严重。因此如何提高Transformer模型的效率也是广泛关注的方向之一。
\parinterval 自注意力机制的时间复杂度较高,正是因为其需要对于序列中的每一个单词计算与其他所有单词的相关性。因此一个自然的想法就是限制自注意力机制的作用范围,大体上可以分为如下几种方式:
\parinterval 自注意力机制的时间复杂度较高,正是因为其需要对序列中的每一个位置计算与其他所有位置的相关性。因此一个自然的想法就是限制自注意力机制的作用范围,大体上可以分为如下几种方式:
\begin{itemize}
\vspace{0.5em}
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间。\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18}
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在注意力模型只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18}
\vspace{0.5em}
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力类似,假设最终参与注意力计算的单词个数为$B$,共需要执行$N/B$次注意力计算,可以将计算复杂度缩减为$O(NB)$
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力类似,假设最终参与注意力计算的序列长度为$B$,共需要执行$N/B$次注意力计算,可以将计算复杂度从$O(N^2)$缩减为$O(NB)$
\vspace{0.5em}
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其具体的计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个词做一次特征融合后,将关注的目标缩减为$N/K$,整体的计算复杂度为$N^2/K$相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\item 内存压缩注意力:这种方式的主要的思想是使用一些操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其具体的计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个单元做一次特征融合后,将关注的目标缩减为$N/K$,整体的计算复杂度为$N^2/K$相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\vspace{0.5em}
\end{itemize}
\parinterval 在不同的任务中,可以根据不同的需求使用不同的注意力模型,甚至可以采用多种注意力模型的结合,比如,对分类任务中的某些特殊标签,如BERT中的<CLS>,需要对全局信息进行整合,因此可以使用全局的注意力模式。而对于其他位置的单词,则可以使用局部注意力提高计算效率。同样的,也可以针对多头机制中的不同注意力头使用不同的注意力的计算方式,或者对不同的头设置不同的局部窗口的大小,以此来增大感受野,在提高模型计算效率的同时使模型保留全局建模能力。
\parinterval 在不同的任务中,可以根据不同的需求使用不同的注意力模型,甚至可以采用多种注意力模型的结合,比如,对分类任务中的某些特殊标签,如BERT中的<CLS>,需要对全局信息进行整合,因此可以使用全局的注意力模式。而对于其他位置,则可以使用局部注意力提高计算效率。同样的,也可以针对多头机制中的不同注意力头采用不同的计算方式,或者对不同的头设置不同的局部窗口的大小,以此来增大感受野,在提高模型计算效率的同时使模型保留全局建模能力。
\parinterval 在上述介绍的方法中都是基于预先设定好的超参来限制注意力机制的作用范围,可以称这些方法是静态的。除此之外还有以数据驱动的,通过模型来学习具体的访问机制可学习模式。比如,可以将序列分块,并对序列中的单词进行排序或者聚类,之后采用稀疏注意力的计算。下面对部分相关的模型进行简单的介绍:
\parinterval 在上述介绍的方法中都是基于预先设定好的超参来限制注意力机制的作用范围,可以称这些方法是静态的。除此之外还有以数据驱动的,通过模型来学习注意力机制的作用范围。比如,可以将序列分块,并对序列中的不同单元进行排序或者聚类,之后采用稀疏注意力的计算。下面对部分相关的模型进行简单的介绍:
\begin{itemize}
\vspace{0.5em}
\item Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值\upcite{Kitaev2020ReformerTE}。在实际实验中发现,这种模式并不会影响Transformer模型的性能。其次,Reformer 中为了降低自注意力机制的复杂度,引入了一种{\small\bfnew{局部哈希敏感注意力机制}}\index{局部哈希敏感注意力机制}(LSH Attention)\index{LSH Attention},其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以很大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。哈希的散列函数为:
\item Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值\upcite{Kitaev2020ReformerTE}。在实际实验中发现,这种模式并不会影响Transformer模型的性能。其次,Reformer 中为了降低自注意力机制的复杂度,引入了一种{\small\bfnew{局部哈希敏感注意力机制}}\index{局部哈希敏感注意力机制}(LSH Attention)\index{LSH Attention},其提高效率的方式和固定模式{\color{red} 啥是固定模式?}中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以很大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。哈希的散列函数为:
\begin{eqnarray}
\mathbi{h}(\mathbi{x}) &=& \arg\max([\mathbi{x}\mathbi{R};-\mathbi{x}\mathbi{R}])
\label{eq:15-21}
\end{eqnarray}
\noindent $\mathbi{R}$为随机的矩阵,$[;]$代表拼接操作。当$\mathbi{h}({Query}_i) = \mathbi{h}({Key}_j )$$i$$j$为序列中不同位置单词的下标,也就是说当两个词的Query和Key落在同一个散列桶时,对其进行注意力的计算。此外,Reformer中还采用了一种{\small\bfnew{可逆残差网络结构}}\index{可逆残差网络结构}(The Reversible Residual Network)\index{The Reversible Residual Network}和分块计算前馈神经网络层机制,即将前馈层的隐层维度拆分多个块后独立计算,最后进行拼接操作,得到前馈层的输出。这种方式大幅度减少了内存/显存占用,但由于在反向过程中需要重复计算某些节点,牺牲了一定的计算效率
\noindent 其中,$\mathbi{R}$为随机的矩阵,$[;]$代表拼接操作。当$\mathbi{h}({Query}_i) = \mathbi{h}({Key}_j )$$i$$j$为序列中不同位置单词的下标,也就是说当两个词的Query和Key落在同一个散列桶时,对其进行注意力的计算。此外,Reformer中还采用了一种{\small\bfnew{可逆残差网络结构}}\index{可逆残差网络结构}(The Reversible Residual Network)\index{The Reversible Residual Network}和分块计算前馈神经网络层机制,即将前馈层的隐层维度拆分多个块后独立计算,最后进行拼接操作,得到前馈层的输出。这种方式大幅度减少了内存/显存占用,但由于在反向过程中需要重复计算某些节点,牺牲了一定的计算时间
\vspace{0.5em}
\item Routing Transformer通过聚类算法对单词进行分组,分别在组内进行自注意力机制的计算\upcite{DBLP:journals/corr/abs-2003-05997}。首先是将Query和Key映射到聚类矩阵$\mathbi{R}$
\item Routing Transformer通过聚类算法对序列中的不同单元进行分组,分别在组内进行自注意力机制的计算\upcite{DBLP:journals/corr/abs-2003-05997}。首先是将Query和Key映射到聚类矩阵$\mathbi{R}$
\begin{eqnarray}
\mathbi{R} &=& \mathbi{Q} \mathbi{W} + \mathbi{K} \mathbi{W}
\label{eq:15-22}
......@@ -356,7 +355,7 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\label{eq:15-23}
\end{eqnarray}
\parinterval 由于Softmax函数的存在,首先要进行$\mathbi{Q}\mathbi{K}^{\textrm{T}}$的计算得到$N \times N$的矩阵,其中$N$是序列长度,在对维度为$N \times d_k$的Value进行加权求和时,其时间复杂度便是$O(N^2)$。假设能够移除Softmax操作,便可以将注意力机制的计算调整为$\mathbi{Q}\mathbi{K}^{\textrm{T}}\mathbi{V}$,由于矩阵的运算满足结合律,可以先进行$\mathbi{K}^{\textrm{T}}\mathbi{V}$ 的运算,得到$d_k \times d_k$的矩阵,再左乘$\mathbi{Q}$。在长文本处理中,由于多头机制的存在,一般有$dk \ll N$,所以最终的计算复杂度便可以近似为$O(N)$,从而将注意力机制简化为线性计算\upcite{Katharopoulos2020TransformersAR,DBLP:journals/corr/abs-2009-14794}
\parinterval 由于Softmax函数的存在,首先要进行$\mathbi{Q}\mathbi{K}^{\textrm{T}}$的计算得到$N \times N$的矩阵,在对维度为$N \times d_k$的Value进行加权求和时,其时间复杂度便是$O(N^2)$。假设能够移除Softmax操作,便可以将注意力机制的计算调整为$\mathbi{Q}\mathbi{K}^{\textrm{T}}\mathbi{V}$,由于矩阵的运算满足结合律,可以先进行$\mathbi{K}^{\textrm{T}}\mathbi{V}$ 的运算,得到$d_k \times d_k$的矩阵,再左乘$\mathbi{Q}$。在长文本处理中,由于多头机制的存在,一般有$dk \ll N$,所以最终的计算复杂度便可以近似为$O(N)$,从而将注意力机制简化为线性模型\upcite{Katharopoulos2020TransformersAR,DBLP:journals/corr/abs-2009-14794}
%----------------------------------------------------------------------------------------
% NEW SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论