《吴恩达深度学习》02改善深层神经网络:超参数调试、正则化以及优化(第1周深度学习的实用层面)

02. 改善深层神经网络:超参数调试、正则化以及优化

第一周 深度学习的实用层面

1.1 训练、验证、测试集

  1. 机器学习实践是一个高度迭代过程
    应用领域:NLP,CV,语音,结构化数据(广告,搜索,安全,物流)
  2. 训练、验证、测试数据集
    训练、测试:70,30
    训练验证测试:60,20,20
    大数据背景下,验证、测试集所占比例更小。
  3. 训练测试集分布不匹配
    要确保验证集和测试集来自同一分布
    即使没有测试集也可以(测试集用于无偏估计)

1.2 偏差、方差

  1. 偏差和方差
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvJrtO9D-1585526106976)(./1584058184537.png)]
    欠拟合、适度拟合、过拟合
  2. 偏差和方差例子
  3. 高偏差高方差
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WJ5xTo9-1585526106977)(./1584058530970.png)]

1.3 机器学习基础

  1. 机器学习基础
    (1) 高偏差?若训练集上偏差也高,则需要寻找新的网络(更大的网络)
    (2) 高方差?若验证集上方差也高,则需要更多的数据,或正则化,或新的网络

1.4 正则化

  1. 逻辑回归
    (1) L2正则化: J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ m ∥ w ∥ 2 2 J(w,b) = \frac{1}{m}\sum_{i=1}^m L(\hat{y}^{(i)}, y^{(i)})+\frac{\lambda}{m} \| w \|_2^2 J(w,b)=m1i=1mL(y^(i),y(i))+mλw22
    (2) L1正则化,确保稀疏
    (3) 编程时,为避免与python保留字段重复, λ \lambda λ写为lambd
  2. 神经网络
    (1) J ( w [ 1 ] , b [ 1 ] , ⋯   , ( w [ L ] , b [ L ] ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ m ∑ l = 1 L ∥ w ∥ F 2 J(w^{[1]},b^{[1]}, \cdots, (w^{[L]},b^{[L]}) = \frac{1}{m}\sum_{i=1}^m L(\hat{y}^{(i)}, y^{(i)})+\frac{\lambda}{m} \sum_{l=1}^{L}\| w \|_F^2 J(w[1],b[1],,(w[L],b[L])=m1i=1mL(y^(i),y(i))+mλl=1LwF2
    (2) 矩阵的F范数的平方是矩阵中所有元素的平方和

1.5 为什么正则化可以减少过拟合?

  1. 正则化如何组织过拟合?
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wqgtPah4-1585526106978)(./1584059795831.png)]
  2. 另一个例子

1.6 Dropout正则化

  1. 对于每个节点,以概率消除或保留
  2. 实施dropout(反向随机失活)
    假设有一3层网络
    d3 = np.random.rand(a3.shape[0], a3.shape[1])<keep-prob
    a3 = np.multiply(a3, d3)
    a3 /= keep-prob
  3. 在测试阶段做出预测
    在测试阶段不适用dropout

1.7 理解Dropout

  1. 为什么dropout起作用?
    (1) 直觉:不能依靠任何单一特征,所以不会给某个特征增加权重,最终结果是形成对于权重类似于l2的正则化。
    (2) 不同层的keep-prob可以不同,通常若参数矩阵较大,则设置keep-prob较小。
    (3) 计算机视觉中使用非常多,在其他领域中较少。
    (4) 缺点:代价函数J不再显式定义。解决方法:首先将keep-prob设为1,调试代码,使J单调下降,然后再调试keep-prob。

1.8 其他正则化方法

  1. 数据扩增
    通过对原数据的简单变化,增加训练数据集
  2. 早期停止
    正交化
    缺点:不能分别独立地处理最优化和防止过拟合两个工作。

1.9 归一化输入

  1. 归一化训练集
    (1) 步骤:a. 0均值 x : = x − μ x:=x-\mu x:=xμ b.方差归一化 d / = δ 2 d/=\delta^2 d/=δ2
  2. 为什么归一化输入?
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQh2nnbb-1585526106980)(./1584318895043.png)]

1.10 梯度消失与梯度爆炸

  1. 梯度消失和梯度爆炸

1.11 神经网络的权重初始化

  1. 单个神经元示例
    (1) w [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) ∗ n p . s q r t ( 2 n [ l − 1 ] ) w^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}}) w[l]=np.random.randn(shape)np.sqrt(n[l1]2)

1.12 梯度的数值逼近

  1. 检验梯度计算
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cisg0Twk-1585526106981)(./1584491521636.png)]
    双边公差比单边公差更逼近精确值,双边公差的误差为 O ( ϵ 2 ) O(\epsilon^2) O(ϵ2),单边公差的误差为 O ( ϵ ) O(\epsilon) O(ϵ)

1.13 梯度检验

  1. 神经网络的梯度检验
    (1) 将全部参数矩阵reshape为一个向量 θ \theta θ
    (2) 将全部导数矩阵reshape为一个向量 d θ d\theta dθ
  2. 梯度检验
    (1) 对于每个i,计算 d θ a p p r o x [ i ] = J ( θ 1 , θ 2 , ⋯   , θ i + ϵ , ⋯   ) − J ( θ 1 , θ 2 , ⋯   , θ i − ϵ , ⋯   ) 2 ϵ = d θ [ i ] = ∂ J ∂ θ i d\theta_{approx}[i]=\frac{J(\theta_1, \theta_2, \cdots, \theta_i+\epsilon, \cdots)-J(\theta_1, \theta_2, \cdots, \theta_i-\epsilon, \cdots)}{2\epsilon} = d\theta[i]= \frac{\partial J}{\partial \theta_i} dθapprox[i]=2ϵJ(θ1,θ2,,θi+ϵ,)J(θ1,θ2,,θiϵ,)=dθ[i]=θiJ
    (2) 检查 ∥ d θ a p p r o x − d θ ∥ 2 \| d\theta_{approx} - d\theta \|_2 dθapproxdθ2, 若是小于 1 0 − 7 10^{-7} 107则比较好,在 1 0 − 5 10^{-5} 105则要小心,若大于 1 0 3 10^{_3} 103则要小心。

1.14 关于梯度检验实现的注记

  1. 不要在训练中使用,只是用于调试中。
  2. 如果检验错误,则要每一项都要检查。
  3. 注意不要丢了正则项。
  4. 梯度检验和dropout不能同时使用。
  5. 随机初始化,训练后可能会有问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值