梯度下降和最小二乘法
程序员文章站
2022-07-12 14:10:14
...
梯度下降法
梯度下降法为迭代算法,梯度下降法得到有可能是局部最小值,而且初始值的选取对最终的结果影响很大。
梯度下降法分为两类,一类是随机梯度下降法,另一类是批量梯度下降法;
简单的说,二者的区别在于随机梯度下降法是每次迭代计算参数的下降值时只使用一个样本,而批量梯度下降法是每次迭代都会使用所有样本。在样本数量巨大时,使用随机梯度下降法的计算量要优于批量梯度下降。
批量梯度下降法每次迭代都向着全局最优解的方向,而随机梯度下降法噪音较大,不一定每次迭代都向着全局最优解的方向。
随机梯度下降法:先选择一个初始点(每个参数赋初值),用单个样本的代价函数分别对每个参数求偏导数,可以得到n个式子。将第一个样本的值带入每一个式子,可以得到每个参数对应的下降值(n个),用初始值减去下降值,就得到一组新的参数。然后用同样的方式带入第二个样本,会再次得到一组新的参数。不断重复带入新的样本进行迭代,直到先后两个样本计算的参数值的差值进入一定范围。
批量梯度下降法:将所有样本代价函数的和除以样本数量作为代价函数。然后求偏导数进行迭代计算。
附上代码,不知道实现的对不对。
#include<iostream>
int main()
{
cout << "hello world " << endl;
return 0 ;
}
下一篇: 《STL学习笔记》 -- 常用算法