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
dfd09a60
Commit
dfd09a60
authored
Mar 08, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
15章文字更新
parent
8c226cd2
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
12 行增加
和
12 行删除
+12
-12
Chapter13/Figures/figure-computation-of-dropout.tex
+3
-3
Chapter15/chapter15.tex
+9
-9
没有找到文件。
Chapter13/Figures/figure-computation-of-dropout.tex
查看文件 @
dfd09a60
...
...
@@ -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
)
$}
;
...
...
Chapter15/chapter15.tex
查看文件 @
dfd09a60
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论