一、Sigmoid激活函数
Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。
在深度学习中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到[ 0 , 1 ] [0, 1][0,1]之间。
Sigmoid函数的导数可以用其自身表示:
Sigmoid函数及其导数的图像:
Sigmoid激活函数对每一层激活值a的输出值都在[0, 1]之间。但假若我们想要将a取更大的正值来量化每一层的输出结果,则可以换成不同的激活函数。
二、ReLU激活函数
· 采用sigmoid等函数,算激活函数时(指数运算),计算量大。
· 对于深层网络,sigmoid函数反向传播时,很容易就会出现 梯度消失 的情况。
梯度消失:在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失
· ReLu会使一部分神经元的输出为0,这样就造成了 网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
Relu函数表达形式如下:
Relu函数图像:
三、选择激活函数
1. 根据功能选择激活函数
· Sigmoid函数:处理二元分类问题;
· 线性激活函数:处理输出值可升可降类问题;
· ReLU激活函数:处理输出值永不为负的问题;
2. 根据各激活函数的优缺点做权衡
对于输出层:
· Sigmoid函数:
优点:非线性;输出范围有限,适合作为输出层。
缺点:在两边太平滑,学习率太低,梯度下降效率低;输出不是以0为中心。
· ReLU函数:
优点:不会同时激活所有的神经元,高效且易于计算。
缺点:x<0时,梯度是零。随训练的进行,可能有神经元死亡,权重无法更新。
· Softmax函数:
优点:可以处理多分类问题。
对于隐藏层:
· 建议只使用ReLU函数作为默认激活函数