Perenial youth.

一天一个机器学习概念(三)——激活函数

一天一个机器学习概念(三)——激活函数

在神经网络里,我们经常听到激活函数这个词。正如上一讲中提及的那样,Perceptron只能拟合线性的函数,而DNN中的神经元,即perceptron需要一种拟合非线性函数的能力,而这种能力的关键就在于激活函数。

这里的f就是激活函数

一般来说,激活函数有两个作用:1. 将输出约束在一定范围内,即normalization。2. 让神经网络具备拟合复杂函数的能力。

一个好的激活函数应该具有哪些标准呢:

  1. 非线性
  2. 几乎处处可微
  3. 计算简单
  4. 非饱和性(梯度消失)
  5. 单调性
  6. 输出范围有限
  7. 接近恒等变换
  8. 参数少
  9. 归一化

常用的激活函数有哪些呢?最常用的激活函数应该是sigmoid了,也就是s曲线:

Sigmoid函数

解析式:

sigmoid的值域是[0,1],这个范围和概率的范围[0,1]相同,因此sigmoid是一个很自然的选择

那么sigmoid函数有什么缺陷呢?我们可以看到,在s曲线的两端,斜率的绝对值非常小,因此当函数优化到两端或者初始值就落在两端时,将难以继续优化。另一方面,sigmoid函数在层数很深的情况下容易陷入梯度消失的问题。

tanh函数

解析式:


跟sigmoid差不多,就是值域扩大了一倍,

ReLU函数

面对sigmoid梯度消失的问题,ReLU是一个不错的解决方案

解析式:Relu=max(0,x)

ReLU的优点有:

  1. 解决了梯度消失的问题
  2. 计算速度非常快
  3. 收敛速度远快于sigmoid和tanh

ReLU有哪些问题呢:0处不可微(影响不大);没有负数;函数不是以0为中心的

关于ReLU的变形和Maxout,请看我的另一篇blog:https://www.xinyujiang.cn/?p=183

说完了上面这些激活函数,我想再说一下softmax。在神经网络的输出层,在分类问题中,往往使用softmax作为激励函数。

softmax:

我们为什么要使用softmax,是因为需要将最后的输出概率化。那么我们为什么要让最后的输出概率化?因为我们需要使用交叉熵损失函数。

a是概率
四个输出神经元softmax之后的结果,其和为1,因此我们可以将其解释为概率

xinyu