不是所有信息都是有用的,一些只是噪音。激活函数可以帮助神经网络做这种隔离。它激活有用的信息,并抑制无关的数据点。
激活函数有哪些:
1.Sigmoid函数
优点:非线性;输出范围有限,适合作为输出层。 缺点:在两边太平滑,学习率太低;值总是正的;输出不是以0为中心。
适用于:当我们尝试将值分类到特定的类时,使用Sigmoid函数非常理想。
2.tanh函数
解决了sigmoid的大多数缺点,仍然有两边学习率太低的缺点
3.ReLU函数
优点:不会同时激活所有的神经元,这意味着,在一段时间内,只有少量的神经元被激活,神经网络的这种稀疏性使其变得高效且易于计算。
缺点:x<0时,梯度是零。随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。也就是说,ReLU神经元在训练中不可逆地死亡了。
4.Leaky ReLU函数
解决了RELU死神经元的问题
5.Softmax函数
优点:可以处理多分类问题。softmax函数最好在分类器的输出层使用。
更多激活函数,参见参考文献4......
如何选择正确的激活函数?
根据问题的性质,我们可以为神经网络更快更方便地收敛作出更好的选择。
用于分类器时,Sigmoid函数及其组合通常效果更好。
由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
ReLU函数是一个通用的激活函数,目前在大多数情况下使用。
如果神经网络中出现死神经元,那么PReLU函数就是最好的选择。
请记住,ReLU函数只能在隐藏层中使用。
一点经验:你可以从ReLU函数开始,如果ReLU函数没有提供最优结果,再尝试其他激活函数。
参考文献:
1.baijiahao.baidu.com/s?id=1582399059360085084&wfr=spider&for=pc
2.https://blog.csdn.net/huangfei711/article/details/79613024
3.https://www.cnblogs.com/shixiangwan/p/7567017.html