姓名:栗琳轲 学号:22011210584 学院:通信工程学院
转载自:https://blog.csdn.net/m0_45447650/article/details/125514798
【嵌牛导读】本文主要介绍一些神经网络中常用的激活函数(Sigmoid、Tanh、ReLU)
【嵌牛鼻子】神经网络;激活函数
【嵌牛正文】
一、激活函数定义
激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端,引入激活函数是为了增加神经网络模型的非线性。
二、为什么使用激活函数
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
三、激活函数的性质
1、非线性:当激活函数是非线性的,一个两层的神经网络就可以基本上逼近所有的函数。但如果激活函数是恒等激活函数的时候,即f(x) = x,就不满足这个性质,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的。
2、可微性:当优化方法是基于梯度的时候,就体现的该本质。
3、单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
4、输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练更加高效,不过这种情况很小,一般需要更小的learning rate。
四、常用的激活函数
激活函数分为两类,饱和激活函数和非饱和激活函数。
饱和激活函数包括sigmoid、tanh;非饱和激活函数包括ReLU、PReLU、Leaky ReLU、RReLU、ELU等。
1、Sigmoid
sigmoid的数学公式为:
其导数公式为:
如下图所示,左图为sigmoid的函数图,右图为其导数图。
特点:它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。
2、Tanh
tanh的数学公式为:
其导数为:
如下图所示,左图为Tanh的函数图,右图为其导数图。
sigmoid与tanh的比较:
1.首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;
2. 在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。
注意:在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。
3、ReLU
ReLU的数学表达式为:
其导数公式为:
如下图所示,左图为ReLU的函数图,右图为其导数图。
特点:解决了梯度消失问题 (在正区间),ReLU的非饱和性可以有效地解决梯度消失的问题, 提供相对宽的激活边界;收敛速度远快于sigmoid和tanh。