什么是高偏差/高分差?
高偏差:如果训练集和测试集的误差率都在15%左右,欠拟合,训练不充分。
高分差:如果训练集误差率为1%,测试集误差率为15%,过拟合,测试误差高。
如何解决高偏差
- 更大的网络
- 更长的时间
- 新的网络结构
如何解决高分差
- 更多训练
- 训练时进行正则化
- 新的网络结构
正则化
在降低代价函数值得同时,将会对网络的结构进行简化,此时可以有效的防止过拟合的问题。
L2正则化
J
正
则
化
=
−
1
m
∑
i
=
1
m
(
Y
l
o
g
A
+
(
1
−
Y
)
l
o
g
(
1
−
A
)
)
+
1
m
λ
2
∑
l
∑
k
∑
j
W
k
,
j
[
l
]
2
J_{正则化}= -\frac{1}{m} \sum_{i=1}^m(YlogA+ (1-Y)log(1-A))+\frac{1}{m}\frac{\lambda}{2} \sum_l \sum_k \sum_j W_{k,j}^{[l]2}
J正则化=−m1i=1∑m(YlogA+(1−Y)log(1−A))+m12λl∑k∑j∑Wk,j[l]2
其中,
∑
l
∑
k
∑
j
W
k
,
j
[
l
]
2
\sum_l \sum_k \sum_j W_{k,j}^{[l]2}
∑l∑k∑jWk,j[l]2代码为=np.sum(np.square(Wl))。
dropout正则化
每次迭代过程中随即将其中的一些节点失效。遍历每层的神经元节点,并设置每层节点随机消失的概率。例如,我们设置所有节点有0.5的概率会消失,在完成这个过程后,会发现有一些节点现在已经被消失,然后,删除掉与这些节点关联的连线。此时,会得到一个节点更少,网络更加简单的模型结构,对于该样本,以同样的结构进行前向传播和反向传播。当下一样本输入时,需要重新随机选择节点置为失效并进行前向传播和反向传播。
ps:
1、由于dropout正则化会随即置节点失效,因此不方便算代价值。
2、在进行验证,测试或应用时,不再适用Dropout函数进行随机失效处理, 主要原因是因为在测试或验证阶段,我们不希望输出的结果是随机的。
什么是梯度消失/梯度下降
梯度消失:当网络很深时,w值很大,
y
^
\hat y
y^呈指数式增长。
梯度下降:当网络很深时,w值很小,
y
^
\hat y
y^呈指数式下降。
梯度校验
即导数校验,
θ
\theta
θ点的梯度=
θ
\theta
θ点的导数=
g
′
(
θ
)
≈
f
(
θ
+
ξ
)
−
f
(
θ
−
ξ
)
2
ξ
g^{'}(\theta) \approx \frac{f(\theta + \xi) - f(\theta - \xi)}{2\xi}
g′(θ)≈2ξf(θ+ξ)−f(θ−ξ),
d
Q
a
p
p
r
o
x
=
J
(
θ
+
ξ
)
−
J
(
θ
−
ξ
)
2
ξ
dQ _{approx}=\frac{J(\theta + \xi)-J(\theta - \xi)}{2\xi}
dQapprox=2ξJ(θ+ξ)−J(θ−ξ)
e
r
r
o
r
=
∣
∣
d
Q
a
p
p
r
o
x
−
d
Q
∣
∣
2
∣
∣
d
Q
a
p
p
r
o
x
∣
∣
+
∣
∣
d
Q
∣
∣
2
error=\frac{||dQ_{approx}-dQ||_2}{||dQ _{approx}||+||dQ||_2}
error=∣∣dQapprox∣∣+∣∣dQ∣∣2∣∣dQapprox−dQ∣∣2