深度学习4大激活函数
Posted 尤尔小屋的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习4大激活函数相关的知识,希望对你有一定的参考价值。
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出实际上都是上层输入的线性函数。
这样就使得无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,模型的表达力仍然不够。
我们决定引入非线性函数作为激励函数,这样深层神经网络才有意义(不再是输入的线性组合)。
本文将介绍深度学习中的4个常见的激活函数,从原函数公式、导数函数及二者的可视化来进行对比:
- Sigmoid函数
- Tanh函数
- ReLu函数
- Leaky ReLu函数
激活函数特征
- 非线性:激活函数满足非线性时,才不会被单层网络替代,神经网络才有了意义
- 可微性:优化器大多数是用梯度下降来更新梯度;如果不可微的话,就不能求导,也就不能更新参数
- 单调性:激活函数是单调的,能够保证网络的损失函数是凸函数,更容易收敛
Sigmoid函数
表示形式为tf.nn.sigmoid(x)
f ( x ) = 1 1 + e − x f(x)=\\frac11+e^-x f(x)=1+e−x1
原函数
In [1]:
# import tensorflow as
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
def sigmoid(x):
"""
返回sigmoid函数
"""
return 1 / (1 + np.exp(-x))
def plot_sigmoid():
# param:起点,终点,间距
x = np.arange(-10, 10, 0.2)
y = sigmoid(x)
plt.plot(x, y)
plt.grid()
plt.show()
if __name__ == '__main__':
plot_sigmoid()
导数函数
该函数的导数为:
f ′ ( z ) = ( 1 1 + e − z ) ′ = e − z ( 1 + e − z ) 2 = 1 + e − z − 1 ( 1 + e − z ) 2 = 1 ( 1 + e − z ) ( 1 − 1 ( 1 + e − z ) ) = f ( z ) ( 1 − f ( z ) ) \\beginaligned f^\\prime(z) &=\\left(\\frac11+e^-z\\right)^\\prime \\\\ &=\\frace^-z\\left(1+e^-z\\right)^2 \\\\ &=\\frac1+e^-z-1\\left(1+e^-z\\right)^2 \\\\ &=\\frac1\\left(1+e^-z\\right)\\left(1-\\frac1\\left(1+e^-z\\right)\\right) \\\\ &=f(z)(1-f(z)) \\endaligned f′(z)=(1+e−z1)′=(1+e−z)2e−z=(1+e−z)21+e−z−1=(1+e−z)1(1−(1+e−z)1)=f(z)(1−f(z))
另一种求解方法:
步骤1:
d y d x = − ( 1 + e − x ) − 2 ⋅ ( 1 + e − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ⋅ ( − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ⋅ ( − 1 ) = ( 1 + e − x ) − 2 ⋅ ( e − x ) = e − x ( 1 + e − x ) 2 \\beginaligned \\frac\\mathrmd y\\mathrm~d x &=-\\left(1+e^-x\\right)^-2 \\cdot\\left(1+e^-x\\right)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right) \\cdot(-x)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right) \\cdot(-1) \\\\ &=\\left(1+e^-x\\right)^-2 \\cdot\\left(e^-x\\right) \\\\ &=\\frace^-x\\left(1+e^-x\\right)^2 \\endaligned dxdy=−(1+e−x)−2⋅(1+e−x)′=−(1+e−x)−2⋅1⋅(e−x)′=−(1+e−x)−2⋅1⋅(e−x)⋅(−x)′=−(1+e−x)−2⋅1⋅(e−x)⋅(−1)=(1+e−x)−2⋅(e−x)=(1+e−x)2e−x
步骤2:
1 − y = 1 − 1 1 + e − x = 1 + e − x − 1 1 + e − x = e − x 1 + e − x 1-y=1-\\frac11+e^-x=\\frac1+e^-x-11+e^-x=\\frace^-x1+e^-x 1−y=1−1+e−x1=1+e−x1+e−x−1=python 深度学习中的4种激活函数