Batch归一化的实现 (1)给定神经网络的隐藏值
z
(
1
)
,
⋯
,
z
(
m
)
z^{(1)}, \cdots, z^{(m) }
z(1),⋯,z(m) (2)均值
μ
=
1
m
∑
i
z
(
i
)
\mu = \frac{1}{m}\sum_i z^{(i)}
μ=m1∑iz(i) (3)均方差
δ
2
=
1
m
∑
i
(
z
(
i
)
−
μ
)
2
\delta^2 = \frac{1}{m}\sum_i (z^{(i)}-\mu)^2
δ2=m1∑i(z(i)−μ)2 (4)归一化
z
n
o
r
m
(
i
)
=
z
(
i
)
−
μ
δ
2
+
ϵ
z^{(i)}_{norm}=\frac{z^{(i)}-\mu}{\sqrt{\delta^2+\epsilon}}
znorm(i)=δ2+ϵz(i)−μ (5)归一化后的参数服从均值为0,方差为1。但实际上,所有参数服从不同的分布更具有现实的意义,因此进一步改进为
z
~
(
i
)
=
γ
z
n
o
r
m
(
i
)
+
β
\widetilde{z}^{(i)}=\gamma z^{(i)}_{norm}+\beta
z(i)=γznorm(i)+β,其中
γ
,
β
\gamma, \beta
γ,β为待学习的参数,可用梯度下降法、动量法等进行学习。
γ
\gamma
γ和
β
\beta
β的作用是设置均值和方差。
3.5 将Batch Norm拟合进神经网络
将Batch归一化加入到神经网络中 (1)神经网络示意图
(2)计算路径
(3)代码tf.nn.batch_normalization
mini-batches中的应用
说明:因为后期需要用
β
\beta
β和
γ
\gamma
γ对
z
(
i
)
z^{(i)}
z(i)进行重新缩放,所以不需再学习
b
[
l
]
b^{[l]}
b[l]
梯度下降法的实现 对于
t
=
1
,
⋯
,
n
u
m
t=1, \cdots, num
t=1,⋯,num mini-batches 在每个mini-batch
X
{
i
}
X^{\{i\}}
X{i}中计算正向传播(用
z
~
[
l
]
\widetilde{z}^{[l]}
z[l]代替
z
[
l
]
z^{[l]}
z[l]) 计算反向传播
d
w
[
l
]
,
d
β
[
l
]
,
d
γ
[
l
]
dw^{[l]}, d\beta^{[l]}, d\gamma^{[l]}
dw[l],dβ[l],dγ[l] 更新参数(梯度下降法、动量法等)
设最终输出层为第
l
l
l层,则该层的计算为:
z
[
l
]
=
w
[
l
]
a
[
l
−
1
]
+
b
[
l
]
z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}
z[l]=w[l]a[l−1]+b[l],
(
C
,
1
)
(C, 1)
(C,1)向量 激活函数:
t
=
e
(
z
[
l
]
)
t=e^{(z^{[l]})}
t=e(z[l]),
(
C
,
1
)
(C, 1)
(C,1)向量
a
[
l
]
=
t
∑
i
=
1
C
t
i
a^{[l]}=\frac{t}{\sum_{i=1}^C t_i}
a[l]=∑i=1Ctit,
(
C
,
1
)
(C, 1)
(C,1)向量,包含了归一化在内。
Softmax举例(可视为逻辑回归的一般形式)
3.9 训练一个Softmax分类器
理解Softmax(回顾上一节内容) hard max是指输出的是具体地某个类别标签。 当
C
=
2
C=2
C=2时,softmax退化为逻辑回归。
损失函数(最大似然估计法)
L
(
y
^
,
y
)
=
−
∑
j
=
1
C
y
j
l
o
g
y
^
j
L(\hat{y}, y)=-\sum_{j=1}^Cy_jlog\hat{y}_j
L(y^,y)=−∑j=1Cyjlogy^j 代价函数
J
(
w
[
1
]
,
b
[
1
]
,
⋯
)
=
1
m
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
J(w^{[1]}, b^{[1]}, \cdots)=\frac{1}{m}\sum_{i=1}^m L(\hat{y}^{(i)}, y^{(i)})
J(w[1],b[1],⋯)=m1∑i=1mL(y^(i),y(i))
向量化表示
softmax上的梯度下降法(反向传播)
d
z
[
l
]
=
y
^
−
y
dz^{[l]}=\hat{y}-y
dz[l]=y^−y