【问题标题】:Backpropagation on Two Layered Networks两层网络上的反向传播
【发布时间】:2018-08-16 17:33:57
【问题描述】:

我一直在关注斯坦福的 cs231n 讲座,并尝试自己完成作业,并在 github 和我的博客上分享这些解决方案。但是我很难理解如何对反向传播进行建模。我的意思是我可以编写模块化的前向和后向传递,但让我困扰的是,如果我有以下模型:Two Layered Neural Network

让我们假设这里的损失函数是一个 softmax 损失函数。在我的模块化 softmax_loss() 函数中,我正在计算关于分数的损失和梯度(dSoft = dL/dY)。之后,当我向后跟踪时,假设 b2,db2 将等于 dSoft*1 或 dW2 将等于 dSoft*dX2(relu 门的输出)。这里的链式法则是什么?为什么 dSoft 不等于 1 ?因为 dL/dL 将是 1 ?

【问题讨论】:

    标签: deep-learning backpropagation


    【解决方案1】:

    softmax 函数是在给定输入 x 的情况下输出一个数字。 dSoft 的意思是您正在计算函数 softmax(x) 相对于输入 x 的导数。然后使用链式法则计算关于最后一层 W 的导数,即 dL/dW = dsoftmax/dx * dx/dW。请注意,x = W*x_prev + b 其中 x_prev 是最后一个节点的输入。因此 dx/dW 只是 x 而 dx/db 只是 1,这意味着 dL/dW 或简单的 dW 是 dsoftmax/dx * x_prev 和 dL/db 或简单的 db 是 dsoftmax/dx * 1。注意这里 dsoftmax/dx是我们之前定义的 dSoft。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-04
      • 2015-03-03
      • 2012-02-21
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      相关资源
      最近更新 更多