神经网络--激活函数

 


前言

深度学习是机器学习的一个子集,区别在于是否包含特征工程.由输入层,输出层,隐藏层三部分构成.

 

一、激活函数是什么?

激活函数用于对每层的输出数据进行变换,进而为整个网络注入了非线性因素.此时,神经网络就可以拟合各种曲线.

二、常见的激活函数

1.sigmoid激活函数

 1.激活函数公式:abd369e855a142339e2ed4e0fa64a206.png

   2 激活函数求导公式:23949f9bcf324e94abce01ae08cbc2cd.png

3.激活函数图像

        3f6399bad39b47b298668da45078ee06.png 4.特点

        sigmoid函数可以将任意的输入和输出映射到0,1之间,当输入的值大致在<-6或者>6时,意味着输入任何值得到的激活值都是差不多的,会丢失信息.  例如:100和10000的激活活值都是1,但输入之间差100倍的信息就丢失了.

        在[-3,3 ]区间才会比较有效果.

        其导数范围是0-0.25  ,当小于-6或者大于6时,激活函数图像的导数接近为0,此时网络更新即为缓慢.或者无法更新.

        在五层之内会产生梯度消失的线性,而且,激活函数并不是以0为中心的,所以一般只用于是否的二分类问题.

 

2.tanh激活函数

08a34c0db16b4546b06e3531308e673b.png

特点:

        tanh函数将值映射到(-1,1)之间,图像以0为中心,在0点对称,当输入大概小于-3或者大于3的时候被映射为-1或者1

        其导数范围是0,1

        当输入大概是在小于-3或者大于3的时候导数为0

        一般在隐藏层使用.

3.relu激活函数

f2b81da95ceb42898ec8e8b1289934c2.png

特点:

        relu激活函数将小于0的映射为0,大于0的保持不变,更加重视正信号,而忽略负信号,运算简单,能提高模型训练效率.

        当小于0时,导数为0,当x大于0时,则不存在饱和问题,所以在大于0时,能够保持梯度不衰减,从而缓解梯度消失的问题.然而,随着训练的推进,部分输入会落入小于0的区域,导数对应权重无法更新,成为神经元死亡

采用sigmoid函数,计算量大(指数运算),反向传播求误差梯度时,计算量相对大,而采用
Relu激活函数,整个过程的计算量节省很多。 sigmoid函数反向传播时,很容易就会出现梯度
消失的情况,从而无法完成深层网络的训练。 Relu会使一部分神经元的输出为0,这样就造成了
网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生
        

4.softmax激活函数

        二分类sigmoid在多分类上的推广,目的是将多分类的结果以概率值的形式展示出来.

343fa796dd254b809c3990379d281365.png

        理解成概率,选取概率最大的,也就是值对应最大的,最为预测目标类别

三、激活函数的选择

        隐藏层:

                优先选择relu激活函数,使用relu要注意神经元死亡的问题,避免出现大的梯度,从而导致过多的神经元死亡

        输出层:

                是否二分类问题选择sigmoid激活函数,多分类问题选择softmax激活函数.

              

 

 


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值