Commit dc51f6f8 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

15.1文字更新,开始通篇检查文字错误

查看合并请求 !572
parents 0565aa21 f7a6f6ce
......@@ -40,7 +40,7 @@
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{局部信息建模}
\subsection{局部信息建模}\label{subsec-15.1.1}
\parinterval 使用循环神经网络进行序列建模时,每一个时刻的计算都依赖于上一时刻的隐层状态。这种模式天然具有一定的时序性,且具有{\small\bfnew{归纳偏置}}\index{归纳偏置}(Inductive Bias)\index{Inductive Bias}的特性\upcite{DBLP:journals/corr/abs-1806-01261}。但是在使用Transformer模型对词序列进行建模时,由于自注意力网络能够直接对当前单词与序列中所有位置的单词进行建模,从而忽略了单词之间的位置关系,缺少了类似于循环或卷积机制中局部窗口内的依赖关系。在Transformer中通过引入正余弦函数作为绝对位置编码与输入的特征表示进行累加来区分单词之间的位置关系(见{\chaptertwelve}),仍然无法显著区分局部依赖与长距离依赖。局部依赖指代当前位置的词与周围局部窗口内词之间的内在联系,比较符合人类理解文字的习惯。
......@@ -52,15 +52,15 @@
\subsubsection{1. 位置编码}
\parinterval 对于一个序列,位置编码是为模型提供了置位线索或者说是用于收集信息对于不同位置的偏置。常见的技术手段除了可以在初始的输入特征中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 也可以在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程:
\parinterval 对于一个序列,位置编码是为模型提供了置位线索或者说是用于收集信息对于不同位置的偏置。常见的技术手段除了可以在初始的输入特征中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 也可以在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程,由于实现方式的不同,这里与{\chaptertwelve}提到的注意力机制的计算略有区别
\parinterval 在传统的自注意力机制中,给定输入序列$\seq{x}={\mathbi{x}_1,\mathbi{x}_2,\cdots,\mathbi{x}_m}$,通过点乘计算得到当前位置单词$i$和序列中$j$单词之间的关系:
\parinterval 在传统的自注意力机制中,给定输入序列$\seq{x}={\mathbi{x}_1,\mathbi{x}_2,\cdots,\mathbi{x}_m}$,通过点乘计算得到当前位置单词$i$和序列中所有单词之间的关系:
\begin{equation}
\mathbi{z}_{i}=\sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}^V)
\mathbi{z}_{i}=\sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V)
\label{eq:15-1}
\end{equation}
\noindent 其中,$\mathbi{W}^V$是线性变换矩阵,可以自动学习得到。自注意权重$\alpha_{ij}$通过Softmax函数得到:
\noindent 其中,$\mathbi{W}_V$是线性变换矩阵,可以自动学习得到。自注意权重$\alpha_{ij}$通过Softmax函数得到:
\begin{equation}
\alpha_{ij}=\frac{\exp \mathbi{e}_{ij}}{\sum_{k=1}^{m} \mathbi{e}_{ik}}
\label{eq:15-2}
......@@ -68,73 +68,66 @@
\noindent 这里$\mathbi{e}_{ij}$指经过缩放后的$\mathbi{Q}$$\mathbi{K}$向量积:
\begin{equation}
\mathbi{e}_{ij} = \frac{(\mathbi{x}_i \mathbi{W}^Q){(\mathbi{x}_j \mathbi{W}^K)}^{T}}{\sqrt{d_k}}
\mathbi{e}_{ij} = \frac{(\mathbi{x}_i \mathbi{W}_Q){(\mathbi{x}_j \mathbi{W}_K)}^{T}}{\sqrt{d_k}}
\label{eq:15-3}
\end{equation}
\noindent 其中$\mathbi{W}^Q$$\mathbi{W}^K$为网络中的可学习参数,$d_k$\footnote[1]{在多头注意力中,$d_k$为经过多头分割后每个头的维度。}为模型中隐层的维度 。这里$\mathbi{Q}$$\mathbi{K}$$\mathbi{V}$分别指对输入进行线性变换后得到的向量。相对位置建模可以按如下方式实现:
\noindent 其中$\mathbi{W}_Q$$\mathbi{W}_K$为网络中的可学习参数,$d_k$\footnote[1]{在多头注意力中,$d_k$为经过多头分割后每个头的维度。}为模型中隐层的维度 。与{\chaptertwelve}的注意力计算不同,这里$\mathbi{Q}=\mathbi{x} \mathbi{W}_Q$$\mathbi{K}=\mathbi{x} \mathbi{W}_K$$\mathbi{V}=\mathbi{x} \mathbi{W}_V$$\mathbi{x}$为上一层的输出。而{\chaptertwelve}$\mathbi{Q}$$\mathbi{K}$$\mathbi{V}$同为上一层的输出向量。虽然此处自注意力计算的方式不同,但是其结果均代表了句子中单词之间的关系。
\parinterval 基于上述的注意力计算方式,相对位置建模可以按如下方式实现:
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{相对位置编码}}\index{相对位置编码}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效弥补绝对位置编码信息,甚至完全取代位置编码。对于输入元素$\mathbi{x}_i$$\mathbi{x}_j$之间的边,通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,其中$\mathbi{a}_{ij}^V$表示计算注意力输出时引入的相对位置向量,$\mathbi{a}_{ij}^K$表示计算注意力分布时引入的相对位置向量,注意力模型的计算调整如下:
\begin{equation}
\mathbi{z}_{i}=\sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}^V + \mathbi{a}_{ij}^V)
\mathbi{z}_{i}=\sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V + \mathbi{a}_{ij}^V)
\label{eq:15-4}
\end{equation}
\noindent 对比公式\eqref{eq:15-1},在计算$\mathbi{z}_i$时引入了额外的$\mathbi{a}_{ij}^V$向量来表示位置i与位置j之间的相对位置。同时在计算注意力权重时对Key进行修改,同样引入了$\mathbi{a}_{ij}^K$向量表示位置$i$与位置$j$之间的相对位置。在公式\eqref{eq:15-3}的基础上,注意力权重的计算方式调整为:
\begin{equation}
\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}}
\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}}
\label{eq:15-5}
\end{equation}
\noindent 这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各k个词的注意力计算。因此,最终的窗口大小为$2k + 1$。对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。举个简单的例子,假设对序列中的第一个单词进行建模,则只需考虑其右侧的$k$个词,因此$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$的获取方式为:
\noindent 这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各k个词的注意力计算。因此,最终的窗口大小为$2k + 1$。对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。举个简单的例子,假设对序列中的第一个单词进行建模,则只需考虑其右侧的$k$个词,因此$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$的获取方式为:{\red{下面这个w再解释一下}}
\begin{eqnarray}
\mathbi{a}_{ij}^K =
\mathbi{a}_{ij}^K &=& \mathbi{w}^K_{\textrm{clip}(j-i,k)} \nonumber \\
\mathbi{a}_{ij}^V &=& \mathbi{w}^V_{\textrm{clip}(j-i,k)} \nonumber \\
\textrm{clip}(x,k) &=& \max(-k,\min(k,x))
\label{eq:15-6}
\end{eqnarray}
\noindent 最终模型所需学习相对位置的表示为$w^K=(w_(-k)^K,…,w_k^K)$$w^V=(w_(-k)^V,…,w_k^V )$$w_i^K,w_i^V∈R^(d_k )$
\noindent 最终模型所需学习相对位置的表示为$\mathbi{w}^K = (\mathbi{w}^{K}_{-k},\cdots,\mathbi{w}^K_{k})$$\mathbi{w}^{V} = (\mathbi{w}^{V}_{-k},\cdots,\mathbi{w}^{V}_{k})$$\mathbi{w}^{K}_{i},\mathbi{w}^{V}_{i}\in \mathbb{R}^{d_k}$
\vspace{0.5em}
\item 之后研究人员在相对位置编码基础上进一步探索,采用更符合人直觉的相对位置信息(Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context)。由于输入特征是由词嵌入表示与绝对位置编码组成,例如$x_i=E_(x_i )+U_i$$x_j=E_(x_j )+U_j$,将其代入将公式15.3中可以得到:
\item 之后研究人员在相对位置编码的基础上进一步探索,采用更符合人直觉的相对位置信息\upcite{Dai2019TransformerXLAL}。由于输入特征是由词嵌入表示与绝对位置编码组成,例如$x_i = \mathbi{E}_{x_i} + \mathbi{U}_i$$x_j=\mathbi{E}_{x_j} + \mathbi{U}_j$,将其代入将公式\eqref{eq:15-3}中可以得到:
\begin{equation}
\mathbi{x}_{l+1}=\mathbi{x}_l+F(\textrm{LN}(\mathbi{x}_l);{\bm \theta_l})
\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-7}
\end{equation}
\noindent 在计算$e_ij$时将其进行展开得到:
\begin{equation}
\mathbi{x}_{l+1}=\mathbi{x}_l+F(\textrm{LN}(\mathbi{x}_l);{\bm \theta_l})
\noindent 在计算$\mathbi{e}_{ij}$时将其进行展开得到:{\red{A好像不是矩阵,R之前没提到}}
\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-8}
\end{equation}
\end{eqnarray}
\noindent 这里用$A_(i,j)^abs$表示使用绝对位置编码时$e_ij$的分子,$E_(x_i )$$E_(x_j )$表示位置$i$$j$的词嵌入,$W_q$$W_k$表示线性变换的权重矩阵,$U_i$$U_j$表示正余弦函数矩阵。为了引入相对位置信息,可以将公式15.8修改为如下形式:
\begin{equation}
\mathbi{x}_{l+1}=\mathbi{x}_l+F(\textrm{LN}(\mathbi{x}_l);{\bm \theta_l})
\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-8}修改为如下形式:
\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-9}
\end{equation}
\end{eqnarray}
\noindent 其中$A_(i,j)^rel$表示使用相对位置编码后的表示。首先将(b)和(d)两项中Query的正余弦编码修改为相对位置编码$R_(i-j)$;之后将(c)和(d)两项中Key中的$U_i$分别替换成可学习的u与v;最后将$W_k$矩阵分割为$W_(k,E)$$W_(k,R)$矩阵,分别作为Key中词嵌入与相对位置编码的线性映射矩阵。通过该参数化定以后每一项具备了直观上的表征含义:(a)表示基于内容的表征,(b)表示基于内容的位置偏置,(c)表示全局的内容的偏置,(d)表示全局的位置偏置。公式15.8中的(a)、(b)两项与前面介绍的相对位置编码一致(Self-Attention with Relative Position Representations),并针对相对位置编码引入了额外的线性映射矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好的利用正余弦函数的归纳偏置特性。
\noindent 其中$A_{ij}^{rel}$表示使用相对位置编码后的表示。首先将(b)和(d)两项中Query的正余弦编码修改为相对位置编码$\mathbi{R}_{i-j}$;之后将(c)和(d)两项中Key中的$\mathbi{U}_i$分别替换成可学习的$\mathbi{u}$$\mathbi{v}$;最后将$\mathbi{W}_{K}$矩阵分割为$\mathbi{W}_{K,E}$$\mathbi{W}_{K,R}$矩阵,分别作为Key中词嵌入与相对位置编码的线性映射矩阵。通过该参数化定以后每一项具备了直观上的表征含义:(a)表示基于内容的表征,(b)表示基于内容的位置偏置,(c)表示全局的内容的偏置,(d)表示全局的位置偏置。公式\eqref{eq:15-8}中的(a)、(b)两项与前面介绍的相对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性映射矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好的利用正余弦函数的归纳偏置特性。
\vspace{0.5em}
\item 基于结构化位置编码(Structural Position Representations)(Self-Attention with Structural Position Representations)。对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置。并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\item {\small\bfnew{基于结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置。并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\vspace{0.5em}
\item 基于连续动态系统(Continuous Dynamic Model)的位置编码(Learning to Encode Position for Transformer with Continuous Dynamical Model)。相比于正余弦位置编码本身不具备可学习的参数,表示能力受限的同时不够灵活,在超出训练样本中句长的样例表现不佳。使用神经常微分方程(Neural Ordinary Differential Equation)求解器(Solver)来建模位置信息,模型具有更好的归纳偏置能力,可以处理变长的输入样本,同时能够从不同的数据中进行自适应学习。
\item {\small\bfnew{基于连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}的位置编码\upcite{Liu2020LearningTE}。相比于正余弦位置编码本身不具备可学习的参数,表示能力受限的同时不够灵活,在超出训练样本中句长的样例表现不佳。使用神经常微分方程\upcite{DBLP:conf/nips/ChenRBD18}{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息,模型具有更好的归纳偏置能力,可以处理变长的输入样本,同时能够从不同的数据中进行自适应学习。
\vspace{0.5em}
\end{itemize}
......@@ -144,70 +137,71 @@
\subsubsection{2. 注意力分布约束}
\parinterval 局部注意力的概念早在基于循环神经网络的机器翻译模型中广受讨论(Effective Approaches to Attention-based Neural Machine Translation)。通过对自注意力网络中的注意力权重可视化,可以观测到不同位置的词受关注的程度相对平滑。这样建模方式利于全局建模,但一定程度上分散了注意力分布导致忽略了邻近单词之间的关系。为了提高模型对局部信息的感知,类似于相对位置编码,修正注意力的权重同样可以达到加强模型关注局部信息的目的:
\parinterval 局部注意力的概念早在基于循环神经网络的机器翻译模型中广受讨论\upcite{DBLP:journals/corr/LuongPM15}。通过对自注意力网络中的注意力权重可视化,可以观测到不同位置的词受关注的程度相对平滑。这样建模方式利于全局建模,但一定程度上分散了注意力分布导致忽略了邻近单词之间的关系。为了提高模型对局部信息的感知,类似于相对位置编码,修正注意力的权重同样可以达到加强模型关注局部信息的目的:
\begin{itemize}
\vspace{0.5em}
\item 高斯约束(Modeling Localness for Self-Attention Networks)。这类方法的核心思想是引入可学习的高斯分布进行局部建模,之后与自注意力机制中计算得到的注意力分布进行融合,如下图:形式上,可以用自注意力机制中计算得到的中间表示来预测高斯分布的中心和偏差,得到高斯分布G后累加在模型计算得到的相关性系数之上在进行归一化计算,具体的形式如下:
\item 高斯约束\upcite{Yang2018ModelingLF}。这类方法的核心思想是引入可学习的高斯分布进行局部建模,之后与自注意力机制中计算得到的注意力分布进行融合,如下图:形式上,可以用自注意力机制中计算得到的中间表示来预测高斯分布的中心和偏差,得到高斯分布$\mathbi{G}$后累加在模型计算得到的相关性系数之上在进行归一化计算,具体的形式如下:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\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-10}
\end{equation}
\noindent 其中,$G∈R^(m×m)$$m$是源语句的句子长度。G中的每个元素$G_ij$表示当前单词$x_j$和预测的中心位置$P_i$之间的关联程度,计算公式如下:
\noindent 其中,$\mathbi{G} \in \mathbb{R}^{m\times m}$$m$是源语句的句子长度。$\mathbi{G}$中的每个元素$G_{ij}$表示当前单词$\mathbi{x}_j$和预测的中心位置$P_i$之间的关联程度,计算公式如下:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
G_{ij} = - \frac{{(j - P_i)}^2}{2\sigma_i^2}
\label{eq:15-11}
\end{equation}
\noindent 其中,$σ_i(σ_i=D_i/2$表示偏差,通过预测局部建模的窗口大小$D_i$得到。中心位置和窗口大小的计算方式计算为:
\noindent 其中,$\sigma_i$$\sigma_i = \frac{D_i}{2}$表示偏差,通过预测局部建模的窗口大小$D_i$得到。中心位置和窗口大小的计算方式计算为:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\begin{pmatrix} P_i \\ D_i \end{pmatrix} = m \cdot \textrm{Sigmoid}(\begin{pmatrix} P_i \\ z_i \end{pmatrix})
\label{eq:15-12}
\end{equation}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.3]{./Chapter15/Figures/figure-attention-distribution-based-on gaussian-distribution.png}
\caption{融合高斯分布的注意力分布}
\label{fig:15-1}
\end{figure}
%-------------------------------------------
\noindent 通过标量$m$控制得到的中心位置和偏差的数值为0和序列长度之间的实数值,$p_i$$z_i$为网络计算的中间结果,分别用于预测中心位置和窗口大小。用如下方式计算:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\noindent 通过标量$m$控制得到的中心位置和偏差的数值为0和序列长度之间的实数值,$p_i$$z_i$为网络计算的中间结果,分别用于预测中心位置和窗口大小。用如下方式计算:{\red{U可能与上面的U不是一个东西,UW没解释,tanh形式}}
\begin{eqnarray}
p_i &=& \mathbi{W}_p^T\textrm{tanh}(\mathbi{W}_p\mathbi{Q}_i) \\
z_i &=& \mathbi{U}_d^T\textrm{tanh}(\mathbi{W}_d\mathbi{Q}_i)
\label{eq:15-13}
\end{equation}
\end{eqnarray}
\vspace{0.5em}
\item 多尺度局部建模(Multi-Scale Self-Attention for Text Classification)。不同于上述方法直接作用于注意力分布,这里通过赋予多头不一样的局部感受野,如图15.2所示,进而间接地引入局部约束。
\item 多尺度局部建模\upcite{DBLP:conf/aaai/GuoQLXZ20}。不同于上述方法直接作用于注意力分布,这里通过赋予多头不一样的局部感受野,如图\ref{fig:15-2}所示,进而间接地引入局部约束。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\caption{融合高斯分布的注意力分布}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-multi-scale-local-modeling.png}
\caption{多尺度局部建模}
\label{fig:15-2}
\end{figure}
%-------------------------------------------
\noindent 这种受限制的多头注意力计算过程如公式15.15所示:
\noindent 这种受限制的多头注意力计算过程如公式\eqref{eq:15-14}所示:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\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-14}
\end{equation}
\noindent 其中$C(x_j W^K,ω)$表示根据超参数$ω$自适应的Key:
\noindent 其中$C(\mathbi{x}_j \mathbi{W}_K,\omega)$表示根据超参数$\omega$自适应的Key:{\red{C中[]是向量吗,如果是那就需要改成(),和前面的向量表示保持一致,此外下面的w是omega吗}}
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
C(\mathbi{x}_j \mathbi{W}_K,\omega) = [\mathbi{x}_{j-w},\cdots,\mathbi{x}_{j+w}]
\label{eq:15-15}
\end{equation}
\noindent 之后在计算注意力输出时同样利用上述思想进行局部约束:
\noindent 之后在计算注意力输出时同样利用上述思想进行局部约束:{\red{下面的有没有向量,符号和上面有没有重复}}
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
z_i = \sum_{j=1}^m \alpha_{ij}C(\mathbi{x}_j \mathbi{W}_V,\omega)
\label{eq:15-16}
\end{equation}
......@@ -226,22 +220,20 @@
\begin{itemize}
\vspace{0.5em}
\item 使用轻量卷积和动态卷积神经网络(pay less attention with lightweight and dynamic convolutions)。卷积神经网络天然更适用于捕获输入序列不同位置间的局部依赖。这里,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见第九章)替换自注意力机制,同时保留目标端的编码-解码注意力机制,一定程度上加强了模型对局部信息的感知,同时提高了网络的计算效率。此外,在此基础上提出的Conformer模型(Conformer: Convolution-augmented Transformer for Speech Recognition)本质上也利用到动态卷积神经网络能够有效局部依赖的特性,不同点在于其并不是直接替换自注意力机制,而是在自注意力机制和前馈神经网络中间引入了动态卷积神经网络。这种方式保证了模型能够同时兼顾序列中的各位置之间的全局依赖与局部依赖。
\item 使用轻量卷积和动态卷积神经网络\upcite{Wu2019PayLA}。卷积神经网络天然更适用于捕获输入序列不同位置间的局部依赖。这里,分别在编码端和解码端利用轻量卷积或动态卷积神经网络(见{\chapternine})替换自注意力机制,同时保留目标端的编码-解码注意力机制,一定程度上加强了模型对局部信息的感知,同时提高了网络的计算效率。此外,在此基础上提出的Conformer模型\upcite{DBLP:conf/interspeech/GulatiQCPZYHWZW20}本质上也利用到动态卷积神经网络能够有效局部依赖的特性,不同点在于其并不是直接替换自注意力机制,而是在自注意力机制和前馈神经网络中间引入了动态卷积神经网络。这种方式保证了模型能够同时兼顾序列中的各位置之间的全局依赖与局部依赖。
\vspace{0.5em}
\item 使用1维卷积注意力网络(图15.3 b)。为了捕捉短距离依赖,则可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小范围D,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\item 使用1维卷积注意力网络(图\ref{fig:15-3}(b))。为了捕捉短距离依赖,则可以使用一维的卷积自注意力网络(1D-CSAN)将关注的范围限制在相近的元素窗口中。其形式上十分简单,只需预先设定好局部建模的窗口大小范围D,并在进行注意力权重计算和对Value值进行加权求和时,将其限制在设定好的窗口范围内即可。
\vspace{0.5em}
\item 使用2维卷积注意力网络(图15.3 c)。在1维卷积注意力网络的基础上对多个注意力头之间的信息进行了交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为1×D,当将其扩展为2维矩形$(N×D)$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。在这种形势下,允许模型计算某个头中的第$i$个元素和第$s$个头中的第$j$个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
\item 使用2维卷积注意力网络(图\ref{fig:15-3}(c))。在1维卷积注意力网络的基础上对多个注意力头之间的信息进行了交互建模,打破了注意力头之间的界限。 1D-CDAN的关注区域为$1\times D$,当将其扩展为2维矩形$(N×D)$,长和宽分别为局部窗口的大小和参与建模的自注意力头的个数。在这种形势下,允许模型计算某个头中的第$i$个元素和第$s$个头中的第$j$个元素之间的相关性系数。实现了对不同子空间之间关系的建模,所得到的注意力分布表示了头之间的依赖关系。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.3]{./Chapter15/Figures/figure-convolutional-attention-network.png}
\caption{卷积注意力网络}
\label{fig:15-3}
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\end{itemize}
%----------------------------------------------------------------------------------------
......@@ -250,12 +242,13 @@
\subsection{多分支结构}
\parinterval 在神经网络模型中,有的模块包含多个平行的组件用来捕捉输入表示的多种不同特征,这种结构被称为多分支(Multi-branch)结构。多分支结构在图像领域被广泛应用(Aggregated Residual Transformations for Deep Neural Networks),在许多人工设计或者自动搜索获得的网络结构中都有它的身影(文献)。而在自然语言处理领域,多分支结构同样也有很多应用。比如前面章节介绍过的基于循环神经网络的翻译模型中,为了更好地对源语言进行表示,编码端通常采用双向循环神经网络(图15.4(a))。这里双向循环神经网络就可以看作一个两分支的结构,分别用来捕捉正向序列和反向序列的表示,将这两种表示进行拼接得到更丰富的语义表示。另一个典型的例子是多头注意力机制(图15.4(b))。在Transformer模型中,多头注意力将输入空间表示分割成多个独立的表示,然后分别进行点积注意力的计算,最后再将多个输出表示拼接后通过线性变化进行不同子空间信息的融合。在这个过程中,多个不同的头对应着不同的特征空间,可以捕捉到不同的特征信息。
\parinterval 在神经网络模型中,有的模块包含多个平行的组件用来捕捉输入表示的多种不同特征,这种结构被称为{\small\bfnew{多分支}}\index{多分支}(Multi-branch)\index{Multi-branch}结构。多分支结构在图像领域被广泛应用\upcite{DBLP:conf/cvpr/XieGDTH17},在许多人工设计或者自动搜索获得的网络结构中都有它的身影{\red{(文献)}}。而在自然语言处理领域,多分支结构同样也有很多应用。比如前面章节介绍过的基于循环神经网络的翻译模型中,为了更好地对源语言进行表示,编码端通常采用双向循环神经网络(图\ref{fig:15-4}(a))。这里双向循环神经网络就可以看作一个两分支的结构,分别用来捕捉正向序列和反向序列的表示,将这两种表示进行拼接得到更丰富的语义表示。另一个典型的例子是多头注意力机制(图\ref{fig:15-4}(b))。在Transformer模型中,多头注意力将输入空间表示分割成多个独立的表示,然后分别进行点积注意力的计算,最后再将多个输出表示拼接后通过线性变化进行不同子空间信息的融合。在这个过程中,多个不同的头对应着不同的特征空间,可以捕捉到不同的特征信息。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-common-multi-branch-structure-1.png}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-common-multi-branch-structure-2.png}
\caption{常见的多分支结构}
\label{fig:15-4}
\end{figure}
......@@ -265,49 +258,49 @@
\begin{itemize}
\vspace{0.5em}
\item 早期在Transformer模型中使用多分支思想的模型是Weighted Transformer(Weighted Transformer Network for Machine Translation)。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。在完成多头自注意力机制中不同头的计算后,相比于使用级联操作并通过线性映射矩阵来融合不同头之间的信息,这里直接利用线性映射矩阵$W∈R^(d_k×d_model )$将维度为$d_k$的向量表示映射到$d_model$,并赋予适当的权重。之后分别送入每个分支中的前馈神经网络,对得到的不同分支输出进行线性加权。因此,整个网络的计算复杂度要大于标准的Transformer模型。
\item 早期在Transformer模型中使用多分支思想的模型是Weighted Transformer\upcite{DBLP:journals/corr/abs-1711-02132}。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。在完成多头自注意力机制中不同头的计算后,相比于使用级联操作并通过线性映射矩阵来融合不同头之间的信息,这里直接利用线性映射矩阵$\mathbi{W} \in \mathbb{R}^{d_k \times d_{model}}$将维度为$d_k$的向量表示映射到$d_{model}$,并赋予适当的权重。之后分别送入每个分支中的前馈神经网络,对得到的不同分支输出进行线性加权。因此,整个网络的计算复杂度要大于标准的Transformer模型。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\caption{多分支注意力模型}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-weighted-transformer-network-structure.png}
\caption{Weighted Transformer网络结构}
\label{fig:15-5}
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\item 多分支注意力模型(图15.6)(Multi-branch Attentive Transformer)。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力网络的计算。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用Branch Dropout在训练过程中随机的丢弃一些分支。
\item 多分支注意力模型(图\ref{fig:15-6}\upcite{DBLP:journals/corr/abs-2006-10270}。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力网络的计算。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用Branch Dropout在训练过程中随机的丢弃一些分支。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-multi-branch-attention-model.png}
\caption{多分支注意力模型}
\label{fig:15-6}
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\item 除了在多头注意力子层或前馈神经网络子层上使用多分支结构,同样可以基于Transformer中层的基础上进行尝试。例如基于多单元Transformer模型(Multi-Unit Transformers for Neural Machine Translation),其模型结构如图15.7所示。为了进一步加强不同分支的作用,可以使用恒等映射、序列不同位置表示的交换、子区间打乱以及不同的掩码策略对不同分支的输入进行扰动,保证分支间的多样性与互补性。本质上,所谓的多单元思想与集成学习十分相似,类似于在训练过程中同时训练多个编码器。此外,通过增大子单元之间的结构差异性也能够进一步增大分支之间的多样性(面向神经机器翻译集成学习方法分析)
\item 除了在多头注意力子层或前馈神经网络子层上使用多分支结构,同样可以基于Transformer中层的基础上进行尝试。例如基于多单元Transformer模型\upcite{DBLP:conf/emnlp/YanMZ20},其模型结构如图15.7所示。为了进一步加强不同分支的作用,可以使用恒等映射、序列不同位置表示的交换、子区间打乱以及不同的掩码策略对不同分支的输入进行扰动,保证分支间的多样性与互补性。本质上,所谓的多单元思想与集成学习十分相似,类似于在训练过程中同时训练多个编码器。此外,通过增大子单元之间的结构差异性也能够进一步增大分支之间的多样性\upcite{李北2019面向神经机器翻译的集成学习方法分析}
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-multi-cell-transformer.png}
\caption{多单元Transformer}
\label{fig:15-7}
\end{figure}
%-------------------------------------------
\parinterval 此外,在15.1.1节中提到局部建模手段能够进一步强化Transformer,其中利用卷积的思想可以与自注意力机制形成互补。这里,通过更高效的多分支结构来分别提取全局和局部两种依赖关系同样可以达到类似的目的(图15.8)(LITE TRANSFORMER WITH LONG-SHORT RANGE ATTENTION)。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息由注意力机制进行提取,局部信息使用轻量卷积(pay less attention with lightweight and dynamic convolutions)提取。由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
\parinterval 此外,在\ref{subsec-15.1.1}节中提到局部建模手段能够进一步强化Transformer,其中利用卷积的思想可以与自注意力机制形成互补。这里,通过更高效的多分支结构来分别提取全局和局部两种依赖关系同样可以达到类似的目的(图\ref{fig:15-8}\upcite{DBLP:conf/iclr/WuLLLH20}。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息由注意力机制进行提取,局部信息使用轻量卷积\upcite{Wu2019PayLA}提取。由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter15/Figures/figure-post-norm-vs-pre-norm}
\includegraphics[scale=0.6]{./Chapter15/Figures/figure-light-weight-transformer-module.png}
\caption{轻量Transformer模块}
\label{fig:15-8}
\end{figure}
......@@ -319,13 +312,13 @@
\subsection{引入循环机制}
\parinterval 前面提到Transformer模型完全摒弃了循环单元与卷积单元,仅通过绝对位置编码来区分不同位置的表示。在15.1.1节也提到了可以在注意力机制中引入相对位置编码或局部约束等手段进一步提高模型的表示能力。此外,由于循环神经网络也非常适用于处理序列结构,且其结构成熟、易于优化,如何有效地将循环引入到Transformer模型中受到了广泛的关注。其中比较有代表性的方法为:
\parinterval 前面提到Transformer模型完全摒弃了循环单元与卷积单元,仅通过绝对位置编码来区分不同位置的表示。在\ref{subsec-15.1.1}节也提到了可以在注意力机制中引入相对位置编码或局部约束等手段进一步提高模型的表示能力。此外,由于循环神经网络也非常适用于处理序列结构,且其结构成熟、易于优化,如何有效地将循环引入到Transformer模型中受到了广泛的关注。其中比较有代表性的方法为:
\begin{itemize}
\vspace{0.5em}
\item 从网络深度的角度建模循环机制。早在残差网络提出时,图像处理领域的研究人员尝试揭示残差网络背后的成功原因。本质上,在卷积神经网络中引入残差连接后,网络从深度上隐性地利用循环的特性。区别在于不同层的参数独立,而非共享。Transformer网络的编码端与解码端分别由$N$个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2/3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置(Universal Transformer,)。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息。之后,在训练大容量预训练模型时同样也采取了共享层间参数的方式(ALBERT)
\item 从网络深度的角度建模循环机制。早在残差网络提出时,图像处理领域的研究人员尝试揭示残差网络背后的成功原因。本质上,在卷积神经网络中引入残差连接后,网络从深度上隐性地利用循环的特性。区别在于不同层的参数独立,而非共享。Transformer网络的编码端与解码端分别由$N$个相同结构但参数独立的块堆叠而成,其中编码块与解码块中分别包含2/3个子层。同时,子层之间引入了残差连接保证了网络信息传递的高效性。因此,一个自然的想法是通过共享不同块之间的参数,引入循环神经网络中的归纳偏置\upcite{DBLP:conf/iclr/DehghaniGVUK19}。其中每层的权重是共享的,并引入了基于时序的编码向量用于显著区分不同深度下的时序信息。之后,在训练大容量预训练模型时同样也采取了共享层间参数的方式\upcite{Lan2020ALBERTAL}
\vspace{0.5em}
\item 利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的表示与Transformer进行融合(Modeling Recurrence for Transformer)。融合机制可以采用顺序计算或并行计算。
\item 利用循环神经网络对输入序列进行编码,之后通过门控机制将得到的表示与Transformer进行融合\upcite{DBLP:conf/naacl/HaoWYWZT19}。融合机制可以采用顺序计算或并行计算。
\vspace{0.5em}
\end{itemize}
......@@ -341,11 +334,11 @@
\begin{itemize}
\vspace{0.5em}
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定,可以大大降低处理长序列时的总体计算时间。(Block wise self-attention for long document understanding,Generating wikipedia by summarizing long sequences)
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定,可以大大降低处理长序列时的总体计算时间。\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18}
\vspace{0.5em}
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算(The long-document transformer)。和分片段进行注意力类似,假设最终参与注意力计算的单词个数为B,共需要执行$N/B$次注意力计算,可以将计算复杂度缩减为$O(N/B * B2)$,即$O(NB)$
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力类似,假设最终参与注意力计算的单词个数为$B$,共需要执行$N/B$次注意力计算,可以将计算复杂度缩减为$O(NB)${\red{(看下O(NB)的格式)}}
\vspace{0.5em}
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积,池化等对序列进行下采样,来缩短序列长度。例如,使用跨步卷积(Stride Convolution)来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度。(Generating wikipedia by summarizing long sequences),其具体的计算复杂度取决跨步卷积时步幅的大小K,形式上可以理解为每K个词做一次特征融合后,将关注的目标缩减为N/K,整体的计算复杂度为$O(N*N/K$,相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积,池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其具体的计算复杂度取决跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个词做一次特征融合后,将关注的目标缩减为$\frac{N}{K}$,整体的计算复杂度为$O(\frac{N^2}{K}$,相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\vspace{0.5em}
\end{itemize}
......@@ -355,32 +348,33 @@
\begin{itemize}
\vspace{0.5em}
\item Reformer(Reformer: The efficient transformer):首先,在计算Key和Value时使用相同的线性映射,共享Key和Value的值。在实际实验中发现,这种模式并不会影响Transformer模型的性能。其次,Reformer中为了降低自注意力机制的复杂度,引入了一种局部哈希敏感注意力机制(LSH Attention),其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以很大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。哈希的散列函数为:
\item Reformer\upcite{Kitaev2020ReformerTE}:首先,在计算Key和Value时使用相同的线性映射,共享Key和Value的值。在实际实验中发现,这种模式并不会影响Transformer模型的性能。其次,Reformer中为了降低自注意力机制的复杂度,引入了一种{\small\bfnew{局部哈希敏感注意力机制}}\index{局部哈希敏感注意力机制}(LSH Attention)\index{LSH Attention},其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以很大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。哈希的散列函数为:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\mathbi{h}(\mathbi{x}) = \arg\max([\mathbi{x}\mathbi{R};-\mathbi{x}\mathbi{R}])
\label{eq:15-17}
\end{equation}
\noindent R为随机的矩阵,$[;]$代表拼接操作。当$h(〖Query〗_i )=h(〖Key〗_j )$$i$$j$为序列中不同位置单词的下标,也就是说,也就是说当两个词的Query和Key落在同一个散列桶时,对其进行注意力的计算。此外,Reformer中还采用了一种可逆残差网络结构(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(Efficient content based sparse attention with routing transformers)中采用了通过K-means算法对单词来进行分组聚类后,分别在组内进行自注意力机制的计算来提高效率。首先是将Query和Key映射到聚类矩阵R:
\item Routing Transformer\upcite{DBLP:journals/corr/abs-2003-05997}中采用了通过K-means算法对单词来进行分组聚类后,分别在组内进行自注意力机制的计算来提高效率。首先是将Query和Key映射到聚类矩阵$\mathbi{R}${\red{qkv要不要斜体,公式和正文中的形式要统一,而且下面的$\ast$要不要换成乘号}}
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\mathbi{R} = {Query} \ast \mathbi{W} + {Key} \ast \mathbi{W}
\label{eq:15-18}
\end{equation}
\noindent W为映射矩阵,其后,为了保证每个簇内的单词数量一致,利用K-means算法将R中的向量分配到$√N$个簇中,其中N为序列长度,即分别计算R中每个向量与质心的距离,并对每个质心取距离最近的top-k,其中质心通过模型学习得到
\noindent $\mathbi{W}$为映射矩阵,其后,为了保证每个簇内的单词数量一致,利用K-means算法将$\mathbi{R}$中的向量分配到$\sqrt{N}$个簇中,其中$N$为序列长度,即分别计算$\mathbi{R}$中每个向量与质心的距离,{\red{并对每个质心取距离最近的top-k,其中质心通过模型学习得到}}
\noindent 在上述介绍的工作中,无论是通过研究人员设定好的局部模式或是模型通过数据驱动的方式自主选择注意力机制的作用范围,都有效的降低了计算复杂度。但实际上在注意力机制中对计算效率影响最大的因素是Softmax。前面已经介绍过自注意力机制的计算公式为:
\begin{equation}
\mathbi{x}_{l+1}=\textrm{LN}(\mathbi{x}_l+F(\mathbi{x}_l;{\bm \theta_l}))
\textrm{Attention}(\mathbi{Q},\mathbi{K},\mathbi{V}) = \textrm{Softmax}
( \frac{\mathbi{Q}\mathbi{K}^{\textrm{T}}} {\sqrt{d_k}}) \mathbi{V}
\label{eq:15-19}
\end{equation}
\vspace{0.5em}
\item 由于Softmax机制的存在,首先要进行$QK^T$的计算得到$N×N$的矩阵,其中N是序列长度,在对维度为$N×d_k$的Value进行加权求和时,其时间复杂度便是$O(N2$
。假设能够取消Softmax操作,便可以将注意力机制的计算调整为$QK^T V$,由于矩阵的运算满足结合律,可以先进行$K^T V$的运算,得到$d_k×d_k$的矩阵,再左乘Q。在长文本处理中,由于多头机制的存在,$dk << N$,所以最终的计算复杂度便可以近似为$O(n)$,从而将注意力机制简化为线性计算。因此可以尝试对注意力机制内核化,使用核函数改写注意力机制,同时保证取消Softmax后$QK^T$内积的非负性,避免显示的计算$N x N$的矩阵(Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention,Rethinking attention with performers.)
\item 由于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)${\red{(突然来的n是什么)}},从而将注意力机制简化为线性计算。因此可以尝试对注意力机制内核化,使用核函数改写注意力机制,同时保证取消Softmax后$\mathbi{Q}\mathbi{K}^{\textrm{T}}$内积的非负性,避免显示的计算$N \times N$的矩阵\upcite{Katharopoulos2020TransformersAR,DBLP:journals/corr/abs-2009-14794}
\vspace{0.5em}
\end{itemize}
......@@ -1385,8 +1379,10 @@ f(x) &=& x \cdot \delta(\beta x) \\
\sectionnewpage
\section{小结及深入阅读}
\parinterval 除了上述介绍的多分支网络,还可以通过多尺度的思想来对输入的特征表示进行分级表示,引入短语的信息(Multi-Granularity Self-Attention for Neural Machine Translation)。此外,在对自注意力网络中的注意力权重分布进行修改时,同样可以根据不同的缩放比例对序列中的实词与虚词进行区分。(Learning When to Concentrate or Divert Attention: Self-Adaptive Attention Temperature for Neural Machine Translation)
\parinterval 除了上述介绍的多分支网络,还可以通过多尺度的思想来对输入的特征表示进行分级表示,引入短语的信息\upcite{DBLP:conf/emnlp/HaoWSZT19}。此外,在对自注意力网络中的注意力权重分布进行修改时,同样可以根据不同的缩放比例对序列中的实词与虚词进行区分\upcite{DBLP:conf/emnlp/Lin0RLS18}
\parinterval 高效地Transformer:针对处理长文本数据时面临庞大的时间复杂度问题,除了上述章节介绍的方法,研究人员通过简化网络的结构来构建更高效地Transformer结构。(Longformer: The Long-Document Transformer;Linformer: Self-Attention with Linear Complexity;RETHINKING ATTENTION WITH PERFORMERS)
\parinterval 高效地Transformer:针对处理长文本数据时面临庞大的时间复杂度问题,除了上述章节介绍的方法,研究人员通过简化网络的结构来构建更高效地Transformer结构\upcite{DBLP:journals/corr/abs-2004-05150,DBLP:journals/corr/abs-2006-04768,DBLP:journals/corr/abs-2009-14794}
\parinterval ODE工作(图像)
\parinterval 结构搜索技术是模型结构优化的一种方法,在近些年愈加得到广泛的关注。其中搜索策略作为衔接搜索空间和评价方法的关键步骤,在整个结构搜索方法中扮演着非常重要的角色,不同类型的搜索策略也决定了搜索过程能够在怎样的搜索空间中进行、性能评估如何帮助完成搜索等。除前文详细介绍的基于进化算法、强化学习以及梯度的方法外,基于贝叶斯优化以及随机搜索的方式同样能够有效对搜索空间进行探索。贝叶斯优化的方式已经在超参数优化领域中取得一定成绩,而对于结构搜索任务来说,也有相关研究人员尝试使用基于树的模型来对模型结构以及超参数进行协同优化\upcite{DBLP:conf/nips/BergstraBBK11,DBLP:conf/lion/HutterHL11,DBLP:conf/icml/BergstraYC13,DBLP:conf/ijcai/DomhanSH15,DBLP:conf/icml/MendozaKFSH16,DBLP:journals/corr/abs-1807-06906}。随机搜索的方法在很多工作中被作为基线,这种方式在搜索空间中随机对搜索单元进行选择及操作,最终通过组合或进化等方式找到适用于于当前任务的模型结构\upcite{li2020automated,DBLP:conf/cvpr/BenderLCCCKL20,DBLP:conf/uai/LiT19}。对于结构搜索任务来说如何提升目前搜索策略的稳定性\upcite{DBLP:conf/iccv/ChenXW019,DBLP:conf/icml/ChenH20,DBLP:conf/iclr/XuX0CQ0X20},如何在更大的搜索空间\upcite{DBLP:conf/iclr/XieZLL19,DBLP:conf/acl/LiHZXJXZLL20,DBLP:conf/iclr/CaiZH19}、更多的任务中进行搜索\upcite{DBLP:conf/emnlp/JiangHXZZ19,DBLP:conf/icml/SoLL19}等问题成为结构搜索方法中亟待解决的重要问题。
......@@ -9067,6 +9067,376 @@ author = {Zhuang Liu and
year = {2016},
}
@inproceedings{DBLP:conf/emnlp/WangTWS19a,
author = {Xing Wang and
Zhaopeng Tu and
Longyue Wang and
Shuming Shi},
title = {Self-Attention with Structural Position Representations},
pages = {1403--1409},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2019}
}
@article{Liu2020LearningTE,
title={Learning to Encode Position for Transformer with Continuous Dynamical Model},
author={Xuanqing Liu and Hsiang-Fu Yu and Inderjit Dhillon and Cho-Jui Hsieh},
journal={ArXiv},
year={2020},
volume={abs/2003.09229}
}
@inproceedings{DBLP:conf/nips/ChenRBD18,
author = {Tian Qi Chen and
Yulia Rubanova and
Jesse Bettencourt and
David Duvenaud},
title = {Neural Ordinary Differential Equations},
publisher = {Conference and Workshop on Neural Information Processing Systems},
pages = {6572--6583},
year = {2018}
}
@inproceedings{DBLP:journals/corr/LuongPM15,
author = {Thang Luong and
Hieu Pham and
Christopher D. Manning},
title = {Effective Approaches to Attention-based Neural Machine Translation},
publisher = {Conference on Empirical Methods in Natural Language Processing},
pages = {1412--1421},
year = {2015}
}
@inproceedings{Yang2018ModelingLF,
author = {Baosong Yang and
Zhaopeng Tu and
Derek F. Wong and
Fandong Meng and
Lidia S. Chao and
Tong Zhang},
title = {Modeling Localness for Self-Attention Networks},
pages = {4449--4458},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/aaai/GuoQLXZ20,
author = {Qipeng Guo and
Xipeng Qiu and
Pengfei Liu and
Xiangyang Xue and
Zheng Zhang},
title = {Multi-Scale Self-Attention for Text Classification},
pages = {7847--7854},
publisher = {AAAI Conference on Artificial Intelligence},
year = {2020}
}
@inproceedings{Wu2019PayLA,
author = {Felix Wu and
Angela Fan and
Alexei Baevski and
Yann N. Dauphin and
Michael Auli},
title = {Pay Less Attention with Lightweight and Dynamic Convolutions},
publisher = {International Conference on Learning Representations},
year = {2019},
}
@inproceedings{DBLP:conf/interspeech/GulatiQCPZYHWZW20,
author = {Anmol Gulati and
James Qin and
Chung-Cheng Chiu and
Niki Parmar and
Yu Zhang and
Jiahui Yu and
Wei Han and
Shibo Wang and
Zhengdong Zhang and
Yonghui Wu and
Ruoming Pang},
title = {Conformer: Convolution-augmented Transformer for Speech Recognition},
pages = {5036--5040},
publisher = {International Speech Communication Association},
year = {2020}
}
@inproceedings{DBLP:conf/cvpr/XieGDTH17,
author = {Saining Xie and
Ross B. Girshick and
Piotr Doll{\'{a}}r and
Zhuowen Tu and
Kaiming He},
title = {Aggregated Residual Transformations for Deep Neural Networks},
pages = {5987--5995},
publisher = {IEEE Conference on Computer Vision and Pattern Recognition},
year = {2017}
}
@article{DBLP:journals/corr/abs-1711-02132,
author = {Karim Ahmed and
Nitish Shirish Keskar and
Richard Socher},
title = {Weighted Transformer Network for Machine Translation},
journal = {CoRR},
volume = {abs/1711.02132},
year = {2017}
}
@article{DBLP:journals/corr/abs-2006-10270,
author = {Yang Fan and
Shufang Xie and
Yingce Xia and
Lijun Wu and
Tao Qin and
Xiang-Yang Li and
Tie-Yan Liu},
title = {Multi-branch Attentive Transformer},
journal = {CoRR},
volume = {abs/2006.10270},
year = {2020}
}
@inproceedings{DBLP:conf/emnlp/YanMZ20,
author = {Jianhao Yan and
Fandong Meng and
Jie Zhou},
title = {Multi-Unit Transformers for Neural Machine Translation},
pages = {1047--1059},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2020}
}
@article{李北2019面向神经机器翻译的集成学习方法分析,
title={面向神经机器翻译的集成学习方法分析},
author={李北 and 王强 and 肖桐 and 姜雨帆 and 张哲旸 and 刘继强 and 张俐 and 于清},
journal={中文信息学报},
volume={33},
number={3},
year={2019},
}
@inproceedings{DBLP:conf/iclr/WuLLLH20,
author = {Zhanghao Wu and
Zhijian Liu and
Ji Lin and
Yujun Lin and
Song Han},
title = {Lite Transformer with Long-Short Range Attention},
publisher = {International Conference on Learning Representations},
year = {2020}
}
@inproceedings{DBLP:conf/iclr/DehghaniGVUK19,
author = {Mostafa Dehghani and
Stephan Gouws and
Oriol Vinyals and
Jakob Uszkoreit and
Lukasz Kaiser},
title = {Universal Transformers},
publisher = {International Conference on Learning Representations},
year = {2019}
}
@article{Lan2020ALBERTAL,
title={ALBERT: A Lite BERT for Self-supervised Learning of Language Representations},
author={Zhenzhong Lan and Mingda Chen and Sebastian Goodman and Kevin Gimpel and Piyush Sharma and Radu Soricut},
publisher={International Conference on Learning Representations}
}
@inproceedings{DBLP:conf/naacl/HaoWYWZT19,
author = {Jie Hao and
Xing Wang and
Baosong Yang and
Longyue Wang and
Jinfeng Zhang and
Zhaopeng Tu},
title = {Modeling Recurrence for Transformer},
pages = {1198--1207},
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/emnlp/QiuMLYW020,
author = {Jiezhong Qiu and
Hao Ma and
Omer Levy and
Wen-tau Yih and
Sinong Wang and
Jie Tang},
title = {Blockwise Self-Attention for Long Document Understanding},
pages = {2555--2565},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2020}
}
@inproceedings{DBLP:conf/iclr/LiuSPGSKS18,
author = {Peter J. Liu and
Mohammad Saleh and
Etienne Pot and
Ben Goodrich and
Ryan Sepassi and
Lukasz Kaiser and
Noam Shazeer},
title = {Generating Wikipedia by Summarizing Long Sequences},
publisher = {International Conference on Learning Representations},
year = {2018}
}
@article{DBLP:journals/corr/abs-2004-05150,
author = {Iz Beltagy and
Matthew E. Peters and
Arman Cohan},
title = {Longformer: The Long-Document Transformer},
journal = {CoRR},
volume = {abs/2004.05150},
year = {2020}
}
@article{Kitaev2020ReformerTE,
author = {Nikita Kitaev and
Lukasz Kaiser and
Anselm Levskaya},
title = {Reformer: The Efficient Transformer},
journal = {International Conference on Learning Representations},
year = {2020}
}
@article{DBLP:journals/corr/abs-2003-05997,
author = {Aurko Roy and
Mohammad Saffar and
Ashish Vaswani and
David Grangier},
title = {Efficient Content-Based Sparse Attention with Routing Transformers},
journal = {CoRR},
volume = {abs/2003.05997},
year = {2020}
}
@article{Katharopoulos2020TransformersAR,
title={Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention},
author={Angelos Katharopoulos and Apoorv Vyas and Nikolaos Pappas and Franccois Fleuret},
journal={CoRR},
year={2020},
volume={abs/2006.16236}
}
@article{DBLP:journals/corr/abs-2009-14794,
author = {Krzysztof Choromanski and
Valerii Likhosherstov and
David Dohan and
Xingyou Song and
Andreea Gane and
Tam{\'{a}}s Sarl{\'{o}}s and
Peter Hawkins and
Jared Davis and
Afroz Mohiuddin and
Lukasz Kaiser and
David Belanger and
Lucy Colwell and
Adrian Weller},
title = {Rethinking Attention with Performers},
journal = {CoRR},
volume = {abs/2009.14794},
year = {2020}
}
@inproceedings{DBLP:conf/emnlp/HaoWSZT19,
author = {Jie Hao and
Xing Wang and
Shuming Shi and
Jinfeng Zhang and
Zhaopeng Tu},
title = {Multi-Granularity Self-Attention for Neural Machine Translation},
pages = {887--897},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2019}
}
@inproceedings{DBLP:conf/emnlp/Lin0RLS18,
author = {Junyang Lin and
Xu Sun and
Xuancheng Ren and
Muyu Li and
Qi Su},
title = {Learning When to Concentrate or Divert Attention: Self-Adaptive Attention
Temperature for Neural Machine Translation},
pages = {2985--2990},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2018}
}
@article{DBLP:journals/corr/abs-2006-04768,
author = {Sinong Wang and
Belinda Z. Li and
Madian Khabsa and
Han Fang and
Hao Ma},
title = {Linformer: Self-Attention with Linear Complexity},
journal = {CoRR},
volume = {abs/2006.04768},
year = {2020}
}
@inproceedings{DBLP:conf/nips/BergstraBBK11,
author = {James Bergstra and
R{\'{e}}mi Bardenet and
Yoshua Bengio and
Bal{\'{a}}zs K{\'{e}}gl},
title = {Algorithms for Hyper-Parameter Optimization},
publisher = {Advances in Neural Information Processing Systems},
pages = {2546--2554},
year = {2011}
}
@inproceedings{DBLP:conf/lion/HutterHL11,
author = {Frank Hutter and
Holger H. Hoos and
Kevin Leyton-Brown},
title = {Sequential Model-Based Optimization for General Algorithm Configuration},
series = {Lecture Notes in Computer Science},
volume = {6683},
pages = {507--523},
publisher = {Learning and Intelligent Optimization},
year = {2011}
}
@inproceedings{DBLP:conf/icml/BergstraYC13,
author = {James Bergstra and
Daniel Yamins and
David D. Cox},
title = {Making a Science of Model Search: Hyperparameter Optimization in Hundreds
of Dimensions for Vision Architectures},
series = {{JMLR} Workshop and Conference Proceedings},
volume = {28},
pages = {115--123},
publisher = {International Conference on Machine Learning},
year = {2013}
}
@inproceedings{DBLP:conf/iccv/ChenXW019,
author = {Xin Chen and
Lingxi Xie and
Jun Wu and
Qi Tian},
title = {Progressive Differentiable Architecture Search: Bridging the Depth
Gap Between Search and Evaluation},
pages = {1294--1303},
publisher = {IEEE International Conference on Computer Vision},
year = {2019}
}
@inproceedings{DBLP:conf/icml/ChenH20,
author = {Xiangning Chen and
Cho-Jui Hsieh},
title = {Stabilizing Differentiable Architecture Search via Perturbation-based
Regularization},
series = {Proceedings of Machine Learning Research},
volume = {119},
pages = {1554--1565},
publisher = {International Conference on Machine Learning},
year = {2020}
}
%%%%% chapter 15------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论