2021-07 李宏毅机器学习打卡Task05:网络设计的技巧

Task05 网络设计的技巧

学习地址

  • 李宏毅机器学习B站视频地址
  • new: 2021春课程视频地址
  • 李宏毅机器学习开源笔记地址
  • 论坛版块

网络设计的技巧(解决神经网络训练问题)

(一)局部最小值(local minima)与鞍点(saddle point)

  • loss不下降的一个可能原因:卡在了critical point
    critical point 即梯度接近0的点,包括local minima和saddle point
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第1张图片
  • How to do with critical point?
    • if meeting local minima: no way;
    • if meeting saddle point: escape
      How to escape the saddle point?
      理论上,可以通过算出Hessian矩阵的特征值,朝着负特征值对应的特征向量的方向更新即可以escape the saddle point and decrease the loss.

2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第2张图片

  • 如何判断是local minima还是saddle point?
    提示:用到了Taylor 级数近似,此时一阶近似项为0,考虑二阶近似项,最终转化为计算Hessian矩阵,计算其特征值从而判断是否正定
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第3张图片
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第4张图片
  • Saddle point v.s. Local minima
    • local minima 在更高的维度上来看可能就变成 saddle point了
    • 经验上来看,local minima 并没有那么常见
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第5张图片

(二)批次(batch)与动量(momentum)

  • Optimization with Batch

    • 看完每个Batch,计算一次梯度并update参数
    • 如果batchsize=N(full batch),则一个epoch只update一次参数
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第6张图片
  • Small Batch v.s. Large Batch
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第7张图片
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第8张图片

  • large batch size 泛化性能差的一个可能解释:
    large batch 更有可能走到一个比较狭窄的峡谷 local minima里面,这样在测试时,如果测试分布与训练分布有偏移,就会导致大的offset
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第9张图片

  • Momentum

    • 类似物理上给物体一个动量,以防止其卡在local minima 或者saddle point.
    • 具体在gradient descent 时,每次更新参数的方向不仅仅取决于梯度的反方向,还要加上上一步的方向.
  • Gradinet Descent + Momentum
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第10张图片
    实际上,movement就是历史梯度的加权和:
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第11张图片

  • GD + Momentum 的一个直观例子
    可以看到,当到达第一个local minima时,虽然梯度为0,但凭借上一步的movement影响(即动量),仍然会有向右的移动方向
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第12张图片

(三)自动调整学习率(learning rate)

  • Training stuck ≠ \neq = Small Gradient
    训练loss停滞不一定就是走到了 critical point,也有可能是发生了振荡,可以通过查看梯度的大小进行验证
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第13张图片
  • 固定的学习率通常会使training很困难
    • 太大:振荡,到达不了minima(即使是凸函数)
    • 太小:在 minima 附近停滞,慢得难以忍受
    • 如何解决:考虑为不同的参数定制不同的学习率以及自适应调整学习率,简单的直觉上来看,loss function 陡峭的地方学习率应该设置小一点,平的地方学习率应该设置大一点,当然还有其他策略
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第14张图片
  • 学习率优化总结
    • 改进1:Momentum
    • 改进2:Adaptive learning rate
    • 改进3:Learning rate scheduling
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第15张图片
  • Adaptive learning rate(即根据梯度大小自适应调整学习率大小)
    • 方法1:Adagrad(Root Mean Square)

      • 存在问题:没有考虑同一个参数需要的学习率随时间改变的情况,而仅取决于梯度
      • 该版本被后续取代
        2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第16张图片
    • 方法2:RMSProp

      • Adagrad 的改进版本,考虑了时间因素,离当前步越近的梯度给与更大的影响权重
        2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第17张图片
    • 方法3:Adam

      • RMSProp + Momentum
      • 今天最常用的optimizer
      • 论文链接:https://arxiv.org/pdf/1412.6980.pdf
  • Learning rate scheduling
    • 策略1:Learning rate decay
    • 策略2:Warm up (在resnet 和 transformer 里面也有用到)
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第18张图片

(四)损失函数(loss)的影响

  • Classification v.s. Regression
    • Regression: loss 一般取MSE
    • Classification: loss 一般取Cross-entropy
      • ps: 分类问题一般在网络最后一层加上 softmax层
      • pytorch 中,CrossEntropy 自带 softmax 函数,二者是绑定在一起的!无需再在网络中加上 softmax 层
      • 对于二分类而言,softmax 与 sigmoid 是等价的
      • Minimizing cross-entropy 与 maximizing likelihood 是一个东西的两种说法
        2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第19张图片
  • Soft-max
    • 为什么 classification 最后要加 softmax? 从 logistic model 推过来…,简单的解释是要把任意取值的 y Normalize 到 [0, 1]的范围 (骗小孩的说法,具体解释见往年录像)
    • softmax 会让大的值跟小的值差距更大
    • softmax 的输入我们一般叫作 logit
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第20张图片
  • 为什么对于 classification 而言选 cross-entropy 更合适?
    • 不同的 loss function 会改变训练的难度
    • mse 更难训练
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第21张图片

(五)批次标准化(Batch Normalization)

  • Feature Normalization
    见之前文章:2021-07 李宏毅机器学习打卡Task03:误差来源、梯度下降
  • Considering Deep Learning
    • 之前只是对输入层进行scaling,但其实通过中间的权重矩阵相乘后,隐藏层的输入范围也有很大不同,也有必要进行scaling
    • 在激活函数之前还是之后做Normalization 更好?
      • 二者没太大区别
      • 如果是 sigmoid 激活函数,比较推荐在之前做 Normalization ,因为 sigmoid 在0附近梯度比较大
        2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第22张图片
  • Batch Normalization - Training
    • 如果每次都使用所有的输入examples进行normalization,将会是一个large network,所以考虑 a batch 是自然而然的 — Batch Normalization
    • 适用于 batchsize 比较大的时候
    • BN 会使 error surface 更平滑,所以使用 BN 可以适当加大学习率
    • gamma和beta作为超参数被学习
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第23张图片
  • Batch Normalization - Testing
    • 在训练阶段计算 μ 和 σ 的移动平均值,测试时直接拿来用
    • pytorch 上已自动设置
      2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第24张图片
  • other normalization…
    2021-07 李宏毅机器学习打卡Task05:网络设计的技巧_第25张图片

另附Datawhale组队学习—李宏毅机器学习任务安排

任务安排

你可能感兴趣的:(DataWhale组队学习,机器学习,深度学习,机器学习,网络)