机器学习2021-Deep-Learning

Deep Learning

1、General Guidance

总结:

  • 1、并不是所有的在测试集上表现结果差都是overfitting,要先看在training data上的los怎么样?

    • large:
      • model bias(模型的限制)——>增加模型的复杂程度,function的范围
      • optimize(局部最优解)——>增加找function的力度
    • small:
      • loss on testing data
        • large: overfitting
          • more train
          • data augmentaion
          • make model simpler
        • small: 😀
    • 可视化:
      • 当模型的复杂度增加,training loss会越来越小,但是testing loss会先减少后又增大
      • 这时候考虑overfitting或mismatch
    • Optimization Issue
      • 先从简单的模型开始,容易optimization
      • 当deeper network不能获得smaller loss on training data⇒Optimization Issue
  • 2、有的时候在public的测试数据上结果很好,但是在pivate的数据上测试就不行了,主要还是因为可能测试次数过多,模型就会过于依赖public的数据,在实际的情况下效果反而打折扣

    • solution:

      N-fold cross validation

      • 将training set 等价划分为三份三次,其中一份用于validation,每次的位置不同
      • 不同模型对这三次操作,结果取平均值,再用结果最好的模型去测Testing data

2、When Gradient Is Small: Local Minimum and Saddle Point

Optimization fails:

  • 分析:loss not small enough

    • gradient=0,所以导致了优化停止,一般有两种情况,统称为

      critical point:

      • local minima
  • saddle point

    • Which one would be?

      • 使用Taler Series Approximation:用当前点来表示估计周围点
    • 总之,可以根据周围点的状态来判断当前的点是local minima, local maxima还是saddle point

      • 涉及到eigen value,eigen vector⇒计算量较大,实际不使用这种方法
  • local minima Vs saddle point

    • 一维的local minima在二维来看就是saddle point
    • 一般训练的参数有百万千万,那么维度也非常的高,所以大多为saddle point,local minima很不常见

3、Tips for Training: Batch and Momentum

batch:

  • 定义:将所有参数进行划分为多个batch,多次update来完成所有参数的更新gradient
Small Batch Large Batch desc
Speed for one update(no parallel) Faster Slower
Speed for one update(with parallel) Same Same(not too large)
Time for one epoch Slower Faster 训练速度更快
Gradient Noisy Stable
Optimization(training) Better Worse
Generalization(testing) Better

Small Batch更容易进入flat minima,而large Batch更容易进入有sharp minima。 | Worse

当在training上两者效果类似,但是在testing上不一样,就有overfitting的因素了。 | |

Momentum:

  • 参照物理世界,一个小球从高处滚下来,很可能因为惯性逃脱critical point
  • 一般的gradient descent:往Gradient的反方向移动
  • 所以可以给每次movement增加一个movement of last step
    • movement = movement of last step - gadient
    • 或者可以理解为movement是之前所有gradient的一个加权和

总结:2和3—Optimization issue

  • 训练停止处的critical points处gradient=0
  • critical points有两种情况:saddle points or local minima
    • 具体是哪一种可以由Hessian matrix判断
    • 也可以通过Hessian matrix来逃离saddle points
    • local minima is rare
  • Smaller batch size and momentum help escape critical points

4、Tips for Training: Adaptive Learning Rate

  • 首先,Training stuck 不等于Small Gadient(可能是在一个很陡峭的峡谷里来回碰撞,到不了谷底)

  • 多数training在走到critical point之前就已经停止了

  • 这时候考虑learning rate,即update的步长

    • gradient越小,表示越平滑,lr可以大一点;
    • gradient越大,表示越陡峭,lr可以小一点;
    • 单纯地调小learning rate并不能解决问题,因为可能步长太小而一直无法到达
  • 所以,需要动态地修改学习率:

    • 增加分母:

      • Root Mean Sequare:和之前所有的g都有关系,lr会随着时间的增长而变小 ,是所有之前的g的均方开根号
        • 局限:就算同一个参数,它需要的lr也会发生变化
      • 引出RMS Prop:σ_i^t = ρσ_i^{t-1} + (1-ρ)(g_i^t)^2
        • 决定当前算出来的g有多重要
      • 最常用的optimization策略:Adam:RMS Prop + Momentum
    • 修改分子:

      • 使用Root Mean Sequare在一段时间后,一直往同一个方向走,它垂直方向的学习率会变大,会突然爆发,虽然最后会回归

      • 引入learning rate scheduling, 让原先的常数随着时间变化而变化,可以解决爆发的问题

        • Learning Rate Decay:从一个高值开始逐渐减少
        • Warm up:先增加后减小
  • 总结:**learning rate improvement+ momentum**

5、Loss Function: Classification

  • 原先的regression的输出是一个数值,在此基础上进行修改,最后几个步骤也要扩展为向量操作
  • 得到的y要先经过sotfmax做规范化,把数值的范围变成0-1
  • 再计算e,就是y和y_hat之间的距离
    • MSE
    • Cross-entropy 效果更好
    • 说明:改变loss function 也会改变optimization的难度

6、Batch Normalization (optimization tips)

https://www.youtube.com/watch?v=BABPWOkSbLE

  • 背景:
    • 当只有两个dimension时,loss的error surface是一个碗型(椭圆形)的,training可能还是不好做,会发生梯度爆炸的情况,体现在一个w对loss的影响大,而另一个很小。那么是否可以改变error surface的形状,变成一个很正的一个个圆形
  • 分析:
    • 再往里想一层,就是input的feature,每个dimension的值的scale差距比较大,导致了training的不容易
  • 引出:
    • 对feature进行一个normalization,把数值的范围进行一个规范化,可以使梯度下降的速度更快
    • Deep Learning:除了对输入进行normalization,可以在中间层进行多次的normalization,实际操作过程中是分batch进行的所以称作batch normalization
  • testing:
    • 在测试或是实际应用的不是,不能等到集齐一个batch size再进行计算,所以实际pytorch会在training的时候计算moving average of U and 6,在testing的时候可以直接使用,那么每笔新的资料进来都可以直接做一次运算。
  • 效果:
    • 使用了batch normalization后,可以在更短的时间内到达一样的正确率,并且,使用了normalization后,learning rate(步长)可以适当的增大
  • 反思:
    • how does batch normalization help optimization?
      • change the landscape of error surface.

机器学习2021-Deep-Learning
http://example.com/2024/10/11/机器学习入门/机器学习2021-Deep-Learning/
作者
jhxxxxx
发布于
2024年10月11日
许可协议