李宏毅机器学习2021——Optimization(最优化)

一、The problem in optimization

gradient趋于0,到达critical point(临界点)

(一)两种情况

  1. 卡在local minima(局部最小),并不是很常见
  2. 卡在saddle point(鞍点,微分为0)

(二)鉴别两种情况

by Taylor Series

二、How to get optimization?

(一)单个参数(单维)

针对一个w在update过程中卡住的问题,可以尝试的改进思路:01-样本量:每次update不取全部的样本,而是取一定量的batch,然后进行不断的shuffle;02-步长:自适应学习率;03-每一步的方向:momentum。

1. batch

batch是hyperparameter,需要尝试调参

large-sized batch small-sized batch
time during one epoch short long
训练和预测的效果 较差 较好
  • epoch:使用训练集的完整数据进行一次训练
  • 由于GPU支持并行计算,所以大的batch反而整体的训练速度会更快
  • 由于大的batch容易遇到stuck停下,而small batch有很多的noise,难以陷入小峡谷停下。所以小的batch训练和预测效果更好

Summary:

  • large batch的计算时间更快
  • small batch的训练和预测效果更好

2. Adaptive learning rate(Adaptive lr)

01-随时间调整lr

decay:
李宏毅机器学习2021——Optimization(最优化)_第1张图片
warm up:
李宏毅机器学习2021——Optimization(最优化)_第2张图片

02-Adagrad:

用微分去调整每一步的学习率,使得recent lr更适应目前图像的斜率情况。
在这里插入图片描述
其中,
在这里插入图片描述

03-RMSProp:

调整δ,使recent δ有更多的权重,而不是各个δ均分权重的情况,从而update的步长更大,速度会更快。
在这里插入图片描述

3. momentum

  • vanilla gradient descent(一般的梯度下降):gradient往其反方向调整(因为是减号)
  • momentum:gradient方向要结合前一步的方向,这样就不会因为遇到临界点而被stuck。也就是说gradient不是单一的这一步的微分,而是结合了之前所有微分。

(二)多个参数(多维)

1.问题:

不同的w的斜率不同,所以同一个lr很难去满足斜率相差很大的参数更新要求

2.解决办法:

01-Adagrad

不同参数初始化不同的lr,然后分别进行Adagrad

★ 02-Adam=RMSProp+Momentum

同时在步长和方向上调整,solve不同参数不同斜率带来的收敛困难的情况。

★ 03-batch normalization

  • 每一层都要做特征标准化,让范围相差很大的x转化为相等的scale。
  • 适用于batch size较大的情况,因为batch size小的话,求均值和方差意义不大。

你可能感兴趣的:(深度学习,深度学习,人工智能,机器学习,神经网络)