机器学习

李宏毅《机器学习》学习笔记5.1

本文主要是介绍李宏毅《机器学习》学习笔记5.1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.Critical Point 的判断和解决

在模型训练过程中,我们可能会遇到模型loss function无法下降的情况,这可能是遇到了critical point。通过Taylor series approximation,我们可以判断某点是否为critical point以及critical point的性质。
image
通过Taylor series approximation表示该点附近的error surface,通过g(gradient)是否为零可判断当前是否为critical point,通过h(hessian matrix)可判断该点的性质:
image

  • 当h为正定矩阵,该点为local minima
  • 当h为负定矩阵,该点为local maxima
  • 否则该点为鞍点(saddle point)

saddle point 处理方法

image
遇到鞍点时,我们可以通过hessian matrix找到下一步的update方向,即hessian matrix的特征向量方向。
image
在实际情况中,遇到local minima的情况很少,大部分是saddle point。

2.batch and momentum

small batch vs large batch

image
实际训练过程中,我们不会一次性把所有样本训练完,而是把样本分为n个batch,所有batch训练完成后为完成一个epoch,结束每次epoch后,将不同batch间的数据shuffle形成新的batch。
image
image
image
可能直觉上认为,训练大的batch虽然可以让我们更好把握减小loss function的方向,但比小batch更耗费时间,但引入平行计算后并非如此。按完成一个epoch来计算的话,训练大batch需要的时间更短。
image
image
但在training过程中,按照小batch来训练的话表现会更好,这是因为小的batch会为训练过程带来轻微扰动(noisy),而这些小扰动更不容易让模型的训练卡住。
image
在testing中smaller batch的表现也更好,这是因为更小更多的batch可以让loss function停在更平坦的minima(flat minima),而若是因为使用larger batch停在sharp minima,可能因为testing样本轻微的不同导致损失函数大幅上升。

momentum

imageimage
momentum即update方向不仅考虑gradient也考虑上一次移动的方向(类似物理中的动量),这样在训练过程中若遇到local minima,则可以通过动量越过当前local minima。

3.adaptive learning rate

image
训练过程中被卡住不一定是因为遇到了critical point,也可能只是learning rate不合适导致一致无法减小loss function。

root mean square

image
image
image
不同的参数,loss function斜率不同,需要不同的learning rate。通过均方根可将历史梯度作为当前梯度的依据,是梯度大时step小,而梯度小时step大。

RMSProp

image
image
可有时一个参数的loss function斜率变化也可能很复杂,时大时小。通过RMSProp可设置当前梯度的权重,让step动态适应当前的梯度。
image
RMSProp和momentum合在一起称为adam优化方法

learning rate scheduling

image
但只使用adam方法的话,训练过程中可能会在低斜率方向上长时间积累小梯度,导致step“爆炸”,因此引入learning rate scheduling,原理为训练时间越长,我们离最低点也就越近,step就越小。

总结

image
\(\eta\)在训练时间上控制学习率,\(m\)通过方向控制step方向,而\(\sigma\)在量级上控制step大小。

这篇关于李宏毅《机器学习》学习笔记5.1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!