Datawhale 李宏毅机器学习 Task5

深度学习

    • 1. 优化器失败的原因
      • 探讨: 如何判断是 局部最小值 还是 鞍点 ?
    • 2. 为什么要用 batch ?
      • 大 batch-size 不一定 比小的时间 长
      • 不同 Batch-size 对精度的影响
      • 对比:
    • 3. loss 不降的时候, grad 没有减小
    • 损失函数
    • 批归一化

1. 优化器失败的原因

  • 局部最小值
  • 鞍点

统称为 critical point (梯度接近0)

探讨: 如何判断是 局部最小值 还是 鞍点 ?

(探讨原因: 鞍点可以继续优化)

对 $L(\theta) $ 进行 泰勒展开 ,得到带 一阶导 和 二阶导 的项。
因为 在 critical point (梯度接近0)处 一阶导 等于 0, 所以 只留下 含 Hessian 矩阵的二阶导数项。
移项进行分析, 如果 该

  • 二阶导数项 > 0, Local minima
  • 二阶导数项 < 0, Local maxima
  • 二阶导数项 不定 , Saddle point

但该判断需分析所有输入 V ,结合线代知识,
可通过判定 Hessian 矩阵 是否正定 来 完成上述判断。

扩展: 现在有其他方法,无需计算 Hessian 矩阵 即可判断 critical point 是否为 鞍点。

2. 为什么要用 batch ?

通常情况下,会认为以下结论:

Batch-size 大: 稳定,时间长

Batch-size 小:不稳定, 时间短

(但实际不一定,见下分析)

大 batch-size 不一定 比小的时间 长

在考虑 并行运算时, 大的 Batch-size 在跑完一个epoch 时间比小的少

不同 Batch-size 对精度的影响

为什么 用 大的 batch-size 有问题?

左边的 局部极小值 比 右边 的好

  • 大的 batch-size 会导致我们走向 右边的小峡谷
  • 小的 batch-size 会趋向于左边的位置

对比:

  • 小的batch-size的噪声梯度带来 优化 和 泛化 上的优点
  • 大的batch-size 在一个 epoch 上训练时间 更占优势

batch-size 变成一个重要的超参数

扩展:

(Vanilla) Gradient Descent
一般的 梯度下降

Gradient Descent + Momentum


3. loss 不降的时候, grad 没有减小

卡住的原因: 来回震荡

解决方案:客制化 lr

  • Adagrad

同一个参数同一个方向,希望 lr 也能动态调整

解决:

Warm up 策略

一个解释:开始 走小路, 让 分母的参数获得更多可靠的统计信息

总结:


损失函数

分类问题避免标签距离差?
解决: one-hot

大的值和小的值差的更大
值范围到 0 - 1 之间

二分类 sigmoid 等价于 softmax

交叉熵 和 最大似然估计

批归一化

Datawhale 李宏毅机器学习 Task5_第1张图片

你可能感兴趣的:(Datawhale,组队学习,#,李宏毅机器学习,python,深度学习)