SiLU(Sigmoid-Weighted Linear Unit),也被称为 Swish,是一种现代激活函数,结合了线性和非线性特性,由Google的研究人员在2017年提出。定义如下:
图像如下:
可以看到它在 x>0 时接近线性,而在 x<0 时逐渐趋于 0,表现出平滑且动态的特性。
SiLU 的特点
-
平滑性: SiLU 是连续且光滑的,梯度也连续变化,避免了 ReLU 中的不连续点(如 x=0)。
-
非对称性: SiLU 在 x>0 时近似线性,而在 x<0 时具有一定的非线性衰减特性。
-
可微性: SiLU 的导数始终存在且连续,适合优化问题。
-
基于输入大小的动态加权: 通过 x⋅σ(x) 的形式,SiLU 会动态调整激活值的大小。例如:
- 对大正值输入:σ(x) 接近 1,因此激活值近似 x。
- 对小负值输入:σ(x) 接近 0,激活值被压缩。
SiLU 的性质
- 单调性:SiLU 在 x>0 区间单调递增,在 x<0 区间单调递减。
- 零中心性:激活函数输出不是完全零均值,但在接近零的输入区间提供适度的零中心化。
SiLU 和其他激活函数的比较
这是常见激活函数(SiLU、ReLU、Sigmoid 和 Tanh)的对比图:
- SiLU (Swish):平滑过渡,x>0 时接近线性,x<0 时逐渐趋于零,兼具线性和非线性特性。
- ReLU:在 x>0 时输出 x,x<0 时恒为零,简单高效但可能导致神经元“死亡”。
- Sigmoid:输出范围在 (0, 1),适合概率问题,但存在梯度消失问题。
- Tanh:输出范围在 (-1, 1),零中心化,适合处理对称数据,但同样存在梯度消失问题。