什么是激活函数?

什么是激活函数?

  就是在人工神经网络的神经元上运行的函数,引入激活函数是为了增加神经网络模型的非线性,将非线性特性引入到神经网络中。

为什么要用激活函数

  如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。线性函数能够实现的功能非常有限。
线性函数


  激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
逼近非线性

常用的激活函数有什么

sigmoid


函数公式微分式如下:

优点

易理解,目前不常使用。它把一个实数(输入的连续实值)压缩到0到1之间,当输入的数字非常大的时候,结果会接近1,当输入非常大的负数时,则会得到接近0的结果。(0:几乎没有被激活;1:完全被激活)。

缺点

就会产生梯度消失(梯度为零,神经元权重不再更新,神经元“死亡”)和梯度爆炸的问题,sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不要使用在隐藏层。

tanh



函数公式微分式如下:

优点

进一步弥补了sigmoid的缺点,首先是均值为零,另外可以更快的收敛且可以缓解梯度消失和爆炸的问题。

缺点

仍然有梯度消失和爆炸的问题,在二分类上可能sigmoid更占优势。

ReLU(Rectified Linear Unit)



ReLU函数公式导函数分别为:

优点

  • 在正区间上,解决了梯度消失的问题;
  • 计算迅速,线性关系,只需要计算是否大于零,不存在指数求导等操作;
  • 收敛速度快

缺点

  • ReLU输出不是零平均(以零为中心)
  • 由于负数部分恒为零,会导致一些神经元无法激活
    • 非常不幸的参数初始化,这种情况比较少见
    • learning rate 太高,导致在训练过程中参数更新太大,不幸使网络进入这种状态。

Leaky ReLU

Leaky ReLU 是给所有负值赋予一个非零斜率。是对ReLU函数的一个改进。

函数公式微分公式为:

人们为了解决 Dead ReLU Problem,提出了将 ReLU 的前半段设为 ax 而非0,通常 a = 0.01.理论上来说,Leaky ReLU 有ReLU的所有优点,外加不会有 Dead ReLU 问题,但是在实际操作当中,并没有完全证明 Leaky ReLU 总是好于 ReLU,它的优缺点和ReLU类似。

Softmax

Softmax函数将一个实值向量转换为概率分布。常用在最后一层,用作多分类任务。

函数公式如下:

优点

  • Softmax输出的每个元素值都在(0, 1)范围内,并且它们的和是1。这使得其成为一个很好的概率解释器。
    *它在多分类问题中是非常有用的,尤其是当我们想要得到输入属于每个类别的概率时。

如何选择适合的激活函数

一般我们可以这样:

  1. 首先尝试ReLU,速度快,但是要注意训练的状态(如果是使用 ReLU,那么一定要小心设置learning rate)
  2. 如果ReLU效果欠佳,尝试Leaky ReLU 或者 Maxout 等变种(总体上来讲,训练深度学习网络尽量使用 zero-centered 数据(可以经过数据预处理实现)和 zero-centered输出。所以要尽量选择输出具有 zero-centered 特点的激活函数以加快模型的收敛速度。)
  3. 尝试 tanh正切函数(以零为中心,零点处梯度为1)
  4. Sigmoid tanh 在RMM(LSTM 注意力机制等)结构中有所应用,作为门控或者概率值
  5. 在浅层神经网络中,如不超过四层,可选择使用多种激励函数,没有太大的影响





    参考来源:https://www.cnblogs.com/wj-1314/p/12015278.html
posted @ 2022-10-05 00:01  半度墨水  阅读(927)  评论(0编辑  收藏  举报
Live2D