【DL-CV】反向传播,(随机)梯度降低<前篇---后篇>【DL-CV】神经网络的补充segmentfault
在介绍线性分类器的时候,提到了激活函数,还提到线性分类器的输出要通过激活函数才能做为下一层网络的输入。为何呢?本文将对这一问题进行解疑并介绍多种多种激活函数。网络
假如神经网络只由多个线性分类组器合而成,那不管怎样组合,他们对数据的操做永远都是线性变换而已,复杂度有限,只能实现线性分类而不能实现非线性分类,但现实中的数据每每不是线性可分的。为了解决这个问题,就要给神经网络引入非线性因素,提升神经网络模型的表达能力(学习更复杂的映射)。激活函数就是用来引入这个非线性因素的,下面介绍几种常见的激活函数及其优缺点(正负号表示)。函数
其数学公式及其图像以下学习
它把输入压缩到(0,1)区间内,有两端饱和的特性,对于很大的正数它输出趋近与1,对于绝对值很小的负数它输出趋近于0。
这个函数曾经很是流行,可是因为其缺点(主要是两边饱和)饱受诟病,如今没什么人用了spa
其数学公式及其图像以下(双曲正切).net
形状和sigmoid很像,也是两端饱和,不一样的是它把输入压缩到(-1,1)区间内。blog
比sigmoid好了一点,没有非零中心的问题图片
其数学公式及其图像以下ip
就是个取最大值得函数,当输入为负数,输出为0;当输入为正数,输出仍是这个数get
虽然有“dead ReLU”的状况发生,但这并不阻碍它成为优秀的激活函数,实际应用中其表现不错,是很是经常使用的激活函数
其数学公式及其图像以下
ReLU的变种,负区间再也不是0,而是给它一个很小的斜率(上图是0.01,也能够是其余常数)
关于其效果没有清晰的定论,有的实验表现好,有些则很差
其实还能够把那个斜率看成能够反向传播和学习的参数α,而后就变成了Parametric ReLU(PReLU)激活函数
$$f(x)=max(\alpha x,x)$$
其数学公式及其图像以下
全名指数线性单元Exponential Linear Units,α是一个可调整的参数,它控制着ELU负值部分在什么时候饱和
这个函数有点奇,我以为它直接改变了原有MLP网络的结构,以致于造成了maxout网络,其自己就集成了激活函数的功能。
$$f(x)=max_{j\in [1,k]}z_{j}$$
k是需人为设定的参数,k=1,网络就类至关于普通的MLP网络;k>1,就变身成maxout网络了。这个函数的原理以下图,笔者文字表达欠佳,需做图才能展现出来。若是想了解更多可上网搜“maxout激活函数”
在同一个模型中,激活函数不会混搭使用,选定一个就用一个。通常最好的经验法则是使用ReLU函数,可是要谨慎的调节学习率。像LReLU,PReLU,ELU,Maxout这些函数则实验性强一点(实用性弱一点),但也能够试下。tanh和sigmoid就em....,算了吧。
除了这里介绍的6个外,还有一些其余的激活函数(若有着丧心病狂证实的SeLU),感兴趣的能够去查一下