SGD, BGD初步描述
(原文来自:http://blog.csdn.net/lilyth_lilyth/article/details/8973972,@熊均达@SJTU 做出解释及说明)
梯度下降(GD)是最小化风险函数、损失函数(注意Risk Function和Cost Function在本文中其实指的一个意思,在不同应用领域里面可能叫法会有所不同。解释:@熊均达@SJTU)的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正。
下面的h(x)是要拟合的函数,J(θ)损失函数,θ是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(θ)就出来了。其中m是训练集的记录条数,j是参数的个数。
(2)由于是要最小化风险函数(注意这里用了风险函数,其实就是损失函数。解释:@熊均达@SJTU),所以按每个参数θ的梯度负方向,来更新每个θ
(3)从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度!!所以,这就引入了另外一种方法,随机梯度下降。
@熊均达@SJTU附注1:在BGD中,你需要把所有的样本都考虑,求所有样本处的误差的平方和。而对于SGD,遍历到哪里就是哪里。
批量梯度下降 |
随机梯度下降 |
批量更新算法 |
在线算法 |
经验风险 |
泛化风险 |
可能陷入局部最优(初值选择敏感) |
可能找到全局最优 |
对步长不敏感 |
对步长敏感 |
迭代次数少 |
迭代次数多 |
计算量大 |
计算量不大 |
对于线性回归问题,批量梯度下降和随机梯度下降是如何找到最优解的?
- 批量梯度下降——最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。
- 随机梯度下降——最小化每条样本的成本函数,虽然不是每次迭代得到的成本函数都向着全局最优的方向,但是整体的方向还是向着全局最优解,最终结果往往是在全局最优解附近。具体证明参照【1】
最后附上带有大量干货的斯坦福CS229课程主页网址:http://cs229.stanford.edu/materials.html
有兴趣的同学可以自行查阅,其实网上大部分的资料都是根据这些资料翻译的,但是这些更权威。
参考资料:
- https://hal.archives-ouvertes.fr/file/index/docid/359142/filename/ASCONVEXSET.BASIC.IJPAM.1.pdf
- http://blog.csdn.net/lilyth_lilyth/article/details/8973972
Batch Gradient Descendent (BGD) & Stochastic Gradient Descendent (SGD)
时间: 2024-10-14 07:26:54