梯度下降?简单描述梯度下降算法
一、共轭梯度法与梯度下降法的区别
算法不同。
共轭梯度法主要用来解决线性方程组求解,转化成二次优化最小值问题。他的一些比较好的性质都是关于目标是quadratic来说的,比如n次收敛、一些迭代格式等;梯度下降普适性更强一点,线性收敛,全局收敛,但是收敛的过程会很扭曲可能。
共轭梯度法在空间寻找一组basis,然后把优化问题完全分解成n个等价的子问题(expandedsubplaneminimizer),用n个局部最优可以合成一个全局最优。也就是说,他会在basis中的每个方向都尽可能走到最好,对于二次的目标函数步长都是解析的(对梯度下降也是一样),几何上的解释位:在每个方向均走到与梯度正交的位置再选择新的共轭方向;梯度下降只是选择当前下降最快的方向去走,迭代过程会很长,只能保证一个渐进的收敛性。
二、梯度下降法是让什么下降
梯度下降法是高度下降
三、随机梯度下降算法是什么
随机梯度下降算法是基于梯度下降法中最原始的方法——批量梯度下降法(BGD)的缺点而演变出的改良。
在训练过程中常见的损失函数为:
批量梯度下降法(BatchGradientDescent,简称BGD)的方法是先求偏导,再用每个θ各自的梯度负方向依次更新每个θ:
它的效果如图:
可以看出是一种思路简单、易于实现的算法,并且在较少迭代次数的情况下就可以得到全局最优解,但是每次迭代都要调用全部数据,如果样本数量(上面式子中的m)较大,将会导致计算极其慢。基于这一缺点,随机梯度下降法(StochasticGradientDescent,简称SGD)被提出。它不再每次迭代都用上所有样本,而是每次迭代仅仅对一个样本进行更新,从而达到对于数量庞大的样本只需使用其中的相对少量就把θ最优化的目的。它的方法是在改写损失函数之后,θ的更新是基于每个样本对theta求偏导后所得梯度:
相比BGD算法SGD算法速度大幅提升,几十万条样本基本只需要用上万或者只要上千条样本就饿可以得到结果。但是SGD伴随更多噪音、最优化方向准确度下降的问题。效果如下图,可以看出相比于BGD,SGD迭代次数显著增加,并且并不是每一次迭代都是向着最优化方向。同时,SGD算法在实现难度上不如BGD算法简单。
虽然理论上BGD比SGD得到全局最优,但是在生产场景中,并不是每一个最优化问题中的目标函数都是单峰的,反而是sgd更容易跳出局部最优。