Commit dfd09a60 by 单韦乔

15章文字更新

parent 8c226cd2
......@@ -15,7 +15,7 @@
\node [neuronnode] (neuron_y') at (2.4 * \nodespace,-1.5 * \neuronsep) {\scriptsize{$x_{i}^{l+1}$}};
\node [anchor=north,align=left,font=\scriptsize] (standard) at ([xshift=2em,yshift=-3em]neuron_z.south) {使用Dropout前的\\一层神经网络};
\node [] (standard) at ([xshift=-1em]neuron_z.west) {\scriptsize{$\mathbi{w}_{i}^{l}$}};
\node [] (standard) at ([xshift=-1em]neuron_z.west) {\scriptsize{$w_{i}^{l}$}};
\node [] (standard) at ([xshift=0.6em,yshift=0.3em]neuron_z.east) {\scriptsize{$f$}};
\draw [->,line width=0.3mm] (neuron_b.east) -- (neuron_z.130);
......@@ -41,7 +41,7 @@
\node [neuronnode] (drop_neuron_r1) at (4.4*\nodespace,-2.5*\neuronsep) {\scriptsize{$r_{1}^{l}$}};
\node [anchor=north,align=left,font=\scriptsize] (standard) at ([xshift=2em,yshift=-3em]drop_neuron_z.south) {使用Dropout后的\\一层神经网络};
\node [] (standard) at ([xshift=-1em]drop_neuron_z.west) {\scriptsize{$\mathbi{w}_{i}^{l}$}};
\node [] (standard) at ([xshift=-1em]drop_neuron_z.west) {\scriptsize{$w_{i}^{l}$}};
\node [] (standard) at ([xshift=0.6em,yshift=0.3em]drop_neuron_z.east) {\scriptsize{$f$}};
%structure
\draw [->,line width=0.3mm] (drop_neuron_b.east) -- (drop_neuron_z.130);
......@@ -64,7 +64,7 @@
\node [anchor=north west,inner sep = 2pt] (line3) at (line2.south west) {$x_{i}^{l+1}=f\left(z_{i}^{l+1}\right)$};
\node [anchor=north west,inner sep = 2pt] (line4) at (line3.south west) {应用Dropout:};
\node [anchor=north west,inner sep = 2pt] (line5) at (line4.south west) {$r_{i}^{l} \sim$ Bernoulli $(1-p)$};
\node [anchor=north west,inner sep = 2pt] (line6) at (line5.south west) {$\tilde{\mathbi{x}}=\mathbi{r} * \mathbi{x}$};
\node [anchor=north west,inner sep = 2pt] (line6) at (line5.south west) {$\tilde{\mathbi{x}}=\mathbi{r} \mathbi{x}$};
\node [anchor=north west,inner sep = 2pt] (line7) at (line6.south west) {$z_{i}^{l+1}=\mathbi{w}^{l} \widetilde{\mathbi{x}}^{l} + b^{l}$};
\node [anchor=north west,inner sep = 2pt] (line8) at (line7.south west) {$x_{i}^{l+1}=f\left(z_{i}^{l+1}\right)$};
......
......@@ -79,17 +79,17 @@
\noindent 这里,$\mathbi{z}_{i}$可以被看做是输入序列的线性加权表示结果。权重$\alpha_{ij}$通过Softmax函数得到:
\begin{eqnarray}
\alpha_{ij} &=& \frac{\exp (\mathbi{e}_{ij})}{\sum_{k=1}^{m}\exp (\mathbi{e}_{ik})}
\alpha_{ij} &=& \frac{\exp ({e}_{ij})}{\sum_{k=1}^{m}\exp ({e}_{ik})}
\label{eq:15-5}
\end{eqnarray}
\noindent 进一步,$\mathbi{e}_{ij}$被定义为:
\noindent 进一步,${e}_{ij}$被定义为:
\begin{eqnarray}
\mathbi{e}_{ij} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){(\mathbi{x}_j \mathbi{W}_K)}^{\textrm{T}}}{\sqrt{d_k}}
{e}_{ij} &=& \frac{(\mathbi{x}_i \mathbi{W}_Q){(\mathbi{x}_j \mathbi{W}_K)}^{\textrm{T}}}{\sqrt{d_k}}
\label{eq:15-6}
\end{eqnarray}
\noindent 其中,$d_k$为模型中隐藏层的维度\footnote[3]{在多头注意力中,$d_k$为经过多头分割后每个头的维度。}$\mathbi{e}_{ij}$实际上就是$\mathbi{Q}$$\mathbi{K}$的向量积缩放后的一个结果。
\noindent 其中,$d_k$为模型中隐藏层的维度\footnote[3]{在多头注意力中,$d_k$为经过多头分割后每个头的维度。}${e}_{ij}$实际上就是$\mathbi{Q}$$\mathbi{K}$的向量积缩放后的一个结果。
\parinterval 基于上述描述,相对位置模型可以按如下方式实现:
......@@ -616,20 +616,20 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\noindent 其中,$u(-\gamma,\gamma)$表示$-\gamma$$\gamma$间的均匀分布,$n_i$$n_o$分别为线性变换$\mathbi{W}$中输入和输出的维度,也就是上一层神经元的数量和下一层神经元的数量。通过使用这种初始化方式,即可维持神经网络在前向与反向计算过程中,每一层的输入与输出方差的一致性\upcite{DBLP:conf/iccv/HeZRS15}
\parinterval 令模型中某层神经元的输出表示为$\mathbi{Z}=\sum_{j=1}^{n_i}{w_j x_j}$。可以看出,$\mathbi{Z}$的核心是计算两个变量$w_j$$x_j$乘积。两个变量乘积的方差的展开式为:
\parinterval 令模型中某层神经元的输出表示为$Z=\sum_{j=1}^{n_i}{w_j x_j}$。可以看出,$Z$的核心是计算两个变量$w_j$$x_j$乘积。两个变量乘积的方差的展开式为:
\begin{eqnarray}
\textrm{Var}(w_j x_j) &=& E[w_j]^2 \textrm{Var}(x_j) + E[x_j]^2 \textrm{Var}(w_j) + \textrm{Var}(w_j)\textrm{Var}(x_j)
\label{eq:15-41}
\end{eqnarray}
\parinterval 其中$\textrm{Var}(\cdot)$表示求方差操作,由于在大多数情况下,现有模型中的各种标准化方法可以维持$E[w_j]^2$$E[x_j]^2$等于或者近似为0。因此,模型中一层神经元输出的方差可以表示为:
\parinterval 其中$\textrm{Var}(\cdot)$表示求方差操作,由于在大多数情况下,现有模型中的各种标准化方法可以维持$E[w_j]^2$$E[x_j]^2$等于或者近似为0。由于输入$x_j(1<j<n_i)$独立同分布,此处可以使用$x$表示输入服从的分布,对于参数$w_j$也可以有同样的表示$w$因此,模型中一层神经元输出的方差可以表示为:
\begin{eqnarray}
\textrm{Var}(\mathbi{Z}) &=& \sum_{j=1}^{n_i}{\textrm{Var}(x_j) \textrm{Var}(w_j)} \nonumber \\
&=& {n_i}\textrm{Var}(\mathbi{W})\textrm{Var}(\mathbi{X})
\textrm{Var}(Z) &=& \sum_{j=1}^{n_i}{\textrm{Var}(x_j) \textrm{Var}(w_j)} \nonumber \\
&=& {n_i}\textrm{Var}({w})\textrm{Var}({x})
\label{eq:15-42}
\end{eqnarray}
\parinterval 通过观察公式\eqref{eq:15-42}可以发现,在前向传播的过程中,当$\textrm{Var}(\mathbi{W})=\frac{1}{n_i}$时,可以保证每层的输入和输出的方差一致。类似的,通过相关计算可以得知,为了保证模型中每一层的输入和输出的方差一致,反向传播时应有$\textrm{Var}(\mathbi{W})=\frac{1}{n_o}$,通过对两种情况取平均值,控制参数$\mathbi{W}$的方差为$\frac{2}{n_i+n_o}$,则可以维持神经网络在前向与反向计算过程中,每一层的输入与输出方差的一致性。若将参数初始化为一个服从边界为$[-a,b]$的均匀分布,那么其方差为$\frac{{(b+a)}^2}{12}$,为了达到$\mathbi{W}$的取值要求,初始化时应有$a=b=\sqrt{\frac{6}{n_i+n_o}}$
\parinterval 通过观察公式\eqref{eq:15-42}可以发现,在前向传播的过程中,当$\textrm{Var}(w)=\frac{1}{n_i}$时,可以保证每层的输入和输出的方差一致。类似的,通过相关计算可以得知,为了保证模型中每一层的输入和输出的方差一致,反向传播时应有$\textrm{Var}(w)=\frac{1}{n_o}$,通过对两种情况取平均值,控制参数$w$的方差为$\frac{2}{n_i+n_o}$,则可以维持神经网络在前向与反向计算过程中,每一层的输入与输出方差的一致性。若将参数初始化为一个服从边界为$[-a,b]$的均匀分布,那么其方差为$\frac{{(b+a)}^2}{12}$,为了达到$w$的取值要求,初始化时应有$a=b=\sqrt{\frac{6}{n_i+n_o}}$
\parinterval 但是随着神经网络层数的增加,上述初始化方法已经不能很好地约束基于Post-Norm的Transformer模型的输出方差。当神经网络堆叠很多层时,模型顶层输出的方差较大,同时反向传播时顶层的梯度范数也要大于底层。因此,一个自然的想法是根据网络的深度对不同层的参数矩阵采取不同的初始化方式,进而强化对各层输出方差的约束,可以描述为:
\begin{eqnarray}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论