一、激活函数的作用
激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题
参考:激活函数作用
二、激活函数的性质
(1)单调可微
(2)限制输出值的大小
(3)非线性
三、分类
1.线性函数
方程:f(x)=ax+b
代码:def linear (x,a,b)
return a*x+b
2.sigmoid 函数
函数式:
优点
(1).sigmoid函数输出映射在[0,1]之间,输出还可以被表示作概率,或用于输入的归一化
(2).sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数
缺点
(1).sigmoid也有其自身的缺陷,最明显的就是饱和性。从上图可以看到,其两侧导数逐渐趋近于0
(2).输出分布不均匀,存在偏差
代码:
def sigmoid (x,w=1):
return 1/(1+np.sum(np.exp(-wx))
3.双曲正切函数
函数式:
tanh也是一种非常常见的激活函数。与sigmoid相比,它的输出均值是0,使得其收敛速度要比sigmoid快,减少迭代次数。然而,从途中可以看出,tanh一样具有软饱和性,从而造成梯度消失。
4.Relu 函数
函数式:
可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。
参考:激活函数
5.softmax 函数
主要用于分类问题
函数式:
softmax(x)=exp(x)/sum(exp(x))
代码 :
def Softmax(x):
return np.exp(x)/np.sum(np.exp(x))
四、激活函数的选择
一般隐层选择leak relu,
tanh函数可以代替sigmoid函数注意观察精确度的曲线图
如果使用Relu 函数,梯度下降算法的学习率不能太大,
输出层一般使用softmax获得高概率的输出结果
2019.5.6激活函数
最新推荐文章于 2024-08-06 09:09:59 发布