一般来说,激活函数使网络具有非线性化的作用,在神经网络中,正是由多个网络层接激活函数而使其由足够的非线性拟合的能力。常用的激活函数包括:Sigmoid函数、Tanh函数、Relu函数、Softmax函数、ELU函数(指数线性单元)、SELU函数等等,下面将对前四个函数展开详细的叙述:
- Sigmoid函数
Sigmoid函数的表达式为:
该函数常用于回归问题上,其的值域为(0, 1),x越接近负无穷,其函数值越接近0;越接近正无穷,其函数值越接近1。因此,Sigmoid函数是一个不以0为中心的函数,总是正数,在训练过程中参数的梯度值为同一符号,这样更新的时候容易出现zigzag现象,不容易到达最优值,其作为激活函数的优点有:平滑、易于求导;但是缺点容易出现梯度消失的问题(特别是在反向传播中),因此难以在深层的神经网络完成训练。
- Tanh函数
Tanh函数的表达式为:
该函数的值域为(-1, 1),x越接近负无穷,其函数值越接近-1;越接近正无穷,其函数值越接近1。该函数以零为中心,解决了Sigmoid函数更新权重时容易出现的zigzag现象,但是梯度消失的问题和幂运算的问题仍存在。
- Relu函数
Relu函数的表达式为:
该函数是卷积神经网络里面最常见的激活函数,ReLu在正区间内解决了梯度消失的问题,并且收敛速度快。但是,ReLu函数可能存在梯度爆炸的问题,而且还存在Dead ReLu Problem(即可能存在一些神经元永远不会参与到计算当中,其相应的参数也无法被更新,通常来说,参数的学习率过高可能导致这种情况)。
- Softma函数
Softmax函数是分类任务中最常用的最后一层的激活函数,其的计算方式是将K维的任意实数向量映射到另一个K维的实数向量,并且这个K维向量的和为1,而对于分类任务中,通常每一个数表示一个分类的置信度(即可以理解为该分类的概率)。
Softmax函数的表达式为: