【问题标题】:ReLU derivative in backpropagation反向传播中的 ReLU 导数
【发布时间】:2017-06-21 21:44:29
【问题描述】:

我打算在使用 ReLU 的神经网络上进行反向传播。 在我之前的一个项目中,我是在使用 Sigmoid 激活函数的网络上进行的,但现在我有点困惑,因为 ReLU 没有导数。

这里是image,关于 weight5 对总误差的影响。 在本例中,如果我使用 sigmoid 函数,则 out/net = a*(1 - a)。

我应该写什么而不是“a*(1 - a)”来使反向传播起作用?

【问题讨论】:

  • 取决于实际的 ReLU 表达式。有几种 ReLU 可以使用。然而,它只是 ReLU 函数对其参数的导数。您可以手动或使用例如计算。沃尔夫阿尔法。或者只是谷歌它。

标签: neural-network backpropagation sigmoid relu


【解决方案1】:

relu 导数可以用 np.heaviside 阶跃函数来实现,例如np.heaviside(x, 1)。第二个参数定义了 x = 0 时的返回值,所以当 x = 0 时,1 表示 1。

【讨论】:

    【解决方案2】:

    Relu 导数对于 x >= 0 为 1,对于 x

    【讨论】:

      【解决方案3】:

      因为 ReLU 没有导数。

      不,ReLU 有导数。我假设您正在使用 ReLU 函数f(x)=max(0,x)。这意味着如果x<=0 然后f(x)=0,否则f(x)=x。在第一种情况下,当x<0 所以 f(x) 对 x 的导数给出结果f'(x)=0。第二种情况,很明显计算f'(x)=1

      【讨论】:

      • 我感觉这将成为解决方案,但我不确定,尤其是关于 f'(x)=0。谢谢你的回答:)
      • 我只想说,从纯数学的角度来看,OP 是正确的,即“ReLU 没有导数”。这是正确的,因为其域中的一个点使导数未定义。如果我们只是将函数可视化,这很容易看出。但是我们只是采用了一个约定(即导数在 x=0 时为 0)并假设函数是可微的,但这并不严格。
      • 嗨,我有一个问题。 ReLU 在 x
      猜你喜欢
      • 2019-03-18
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2016-05-13
      相关资源
      最近更新 更多