【深度学习】第二阶段 —— 第一课


声明: 此笔记为吴恩达(Andrew Ng)的深度学习课程学习后的总结,会根据自己的学习进度更新。

深度学习的实用层面( Setting up your ML application)

1.Train/dev/test sets

  • Applied ML is a highly iterative proess(需要不断的调整并迭代,如下图)

在这里插入图片描述

  • Train/dev/test sets(关于数据的分配)

    • Previous era(小数量) : 60% / 20% /20%
    • Big data(大数据) :99.5% / 0.4% /0.1%

    (1).不是唯一的分配法,注意分布量的比较及可,有时不需要用到test时,可以只需训练集和验证集(train/dev)此时验证集通常被大众叫做“测试集”
    (2).注意训练和测试的数据要符合同分布

2.Bias/Variance(偏置/方差)

  • 偏置和方差的影响
    在这里插入图片描述

    • 高偏置(high bias) 时趋于线性区分及欠拟合(underfitting)
    • 高方差(high variance)时对于此训练集的区分可能很好,但过拟合了(overfitting)
    • 找到刚刚好,就需要取权衡偏置和方差【这也许就是玄学的第一个验证点了】
  • 何为高偏置/高方差?

    • Train set erro(训练集错误率):① 1%   ② 15%  ③ 15%  ④ 0.5%
    • Dev set erro(验证集错误率) :① 11%  ② 16%  ③ 20%  ④ 1%
    • ①:high variance ②:high bias ③:high variance,high bias ④:low variance,low bias

3.Basic “recipe” for ML(关于机器学习调整的基本方法)

  • 浅谈如何解决高方差与高偏差

在这里插入图片描述

  • 解决高方差:正则化(regularization)

    • min J(w,b)

      J ( w , b ) = 1 m ⋅ ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ⋅ ∣ ∣ w ∣ ∣ 2 2 J(w,b) = \frac 1 m \cdot \sum_{i=1}^{m} L(\hat {y}^{(i)},y^{(i)}) + \frac{\lambda}{2m} \cdot ||w||^2_2 J(w,b)=m1i=1mL(y^(i),y(i))+2mλw22

    L 2   r e g u l a r i z a t i o n : ∣ ∣ w ∣ ∣ 2 2 = ∑ j = 1 n x ⋅ w j 2 = w T ⋅ w L2 \ regularization : ||w||_2^2 = \sum_{j=1}^{n_x} \cdot w_j^2 = w^T \cdot w L2 regularization:w22=j=1nxwj2=wTw

    lamda的值要靠试,玄学之二

  • 正则化利于预防过拟合的原因

    • 当lambda足够大的时候,w在向后传播的时候,dw会减小,则导致W趋近于0,相当于一个复杂的网络每一层只有一个单元起作用,如下图:

    在这里插入图片描述

  • Dropout regulation

    • 每一层选择一个概率,这个概率就是该层神经元起作用的比例,如图:
      在这里插入图片描述

    • 如何应用dropout?以第三层神经网络举例:

        #伪代码示例
        keep_prob = 0.8
        
        d3 = np.random.rand(a3.shape[0],a3.shape[1]) < keep_prob
        
        a3 = np.multply(a3,d3)
        
        a3 = a3 / keepz_prob
    
    • drop-out是如何工作的?
      1. 不能依赖任何某一个特征,因为特征有可能被随机清除,所以需要通过这个方式积极的传播开,drop-out也将产生说所权重得平方范数得效果(翻译过来,有些不太精准)

      2. 对于不同层drop-out可能都有所不同,比如某一层过拟合较为严重就设得更小。

  • 其他防止过拟合的方法

    1. 增加数据量,例如图片数据,可以进行裁剪、反转、倒置等进行扩充有限数据。
    2. 提前结束训练的迭代,代价函数会随着迭代的增加而减小,但是验证集的误差可能会在某一个点开始增大,如图:
      在这里插入图片描述

4.Setting up your optimization problem(优化问题)

  • 归一化输入
    特征之间的范围差异过大,会导致超参数难以去调整,在梯度下降时会需要特别小的学习率去进行,而归一化之后代价函数更易优化并且会更快的进行优化,如图所示:
    在这里插入图片描述

  • 梯度消失与梯度爆炸
    在这里插入图片描述

    假设了激活函数g(Z)=Z,b=0,如果权重W比“1”大一点,例如“1.5”,激活函数就会出现指数级增长,比“1”小一点,例如“0.5”,激活函数就会出现指数级下降,相对应L层的其他超参数也会出现指数级的变化,假设有150层,而梯度下降的步长会特别小,那么训练周期会特别长

  • 解决梯度消失或爆炸:权重初始化的技巧
    以单神经元为例子:
    在这里插入图片描述

    Z = W 1 X 1 + W 2 X 2 + . . . + W n X n Z = W_1X_1+W_2X_2+ ... +W_nX_n Z=W1X1+W2X2+...+WnXn

    l a y e r   n   — > S m a l l e r   W i layer \ n \ —> Smaller \ W_i layer n >Smaller Wi

    V a r ( W i ) = 2 n Var(W_i) = \frac 2 n Var(Wi)=n2

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()) \cdot np.sqrt(\frac{2}{n^{[l-1]}}) W[l]=np.random.randn(shape())np.sqrt(n[l1]2)

使Wi的值会变小
  • 如何计算梯度的数值逼近
    在这里插入图片描述
    用双边的公差作为Δ而不是单边(很简单的微分知识)

  • 梯度检验(gradient checking)
    如图:
    在这里插入图片描述


第二阶段第一周编程作业附上 (非本人撰写) :初始化、正则化、梯度校验(1 & 2 & 3)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值