李宏毅《机器学习》学习笔记5.1
2021/7/21 23:36:48
本文主要是介绍李宏毅《机器学习》学习笔记5.1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.Critical Point 的判断和解决
在模型训练过程中,我们可能会遇到模型loss function无法下降的情况,这可能是遇到了critical point。通过Taylor series approximation,我们可以判断某点是否为critical point以及critical point的性质。
通过Taylor series approximation表示该点附近的error surface,通过g(gradient)是否为零可判断当前是否为critical point,通过h(hessian matrix)可判断该点的性质:
- 当h为正定矩阵,该点为local minima
- 当h为负定矩阵,该点为local maxima
- 否则该点为鞍点(saddle point)
saddle point 处理方法
遇到鞍点时,我们可以通过hessian matrix找到下一步的update方向,即hessian matrix的特征向量方向。
在实际情况中,遇到local minima的情况很少,大部分是saddle point。
2.batch and momentum
small batch vs large batch
实际训练过程中,我们不会一次性把所有样本训练完,而是把样本分为n个batch,所有batch训练完成后为完成一个epoch,结束每次epoch后,将不同batch间的数据shuffle形成新的batch。
可能直觉上认为,训练大的batch虽然可以让我们更好把握减小loss function的方向,但比小batch更耗费时间,但引入平行计算后并非如此。按完成一个epoch来计算的话,训练大batch需要的时间更短。
但在training过程中,按照小batch来训练的话表现会更好,这是因为小的batch会为训练过程带来轻微扰动(noisy),而这些小扰动更不容易让模型的训练卡住。
在testing中smaller batch的表现也更好,这是因为更小更多的batch可以让loss function停在更平坦的minima(flat minima),而若是因为使用larger batch停在sharp minima,可能因为testing样本轻微的不同导致损失函数大幅上升。
momentum
momentum即update方向不仅考虑gradient也考虑上一次移动的方向(类似物理中的动量),这样在训练过程中若遇到local minima,则可以通过动量越过当前local minima。
3.adaptive learning rate
训练过程中被卡住不一定是因为遇到了critical point,也可能只是learning rate不合适导致一致无法减小loss function。
root mean square
不同的参数,loss function斜率不同,需要不同的learning rate。通过均方根可将历史梯度作为当前梯度的依据,是梯度大时step小,而梯度小时step大。
RMSProp
可有时一个参数的loss function斜率变化也可能很复杂,时大时小。通过RMSProp可设置当前梯度的权重,让step动态适应当前的梯度。
RMSProp和momentum合在一起称为adam优化方法
learning rate scheduling
但只使用adam方法的话,训练过程中可能会在低斜率方向上长时间积累小梯度,导致step“爆炸”,因此引入learning rate scheduling,原理为训练时间越长,我们离最低点也就越近,step就越小。
总结
\(\eta\)在训练时间上控制学习率,\(m\)通过方向控制step方向,而\(\sigma\)在量级上控制step大小。
这篇关于李宏毅《机器学习》学习笔记5.1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18机器学习与数据分析的区别
- 2024-10-28机器学习资料入门指南
- 2024-10-25机器学习开发的几大威胁及解决之道
- 2024-10-24以下是五个必备的MLOps (机器学习运维)工具,帮助提升你的生产效率 ??
- 2024-10-15如何选择最佳的机器学习部署策略:云 vs. 边缘
- 2024-10-12从软件工程师转行成为机器学习工程师
- 2024-09-262024年机器学习路线图:精通之路步步为营指南
- 2024-09-13机器学习教程:初学者指南
- 2024-08-07从入门到精通:全面解析机器学习基础与实践
- 2024-01-24手把手教你使用MDK仿真调试