反向传播中的 ReLU 导数

ReLU derivative in backpropagation

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

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

我应该写什么来代替 "a*(1 - a)" 来使反向传播起作用?

since ReLU doesn't have a derivative.

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

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

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

从数学的角度来看,它应该是不连续的一半。 自 frouiers 系列以这种方式行事以来,它对一般事物的引用是常见的