Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数

不同激活函数的对比

Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第1张图片

  • 图1 为平常所说的sigmoid函数,但是不常用,一般只用于二元分类的一些神经网络。为什么呢,因为有一个在结构上基本上相同的函数:tanh函数,能够做到完美替代,且运算速率要比sigmoid函数快的多。
  • 图2 为 tanh函数,拥有sigmoid移位并比例放大之后的效果,在运行速率及运行效果上都比sigmoid好,因此也有许多人使用
  • 图3 为 常说的 ReLU函数,即线性整流函数,是神经网络中最常用的一种激活函数。(也就是说你没有特别好的,特别符合你的激活函数的时候,可以尝试使用ReLU函数)
  • 图4 为 Leaky ReLU函数,也有一部分人在用。但是最常用的还是ReLU函数。——可以将0.01看做一个参数,有的人说这样的参数让函数的表达效果更好,但是一般没人这么做。

神经网络激活函数的使用

Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第2张图片
要点:

  • 几乎所有隐藏层都是使用非线性函数当做激活函数
  • 唯一能使用线性函数当做激活函数的,是最后一层隐藏层,而这种情况也只是用于最终输出结果yhat为实数的时候,也就是说比如房价预测之类的,一般用线性函数或者是ReLU函数

各种激活函数的导数

1.sigmoid函数

Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第3张图片
a         =      g(z)
g’(z)    =      a * (1-a)

2.tanh函数

Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第4张图片
a      =     g(z)     =    tanh(z)
g’(z) =     1 - a^2

ReLU & Leaky ReLU

Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第5张图片
g(z) = max(0,z)
g’(z) = {0     if z < 0
             1     if z ≥ 0}
Deep Leaning 学习笔记之神经网络(1)—— 激活函数对比及导数_第6张图片
g ( z ) = max ( 0.01z , z )
g ’ ( z ) = {0.01     if z < 0
                   1        if z ≥ 0}

你可能感兴趣的:(DeepLearning)