【问题标题】:Regarding to backward of convolution layer in Deep learning关于深度学习中卷积层的后向
【发布时间】:2017-06-17 17:29:12
【问题描述】:

我了解在深度学习中计算前向部分的方法。现在,我想了解落后的部分。我们以X(2,2) 为例。 X(2,2)位置的后退可以计算如下图

我的问题是公式中的dE/dY(如dE/dY(1,1),dE/dY(1,2)...)在哪里?第一次迭代如何计算?

【问题讨论】:

    标签: image-processing computer-vision deep-learning caffe


    【解决方案1】:

    简短回答

    这些术语在幻灯片底部的最终扩展中;它们有助于 dE/dX(2,2) 的总和。在您的第一次反向传播中,您从最后开始并向后工作(因此得名)- Y 值是真实标签。计算它们就这么多。 :-)

    长答案

    我会用更抽象、更自然的语言来表述这一点。我希望替代解释能帮助您了解全局并整理数学。

    您从分配的权重开始训练,这些权重可能与基本事实(标签)完全相关,也可能完全不相关。你盲目地前进,根据对这些权重的天真信念在每一层进行预测。 Y(i,j) 值是该信念产生的元像素。

    然后你打到最后的标签。你向后工作,调整每个重量。请注意,在最后一层,Y 值是真实标签。

    在每一层,您在数学上处理两个因素:

    1. 这个预测离我们有多远?
    2. 此参数对预测的影响有多大?

    您通过“off * weight * learning_rate”调整 X 到 Y 的权重。 当您完成第 N 层的操作后,您将返回第 N-1 层并重复。

    进步

    无论您使用固定值还是随机值初始化权重(我通常推荐后者),您都会注意到在早期迭代中确实没有太大进展。由于这是对猜测权重的缓慢调整,因此需要多次迭代才能在最后一层获得一些有用的学习。在这一点上,第一层仍然毫无头绪地颠簸。损失函数将在接近其初始值附近反弹一段时间。例如,使用 GoogLeNet 的图像识别,这种甩动会持续大约 30 个 epoch。

    然后,最后,您在后面的层中获得了一些有效的学习,模式足够稳定,以至于一些一致性渗透回早期层。此时,您会看到损失函数下降到“定向实验”级别。从那里开始,进展在很大程度上取决于问题的范式和结构:一些急剧下降,然后逐渐收敛;其他的下降更为缓慢,几乎是指数衰减到收敛;随着中期或早期阶段“站稳脚跟”,更复杂的拓扑结构会出现额外的急剧下降。

    【讨论】:

    • 感谢 Prune。我不认为Y 是真实标签。它是卷积层的输出为Y=conv(X,kernel),或数学为Y=W.X。因此,应用链式法则dE/dX=dE/dY x dY/dX=dE/dY x W,其中 E 是最后一层的损失函数。要计算dE/dY,我认为我们需要再次应用链式法则来表达它。但是在 caffe 工具中,我看到它使用了 diff 术语。我不确定我的理解。你可以在1drv.ms/p/s!ArG9tn58GyvBge5DZXYiy3Wj39k4Ew1drv.ms/p/s!ArG9tn58GyvBge5JDI_SkvbMBiMEiQ观看讲座
    • 我已经完成了课程。 :-) 我的观点是,在第一层反向支持中,基本事实预测。此后,每一层都通过将链式规则应用于下一层来计算值,因此我们始终拥有来自前一个反向支持应用程序的那些值。这是否清楚,还是我需要找时间观看讲座并重新定义我脑海中的符号系统?
    • 没有。你说的对。我只是误解了你的意思。我查看了卷积层源代码并用数学分析了它。让我们在stackoverflow.com/questions/41995536/…看到它
    猜你喜欢
    • 1970-01-01
    • 2016-04-15
    • 2020-03-06
    • 1970-01-01
    • 2021-07-31
    • 2019-06-28
    • 2018-08-20
    • 2014-06-03
    • 1970-01-01
    相关资源
    最近更新 更多