在本教程中,您将发现如何从头开始使用Adam优化算法开发梯度下降。完成本教程后,您将知道:
- 梯度下降是一种优化算法,它使用目标函数的梯度来导航搜索空间。
- 可以通过使用称为Adam的偏导数的递减平均值,将梯度下降更新为对每个输入变量使用自动自适应步长。
- 如何从头开始实施Adam优化算法并将其应用于目标函数并评估结果。
教程概述
本教程分为三个部分:他们是:
- 梯度下降
- Adam优化算法
- Adam梯度下降
二维测试问题
Adam的梯度下降优化
Adam可视化
梯度下降
梯度下降是一种优化算法。它在技术上称为一阶优化算法,因为它明确利用了目标目标函数的一阶导数。一阶导数,或简称为“导数”,是目标函数在特定点(例如,点)上的变化率或斜率。用于特定输入。如果目标函数采用多个输入变量,则将其称为多元函数,并且可以将输入变量视为向量。反过来,多元目标函数的导数也可以视为向量,通常称为梯度。
梯度:多元目标函数的一阶导数。
对于特定输入,导数或梯度指向目标函数最陡峭的上升方向。
梯度下降是指一种最小化优化算法,该算法遵循目标函数的下坡梯度负值来定位函数的最小值。梯度下降算法需要一个正在优化的目标函数和该目标函数的导数函数。目标函数f()返回给定输入集合的分数,导数函数f'()给出给定输入集合的目标函数的导数。梯度下降算法需要问题中的起点(x),例如输入空间中的随机选择点。
假设我们正在最小化目标函数,然后计算导数并在输入空间中采取一步,这将导致目标函数下坡运动。下坡运动是通过首先计算输入空间中的运动量来进行的,计算方法是将步长(称为alpha或学习率)乘以坡度。然后从当前点减去该值,以确保我们逆梯度移动或向下移动目标函数。
x(t)= x(t-1)–step* f'(x(t-1))
在给定点的目标函数越陡峭,梯度的幅度越大,反过来,在搜索空间中采取的步伐也越大。使用步长超参数来缩放步长的大小。
步长(alpha):超参数,控制算法每次迭代时相对于梯度在搜索空间中移动多远。
如果步长太小,则搜索空间中的移动将很小,并且搜索将花费很长时间。如果步长太大,则搜索可能会在搜索空间附近反弹并跳过最优值。
现在我们已经熟悉了梯度下降优化算法,下面让我们看一下Adam算法。
Adam优化算法
自适应运动估计算法(简称“Adam”)是梯度下降优化算法的扩展。Diederik Kingma和Jimmy Lei Ba在2014年发表的题为“Adam:随机优化方法”的论文中描述了该算法。Adam旨在加速优化过程,例如减少达到最佳状态所需的功能评估次数,或提高优化算法的功能,例如产生更好的最终结果。这是通过为每个要优化的输入参数计算步长来实现的。重要的是,每个步长都将根据每个变量遇到的梯度(偏导数)自动调整搜索过程的吞吐量。
让我们逐步介绍该算法的每个元素。首先,对于作为搜索一部分而被优化的每个参数,我们必须维持一个矩矢量和指数加权无穷大范数,分别称为m和v(真是希腊字母nu)。在搜索开始时将它们初始化为0.0。