本次介绍PReLU激活函数,方法来自于何凯明paper 《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》.
PReLU激活
PReLU(Parametric Rectified Linear Unit), 顾名思义:带参数的ReLU。二者的定义和区别如下图:
如果ai=0,那么PReLU退化为ReLU;如果ai是一个很小的固定值(如ai=0.01),则PReLU退化为Leaky ReLU(LReLU)。 有实验证明,与ReLU相比,LReLU对最终的结果几乎没什么影响。
PReLU的几点说明
(1) PReLU只增加了极少量的参数,也就意味着网络的计算量以及过拟合的危险性都只增加了一点点。特别的,当不同channels使用相同的ai时,参数就更少了。
(2) BP更新ai时,采用的是带动量的更新方式,如下图:
上式的两个系数分别是动量和学习率。
需要特别注意的是:更新ai时不施加权重衰减(L2正则化),因为这会把ai很大程度上push到0。事实上,即使不加正则化,试验中ai也很少有超过1的。
(3) 整个论文,ai被初始化为0.25。
关于CReLU
一种改进ReLU激活函数的文章,来自ICML2016.
文章链接: 《Understanding and Improving Convolutional Neural Networks via Concatenated Rectified Linear Units》
1. 背景介绍
整个文章的出发点来自于下图的统计现象:
为了看懂上图。
(1)首先介绍一下余弦相似度(cos距离)的概念
cos距离的取值范围是 [-1,+1],距离越接近-1,表示两个向量的方向 越相反,即呈 负相关关系。
(2)再来介绍一下pair filter的定义
现象:
网络的前部,参数的分布有更强的负相关性(类似于正负对立)。随着网络变深,这种负相关性逐步减弱。
结论:
网络的前部,网络倾向于同时捕获正负相位的信息,但ReLU会抹掉负响应。 这造成了卷积核会存在冗余。
2. CReLU
CReLU的定义很简单:
输出维度会自动加倍。 比如 −3→[0,3] 3→[3,0]
在网络中的实现也很简单,甚至不用修改代码(通过scale层取反再经过一次ReLU)
参考链接: 点击打开链接