首页 > 编程知识 正文

梯度公式推导,梯度grad公式推导

时间:2023-05-03 17:44:34 阅读:9361 作者:210

什么引起了消失的梯度问题? 也就是说,深度神经网络中的所谓梯度不稳定性,为了明确为什么会出现消失的梯度,让我们来看看极其简单的深度神经网络:每层只有单个神经元。 下图是一个有三个隐藏层的神经网络。

简单的深度神经网络

在此,是权重、偏置,c是某个成本函数。 回顾一下,来自第j个神经元的输出是其中通常的sigmoid函数,是神经元的加权输入。 我最后给出了成本函数c强调了成本是网络输出a_4的函数。 实际输出越接近目标输出,成本就越低。 相反会变高。

我们来研究一下第一个隐藏神经元的梯度。 我们计算的公式是通过研究公式来理解消失梯度产生的原因。

一开始就简单给定的公式。 一开始看起来有点复杂,但其结构相当简单,以后再说明。 下图显示了具体的公式。

公式的结构如下。 每个神经元都有一个项。 每个权重都有一个项,有些项表示最后的成本函数。 请注意,公式中的每个项目都放在了相应的位置。 所以网络本身就是公式的解读。

您可以直接接受此表达式,并直接跳转该表达式如何与时间梯度问题相关。 这不影响理解。 因为实际上,上式只是前面对BP讨论的特例。 但是,因为也包括对公式的正确解释,去看那个解释也很有趣(可能更有启发性)。

假设你稍微调整了偏差。 这将引起网络中其余元素的一系列变化。 首先,第一个隐藏元输出发生一个变化。 这将导致第二个神经元的加权输入发生变化。 来自第二个神经元的输出发生变化。 这样,最终成本函数发生变化。 在这里:

Paste_Image.png

这表示通过仔细跟踪每个步骤的影响而明确的表达式。

看看它是如何影响第一个神经元的输出的。 因为我们在,所以有

这看起来很熟悉。 其实是我们上面公式的第一项。 直观上,这将偏差的变化转换为输出的变化。 随之,也影响了权利输入:

和的表达式组合显示偏差的变化如何通过网络传输影响z_2

现在,可以看到同样的结果。 得到了公式前面的两个项目。 这样,可以跟踪传播变化的路径。 每个神经元,我们选择一个项,然后每个权重选择一个项。 最终结果是与成本函数中变化的偏差相关的表达式。

除以,确实得到了梯度公式:

写一下为何出现梯度消失坡度的整个公式。

除了最后一项,这个公式是一系列形式的乘积。 为了理解各项的动作,首先来看看以下sigmoid函数导数的图像。

这个导数有时会达到最高。 其中,如果使用标准方法初始化网络中的权重,则使用平均值为0且标准差为1的yjddsj分布。 因此,所有权重通常都得到满足。 有了这些信息,我们就知道有了。 而且,在进行所有这些项的乘积时,最终结果一定会呈指数下降。 项越多,乘积下降越快。 *在这里,敏锐地嗅出了消失的坡度问题的合理说明。

试着与更容易理解、更晚的偏差梯度进行比较。 也可以设定。 当然,这个公式还没有明确给出,但是计算方法是一样的。

比较坡度的公式

两个公式有很多相同的项。 但是,包含了很多两个项目。 因为这些项目都是1/4。 会降到1/16以下。这其实就是消失的梯度出现的本质原因了。

当然,这里不是关于消失坡度微调的严格证明,也不是很正式的论断。 有几个可能的原因。 特别想知道通过训练权重是否会增加。 如果可以的话,项目不是不满足以前的限制吗? 实际上,如果项变大,——超过1,就不会遇到消失的梯度问题了。 其实,此时梯度在我们BP的时候会呈指数级增加。 也就是说,我们遇到了梯度爆炸的问题。 看看梯度爆炸问题梯度爆炸是如何出现的。 这里的例子可能不那么自然。 固定网络中的参数,以确保爆炸梯度。 但是,即使不自然,也不是假设的可能性,而是包含确定产生爆炸梯度的特质。

总共有两个步骤。 首先,将网络权重设定得较大。 例如。 然后,选择偏置,以免项目太小。 这很容易实现。 方法是选择偏置以保证每个神经元的加权输入。 例如,我们希望。 我们做那个就行了。 我们用同样的方法得到其他偏差。 这样就知道所有的项都是相等的。 最终,我们获得了爆炸的梯度。不稳定的梯度问题:最根本的问题其实不是消失的坡度问题或爆炸的坡度问题,而在前一层的坡度是来自后一层的项的乘积。 层次太多的话,本质上就会出现不稳定的场面。

唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。