CV学习(二):网络优化之七个常见**函数介绍

网络优化之**函数介绍

**函数:神经网络的信号经过非线性的**函数传递。正是由于非线性函数的反复叠加,才使得神经网络有足够的非线性拟合能力。选择不同的**函数会影响整个深度神经网络。


1.Sigmoid函数

公式
CV学习(二):网络优化之七个常见**函数介绍
函数图像
CV学习(二):网络优化之七个常见**函数介绍
Sigmoid是传统神经网络使用频率最高的函数它平滑,便于求导。旦易出现梯度消失的问题。
函数输出不是0中心【输出值恒大于0】,这会使得模型训练的收敛速度变慢,且使用的是幂运算,也比较耗时。


2.Tanh函数

公式:
CV学习(二):网络优化之七个常见**函数介绍
图像
CV学习(二):网络优化之七个常见**函数介绍
Tanh函数解决了非0中心问题,但是梯度消失和幂运算的问题仍然存在

解释一下为什么非0中心函数会使得网络收敛变慢,简单来说的话非0中心的**函数会使得返回的权值梯度都是同一符号的,即所有的权值都只能往一个方向移动,所以会需要更多的迭代次数。详细的话可以看这篇博客


3.ReLU函数

公式: f(x)=max{0,x}
图像:
CV学习(二):网络优化之七个常见**函数介绍

  • ReLU非全区间可导,但计算过程中可以取子梯度
  • ReLU在正区间内解决了梯度消失的问题。而且只需要判断是否大于零即可,计算速度快,收敛快。但是ReLU仍不是0中心函数,且存在Dead ReLU Problem
  • Dead ReLU Problem:即某些神经元可能永远不会参与计算,从而无法更新权值。产生的原因:可能由于参数初始化及学习率太高导致训练时参数更新过大,网络会进入这种状态
  • 解决方法是采用Xavier初始化方法;学习率避免设置太大或使用adagrad等自动调节学习率的方法。

4.Leaky ReLU

公式:CV学习(二):网络优化之七个常见**函数介绍
图像:CV学习(二):网络优化之七个常见**函数介绍

  • 为了解决Dead ReLU问题而提出的函数。
  • 理论上将Leaky ReLU具有ReLU函数的所有优点,且不会出现Dead ReLU问题,应该比ReLU更好,但是实际效果上却不总是如此。

5.指数线性单元ELU函数

公式:
CV学习(二):网络优化之七个常见**函数介绍
图像:
CV学习(二):网络优化之七个常见**函数介绍

  • 这个函数被证实了有较高的噪声鲁棒性,同时能够使神经元的平均**均值趋向于0。但是需要进行指数计算,计算量大。

6.SELU函数

公式:
CV学习(二):网络优化之七个常见**函数介绍

  • 相当于对ELU函数乘以了一个系数

图像:
CV学习(二):网络优化之七个常见**函数介绍
归一化网络提出后发现,把**函数换成SELU,就能使得输入在经过一定层数后,变成固定分布。


7.softmax

公式:
CV学习(二):网络优化之七个常见**函数介绍
图像:
CV学习(二):网络优化之七个常见**函数介绍

  • softmax 可视为Sigmoid的泛化形式
  • 其本质是将一个K维的任意实数向量压缩成另一个K维实数向量。其中向量的每个元素取值都介于0~1之间。
  • 一般用于多分类神经网络输出。