02. 改善深层神经网络:超参数调试、正则化以及优化
第一周 深度学习的实用层面
1.1 训练、验证、测试集
- 机器学习实践是一个高度迭代过程
应用领域:NLP,CV,语音,结构化数据(广告,搜索,安全,物流)
- 训练、验证、测试数据集
训练、测试:70,30
训练验证测试:60,20,20
大数据背景下,验证、测试集所占比例更小。
- 训练测试集分布不匹配
要确保验证集和测试集来自同一分布
即使没有测试集也可以(测试集用于无偏估计)
1.2 偏差、方差
- 偏差和方差

欠拟合、适度拟合、过拟合
- 偏差和方差例子
- 高偏差高方差
1.3 机器学习基础
- 机器学习基础
(1) 高偏差?若训练集上偏差也高,则需要寻找新的网络(更大的网络)
(2) 高方差?若验证集上方差也高,则需要更多的数据,或正则化,或新的网络
1.4 正则化
- 逻辑回归
(1) L2正则化:J(w,b)=m1∑i=1mL(y^(i),y(i))+mλ∥w∥22
(2) L1正则化,确保稀疏
(3) 编程时,为避免与python保留字段重复,λ写为lambd
- 神经网络
(1) J(w[1],b[1],⋯,(w[L],b[L])=m1∑i=1mL(y^(i),y(i))+mλ∑l=1L∥w∥F2
(2) 矩阵的F范数的平方是矩阵中所有元素的平方和
1.5 为什么正则化可以减少过拟合?
- 正则化如何组织过拟合?
- 另一个例子
1.6 Dropout正则化
- 对于每个节点,以概率消除或保留
- 实施dropout(反向随机失活)
假设有一3层网络
d3 = np.random.rand(a3.shape[0], a3.shape[1])<keep-prob
a3 = np.multiply(a3, d3)
a3 /= keep-prob
- 在测试阶段做出预测
在测试阶段不适用dropout
1.7 理解Dropout
- 为什么dropout起作用?
(1) 直觉:不能依靠任何单一特征,所以不会给某个特征增加权重,最终结果是形成对于权重类似于l2的正则化。
(2) 不同层的keep-prob可以不同,通常若参数矩阵较大,则设置keep-prob较小。
(3) 计算机视觉中使用非常多,在其他领域中较少。
(4) 缺点:代价函数J不再显式定义。解决方法:首先将keep-prob设为1,调试代码,使J单调下降,然后再调试keep-prob。
1.8 其他正则化方法
- 数据扩增
通过对原数据的简单变化,增加训练数据集
- 早期停止
正交化
缺点:不能分别独立地处理最优化和防止过拟合两个工作。
1.9 归一化输入
- 归一化训练集
(1) 步骤:a. 0均值x:=x−μ b.方差归一化d/=δ2
- 为什么归一化输入?
1.10 梯度消失与梯度爆炸
- 梯度消失和梯度爆炸
1.11 神经网络的权重初始化
- 单个神经元示例
(1) w[l]=np.random.randn(shape)∗np.sqrt(n[l−1]2)
1.12 梯度的数值逼近
- 检验梯度计算

双边公差比单边公差更逼近精确值,双边公差的误差为O(ϵ2),单边公差的误差为O(ϵ)。
1.13 梯度检验
- 神经网络的梯度检验
(1) 将全部参数矩阵reshape为一个向量θ
(2) 将全部导数矩阵reshape为一个向量dθ
- 梯度检验
(1) 对于每个i,计算dθapprox[i]=2ϵJ(θ1,θ2,⋯,θi+ϵ,⋯)−J(θ1,θ2,⋯,θi−ϵ,⋯)=dθ[i]=∂θi∂J
(2) 检查∥dθapprox−dθ∥2, 若是小于10−7则比较好,在10−5则要小心,若大于103则要小心。
1.14 关于梯度检验实现的注记
- 不要在训练中使用,只是用于调试中。
- 如果检验错误,则要每一项都要检查。
- 注意不要丢了正则项。
- 梯度检验和dropout不能同时使用。
- 随机初始化,训练后可能会有问题。
相关文章:
-
2021-09-16
-
2021-05-03
-
2021-05-15
-
2021-05-27
-
2021-12-17
-
2021-06-29
-
2021-07-19
-
2021-09-12
猜你喜欢
-
2021-07-14
-
2021-07-12
-
2021-05-16
-
2021-10-08
-
2021-05-04
-
2021-04-11
-
2021-10-04
相关资源
-
下载
2022-12-14
-
下载
2023-04-05
-
下载
2022-12-25
-
下载
2023-02-06