不同激活函数的对比
- 图1 为平常所说的sigmoid函数,但是不常用,一般只用于二元分类的一些神经网络。为什么呢,因为有一个在结构上基本上相同的函数:tanh函数,能够做到完美替代,且运算速率要比sigmoid函数快的多。
- 图2 为 tanh函数,拥有sigmoid移位并比例放大之后的效果,在运行速率及运行效果上都比sigmoid好,因此也有许多人使用
- 图3 为 常说的 ReLU函数,即线性整流函数,是神经网络中最常用的一种激活函数。(也就是说你没有特别好的,特别符合你的激活函数的时候,可以尝试使用ReLU函数)
- 图4 为 Leaky ReLU函数,也有一部分人在用。但是最常用的还是ReLU函数。——可以将0.01看做一个参数,有的人说这样的参数让函数的表达效果更好,但是一般没人这么做。
神经网络激活函数的使用
要点:
- 几乎所有隐藏层都是使用非线性函数当做激活函数
- 唯一能使用线性函数当做激活函数的,是最后一层隐藏层,而这种情况也只是用于最终输出结果yhat为实数的时候,也就是说比如房价预测之类的,一般用线性函数或者是ReLU函数
各种激活函数的导数
1.sigmoid函数
a = g(z)
g’(z) = a * (1-a)
2.tanh函数
a = g(z) = tanh(z)
g’(z) = 1 - a^2
ReLU & Leaky ReLU
g(z) = max(0,z)
g’(z) = {0 if z < 0
1 if z ≥ 0}
g ( z ) = max ( 0.01z , z )
g ’ ( z ) = {0.01 if z < 0
1 if z ≥ 0}