激活函数出现的原因

1、遇到线性不可分的数据。神经网络也找不到一条合适的直线。

每个层都要有激活函数吗 激活函数用在哪层_线性变换


2、如何解决

  1. 尝试单层感知机。
  2. 尝试多层感知机
  3. 化简后发现仍然是一个线性分类器。

3、激活函数的作用

  1. 在隐藏层和输出层之间加入一个激活函数,sigmoid。
  2. 多层感知器

    激活函数就是在神经元上加一个壳,为神经元带来非线性因素,提升模型的表达能力。第一步计算线性变化,第二步计算非线性变换。

激活函数大全

1、一致或线性激活函数

  1. 最简单的激活函数,输出与输入成比例,导数为常数,所以梯度也将是一个常数,下降时将会是恒定的梯度。
  2. 范围:负无穷到正无穷

2、Heaviside(二值型激活函数,0或1,high或low)步长函数

  1. 早期单层感知器中使用,对二进制分类任务有用,输入累加和高过某个阈值输出值为1,低于某个阈值输出0.
  2. 值域范围0-1

3、Sigmoid或Logistic激活函数(Soft Step)

  1. 主要应用在二进制的分类问题,具有梯度消失。

每个层都要有激活函数吗 激活函数用在哪层_神经网络_02

  1. 求导:
  2. 每个层都要有激活函数吗 激活函数用在哪层_每个层都要有激活函数吗_03

  3. 缺点:由导数可以看出当Z的值非常大或者非常小的时候,导数接近0,会导致权重W的梯度接近0,也就是梯度更新变慢,最后梯度消失。函数输出的均值并不是0,不便于下一层计算,所以可以作为输出层进行二分类,不适合在隐藏层。
    i. 梯度消失的原理
    a.

    b. 对上图的第一个隐藏层节点进行计算,假设实际值为a,激活值为a[1],则代价函数为

    其中a[1]的计算过程一般为两步,第一步线性变换

    第二步非线性变换

    权重w11的梯度为

    c. 可以看出

    Z[1]非常大或者非常小的时候,导数都为0,梯度也就为0.
    e) 范围(0,1)

4、双曲正切函数(TanH)

  1. 看起来像一个缩放的S形函数,数据以零为中心。收敛速度更快。、

每个层都要有激活函数吗 激活函数用在哪层_神经网络_04

  1. 求导:
  2. 缺点:和sigmoid函数一样当Z很大或者很小时,导数接近于0,梯度消失问题。
    但是弥补了均值问题。
  3. 范围(-1,1)

5、修正线性单元(ReLU)

  1. 比tanh快6倍,当输入值小于零时,输出值为零。输入值大于等于零时,输出值等于输入值。导数为1.
  2. 函数:
  3. 求导:
  4. 优点:输入为正数时,不存在梯度消失的问题。因为是分段线性的原因,所以计算速度是比sigmoid和tanh函数的计算指数要快的。
    缺点:当输入为负时,梯度为0,会产生梯度消失的问题。
  5. 范围(0,x)

6、Leaky ReLU(PReLU)


每个层都要有激活函数吗 激活函数用在哪层_线性变换_05

  1. 导数:
  2. 优点可以避免ReLU的输入为负时的梯度消失问题
  3. 范围:负无穷到正无穷 a取值(0,1)