老师,随机梯度下降法如何在数学层面上进行理解?

来源:6-6 随机梯度下降法

ShiveryMoon

2019-01-18

对于在视频2分钟处描述的式子,我对这个式子的理解是:它和线性回归的目标函数已经没什么关系了,但它仍然是另一个函数Ji(θ)的梯度,该函数Ji(θ)是具体对第i个样本的损失函数,即 Ji=(yi-y_hati)^2 。每次计算出Ji(θ)的梯度,并向着该梯度的反方向走η的步长得到一个新的θ向量。
形象一点来说就是,每次θ都朝着一个具体的随机点进行一次靠近,最终使得整个J(θ)能够达到极小点的附近,是这个意思吗

写回答

1回答

liuyubobobo

2019-01-18

非常非常非常赞的问题,前途无量。我对你有印象。大佬好:)


首先,你的理解完全正确。只有“每次θ都朝着一个具体的随机点进行一次靠近”这句话表述稍微有些问题。但由于你上面的表述一点儿毛病都没有,所以我相信你是理解了。在随机梯度下降法中,θ每次都朝着让一个样本的损失函数(就是你说的Ji)损失最小的方向迈进一步。


一个很重要的问题是(我相信是你的问题),就是随机梯度下降法为什么收敛。其实,这个问题已经完全超出这个课程的范畴了。其实也一定程度超出了我的知识范畴了>_<


大多数机器学习的教材,对于这个问题,都是一笔带过的。比如大名鼎鼎的“花书”,在介绍这个内容的时候,说的是:

Stochastic gradient descent has many important uses outside the context of deep learning. It is the main way to train large linear models on very large datasets. For a fixed model size, the cost per SGD update does not depend on the training set size m. In practice, we often use a larger model as the training set size increases, but we are not forced to do so. The number of updates required to reach convergence usually increases with training set size. However, as m approaches infinity, the model will eventually converge to its best possible test error before SGD has sampled every example in the training set. Increasing m further will not extend the amount of training time needed to reach the model's best possible test error. From this point of view, one can argue that the asymptotic cost of training a model with SGD is O(1) as a function of m.

http://www.deeplearningbook.org/contents/ml.html 第150页)

粗体字说明了收敛性,但完全没有证明。


实际上,如果深入这个问题,就会明白。其实收敛性从来不是算法的性质,而是函数的性质。或者更准确的说,是函数和算法共同作用后产生的性质。随机梯度下降法是否一定收敛?不一定!收敛速度是否会很快?不一定!当我们固定要研究随机梯度下降法以后,关键就变成了函数满足什么性质。


这份资料:https://arxiv.org/pdf/1606.04838.pdf

是一份非常经典权威的的研究(包含)随机梯度下降法的资料。基本是一本小书。很大的篇幅都在很“数学”的分析随机梯度下降法。你会看到,在这个过程中,其实对函数的分析是非常非常基础的。要指定函数的性质,才能进需后续分析。

这篇文章则是更加专门的针对“何时随机梯度下加法有效”给出了分析:https://arxiv.org/pdf/1801.06159.pdf  但这篇文章其实是上一篇文章的子集。不过包含很多更直观的实验数据:)


在这个问题上,还有几篇经典的文章,但由于不在arxiv上,所以不太容易获取。但以上的参考资料已经足够了:)


上述参考资料中很多对函数的分析,都是凸优化领域的内容。或者是高等数学延展的内容。但整体,不管函数是凸函数还是非凸函数,梯度下降法都能很好的应用。只不过得到的结果的误差的“界”,迭代次数的“界”和最大步长的“界”有区别。


好消息是,在这门课程中,无论是线性回归的损失函数,还是逻辑回归的损失函数,都是严格凸函数,拥有着非常好的性质,随机梯度下降法可以极其快的收敛,得到最有结果。(不要让我证明>_<)


继续加油!:)

14
1
ShiveryMoon
我确实想过这个问题,但我感觉肯定特别麻烦就没再往下想了。谢谢老师提供的资料,我感觉我现在去看应该挺困难的,等以后学习了相关的知识再看吧:)
2019-01-18
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程