Pytorch激活函数之Relu家族:ReLU、LeakyReLU等

昨天在听师弟师妹分享图卷积神经网络一篇paper的时候,看到一个激活函数LeakyReLU,因此萌生了学习一下的想法。

1、为什么需要非线性激活函数?

首先这个问题其实可以拆分成个问题:①为啥需要激活函数?②为啥还是非线性的激活函数?

对于第一个问题来说,在神经网络中,我们增加了激活函数就是想增加模型的学习能力,让表达的能力增强而不只是简单的线性组合。

对于第二个问题来说,因为如果是线性的激活函数,比如y=kx(k≠0),那么经过三层激活以后其实学到的东西很有限,可能仅仅堆叠多个线性层。

总而言之,我们在神经网络中需要非线性的激活函数就是想让每一层学习到的信息足够多,让模型的表达能力增强。

2、非线性激活函数都有哪些?

  • Sigmoid
  • Tanh
  • Sigmoid
  • ReLU
  • LeakyReLU
  • ........

3、ReLu和LeakyReLU的优缺点

①ReLU

Pytorch激活函数之Relu家族:ReLU、LeakyReLU等_第1张图片

优点:解决了梯度消失的问题;计算成本低,函数比较简单。

缺点:会产生Dead Neurons,因此当x<0的时候梯度就变为0,这些神经元就变得无效,这些神经元在后面的训练过程就不会更新

②LeakyReLU

Pytorch激活函数之Relu家族:ReLU、LeakyReLU等_第2张图片n

优点:是ReLU函数的一个变体,解决了ReLU函数存在的问题,α的默认往往是非常小的,比如0.01,这样就保证了Dead Neurons的问题

缺点:由于它具有线性特性,不能用于复杂的分类问题。

以上截图来自https://ml-cheatsheet.readthedocs.io/en/latest/activation_functions.html#leakyrelu

总结:每个激活函数都有其优缺点,虽然LeakyReLU改正了ReLU激活函数存在的问题,但是ReLU激活函数依然是现在非常主流的激活函数。还有两种其它的ReLU变体:①α的值是在某个区间随机的;②α的值是变得。

 

你可能感兴趣的:(Pytorch,激活函数,神经网络,深度学习,人工智能,机器学习,Pytorch)