在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练。其实,常用的梯度下降法还具体包含有三种不同的形式,它们也各自有着不同的优缺点。
1.批量梯度下降法BGD
现在下面以LR算法为例对这三种算法从原理到代码进行讲解
由LR算法可知LR算法的损失函数为
损失函数J(θ)最小值时的θ则为要求的最佳参数。通过梯度下降法求最小值。θ的初始值可以全部为1.0,更新过程为:
其中(j表样本第j个特征(属性),共n个特征,alfa表示步长每次移动量大小可自由指定)
下面是偏导的求导过程:
结果:
代码
我们每一次的参数更新都用到了所有的训练数据(比如有m个,就用到了m个),如果训练数据非常多的话,是非常耗时的。
下面给出批梯度下降的收敛图:
从图中,我们可以得到BGD迭代的次数相对较少。
随机梯度下降法SGD
由于批梯度下降每跟新一个参数的时候,要用到所有的样本数,所以训练速度会随着样本数量的增加而变得非常缓慢。随机梯度下降正是为了解决这个办法而提出的。它是利用每个样本的损失函数对θ求偏导得到对应的梯度,来更新θ: