繁体   English   中英

澄清NN残留层反向传播推导

[英]Clarification on NN residual layer back-prop derivation

我四处张望,找不到任何可以解释残余层反向传播的实际推导的内容。 这是我的最佳尝试,也是我遇到的困难。 值得一提的是,我希望得到的推导是从通用角度出发的,不必局限于卷积神经网络。

如果用于计算常规隐藏层输出的公式为F(x),则具有剩余连接的隐藏层的公式为F(x)+ o,其中x是上一层的权重调整输出,o为上一层的输出,F是激活函数。 为了在反向传播过程中获得正常层的增量,需要计算输出的梯度F(x)/ x。 对于残差层,这是∂(F(x)+ o)/∂x,可分为∂F(x)/∂x+∂o/∂x(1)。

如果所有这些都是正确的,那么如何处理∂o/∂x? 在我看来,这取决于o的网络距离。

  • 如果o刚好来自上一层,则o * w = x其中w是将上一层连接到F(x)层的权重。 取相对于o的每一边的导数得到∂(o * w)/∂o=∂x/∂o,结果是w =∂x/ do,它只是在(1 ) 以上。 在这种情况下,残留层的梯度仅为∂F(x)/∂x+ 1 / w有意义吗? 将1 / w解释为矩阵逆是否准确? 如果是这样,那是使用残差连接的NN框架实际计算出来的,还是有一些捷径可用来添加残差中的错误?

  • 我认为,如果o来自网络的另一端,则推导会变得稍微复杂一些。 这是一个示例,其中残差来自网络中更远的一层。 网络体系结构是Input--w1-L1-w2--L2--w3--L3-Out,具有从L1到L3层的剩余连接。 为了明确起见,第一个示例中的符号o被图层输出L1取代。 我们正在尝试计算反向传播过程中L3处的梯度,该函数具有F(x)+ L1的正向函数,其中x = F(F(L1 * w2)* w3)。 此关系的导数为∂x/∂L1=∂F(F(L1 * w2)* w3 /∂L1,这虽然更复杂,但似乎在数值上求解起来并不难。

如果上述推导是合理的,则值得注意的是,在某些情况下推导失败,即当残余连接源自输入层时。 这是因为无法将输入分解为ao * w = x表达式(其中x为输入值)。 我认为这必须表明残余层不能源自输入层,但是由于我已经看到了具有源自输入的残余连接的网络体系结构图,因此上述推论令人怀疑。 我看不到哪里出了问题。 如果有人可以提供一个派生或代码示例来说明他们如何正确计算残留合并点处的梯度,我将不胜感激。

编辑:

我的问题的核心是,当使用残差层并进行香草反向传播时,在添加残差的层上是否对误差进行了特殊处理? 由于在残差来自的层和添加残差的层之间存在“连接”,是否需要在该“连接”上向后分配错误? 我的想法是,由于残留层从网络的开始到较深的层都提供原始信息,因此较深的层应为较早的层提供原始错误。

根据我所看到的内容(阅读可谷歌论坛的前几页,阅读基本文章并观看视频讲座)和下面的Maxim帖子,我开始认为答案是∂o/∂x= 0,我们将o视为常数。

在带有残留层的NN反向传播过程中,有人做任何特别的事情吗? 如果不是,那么这是否意味着残留层仅在前向通道上是网络的“活跃”部分?

我认为您使残留网络有些复杂化了。 这是何凯明等人的原始论文链接。

在第3.2节中,他们将“身份”快捷方式描述为y = F(x, W) + x ,其中W是可训练的参数。 您可以看到为什么将其称为“身份”:上一层的值按原样添加,而无需进行任何复杂的转换。 这有两件事:

  • 简而言之, F现在学习残差y - x (在3.1中讨论):它更容易学习。
  • 网络与上一层建立了额外的连接,从而改善了梯度流。

通过标识映射的向后流动是微不足道的:错误消息不变地传递,不涉及逆矩阵(实际上,它们不涉及任何线性层 )。

现在,论文作者走得更远,考虑了F的稍微复杂一点的版本,它改变了输出尺寸(可能您已经想到了)。 他们通常将其写为y = F(x, W) + Ws * x ,其中Ws投影矩阵 请注意,尽管它被写为矩阵乘法,但实际上它非常简单:它将额外的零添加到x以使其形状更大。 您可以在这个问题中阅读有关此操作的讨论。 但这并没有改变向后的变化:错误消息只是被裁剪为x的原始形状。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM