计算粗麻布如何用于神经网络学习

时间:2014-04-25 15:22:45

标签: neural-network artificial-intelligence backpropagation hessian-matrix

任何人都可以用一种简单且不太数学的方式向我解释什么是Hessian以及在优化神经网络的学习过程时它在实践中如何运作?

1 个答案:

答案 0 :(得分:13)

要理解 Hessian ,首先需要了解 Jacobian ,并了解雅可比,您需要了解衍生< / em>的

  • 导数是衡量参数变化时函数值变化速度的指标。因此,如果你有函数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 的原因,它是函数的二阶导数矩阵。它捕捉了衍生物的动态,因此变化的变化速度(以何种方向)。第一眼看上去似乎有点复杂,但如果你想一会儿就会变得非常清楚。你想走向渐变的方向,但你不知道&#34;走多远? (正确的步长是多少)。所以你定义了新的,更小的优化问题,在那里你要问&#34;好吧,我有这个渐变,我怎么知道去哪里?&#34;并使用衍生物(以及衍生物的衍生物形成Hessian)类似地解决它。

您也可以用几何方式来看待这一点 - 基于渐变的优化使用线来近似您的功能。您只需尝试在当前点找到最接近您的函数的线,因此它定义了更改方向。现在,线条非常原始,也许我们可以使用一些更复杂的形状,如....抛物线?二阶导数,粗麻布方法只是试图将抛物线(二次函数,f(x)= ax ^ 2 + bx + c)拟合到当前位置。并基于此近似 - 选择有效步骤。

有趣的是,将动量项添加到基于梯度的优化中(在充分条件下)近似于基于粗糙度的优化(并且计算成本更低)。