神经网络和深度学习(2)-- 激活函数

神经网络和深度学习
上一篇主目录 下一篇

前言
使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。 在不同的场景下使用不同的激活函数效果会有差别。


1. 什么是激活函数

激活函数(Activation functions 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。如下图:
在这里插入图片描述

2. 为什么要使用激活函数

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
我们知道,训练一个神经网络的过程就是通过训练集的数据,不断地进行正向和反向(梯度下降)的传播迭代,直到完成一定的迭代次数或者满足函数损失小于某阈值,然后得到的是一组相应的参数集W,b。通过这个参数集,我们输入要进行预测的自变量X就可以得到预测结果Yhat。很多情况下这样的拟合出来的函数曲线都不是线性的,为了能够拟合出非线性函数,激活函数就发挥了重要的作用。它将神经网络改变乘非线性,这样就有了逼近任何非线性函数的可能。

3. 激活函数的种类

sigmoid函数:
在这里插入图片描述
tanh函数:
在这里插入图片描述
在这里插入图片描述
ReLU和Leaky ReLU函数:
在这里插入图片描述

ReLu=max(0 , Z)
Leaky ReLu=max(0.01Z , Z)

4. 不同激活函数的使用场景

  1. 通常的情况下,tanh (双曲正切)函数是总体上都优于 sigmoid 函数的激活函数。事实上,tanh 函数是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1 和-1 之间。因为函数值域在-1 和+1 的激活函数,其均值是更接近零均值的。在训练一个算法模型时,如果使用 tanh 函数代替 sigmoid 函数中心化数据,使得数据的平均值更接近 0 而不是 0.5。基本已经不用 sigmoid 激活函数了,tanh 函数在 所有场合都优于 sigmoid 函数。
  2. 但有一个例外:在二分类的问题中,对于输出层,因为 y的值是 0 或 1,所以想让yhat的 数值介于 0 和 1 之间,而不是在-1 和+1 之间。所以需要使用 sigmoid 激活函数。
  3. sigmoid 函数和 tanh 函数两者共同的缺点是,在 z特别大或者特别小的情况下,导数的 梯度或者函数的斜率会变得特别小,最后就会接近于 0,导致降低梯度下降的速度。
  4. 在机器学习另一个很流行的函数是:修正线性单元的函数(ReLu),只要z是正值的情况下,导数恒等于 1,当z是负值的时候,导数恒等于 0。从实际上来说,当使用 z的导数时,z=0 的导数是没有定义 的。但是当编程实现的时候,z的取值刚好等于 0.00000001,这个值相当小,所以,在实践 中,不需要担心这个值,z是等于 0 的时候,假设一个导数是 1 或者 0 效果都可以。
  5. ReLU或Leaky ReLU 两者的优点是: 第一,在z的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于 0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中, 使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。 第二,sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥 散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。(同时应该注 意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性, 而 Leaky ReLu 不会有这问题) z 在 ReLu 的梯度一半都是 0,但是,有足够的隐藏层使得 z 值大于 0,所以对大多数的 训练数据来说学习过程仍然可以很快。

基于经验法则,总结起来就是:

场景使用的激活函数
0、1二分类问题输出层用sigmoid,其他用ReLU
大多数场合tanh几乎适用于任何场合
大多数场合ReLU最常用的默认函数,如果不确定使用哪个就用ReLU或Leaky ReLU

5. 激活函数的导数

在神经网络中使用反向传播的时候,你真的需要计算激活函数的斜率或者导数。针对以 下四种激活,求其导数如下:
1)sigmoid activation function
在这里插入图片描述
2) Tanh activation function
在这里插入图片描述
3)Rectified Linear Unit (ReLU)
在这里插入图片描述
4)Leaky linear unit (Leaky ReLU)
在这里插入图片描述


神经网络和深度学习系列笔记: 传送门

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值