L* ReLU激活函数
论文链接:L*ReLU: Piece-wise Linear Activation Functions for Deep Fine-grained Visual Categorization
年份:2019
简介
如果一个激活函数是连续的、有界的,且单调递增的,任何连续的实值函数都可以用一个有隐含层的前馈网络任意地很好地逼近。然而,当网络较深时,这些函数存在梯度消失问题。
为了克服这个问题,引入了ReLU激活函数,ReLU正区域的梯度为1,不存在梯度消失问题。但ReLU的负值为0,导致负区域没有信息流动,即死亡ReLU;激活值的统计平均值仍然大于零,导致连续层偏置偏移。由此出现如Learky
ReLU在负部分引入了一个非常小的负斜率,但仍出现偏置偏移问题。ELU既可以消除负区域的神经元死亡问题,也可以解决偏置偏移问题,但ELU或改进的SELU负区域是有界的。
事实上,即使是对输入数据的微小扰动也可以显著地改变输出。给定一个约束的Lipschitz常数对DNNs在鲁棒性和分类精度方面有重要意义。对于一个分类任务小的Lipschitz常数可以提高泛化能力。由此将多类可分性与分段性AFs与合适的Lipschitz常数联系起来,形成一个新的分段激活函数。
神经网络单个神经元
j
j
j的输出
a
j
a_j
aj被计算为:
a
j
=
f
(
∑
i
=
0
n
w
i
,
j
a
i
)
a_j = f(\sum_{i=0}^n w_{i,j}a_i)
aj=f(i=0∑nwi,jai)
a
i
a_i
ai为上层的输出,
w
i
,
j
w_{i,j}
wi,j为相关权重,
f
(
x
)
f(x)
f(x)为非线性函数,称为激活函数。
f
(
x
)
f(x)
f(x)编码了一个特征在输入中存在或不存在的程度:如果
f
(
x
)
>
0
f(x)>0
f(x)>0,则特征存在,如果
f
(
x
)
≤
0
f(x)\le 0
f(x)≤0,则特征不存在。
对于处理一般尺度的分类问题,普通的激活函数就够了,但是对于处理FGVC细粒度图像分类问题是不够的,通常在FGVC中,不同的类具有相似的外观,只有在细微的视觉差异上有所不同。
Lipschitz-continuous 函数
一个函数
f
f
f:
R
→
R
\mathbb{R}\to\mathbb{R}
R→R被称为Lipschitz连续函数,如果存在一个常数
L
≥
0
L\ge 0
L≥0满足:
∣
f
(
x
i
)
−
f
(
x
j
)
∣
≤
∣
x
i
−
x
j
∣
|f(x_i) - f(x_j)| \le |x_i - x_j|
∣f(xi)−f(xj)∣≤∣xi−xj∣
其中
x
i
,
x
j
∈
R
x_i, x_j \in \mathbb{R}
xi,xj∈R,
L
L
L称为Lipschitz 常数或最小Lipschitz常数。当
x
i
≠
x
j
x_i \neq x_j
xi=xj时,可知
∣
f
(
x
i
)
−
f
(
x
j
)
∣
x
i
−
x
j
≤
L
\frac{|f(x_i)- f(x_j)|}{x_i - x_j}\le L
xi−xj∣f(xi)−f(xj)∣≤L
这意味着符合利普希茨条件的函数的斜率,必小于一个称为利普希茨常数的实数(该常数依函数而定),即
f
′
(
z
)
≤
L
,
z
∈
I
,
I
∈
R
f^\prime(z)\le L, z\in I,I\in \mathbb{R}
f′(z)≤L,z∈I,I∈R
换句话说:
L
=
sup
x
∈
I
∣
f
′
(
x
)
∣
L = \sup_{x\in I}|f^\prime(x)|
L=x∈Isup∣f′(x)∣
这样,Lipschitz常数 L L L度量了函数 f ( x ) f(x) f(x)在区间 I I I内的最大变化率。如果 0 ≤ L < 1 0\le L < 1 0≤L<1,那么 f f f被称为 I I I上的收缩映射。
此外,一个lipschitz连续函数
f
f
f:
R
→
R
\mathbb{R}\to \mathbb{R}
R→R也是均匀连续的,对于每一个
ϵ
>
0
\epsilon>0
ϵ>0存在
δ
>
0
\delta> 0
δ>0使得对于所有
x
i
,
x
j
∈
R
x_i, x_j\in \mathbb{R}
xi,xj∈R有:
∣
x
i
−
x
j
∣
<
δ
⇒
∣
f
(
x
i
)
−
f
(
x
j
)
∣
<
ϵ
|x_i -x_j|<\delta \Rightarrow |f(x_i) - f(x_j)|<\epsilon
∣xi−xj∣<δ⇒∣f(xi)−f(xj)∣<ϵ
换句话说,一个均匀连续函数,如果 x i x_i xi和 x j x_j xj足够接近,确保 f ( x i ) f(x_i) f(xi)和 f ( x j ) f(x_j) f(xj)彼此接近。
定义一个分段线性激活函数
细粒度的图像分类任务需要用激活函数类模拟特征存在的程度和缺失程度。由于这两个方面与正负区域有关,由此提出用分段函数来解决这个问题,具体为:
f
(
x
)
=
p
(
x
>
0
)
+
n
(
x
≤
0
)
f(x ) = p(x>0) + n(x\le 0)
f(x)=p(x>0)+n(x≤0)
其中
p
(
x
)
=
max
(
ϕ
(
x
)
,
0
)
p(x) = \max(\phi(x), 0)
p(x)=max(ϕ(x),0)
n
(
x
)
=
min
(
η
(
x
)
,
0
)
n(x) = \min(\eta(x), 0)
n(x)=min(η(x),0)
其中
ϕ
(
x
)
\phi(x)
ϕ(x)和
η
(
x
)
\eta(x)
η(x)是任意(非线性)函数
f
:
R
→
R
f: \mathbb{R\to R}
f:R→R。这样,确保分段函数的正部分和负部分位于笛卡尔坐标系的第一和第三象限。可以将几乎所有流行的AFs重写为这样的形式。FGCV需要一个非饱和的、单调递增的有界函数。由此提出:
p
(
x
)
=
max
(
x
,
0
)
p(x) = \max(x, 0)
p(x)=max(x,0)
n
(
x
)
=
min
(
α
x
,
0
)
n(x) = \min(\alpha x, 0)
n(x)=min(αx,0)
其中
α
≥
0
\alpha\ge 0
α≥0定义负部分线性函数的斜率。
有的文献已经证明了给定任意有限的数据集,其中不同的类在输入空间中至少间隔了 c c c的距离,存在一个具有Lipschitz常数 c / 2 c/2 c/2的函数,可以正确地分类所有的点。换句话说,不同的数据集可能有不同的可分性,这就需要学习具有不同属性的函数。这可以通过根据数据的lipschitz性质选择合适的斜率来实现。