关于深度学习中激活函数的认识

线性模型是机器学习中最基本也是最重要的工具,它们能高效可靠地拟合数据。然而在真实的情况下回遇到线性不可分的问题

我们不能用一条直线或者一个直面对数据进行分类,下面的数据就是线性不可分的

此时需要非线性变化对数据的分布进行重新的映射。对于深度神经网络,我们在每一层的线性变化之后叠加一个非线性的激活函数,从而获得更强大的学习与拟合能力

 

常用的激活函数

常用的激活函数有sigmoid函数,tanh函数和relu函数

Sigmoid激活函数的形式为  ,  

对应的导数为

    

其中导数的推导过程如下:

Tanh的激活函数形式为 

对应的导函数为

     

Relu激活函数的形式为

对应的导数为

     

 

Sigmoid和Tanh激活函数梯度消失的问题

sigmoid曲线图如下

Sigmoid激活函数的导数为

当x趋近于无穷小f(x)=0时 以及 当x趋近于无穷大f(x)=1时 它的导数的值都为0,造成梯度消失的问题

 

Tanh的曲线图如下

Tanh激活函数的导数为

当x趋近于无穷小f(x)=-1时 以及 当x趋近于无穷大f(x)=1时 它的导数的值都为0,造成梯度消失的问题

 

Relu和sigmoid和tanh的比较

优点

(1)sigmoid和tanh需要计算指数,relu只需要一个阈值就能得到激活值

(2)relu可以解决梯度消失的问题

(3)relu单侧抑制提供了网络的稀疏表达能力

局限性

relu的局限性在于在训练的过程中会导致神经元死亡的问题。这是由于函数导致负梯度在经过此relu单元的时候被置为0,而且此后不再被任何数据激活,流经该神经元的梯度永远为0,不对任何数据产生响应。

在实际训练中,如果学习率设置过大导致一定比例的神经元不可逆死亡,进而参数梯度无法进行更新,整个训练过程失败。

为了解决这个问题,人们设置了relu的变种LReLU

当x<=0的时候不为0 而是一个斜率为a的线性函数,a为很小的正常数,这样既实现了单侧抑制,又减少了负梯度置0的问题。

a的值需要较强的人工先验或多次重复训练以确定合适的参数值

prelu将a作为网络中一个可以学习的参数,进行反向传播训练,和其他参数一样参加优化。

rrelu(Random Relu)增加了随机化的机制,在训练的过程中作为满足某种分布的随机采样;测试时再固定下来。在一定程度上Random Relu可以起到正则化的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值