激活函数

1、常用的激活函数

在深度学习中,常用的激活函数主要有:sigmoid函数,tanh函数,ReLU函数。

1.1sigmoid函数

在逻辑回归中我们介绍过sigmoid函数,该函数是将取值为 (−∞,+∞) 的数映射到 (0,1) 之间。sigmoid函数的公式以及图形如下:
在这里插入图片描述
在这里插入图片描述
对于sigmoid函数的求导推导为:
在这里插入图片描述
sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:
(1)当 z 值非常大或者非常小时,通过上图我们可以看到,sigmoid函数的导数 g′(z) 将接近 0 。这会导致权重 W 的梯度将接近 0 ,使得梯度更新十分缓慢,即梯度消失。下面我们举例来说明一下,假设我们使用如下一个只有一层隐藏层的简单网络:
在这里插入图片描述
对于隐藏层第一个节点进行计算,假设该点实际值为 a ,激活值为 a[1] 。于是在这个节点处的代价函数为(以一个样本为例):
在这里插入图片描述
而激活值 a[1] 的计算过程为:
在这里插入图片描述
于是对权重 w11 求梯度为:
在这里插入图片描述
由于 g′(z[1])=g(z[1])(1−g(z[1])) ,当 z[1] 非常大时,g(z[1])≈1,1−g(z[1])≈0 因此, g′(z[1])≈0,ΔJ1Δw11≈0。当 z[1] 非常小时,g(z[1])≈0 ,亦同理。(本文只从一个隐藏节点推导,读者可从网络的输出开始,利用反向传播推导)
2)函数的输出不是以0为均值,将不便于下层的计算,具体可参考引用1中的课程。sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不要使用在隐藏层。

1.2tanh函数

tanh函数相较于sigmoid函数要常见一些,该函数是将取值为 (−∞,+∞) 的数映射到 (−1,1) 之间,其公式与图形为:
在这里插入图片描述
在这里插入图片描述
tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0 ,因此弥补了sigmoid函数均值为 0.5 的缺点。
对于tanh函数的求导推导为:
在这里插入图片描述

1.3Relu函数

ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。ReLU函数的公式以及图形如下:
在这里插入图片描述
在这里插入图片描述
对于ReLU函数的求导为:
在这里插入图片描述
ReLU函数的优点:
(1)在输入为正数的时候(对于大多数输入 z 空间来说),不存在梯度消失问题。
(2) 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)
ReLU函数的缺点:
(1)当输入为负时,梯度为0,会产生梯度消失问题。

1.4 Leaky ReLU函数

这是一种对ReLU函数改进的函数,又称为PReLU函数,但其并不常用。其公式与图形如下:
在这里插入图片描述
在这里插入图片描述
 其中 a 取值在 (0,1) 之间。
 Leaky ReLU函数的导数为:
在这里插入图片描述
Leaky ReLU函数解决了ReLU函数在输入为负的情况下产生的梯度消失问题。

2、为什么要用非线性激活函数?

我们以这样一个例子进行理解。
假设下图中的隐藏层使用的为线性激活函数恒等激活函数),也就是说 g(z)=z 。
在这里插入图片描述
于是我们可以得出:
在这里插入图片描述
可以看出,当激活函数为线性激活函数时,输出 y^ 不过是输入特征 x 的线性组合(无论多少层),而不使用神经网络也可以构建这样的线性组合。而当激活函数为非线性激活函数时,通过神经网络的不断加深,可以构建出各种有趣的函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值