引言:
梯度下降法的在机器学习中的地位:当神经网络使用反向传播算法之后,需要使用最优化算法来减小误差。而在各种最优化算法中,梯度下降法是最简单、最常见的一种,在深度学习的训练中被广泛使用。
最优化问题
求解函数极值的问题,包括极大值和极小值
- 只要函数是可导的,极值点的导数必定为0。
- 其中x称为优化变量,f称为目标函数。极大值问题可以转换成极小值问题来求解,只需要将目标函数加上负号即可:
$$max_xf(x)\equiv{min_x{-f(x)}}$$
导数与梯度
- 多元函数的梯度定义为:
$$\nabla{f(x)=(\frac{\partial{f}}{\partial{x_1}},…,\frac{\partial{f}}{\partial{x_n}})^{T}}$$
其中$\nabla$称为梯度算子,它作用于一个多元函数,得到一个向量。下面是计算函数梯度的一个例子:$\nabla{(x^2+xy-y^2)=(2x+y,x-2y)}$
- 梯度为0只是函数取极值的必要条件而不是充分条件
如何确定驻点是极大值还是极小值?
要看二阶导数/Hessian矩阵:- 如果Hessian矩阵正定,函数有极小值
- 如果Hessian矩阵负定,函数有极大值
- 如果Hessian矩阵不定,则需要进一步讨论
为什么不可以直接求函数的梯度,来解方程?
答:方程可能很难解:对于有指数函数,对数函数,三角函数的方程,我们称为超越方程。比如$3x^2e^{xy}+xcos(xy)=0$。其求解的难度并不比求极值本身小。
推导过程
面临的问题
补充:驻点要求一阶导数必须存在,而极值点对导数没有要求
- 局部极小值点
- 鞍点问题
变种
- AdaGrad(自适应梯度)
- AdaDelta
- Adam(adaptive moment estimation)
- NAG
随机梯度下降法
随机梯度下降法在数学期望的意义下收敛,但并不能保证每次迭代时函数值一定下降。参考与引用