神经网络参数优化方法的总结

这里总结了各种优化方法,不涉及很多公式,按照各种方法提出的目的递进式地总结,帮助你的理解和记忆。

1. 批量梯度下降(BGD)

记住一点,这个方法每计算一个参数就要用到所有样本。BGD计算所有样本的平方损失和,然后求导,更新参数。更新速度慢,因为要所有样本都带入,计算总损失的梯度,计算速度受样本数量的影响;优点是能够收敛到全局最优,可以并行。

2.随机梯度下降(SGD)

为了让参数收敛的速度更快,那就不要所有样本都拿来更新梯度。怎么做?随机梯度下降按照数据生成分布抽取m个小批量(独立同分布)样本,美好的设想是希望通过计算它们梯度的均值,得到梯度的无偏估计。

while(条件未满足):

        从训练集中抽样m个样本

        for i in m:

                更新梯度(对每个维度都这么做)

end while

从上面的过程详解可以看出,下一个样本的损失计算依赖于前一个样本更新的参数,因为要将上个样本更新的参数代入损失函数,重新计算当前的损失,再求梯度,如此用完m个样本。因为每个点求得的梯度不一定是最优方向,这就引入了一定的随机性。随机性会使学习曲线震荡,因此SGD有必要随着时间的推移逐渐降低学习率(批量梯度则不用,因为既然梯度在快到达最优时会平缓些,那么步长也会跟着减少,不用去调学习率)。

简单地来说,SGD就是牺牲“精度”换“速度”吧。

3.小批量梯度下降(MBGD)

SGD引入噪声源,那么可以结合BGD和SGD做个折中。每次更新用一个小批量m,m比原始数据量小。每个小批量分别代入损失函数,求得总和,计算一次梯度,更新一下参数。

上述总结虽然看起来简单,但是实际上有坑,加粗的是重要细节(稍不慎就可能完全理解错),要学者自己写个简单的线性回归求梯度,然后自己按照上述三种方法模拟,体会一下。

后续继续在本篇追加 参数优化方法,包括动量、自适应学习率的方法、牛顿法和Hessian矩阵与梯度的总结,未完待续。。。。

你可能感兴趣的:(神经网络参数优化方法的总结)