神经网络中激活函数的对比

本文介绍了三种常见的激活函数:Sigmoid、双曲正切(tanh)和ReLU。Sigmoid在输出层适用,但存在梯度消失问题;tanh输出范围在[-1,1],其导数有助于减轻梯度消失;ReLU则在正数区域避免了梯度消失,简化计算,但可能导致神经元坏死现象。不同的激活函数在神经网络中各有优缺点,选择时需根据网络结构和需求权衡。
摘要由CSDN通过智能技术生成

一、sigmoid函数

1、输出范围为(0,1),输出范围有限,优化稳定,可以作用于输出层。
2、连续函数,求导方便。
f ( x ) = 1 1 + e − x f ′ ( x ) = f ( x ) [ 1 − f ( x ) ] f(x)= \frac{1}{1+e^{-x}}\\ f'(x) = f(x)[1-f(x)] f(x)=1+ex1f(x)=f(x)[1f(x)]
3、当输入变量是绝对值比较大的正负数时会出现饱和现象,函数对输入的微小改变变得不敏感。在反向传播时当梯度接近于零时,权重基本不会更新,很容易出现梯度消失的情况,从而网络无法更新。
4、函数的输出不是0均值,导致后层的神经网络输出是非零均值,影响权重的更新。

二、双曲正切函数tanh

1、输出范围为[-1,1]
2、导数
f ( x ) = 1 − e − x 1 + e − x f ′ = 1 − f 2 ( x ) f(x)= \frac{1-e^{-x}}{1+e^{-x}}\\ f'=1-f^2(x) f(x)=1+ex1exf=1f2(x)

三、Relu函数

1、使用relu的SGD算法比sigmoid和tanh快。
2、在x>0的区域上,不会出现梯度消失和梯度饱和的现象。
3、计算复杂度低,不需要进行指数运算,只要一个阈值就可以得到激活函数。
4、输出不是0均值。
5、Dead rely problem(神经元坏死现象),relu在负数区域被kill的现象叫做dead relu. 在x<0时,梯度为零,神经元及之后的神经元梯度均为0,导致相应参数永远不会被更新。
产生该原因的因素有两个:参数初始化不合理;learning rate太高,导致训练过程参数更新太大。
解决方法:采用xavier初始化参数,避免将learning rate设置过大或使用adagrad自动调节learning rate.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值