神经网络中**函数的总结

**函数出现的原因

1、遇到线性不可分的数据。神经网络也找不到一条合适的直线。
神经网络中**函数的总结
2、如何解决

  1. 尝试单层感知机。
    神经网络中**函数的总结
  2. 尝试多层感知机
    神经网络中**函数的总结
  3. 化简后发现仍然是一个线性分类器。
    神经网络中**函数的总结

3、**函数的作用

  1. 在隐藏层和输出层之间加入一个**函数,sigmoid。
    神经网络中**函数的总结
  2. 多层感知器
    神经网络中**函数的总结
    **函数就是在神经元上加一个壳,为神经元带来非线性因素,提升模型的表达能力。第一步计算线性变化,第二步计算非线性变换。

**函数大全

1、一致或线性**函数

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

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

  1. 早期单层感知器中使用,对二进制分类任务有用,输入累加和高过某个阈值输出值为1,低于某个阈值输出0.
  2. 神经网络中**函数的总结
  3. 值域范围0-1
    神经网络中**函数的总结

3、Sigmoid或Logistic**函数(Soft Step)

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

神经网络中**函数的总结

  1. 求导:
    神经网络中**函数的总结

  2. 缺点:由导数可以看出当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形函数,数据以零为中心。收敛速度更快。、

神经网络中**函数的总结

  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)

神经网络中**函数的总结

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

参考文章:
https://www.cnblogs.com/lliuye/p/9486500.html
https://blog.****.net/SIGAI_****/article/details/80724034
https://blog.****.net/program_developer/article/details/78704224
https://mp.weixin.qq.com/s/4gElB_8AveWuDVjtLw5JUA