在优化神经网络的学习过程时,任何人都可以用一种简单且不那么数学的方式向我解释什么是 aHessian
以及它在实践中是如何工作的?
1 回答
要了解Hessian矩阵,您首先需要了解Jacobian 矩阵,而要了解Jacobian 矩阵,您需要了解导数
- 导数是衡量函数值随着参数的变化而变化的速度。因此,如果你有函数 f(x)=x^2,你可以计算它的导数,并了解 f(x+t) 在足够小的 t 下的变化速度。这使您了解函数的基本动态
- 梯度在多维函数中向您显示最大值变化的方向(基于方向导数),因此给定一个函数,即。g(x,y)=-x+y^2 你会知道,最好是最小化 x 的值,同时强烈地最大化 y 的值。这是基于梯度的方法的基础,例如最速下降技术(用于传统的反向传播方法)。
- Jacobian 是另一种概括,因为您的函数可能有许多值,例如 g(x,y)=(x+1, x*y, xz),因此您现在有 2*3 偏导数,每个输出值一个梯度(2 个值中的每一个)因此形成了一个 2*3=6 个值的矩阵。
现在,导数向您展示了函数本身的动态。但是你可以更进一步,如果你可以使用这个动力学来找到函数的最优值,如果你找出这个动力学的动力学,也许你可以做得更好,所以 - 计算二阶导数?这正是黑森州的是,它是函数的二阶导数矩阵。它捕捉衍生品的动态,因此变化变化的速度(在哪个方向)。乍一看可能有点复杂,但如果你仔细想想它就会变得很清楚。您想朝着渐变的方向前进,但您不知道“多远”(正确的步长是多少)。所以你定义了新的、更小的优化问题,你问“好的,我有这个梯度,我怎么知道要去哪里?” 并使用导数(以及形成 Hessian 的导数的导数)类似地解决它。
你也可以用几何的方式来看待这个——基于梯度的优化用这条线来近似你的函数。您只需尝试在当前点找到最接近您的功能的线,因此它定义了变化的方向。现在,线条非常原始,也许我们可以使用一些更复杂的形状,比如......抛物线?二阶导数,粗麻布方法只是试图将抛物线(二次函数,f(x)=ax^2+bx+c)拟合到您当前的位置。并基于此近似值 - 选择有效步骤。
有趣的事实是,将动量项添加到基于梯度的优化中(在充分条件下)近似于基于 hessian 的优化(并且计算成本要低得多)。