Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
46dcd774
Commit
46dcd774
authored
Nov 05, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
12
parent
ddb64b6f
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
21 行增加
和
15 行删除
+21
-15
Chapter12/chapter12.tex
+21
-15
没有找到文件。
Chapter12/chapter12.tex
查看文件 @
46dcd774
...
...
@@ -383,26 +383,26 @@
\section
{
残差网络和层正则化
}
\parinterval
Transformer编码器、解码器分别由多层网络组成(通常为6层),每层网络又包含多个子层(自注意力网络、前馈神经网络)。因此Transformer实际上是一个很深的网络结构。再加上
前面介绍的点乘注意力机制,包含很多线性和非线性变换;另外,注意力函数Attention(
$
\cdot
$
)的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失
。
\parinterval
Transformer编码器、解码器分别由多层网络组成(通常为6层),每层网络又包含多个子层(自注意力网络、前馈神经网络)。因此Transformer实际上是一个很深的网络结构。再加上
点乘注意力机制中包含很多线性和非线性变换;且注意力函数Attention(
$
\cdot
$
)的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失。解决这个问题的一种办法就是使用残差连接
\upcite
{
DBLP:journals/corr/HeZRS15
}
,此部分内容已经在
{
\chaptereleven
}
进行了介绍,这里不再赘述
。
\parinterval
解决这个问题的一种办法就是使用残差连接
\upcite
{
DBLP:journals/corr/HeZRS15
}
。残差连接是一种用来训练深层网络的技术,其结构如图
\ref
{
fig:12-49
}
,即在子层之前通过增加直接连接的方式,将底层信息直接传递给上层。
%
\parinterval 解决这个问题的一种办法就是使用残差连接\upcite{DBLP:journals/corr/HeZRS15}。残差连接是一种用来训练深层网络的技术,其结构如图\ref{fig:12-49},即在子层之前通过增加直接连接的方式,将底层信息直接传递给上层。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter12/Figures/figure-residual-network-structure
}
\caption
{
残差网络结构
}
\label
{
fig:12-49
}
\end{figure}
%
\begin{figure}[htp]
%
\centering
%
\input{./Chapter12/Figures/figure-residual-network-structure}
%
\caption{残差网络结构}
%
\label{fig:12-49}
%
\end{figure}
%----------------------------------------------
\parinterval
残差连接从广义上讲也叫短连接,指的是这种短距离的连接。它的思想很简单,就是把层和层之间的距离拉近。如图
\ref
{
fig:12-49
}
所示,子层1通过残差连接跳过了子层2,直接和子层3进行信息传递。使信息传递变得更高效,有效解决了深层网络训练过程中容易出现的梯度消失/爆炸问题,使得深层网络的训练更加容易。其计算公式为:
\begin{eqnarray}
x
_{
l+1
}
= x
_
l +
\mathcal
{
F
}
(x
_
l)
\label
{
eq:12-50
}
\end{eqnarray}
%
\parinterval 残差连接从广义上讲也叫短连接,指的是这种短距离的连接。它的思想很简单,就是把层和层之间的距离拉近。如图\ref{fig:12-49}所示,子层1通过残差连接跳过了子层2,直接和子层3进行信息传递。使信息传递变得更高效,有效解决了深层网络训练过程中容易出现的梯度消失/爆炸问题,使得深层网络的训练更加容易。其计算公式为:
%
\begin{eqnarray}
%
x_{l+1} = x_l + \mathcal{F} (x_l)
%
\label{eq:12-50}
%
\end{eqnarray}
\noindent
其中,
$
x
_
l
$
表示
$
l
$
层网络的输入向量,
$
\mathcal
{
F
}
(
x
_
l
)
$
是子层运算。如果
$
l
=
2
$
,那么公式
\eqref
{
eq:12-50
}
可以解释为,第3层的输入(
$
x
_
3
$
)等于第2层的输出(
$
\mathcal
{
F
}
(
x
_
2
)
$
)加上第二层的输入(
$
x
_
2
$
)。图
\ref
{
fig:12-50
}
中的红色方框展示了Transformer 中残差连接的位置。
%
\noindent 其中,$x_l$表示$l$层网络的输入向量,$\mathcal{F} (x_l)$是子层运算。如果$l=2$,那么公式\eqref{eq:12-50}可以解释为,第3层的输入($x_3$)等于第2层的输出($\mathcal{F}(x_2)$)加上第二层的输入($x_2$)。图\ref{fig:12-50} 中的红色方框展示了Transformer 中残差连接的位置。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -413,7 +413,13 @@ x_{l+1} = x_l + \mathcal{F} (x_l)
\end{figure}
%----------------------------------------------
\parinterval
在Transformer的训练过程中,由于引入了残差操作,将前面所有层的输出加到一起。这样会导致不同层(或子层)的结果之间的差异性很大,造成训练过程不稳定、训练时间较长。为了避免这种情况,在每层中加入了层正则化操作
\upcite
{
Ba2016LayerN
}
。层正则化的计算公式如下:
\parinterval
在Transformer的训练过程中,由于引入了残差操作,将前面所有层的输出加到一起,如公式:
\begin{eqnarray}
x
_{
l+1
}
= x
_
l +
\mathcal
{
F
}
(x
_
l)
\label
{
eq:12-50
}
\end{eqnarray}
\noindent
这样会导致不同层(或子层)的结果之间的差异性很大,造成训练过程不稳定、训练时间较长。为了避免这种情况,在每层中加入了层正则化操作
\upcite
{
Ba2016LayerN
}
。图
\ref
{
fig:12-50
}
中的红色方框展示了Transformer中残差和层正则化的位置。层正则化的计算公式如下:
\begin{eqnarray}
\textrm
{
LN
}
(x) = g
\cdot
\frac
{
x-
\mu
}
{
\sigma
}
+ b
\label
{
eq:12-51
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论