小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)

激活函数

激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。引入非线性激活函数,可使深
层神经网络的表达能力更加强大。
简化模型:
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第1张图片
MP模型:
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第2张图片
优秀的激活函数:
• 非线性: 激活函数非线性时,多层神经网络可逼近所有函数
• 可微性: 优化器大多用梯度下降更新参数
• 单调性: 当激活函数是单调的,能保证单层网络的损失函数是凸函数
• 近似恒等性: f(x)≈x当参数初始化为随机小值时,神经网络更稳定

激活函数输出值的范围:
• 激活函数输出为有限值时,基于梯度的优化方法更稳定
• 激活函数输出为无限值时,建议调小学习率

常见的激活函数有:sigmoid,tanh,ReLU,Leaky ReLU,PReLU,RReLU,ELU(Exponential Linear Units),softplus,softsign,softmax等,下面介绍几个典型的激活函数:

Sigmoid函数
tf.nn.sigmoid(x)
在这里插入图片描述
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第3张图片
优点:

  1. 输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可用作输出层;
  2. 求导容易。

缺点:
3. 易造成梯度消失;
4. 输出非0均值,收敛慢;
5. 幂运算复杂,训练时间长。
sigmoid函数可应用在训练过程中。然而,当处理分类问题作出输出时,sigmoid却无能为力。简单地说,sigmoid函数只能处理两个类,不适用于多分类问题。而softmax可以有效解决这个问题,并且softmax函数大都运用在神经网路中的最后一层网络中,使得值得区间在(0,1)之间,而不是二分类的。
Tanh函数
tf.math.tanh(x)
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第4张图片
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第5张图片

优点:
6. 比sigmoid函数收敛速度更快。
7. 相比sigmoid函数,其输出以0为中心。

缺点:
8. 易造成梯度消失;
9. 幂运算复杂,训练时间长。

ReLU函数
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第6张图片
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第7张图片
优点:
10. 解决了梯度消失问题(在正区间);
11. 只需判断输入是否大于0,计算速度快;
12. 收敛速度远快于sigmoid和tanh,因为sigmoid和tanh涉及很多expensive的操作;
13. 提供了神经网络的稀疏表达能力。函数图像导数图像

缺点:
14. 输出非0均值,收敛慢;
15. Dead ReLU问题:某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。

Leaky Relu函数
tf.nn.leaky_relu(x)
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第8张图片
小白笔记:深度学习之Tensorflow笔记(七:神经网络优化过程)_第9张图片
理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当
中,并没有完全证明Leaky ReLU总是好于ReLU。

Softmax函数
在这里插入图片描述
对神经网络全连接层输出进行变换,使其服从概率分布,即每个值都位于[0,1]区间且和为1

对于初学者的建议:
(1)首选relu激活函数;
(2)学习率设置较小值;
(3)输入特征标准化,即让输入特征满足以0为均值,1为标准差的正态分布;
(4)初始参数中心化,即让随机生成的参数满足以0为均值, ( 2 / ( 当 前 层 输 入 特 征 个 数 ) ) ( 1 / 2 ) ) (2/(当前层输入特征个数))^(1/2)) (2/())(1/2)) 为标准差的正态分布。

你可能感兴趣的:(tensorflow,深度学习,神经网络,tensorflow,深度学习)