最小二乘法与梯度下降法
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这两篇博文。
梯度下降法分为两类,一类是随机梯度下降法,另一类是批量梯度下降法;
简单的说,二者的区别在于随机梯度下降法是每次迭代计算参数的下降值时只使用一个样本,而批量梯度下降法是每次迭代都会使用所有样本。在样本数量巨大时,使用随机梯度下降法的计算量要优于批量梯度下降。
批量梯度下降法每次迭代都向着全局最优解的方向,而随机梯度下降法噪音较大,不一定每次迭代都向着全局最优解的方向。
随机梯度下降法:先选择一个初始点(每个参数赋初值),用单个样本的代价函数分别对每个参数求偏导数,可以得到n个式子。将第一个样本的值带入每一个式子,可以得到每个参数对应的下降值(n个),用初始值减去下降值,就得到一组新的参数。然后用同样的方式带入第二个样本,会再次得到一组新的参数。不断重复带入新的样本进行迭代,直到先后两个样本计算的参数值的差值进入一定范围。
批量梯度下降法:将所有样本代价函数的和除以样本数量作为代价函数。然后求偏导数进行迭代计算。
附上代码,不知道实现的对不对。
1、最小二乘法
普通的最小二乘法是代价函数对每个参数求偏导数,偏导数为0的点对应代价函数的全局最小值。如果有n个参数,就会得到n个方程式。求解该方程组,就可以得到每个参数的值。只需求解一次,为非迭代算法。2、梯度下降法
梯度下降法为迭代算法,梯度下降法得到有可能是局部最小值,而且初始值的选取对最终的结果影响很大。梯度下降法分为两类,一类是随机梯度下降法,另一类是批量梯度下降法;
简单的说,二者的区别在于随机梯度下降法是每次迭代计算参数的下降值时只使用一个样本,而批量梯度下降法是每次迭代都会使用所有样本。在样本数量巨大时,使用随机梯度下降法的计算量要优于批量梯度下降。
批量梯度下降法每次迭代都向着全局最优解的方向,而随机梯度下降法噪音较大,不一定每次迭代都向着全局最优解的方向。
随机梯度下降法:先选择一个初始点(每个参数赋初值),用单个样本的代价函数分别对每个参数求偏导数,可以得到n个式子。将第一个样本的值带入每一个式子,可以得到每个参数对应的下降值(n个),用初始值减去下降值,就得到一组新的参数。然后用同样的方式带入第二个样本,会再次得到一组新的参数。不断重复带入新的样本进行迭代,直到先后两个样本计算的参数值的差值进入一定范围。
批量梯度下降法:将所有样本代价函数的和除以样本数量作为代价函数。然后求偏导数进行迭代计算。
附上代码,不知道实现的对不对。
相关文章推荐
- strcpy和memcpy的差别
- c++ 读书目录
- poj-3009-Curling2.0
- 如何在审查元素里边找文件位置,求大神帮忙
- Spring加载xml配置文件的方式
- iw工具安装和使用
- 24. Swap Nodes in Pairs
- HDU 4283 You Are the One 区间dp
- 采购批打ME9F
- git使用总结(一)
- POJ_2739_Sum_of_Consecutive_Prime_Numbers_(尺取法+素数表)
- [斜率优化 DP] BZOJ 4518 [Sdoi2016]征途
- UVA-445-Marvelous Mazes
- 表session查询
- Windows Server 2003 r2 系统分配移动硬盘的盘符
- 21. Merge Two Sorted Lists
- Android中利用SurfaceView制作抽奖转盘的全流程攻略
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- 专题二1011
- 【USACO题库】3.3.5 A Game游戏