FTS: Flatten-T Swish : a thresholded ReLU-Swish-like activation function for deep learning
- 文章链接:[ FTS: Flatten-T Swish : a thresholded ReLU-Swish-like activation function for deep learning]
- 年份:2018年
介绍:
ReLU激活函数是深度学习在CNN中的默认激活函数,但是负输入时,0输出,严重负值通过网络传播。该文章提出了一个称为扁平化Swish的激活函数(Flatten-T Swish(FTS))。通过简单的试验发现分类的准确率有所提高,而且FTS的收敛速度是ReLU的两倍。
方法:
FTS包含了ReLU和Swish的相似属性,并且附加了阈值T参数,可以提高分类精度。首先将原始的ReLU的线性恒等部分与Sigmoid激活函数进行修正,具体可以简单的表达为:
F
T
S
(
x
)
=
R
e
L
U
(
x
)
⋅
S
i
g
m
o
i
d
(
x
)
=
{
x
1
+
e
−
x
x
≥
0
0
x
<
0
FTS(x)= ReLU(x)\cdot Sigmoid(x) = \begin{cases} \frac{x}{1+e^{-x}} & x\ge 0\\ 0 & x<0 \end{cases}
FTS(x)=ReLU(x)⋅Sigmoid(x)={1+e−xx0x≥0x<0
可以发现
x
≥
0
x\ge 0
x≥0区域FTS与Swish具有相似的性质;FTS在负区域保留了与ReLU相同的强制为零的特性,这样减少了计算的复杂度,增加了稀疏性。FTS的对x的导数为:
F
T
S
′
(
x
)
=
{
1
+
e
−
x
+
e
−
x
x
(
1
+
e
−
x
)
2
x
≥
0
0
x
<
0
FTS^\prime(x)= \begin{cases} \frac{1+e^{-x}+e^{-x}x}{(1+e^{-x})^2} & x\ge 0\\ 0 & x<0 \end{cases}
FTS′(x)={(1+e−x)21+e−x+e−xx0x≥0x<0
FTS具体的函数图像如下图所示:
当前FTS仍然存在负神经元死亡问题,由此添加一个参数T,将阈值T设置为小于零的值,用以保证网络在负值时仍可以进行反向传播,具体的公式为:
F
T
S
(
x
)
=
{
x
1
+
e
−
x
+
T
x
≥
0
T
x
<
0
FTS(x) = \begin{cases} \frac{x}{1+e^{-x}} +T& x\ge 0\\ T & x<0\end{cases}
FTS(x)={1+e−xx+TTx≥0x<0
加入参数后的FTS(x)的导数为:
F
T
S
′
(
x
)
=
{
1
+
e
−
x
+
e
−
x
x
(
1
+
e
−
x
)
2
x
≥
0
0
x
<
0
FTS^\prime(x)= \begin{cases} \frac{1+e^{-x}+e^{-x}x}{(1+e^{-x})^2} & x\ge 0\\ 0 & x<0 \end{cases}
FTS′(x)={(1+e−x)21+e−x+e−xx0x≥0x<0
加入参数T后的函数曲线如下图:
通过试验表明当
T
=
−
0.2
T=-0.2
T=−0.2时的FTS由于其它激活函数。而且FTS的收敛速度比ReLU快两倍。但是FTS没有解决负值神经元死亡问题。