梯度下降,是一种基于搜索的最优化方法,其作用是用来对原始模型的损失函数进行优化,找到使损失函数(局部)最小的参数。
梯度是向量,是多元函数的导数,指向误差值增加最快的方向。我们沿着梯度的反方向进行线性搜索,从而减少误差值,是为梯度下降。
梯度是向量,求梯度就要求导数。在python中,除了自己手动计算以外,还有两个常用的求导方法:Scipy & Sympy
使用向量化的方式编写代码,但是发现在真实数据中效果比较差,这是因为数据的规模不一样,因此在梯度下降之前需要使用归一化
两种梯度下降法:
批量梯度下降法 Batch Gradient Descent
随机梯度下降法 Stochastic Gradient Descent
批量梯度下降法每次对所有样本都看一遍,缺点是慢,缺点是稳定。随机梯度下降法每次随机看一个,优点是快,缺点是不稳定。
其实还有一种中和二者优缺点的方法小批量梯度下降法 MBGD(Mini-Batch Gradient Descent):在每次更新时用b个样本,其实批量的梯度下降就是一种折中的方法,用一些小样本来近似全部。优点:减少了计算的开销量,降低了随机性。
在机器学习领域,随机具有非常大的意义,因为计算速度很快。对于复杂的损失函数来说,随机可以跳出局部最优解,并且有更快的速度。
未完待补充。