为什么要对神经网络使用梯度下降?


22
  1. 当使用反向传播算法训练神经网络时,使用梯度下降法确定权重更新。我的问题是:与其使用梯度下降法相对于某个权重缓慢地定位最小点,不如我们只设置导数,并找到将误差最小化的权重的值?d错误dw=0w

  2. 另外,为什么我们可以确定反向传播中的误差函数将是最小的?难道不是错误函数是最大值?压扁函数是否具有特定的特性,可以保证具有任意数量的具有任意权重和输入矢量的隐藏节点的网络将始终提供具有某些最小值的误差函数?


2
所有大写字母的标题都不是标准的(请您环顾四周),此处和其他地方因不受欢迎的喊话而被广泛弃用。
尼克·考克斯

@Nick Cox我的道歉
Minaj

有趣的是,每当在机器学习模型中使用隐藏变量或潜在变量时,优化(几乎是?)总是会变得非线性,不凸且更难于优化。
Vladislavs Dovgalecs 2015年

Answers:


30
  1. 因为我们不能。作为权重的函数的优化曲面是非线性的,对于。小号wwd小号wdw=0

  2. 根据定义,梯度​​下降是下降的。如果下降后到达静止点,则它必须是(局部)最小值或鞍点,但绝不能是局部最大值。


如果该函数是凹面的,则由于只能通过向下的方法,因此像面的梯度将永远下降。您是说错误表面一定不会凹吗?同样,我不清楚为什么误差函数的导数没有封闭形式的解决方案。形式为的错误不是K是常数吗?该函数看起来相当可区分,并且所得到的表达式可以解析。请帮我澄清一下,因为我显然看不到某些东西。ķ-1个1个+ËΣwX
米娜吉

8
这不可能发生,因为所有常用的误差函数的理论最小值都严格为0。误差永远不会变为负值。
马克·克莱森

2
对1.的另一种可能解释是“这就是我们所做的,该方程式是使用梯度下降法求解的”。
马修·德鲁里

1
显然存在梯度的封闭形式(这就是我们有效进行梯度下降的方式)。问题不在于梯度= 0的闭合形式根
seanv507 2015年

我要说的是@ seanv507,对于造成的混乱,我们深表歉意。编辑了我的帖子。
马克·克莱森

10

关于马克·克莱森(Marc Claesen)的答案,我相信在您初始化为局部最大值或由于运气不好或速率参数错误而恰好结束时,梯度下降可能会在局部最大值处停止。局部最大值将具有零梯度,并且算法将认为它已经收敛。这就是为什么我经常从不同的起点运行多次迭代并一直跟踪值的原因。


1
我已经删除了您的序言部分的评论,因为您似乎已经吸引了一些支持!欢迎光临本站!
马修·德鲁里

谢谢!我不确定应该是评论还是答案,也不希望仅凭此就我的第一个答案被遗忘。
Jared Becksfort 2015年

6

在牛顿类型的方法中,每一步都将求解为线性或近似版本的问题。然后,将问题围绕新点线性化,然后重复该过程,直到收敛为止。有人为神经网络做过,但是它有以下缺点,d错误dw=0

  • 一个需要处理二阶导数(Hessian,特别是Hessian向量乘积)。
  • “求解步骤”在计算上非常昂贵:在进行求解所需的时间中,本可以进行多次梯度下降迭代。

如果一个人使用Krylov方法进行Hessian求解,而一个人没有使用好的预处理器进行Hessian求解,则成本将大致平衡-牛顿迭代花费更长的时间,但取得了更大的进步,总时间约为与梯度下降相同或更慢。另一方面,如果一个人拥有良好的Hessian前置条件,那么牛顿的方法将大获成功。

就是说,信任区域的Newton-Krylov方法是现代大规模优化中的金标准,而且我只希望在未来几年中随着人们想要解决越来越大的问题,它们在神经网络中的使用会增加。(而且随着越来越多的数值优化人员对机器学习产生兴趣)


我想你错了。自90年代以来,人们一直在使用nnet,并且他们非常了解二阶方法。问题恰恰在于,当有大量数据时,nnets会成功,从而支持许多参数,在这种情况下,二阶方法的时间和内存约束无效。参见例如leon.bottou.org/publications/pdf/compstat-2010.pdf
seanv507

@ seanv507不是。该论文中对二阶方法的讨论存在很多缺陷,因为它们假定必须使用一阶方法构造并求逆整个密集的黑森州。这根本不是现代大规模数值优化中的方法。在现代的二阶方法中,一种方法是通过求解伴随问题来计算Hessian对矢量的作用,并在迭代(Krylov)求解器中使用它们。通常,第一次内部迭代返回梯度方向,随后的迭代对其进行改进。
Nick Alger 2015年

尽管我不是该论文的特别拥护者,但我认为并非如此。他之前已经讨论过/实现了对角线和粗略的粗麻布近似。Pearlmutter在1994年发表的论文中,用hessian快速精确乘法又如何呢?
seanv507

对。一旦有了快速的Hessian应用程序(无论是通过Pearlmutter还是通过其他工具),就可以使用共轭梯度之类的Krylov方法进行不精确的Hessian解。这样一来,人们就可以有效地将不适条件从非线性迭代优化器转移到线性代数迭代求解器上,在那里人们可以使用很多机器和预处理技术来解决该问题。一个很好的参考是Nocedal和Wright在经典的“数值优化”中有关信任区域CG-Steihaug的部分。
尼克·阿尔杰

我的观点是,自1994年以来,nnets社区就已经知道这种由粗麻布和共轭梯度相乘的方法。因此,我相信使用SGD而不是使用二阶方法绝对是有原因的(我当然想清楚为什么要使用SGD )
seanv507
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.