激活函数

理解神经网络中的激活函数:https://zhuanlan.zhihu.com/p/32868602
浅层神经网络:https://blog.csdn.net/TeFuirnever/article/details/101163492

  • Sigmoid
  • tanh
  • ReLU
  • LeakyReLU, PReLU(Parametric Relu), RReLU

1、神经网络为什么需要激活函数:首先数据的分布绝大多数是非线性,而一般神经网络的计算是线性,引入激活函数,是在神经网络中引入非线性,强化网络的学习能力。所有激活函数的最大特点是非线性的。
2、不同的激活函数,根据其特点,应用也不同。Sigmoid和tanh的特点是将输出限制在(0,1)和(-1,1)之间,说明Sigmoid和tanh适合做概率值的处理,例如LATM中的各种门;而ReLU就不行,因为ReLU无最大值限制,可能会出现很大的值。同样,根据ReLUctant的特征,ReLU适合用于深层网络的训练,而Sigmoid和tanh则不行,因为他们会出现梯度消失。
3. 在使用ReLU的网络中,是否还存在梯度消失的问题?梯度衰减银子包括激活函数倒数,此外,还有多个权重连乘也会影响。梯度消失只是表面说法,按照这样理解,底层使用非常大的学习率,或者人工添加梯度噪音,原则上也能回避。

1、Sigmoid函数

σ ( x ) = l o g 1 1 + e − x \sigma(x) = log\frac{1}{1+e^{-x}} σ(x)=log1+ex1
推导:

P ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y P(y;\phi) = \phi^{y}(1-\phi)^{1-y} P(y;ϕ)=ϕy(1ϕ)1y

= e x p ( l n ( ϕ y ( 1 − ϕ ) 1 − y ) ) =exp(ln(\phi^{y}(1-\phi)^{1-y})) =exp(ln(ϕy(1ϕ)1y))
= e x p ( y l n ( ϕ ) + ( 1 − y ) l n ( 1 − ϕ ) ) =exp(yln(\phi)+(1-y)ln(1-\phi)) =exp(yln(ϕ)+(1y)ln(1ϕ))
= e x p ( y l n ϕ 1 − ϕ + l n ( 1 − ϕ ) ) =exp(yln\frac{\phi}{1-\phi}+ln(1-\phi)) =exp(yln1ϕϕ+ln(1ϕ))

对数指数分布族有:
b ( y ) = 1 b(y) = 1 b(y)=1, η = y l n ϕ 1 − ϕ \eta=yln\frac{\phi}{1-\phi} η=yln1ϕϕ, T ( y ) = y T(y)=y T(y)=y, α ( η ) = − l n ( 1 − ϕ ) \alpha(\eta)=-ln(1-\phi) α(η)=ln(1ϕ)

ϕ = 1 1 + e − η \phi = \frac{1}{1+e^{-\eta}} ϕ=1+eη1

Sigmoid函数的优缺点:
优点:平滑,易于求导
缺点:1激活函数计算量大,反向传播求误差梯度时,求导设计出发
2.Sigmoid导数取值范围在[0,0.25]时,由于神经网络的反向传播时的“链式反应”,很容易就会出现梯度消失的情况。例如对于一个10层的网络,根据 0.2 5 10 = 0.000000954 0.25^{10} = 0.000000954 0.2510=0.000000954,第十层的误差相对第一层卷积的参数 W 1 W_{1} W1的梯度将是一个非常小的值,这就是所谓的"梯度消失"。
3、Sigmoid的输出不是0均值(即Zero-centered),这回导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布。

2、tanh函数
tanh为双曲正切函数,其英文读作Hyperbolic Tangent,tanh 和sigmoid相似,都属于饱和激活函数,区别在于输出值范围有(0,1)变为(-1,1),可以吧tanh函数看作是sigmoid向下平移和拉伸后的结果。
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+exexex
即:
t a n h ( x ) = 2 1 + e − 2 x − 1 tanh(x) = \frac{2}{1+e^{-2x}} -1 tanh(x)=1+e2x21

tanh 作为激活函数的优缺点:
1、tanh的输出范围是(-1,1),解决了Sigmoid函数的不是zero-centered输出问题
2、幂运算的问题仍然存在
3、tanh倒数范围在(0,1)之间,相比sigmoid的(0,0.25),梯度消失问题会得到缓和,但仍然还会存在。

3、ReLU函数
ReLU(Rectified Linear Unit)–整流线性单元函数
r e l u = m a x ( 0 , x ) relu=max(0,x) relu=max(0,x)
ReLU的有效倒数是常数1,解决了深层网络中出现的梯度消失问题,也就使得深层网络可训练。同时ReLU又是非线性函数,所谓非线性,就是一阶导数不为常数;对ReLU求导,在输入值分别为正和为负的情况下,导数是不同的,即ReLU的导数不是常数,所以ReLU是非线性的(不光滑)
ReLU在 x > 0 x>0 x>0下,导数为常数1的特点:
导数为常数1的好处就是在“链式反应”中不会出现梯度消失,但梯度下降的强度就完全取决于权值的乘积,这样就可能会出现梯度爆炸问题,解决这类问题:一、控制权值,让他们在(0,1)范围内;二、梯度裁剪,控制梯度下降强度,如 R e L U ( x ) = m i n ( 6 , m a x ( 0 , x ) ) ReLU(x)=min(6,max(0,x)) ReLUx=min(6,max(0,x))
ReLU在 x < 0 x<0 x<0下,输出置为0的特点:
深度学习是根据大批量样本数据,从错综复杂的数据关系中,找到关键信息(关键特征)。换句话说,就是把密集矩阵转化为稀疏矩阵,保留数据的关键信息,去除噪音,这样的模型就有了鲁棒性。ReLU在 x < 0 x<0 x<0输出置为0,就是一个去燥音、稀疏矩阵的过程。而且在训练过程中,这种稀疏性是动态调节的,网络为自动调整稀疏比例,保证矩阵有最优的有效特征。但是ReLU 强制将x<0部分的输出置为0(置为0就是屏蔽该特征),可能会导致模型无法学习到有效特征,所以如果学习率设置的太大,就可能会导致网络的大部分神经元处于‘dead’状态,所以使用ReLU的网络,学习率不能设置太大。
ReLU作为激活函数的特点:

  • 相比Sigmoid和tanh,ReLU摒弃了复杂计算,提高了运算速度。
  • 解决了梯度消失问题,收敛速度快于Sigmoid和tanh函数,但要防止ReLU的梯度爆炸
  • 容易得到更好的模型,但要防止训练中出现模型“Dead”情况

4、Leaky ReLu,PReLU(parametric Relu),RReLU(Random ReLU)
为了防止模型“Dead”情况,后入将 x < 0 x<0 x<0部分并没有直接置为0,而是给了一个很小的负数梯度值 α \alpha α
Leaky ReLU 中的 α \alpha α为常数,一般设置为0.01,这个函数通常比ReLU激活函数效果要好’,但是效果不是很稳定,所以在实际中Leaky ReLU使用的并不多。
PReLU(参数化整流性单元)中 α \alpha α作为一个学习参数,常在训练过程中进行更新。
RReLU(随机整流线性单元)也是Leaky ReLU的一个辩题。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中, α \alpha α是一个均匀的分布在 U ( I , u ) U(I,u) U(I,u)中随机抽取的数值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值