一、The problem in optimization
gradient趋于0,到达critical point(临界点)(一)两种情况
- 卡在local minima(局部最小),并不是很常见
- 卡在saddle point(鞍点,微分为0)
二、How to get optimization? (一)单个参数(单维) 【深度学习|李宏毅机器学习2021——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训练和预测效果更好
- large batch的计算时间更快
- small batch的训练和预测效果更好
文章图片
warm up:
文章图片
02-Adagrad: 用微分去调整每一步的学习率,使得recent lr更适应目前图像的斜率情况。
文章图片
其中,
文章图片
03-RMSProp: 调整δ,使recent δ有更多的权重,而不是各个δ均分权重的情况,从而update的步长更大,速度会更快。
文章图片
3. momentum
- vanilla gradient descent(一般的梯度下降):gradient往其反方向调整(因为是减号)
- momentum:gradient方向要结合前一步的方向,这样就不会因为遇到临界点而被stuck。也就是说gradient不是单一的这一步的微分,而是结合了之前所有微分。
不同的w的斜率不同,所以同一个lr很难去满足斜率相差很大的参数更新要求
2.解决办法:
01-Adagrad 不同参数初始化不同的lr,然后分别进行Adagrad
★ 02-Adam=RMSProp+Momentum 同时在步长和方向上调整,solve不同参数不同斜率带来的收敛困难的情况。
★ 03-batch normalization
- 每一层都要做特征标准化,让范围相差很大的x转化为相等的scale。
- 适用于batch size较大的情况,因为batch size小的话,求均值和方差意义不大。
推荐阅读
- 机器学习|Graph Neural Network学习笔记-Day2
- 学习笔记|学习笔记 Graph Neural Network (李宏毅 机器学习)
- 视频分类|VidSage: Unsupervised Video Representational Learning with Graph Convolutional Networks个人论文笔记
- 图表示学习|《Graph Representation Learning》笔记 Chapter5
- GNN|李宏毅助教GNN视频笔记
- GNN|【GNN笔记】Dynamic Graph的分类(16)
- 论文深析|[论]【DSTG】Dynamic SpatiotemporalGraph Convolutional Neural Networks for Traffic Data Imputation
- GCN|几种GNN模型的应用与改进
- 前沿AI技术体验(从文字直接产生图片,结果真的震撼! 非常有意思!)