非线性的最新技术是在深度神经网络中使用整流线性单元(ReLU)而不是 sigmoid 函数。有什么优势?
我知道使用 ReLU 训练网络会更快,而且更具生物启发性,还有什么其他优势?(也就是说,使用 sigmoid 有什么缺点)?
非线性的最新技术是在深度神经网络中使用整流线性单元(ReLU)而不是 sigmoid 函数。有什么优势?
我知道使用 ReLU 训练网络会更快,而且更具生物启发性,还有什么其他优势?(也就是说,使用 sigmoid 有什么缺点)?
ReLU 的另外两个主要好处是稀疏性和减少梯度消失的可能性。但首先回想一下 ReLU 的定义是其中a = Wx + b。
一个主要的好处是梯度消失的可能性降低。当时会出现这种情况。在这种情况下,梯度具有恒定值。相反,随着 x 绝对值的增加,sigmoid 的梯度变得越来越小。ReLU 的恒定梯度导致更快的学习。
ReLU 的另一个好处是稀疏性。当时出现稀疏性。层中存在的此类单元越多,生成的表示就越稀疏。另一方面,Sigmoid 总是可能生成一些非零值,从而导致密集表示。稀疏表示似乎比密集表示更有益。
优势:
坏处:
Sigmoid:倾向于消失梯度(因为有一种机制可以随着“ ”的增加而减小梯度,其中“ ”是 sigmoid 函数的输入。Sigmoid 的梯度: . 当“ ”增长到无穷大时, )。
Relu :倾向于炸毁激活(没有限制神经元输出的机制,因为“ ”本身就是输出)
只是补充其他答案:
消失的渐变
其他答案正确地指出,输入越大(绝对值),sigmoid 函数的梯度越小。但是,可能更重要的影响是 sigmoid 函数的导数总是小于 1。事实上,它最多为 0.25!
不利的一面是,如果你有很多层,你会将这些梯度相乘,并且许多小于 1 的值的乘积会很快变为零。
由于深度学习的最新技术表明更多的层有很大帮助,那么 Sigmoid 函数的这个缺点就是游戏杀手。你不能用 Sigmoid 进行深度学习。
另一方面,ReLu 函数的梯度对于0或对于。这意味着您可以根据需要放置任意数量的层,因为梯度相乘既不会消失也不会爆炸。
除了避免梯度消失问题之外,ReLU 的一个优点是它的运行时间要短得多。max(0,a) 的运行速度比任何 sigmoid 函数(例如逻辑函数 = 1/(1+e^(-a)) 运行得快得多,它使用的指数在经常执行时计算速度很慢)。这对于前馈和反向传播都是正确的,因为与 sigmoid 相比,ReLU 的梯度(如果 a<0,=0 否则 =1)也很容易计算(对于逻辑曲线=e^a/((1+e ^a)^2))。
尽管 ReLU 确实存在细胞死亡的缺点,这限制了网络的容量。为了克服这个问题,如果您注意到上述问题,只需使用 ReLU 的变体,例如leaky ReLU、ELU 等。