深度学习之**函数

1.0 sigmoid**函数

函数表达式:f(x) = 1 / (1 + exp(-x))
导数表达式:g(x) = f(x)*(1-f(x))
函数图像:

深度学习之**函数特点:
1)反向传播算法求解梯度时要进行链式求导,即各个偏导数相乘。由sigmoid导数图像可以看出,当偏导数取值在两边接近0时,连乘得结果会导致所得结果无限接近0,即造成梯度消失现象。
2)幂运算复杂,训练时间长
3)输出非0均值,收敛慢

tensorflow语法:
tf.nn.sigmoid(x)

2.0 Tanh函数

函数表达式:f(x) = 1 - exp(-2x) / (1 + exp(-2x))
导数表达式:g(x) = 1 - f(x)*f(x)
函数图像:
深度学习之**函数
特点:
1)输出是0均值
2)易造成梯度消失
3)幂运算复杂,训练时间长

tensorflow语法:
tf.math.tanh(x)

3.0 Relu函数

函数表达式:f(x) = max(x,0)
导数表达式:
g(x) = 0, x < 0
g(x) = 1, x >= 0
函数图像:
深度学习之**函数特点:
1)解决了梯度消失问题(在正区间)
2)只需判断输入是否大于0,计算速度快
3)收敛速度远快于sigmoid和tanh
4)输出非0均值,收敛慢
5)Dead Relu问题:某些神经元可能永远无法被**,导致相应得参数永远不能被更新

tensorflow语法:
tf.nn.relu(x)

4.0 Leaky Relu函数

函数表达式:f(x) = max(x,leak*x),0<leak < 1
导数表达式:
g(x) = leak, x < 0
g(x) = 1, x >= 0
函数图像:
深度学习之**函数特点:
理论上来讲,Leaky Relu有Relu得所有优点,外加不会有Dead Relu问题,在实际操作中,并没有完全证明Leaky Relu总是好于Relu

5.0 **函数建议

首选relu**函数
学习率设置较小值
输入特征标准化,即让输入特征满足以0为均值,1为标准差得正态分布
初始参数中心化,即让随机生成得参数满足以0为均值,sqrt(2/当前层输入特征个数)为标准差得正态分布