RTReLU激活函数
RTReLU激活函数
文章链接:Randomly translational activation inspired by the input distributions of ReLU
年份:2018
简介
通常情况下,非线性激活函数的输入分布近似于高斯分布,大部分输入集中在零附近,这样导致学习到的CNN对非线性激活输入的小抖动很是敏感,而且容易造成过拟合。本文为了解决上述问题,提出了深度CNN的随机平移非线性激活函数。在训练阶段,非线性激活函数由高斯分布采样的偏移量随机平移。在测试阶段采用零偏移非线性激活。
通过观察在卷积神经网络上的ReLU激活函数的输入的分布类似于高斯分布,这意味着ReLU上的大部分输入都集中在零附近,通常,ReLU的输入存在较小的抖动或噪声,因为当ReLU的输入不为零时,对小的抖动或噪声输出是鲁棒的。但是当ReLU的输入接近与0时, ReLU对小的抖动和噪声很敏感。
假设ReLU的输入由两部分组成:基本输入
x
i
0
x_i^0
xi0和抖动
n
i
n_i
ni。由此ReLU被表达为:
f
(
x
)
=
{
x
i
0
+
n
i
,
x
i
0
+
n
i
>
0
0
,
x
i
0
+
n
i
≤
0
f(x) = \begin{cases} x_i^0 + n_i , & x_i^0 + n_i >0\\ 0, & x_i^0 +n_i \le 0 \end{cases}
f(x)={xi0+ni,0,xi0+ni>0xi0+ni≤0
其中
n
i
n_i
ni是一个很小的噪声。当
x
i
0
x_i^0
xi0接近0时,
n
i
n_i
ni有可能导致误激活。例如,当
x
i
0
=
0.5
x_i^0 = 0.5
xi0=0.5时,而
n
i
<
−
0.5
n_i<-0.5
ni<−0.5,
x
i
0
+
n
i
<
0
x_i^0 + n_i <0
xi0+ni<0则,本应该激活,结果输出的激活值为0,成为误激活;当
x
=
−
0.5
x=-0.5
x=−0.5,本不应该激活,但是如
n
i
>
0.5
n_i>0.5
ni>0.5,
x
i
0
+
n
i
>
0
x_i^0 + n_i >0
xi0+ni>0,则输出激活值,又称为误激活。为了解决ReLU导致学习的CNN可能对抖动敏感,提出了RTReLU激活函数:
f
(
x
)
=
{
x
i
+
a
i
,
x
i
+
a
i
>
0
0
,
x
i
+
a
i
≤
0
f(x) = \begin{cases} x_i+ a_i , & x_i + a_i >0\\ 0, & x_i +a_i \le 0 \end{cases}
f(x)={xi+ai,0,xi+ai>0xi+ai≤0
其中
a
i
a_i
ai为在
x
x
x轴上的偏移量。在训练阶段,RTReLU中的
a
i
a_i
ai在每次迭代时,从高斯分布中随机采样,
a
i
∼
N
(
0
,
σ
)
a_i\sim N(0, \sigma)
ai∼N(0,σ),
σ
\sigma
σ为高斯分布的标准差。通常情况下
σ
=
0.75
\sigma=0.75
σ=0.75
具体的RTReLU的曲线如下图所示:
该方法也可以应用于其他非线性激活函数,PReLU是ReLU的一个变体,RTPReLU可以写成
f
(
x
)
=
{
x
i
+
a
i
,
x
i
+
a
i
>
0
k
i
(
x
i
+
a
i
)
,
x
i
+
a
i
≤
0
f(x) = \begin{cases} x_i+ a_i , & x_i + a_i >0\\ k_i(x_i +a_i), & x_i +a_i \le 0 \end{cases}
f(x)={xi+ai,ki(xi+ai),xi+ai>0xi+ai≤0
a
i
a_i
ai为RTPReLU在x轴上的偏移量,采样来自高斯分布,具体的函数图像如下图:
分析
随机平移非线性激活(RTReLU或RTPReLU)的优点总结如下,
- 可以使非线性激活的输入更加分散,因此该函数有更强的鲁棒性
- PTReLU是ReLU的正则化,以减少训练阶段的过拟合
- 在不增加计算成本的情况下提高精度。
可是该函数的梯度不连续,而且随机平移后,对正区域的输入影响较大。而且该函数的非线性不是太好,通过具体的试验,该函数的表现没有本论文说的那么好
相关文章
- 函数方法细节
- 【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)
- Swish、ARiA、E-Swish激活函数
- LiSA激活函数
- TaLU激活函数
- GNN-图卷积模型-归纳式-2017:GraphSAGE【消息传递(前向传播):聚合+更新】【聚合函数:lstm/pool】【训练更新函数参数】【不全图卷积,每次采样一批节点来卷积训练】【同质图】
- 人脸识别-Loss-2010:Softmax Loss(Softmax激活函数 + “交叉熵损失函数”)【样本3真实标签为c_5,则样本3的损失:loss_3=-log(hat{y}_5^3)】
- CV-CNN-2012:AlexNet模型【贡献:5卷积+3个全连接,6000万个参数、65万个神经元、ReLU取代传统激活函数、局部归一化、引入DropOut】【第一个深度CNN】【CNN开篇之作】
- 移动端/嵌入式-CV模型-2018:MobelNets-v2【Inverted Residuals(中间胖两头瘦)、Linear Bottlenecks(每个倒残差的最后一个卷积层使用线性激活函数)】
- C++11-列表初始化/变量类型推导/范围for/final&override/默认成员函数控制
- [转载]CNN中的激活函数
- linux之stat函数解析
- ReLu(Rectified Linear Units)激活函数
- 《Kotin 极简教程》第8章 函数式编程(FP)(1)
- 【概念】详细介绍:什么是BP神经网络?(Sigmoid 激活函数,再次介绍) || 感受野 || 前向传播 和 反向传播
- 【深度学习】之 卷积神经网络(CNN)概念 简析:名词介绍 || 为何要用卷积? || 卷积 || 激活函数 || 池化层 || 全连接层 || CNN的优点
- pytorch 常见的网络层(卷积层,池化层,线性层,激活函数)
- c++实验2(1.重载的函数 2.const关键字 3.动态内存分配利用new运算分配内存空间,利用delete运算或程序运行结束释放内存。)
- 第9.1节 Python的文件打开函数open简介
- Python中排序方法sort、函数sorted的key参数的作用分析
- Python pandas.DataFrame.count函数方法的使用
- 再谈线性回归函数分析,从概率论与数理统计角度看线性回归参数估计
- Linux下select函数的使用
- MFC对话框初始函数
- python中 functools模块 闭包的两个好朋友partial偏函数和wraps包裹
- 【C语言】常见的四个内存函数