深度学习笔记(一)—激活函数

 1. 激活函数功能

激活函数就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

ps:其实不仅仅是简单的映射到输出端,是通过激活函数将非线性特性引入神经网络,不然不加激活函数输入和输出始终是线性的,下边会具体讲到。

2. 什么是激活函数

激活函数对学习人工神经网络,理解复杂和非线性函数来说有十分重要的作用。它们将非线性特性引入到我们的网络中。如下图所示,在神经元中,输入的input通过加权求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层相当于矩阵相乘,就算你叠加了若干层之后,依然是矩阵相乘。

3. 为什么要用激活函数


如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。

如果使用的话,激活函数给神经元引入了非线性元素,使得神经网络可以逼近任何非线性函数,这样神经网络就可以应用到众多非线性模型中。

4. 常用的激活函数
(1)sigmoid函数

sigmoid函数,又称为Logistic函数,模拟了生物的神经元特性,即当神经元获得的输入信号累计超过一定的阈值后,神经元被激活而处于兴奋状态,否则处于抑制状态,是一个生物学中常见的S型函数,其。在信息科学中,由于其单增以及反函数单增等性质,常被用于作神经网络的阈值函数,将变量映射到[0,1]之间。公式如下:

f(x)=\frac{1}{1+e^{-x}}
 

图像如下:

 

 

可以看到,sigmoid函数将特征压缩到了(0,1)区间,0端对应抑制状态,1对应激活状态,中间部分梯度较大。
sigmoid函数可用来做二分类,但其计算量较大,并且容易出现梯度消失现象。上图可以看出,函数两端的特征导数接近于0,这将导致梯度反传时损失的误差难以传到前面的网络层(因为根据链式求导,梯度接近于0)。

(2)tanh函数

tanh是双曲函数中的一个,为双曲正切,在数学中,有双曲正弦和双曲余弦推导而来,公式如下:


\tanh (x)=\frac{1-\exp (-2x)}{1+\exp (-2x)}

图像如下:

     tanh函数的导数:

(3)relu函数

为缓解梯度消失现象,修正线性单元(Rectified Linear Unit,ReLU)被引入到神经网络中。由于其优越的性能和简单的实现,relu函数已经成为最常用的激活函数之一。

relu激活函数(The Rectified Linear Unit),用于隐层神经元输出,公式如下:

ReLU(x)=max(x,0)

图像如下:

  ReLu函数的导数:

   ReLu函数的梯度:

 

 

函数图像和梯度图像如上图所示。可以看出,小于0的部分,值与梯度都为0,大于0的部分导数保持为1,避免了sigmoid函数中梯度接近于0导致的梯度消失问题。

(4)Leaky Relu函数

relu函数虽然高效,但是其将负区间所有的输入都强行置为0,Leaky Relu函数优化了这一点,讲负区间的输入避免了直接置为0,而是赋予了很小的权重,表达式如下:

 以上公式中ai代表权重,即小于0的值被缩小的比例。函数曲线如下:

 
虽然从理论上讲,Leaky Relu函数的使用效果应该比Relu函数好,但是从大量的实验结果看并没有看出其效果更好。此外,对于Relu函数的变种,除了Leaky Relu函数之外, 还有PReLU和RReLU 函数等。

(5)softmax函数

在物体检测中,经常要面对多物体分类问题,虽然可以用sigmoid函数来构造多个二分类器,但比较麻烦,多物体类别较为常用的分类器是softmax函数。

在具体的分类任务中,softmax函数的输入往往是多个类别的得分,输出则是每一个类别对应的概率,所有类别的概率取值都在0—1之间,且和为1.softmax函数的表达式如下所示,其中vi表示第i个类别的得分,C表示分类的类别总数,输出Si为第i类别的概率。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值