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

Iul*_*sca 8 artificial-intelligence backpropagation neural-network hessian-matrix

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

lej*_*lot 17

要了解Hessian,首先需要了解Jacobian,并了解Jacobian,你需要理解衍生物

  • 导数是衡量函数值随着参数变化而变化的速度的量度.因此,如果你有函数f(x)= x ^ 2,你可以计算它的导数并获得f(x + t)随着足够小的t变化的速度.这可以让您了解该功能的基本动态
  • 渐变向您展示了多维函数中最大值变化的方向(基于方向导数),因此给出了函数即.g(x,y)= - x + y ^ 2你会知道,最好是最小化x的值,同时强烈地最大化y的值.这是基于梯度的方法的基础,如最速下降技术(用于传统的反向传播方法).
  • 雅可比是另一种泛化,因为你的函数可能有很多值,比如g(x,y)=(x + 1,x*y,xz),因此你现在有2*3个偏导数,每个输出值有一个梯度(2个值中的每一个)因此一起形成2×3 = 6个值的矩阵.

现在,衍生物向您展示了函数本身的动态.但是你可以更进一步,如果你可以使用这种动态来找到函数的最优值,也许你可以做得更好,如果你发现这种动力学的动态,那么 - 计算二阶导数?这正是Hessian的意思,它是你函数的二阶导数矩阵.它捕捉了衍生物的动态,因此变化的变化速度(以何种方向).第一眼看上去似乎有点复杂,但如果你想一会儿就会变得非常清楚.你想走向渐变的方向,但你不知道"多远"(正确的步长是多少).所以你定义了新的,更小的优化问题,你在问"好吧,我有这个渐变,我怎么知道去哪里?" 并使用衍生物(以及衍生物的衍生物形成Hessian)类似地解决它.

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

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

  • 我不明白你为什么说一个人必须先了解雅可比,然后再不谈论它。 (3认同)
  • @lejlot 你能参考一下关于动量的有趣事实吗? (3认同)
  • 我知道使用牛顿方法(Hessian)找到函数的平稳点。但是我仍然不明白如何为神经网络计算Hessian,因为途中有不同的层和不同的激活函数,然后将其应用于权重更新。此外,您没有在答案中解释有关雅可比行列式的任何内容。你是不是想说点什么却忘了说? (2认同)