您的位置:首页 > 其它

最小二乘法与梯度下降法

2016-04-23 10:04 330 查看
最近在网易公开课上学习Andrew Ng教授的机器学习课程,从第二讲开始就云里雾里了。虽然讲的数学概念和公式都很眼熟,但是具体的内容又说不上来。最让我疑惑的是最小二乘法和梯度下降法,这些里边都用到了代价函数/损失函数,并对其求偏导数。到底有什么区别一直没有太搞清楚。本着打破沙锅问到底问到底的精神,在网上各种搜索,貌似已经搞明白了。还要感谢http://blog.csdn.net/lotus___/article/details/20546259和http://blog.csdn.net/lilyth_lilyth/article/details/8973972这两篇博文。

1、最小二乘法

普通的最小二乘法是代价函数对每个参数求偏导数,偏导数为0的点对应代价函数的全局最小值。如果有n个参数,就会得到n个方程式。求解该方程组,就可以得到每个参数的值。只需求解一次,为非迭代算法。

2、梯度下降法

梯度下降法为迭代算法,梯度下降法得到有可能是局部最小值,而且初始值的选取对最终的结果影响很大。

梯度下降法分为两类,一类是随机梯度下降法,另一类是批量梯度下降法;

简单的说,二者的区别在于随机梯度下降法是每次迭代计算参数的下降值时只使用一个样本,而批量梯度下降法是每次迭代都会使用所有样本。在样本数量巨大时,使用随机梯度下降法的计算量要优于批量梯度下降。

批量梯度下降法每次迭代都向着全局最优解的方向,而随机梯度下降法噪音较大,不一定每次迭代都向着全局最优解的方向。

随机梯度下降法:先选择一个初始点(每个参数赋初值),用单个样本的代价函数分别对每个参数求偏导数,可以得到n个式子。将第一个样本的值带入每一个式子,可以得到每个参数对应的下降值(n个),用初始值减去下降值,就得到一组新的参数。然后用同样的方式带入第二个样本,会再次得到一组新的参数。不断重复带入新的样本进行迭代,直到先后两个样本计算的参数值的差值进入一定范围。

批量梯度下降法:将所有样本代价函数的和除以样本数量作为代价函数。然后求偏导数进行迭代计算。

附上代码,不知道实现的对不对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: