一、激活函数是什么?
- 激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。其主要目的是将A-NN模型中一个节点的输入信号转换成一个输出信号。该输出信号现在被用作堆叠中下一个层的输入。
- 激活函数,是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。激活函数对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。在神经元中,输入通过加权、求和之后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。若没有激活函数的每层都相当于矩阵相乘。没有激活函数的神经网络叠加了若干层之后,还是一个线性变换,与单层感知机无异。
二、激活函数的分类
1.激活函数可以分为:饱和激活函数与不饱和激活函数。激活函数的右饱和指当x趋向于无穷时,函数的导数趋近于0。同样的,当x趋向于负无穷时,函数的导数趋近于0,此时称为左饱和。当一个函数既满足右饱和,又满足左饱和,则称为饱和函数,否则称为非饱和函数。
2. 常见的激活函数
- Sigmoid函数
- 双曲正切函数(Tanh函数)
- 线性整流函数(ReLU函数)
- Leakly ReLU函数
- ELU函数
- Parametric ReLU(PReLU)函数
- Softmax函数
- Swish函数
- Maxout函数
- Softplus函数
- Softsign函数
- 高斯误差线性单元(GELUs)
三、为什么要使用激活函数
- 如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
- 如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。