梯度的定义
梯度的定义主要出现在多元函数的微分学中,是一个向量场,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
一阶梯度、二阶梯度对应的优化器
一阶梯度优化器主要基于目标函数关于参数的一阶导数(即梯度)来更新参数。这类优化器在深度学习中非常常见,因为它们通常具有较低的计算复杂度和较好的性能。
- SGD(随机梯度下降):最基本的一阶梯度优化器,每次迭代只使用一个样本来计算梯度并更新参数。
- Momentum:在SGD的基础上增加了动量项,利用历史梯度的指数加权移动平均来加速收敛并减少震荡。
- Nesterov Momentum:对Momentum的改进,它在计算当前梯度之前先对参数进行一步预测更新。
- AdaGrad:自适应学习率优化器,对于每个参数,其学习率根据历史梯度的平方和进行自适应调整。
- RMSprop:类似于AdaGrad,但使用指数衰减移动平均来调整学习率,避免了AdaGrad中学习率过早衰减的问题。
- Adadelta:结合了AdaGrad和RMSprop的思想,通过计算一阶动量的指数衰减移动平均来动态调整学习率。
- Adam(适应性矩估计):目前最流行的一阶梯度优化器之一,它结合了Momentum和RMSprop的优点,通过计算梯度的一阶矩和二阶矩的估计来为每个参数设计独立的自适应学习率。
二阶梯度优化器则利用目标函数关于参数的二阶导数(即Hessian矩阵或其近似)来进行参数更新。这类优化器通常能够更快地收敛到最优解,因为它们能够考虑到目标函数的曲率信息。然而,由于二阶导数的计算复杂度较高,且容易遇到数值稳定性和内存消耗等问题,因此在深度学习中的应用相对较少。
- 牛顿法:利用Hessian矩阵的逆来更新参数,能够快速地找到最优解,但计算复杂度较高且需要存储整个Hessian矩阵。
- 拟牛顿法:如BFGS和L-BFGS等,通过迭代地逼近Hessian矩阵或其逆来减少计算量,但仍需要较大的内存和计算资源。
- 二阶优化器的新进展:近年来,研究者们提出了一些新的二阶优化器,如Shampoo等,这些优化器能够更高效地利用二阶梯度信息,并在大规模深度学习模型上展现出优越的性能。然而,由于计算量和内存消耗的限制,这些优化器的普及度仍然不高。