常见激活函数及其导数:
1. Sigmoid 函数
【注】Sigmoid 型函数是指一类 S 型曲线函数,为两端饱和函数。常用的 Sigmoid 型函数有 Logistic 函数和 Tanh 函数。
1.1 Logistic 函数
Logistic 函数常用来产生伯努利分布中的参数。
- 性质:
- σ(x)=ex+1ex
- dxdσ(x)=σ(x)(1−σ(x))
- 1−σ(x)=σ(−x)
1.2 Tanh 函数
-
定义:
tanh(x)=ex+e−xex−e−x
-
性质:
- Tanh 函数可以看作是放大并平移的 Logistaic 函数:
tanh(x)=2σ(2x)−1
其值域是 (−1,1) 。
1.3 Hard-Logistic & Hard-Tanh
Logistic 函数和 Tanh 函数都是 Sigmoid 函数,具有饱和性,但计算开销较大,且这两个函数在中间近似线性,在两端近似为常量,故可以利用分段函数来近似。
hard_logistic(x)=⎩⎪⎪⎨⎪⎪⎧1gl0gl(x)≥10<gl(x)<1gl(x)≤0
其中,gl 为 Logistic 函数在 0 附近的一阶泰勒展开近似:
gl(x)≈σ(0)+x×σ′(0)=0.25x+0.5
hard_tanh(x)=⎩⎪⎪⎨⎪⎪⎧1gt−1gt(x)≥1−1<gt(x)<1gt(x)≤−1
其中,gt 为 Tanh 函数在 0 附近的一阶泰勒展开近似:
gl(x)≈tanh(0)+x×tanh′(0)=x
2. softplus 函数
2.1 定义
ζ=log(1+ex)
softplus 函数常用来产生正态分布中的 σ 和 σ21 参数。
【注】softplus 函数是正部函数的平滑版本。
正部函数(又称整流线性单位函数 ReLU)
x+=max{0,x}
负部函数
x−=max{0,−x}
2.2 性质
-
logσ(x)=−ζ(−x)
-
dxdζ(x)=σ(x)
-
∀x∈(0,1),σ−1(x)=log(1−xx)
-
∀x>0,ζ−1(x)=log(ex−1)
-
ζ(x)=∫−∞xσ(y)dy
-
ζ(x)−ζ(−x)=x
3. Softmax 函数
Softmax 函数是 Logistic Sigmoid 函数的一种推广,Logistic Sigmoid 常用用于二分类,Softmax 可以用于多分类。
σ(Z)j=∑k=1Kezkezj, j=1,⋯,K
- Softmax 函数的输出可以理解为概率,即属于每一种分类的概率。
4. ReLU 函数
4.1 定义
ReLU(x)={x0x≥0x<0=max(0,x)
-
优点:
- 采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。
- 在优化方面,相比于 Sigmoid 型函数的两端饱和,ReLU函数为左饱和函数,且在 x>0 时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度
-
缺点:
- ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。
- 此外,ReLU 神经元在训练时比较容易「死亡」。即在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活。
【注】在实际使用中,为了避免上述缺点,常常采用几种扩展的 ReLU 函数。
4.2 带泄漏的 ReLU
带泄漏的 ReLU 在输入 x<0 时,保持一个很小的梯度 γ,这样当神经元非激活时也能有一个非零的梯度可以更新参数, 避免永远不能被激活。带泄漏的 ReLU 定义如下:
LeakyReLU(x)={xγxif x>0if x≤0=max(0,x)+γmin(0,x)
其中,γ 是一个很小的常数(比如 0.01)。
4.3 带参数的 ReLU
带参数的 ReLU 引入一个可学习的参数,不同神经元可以有不同的参数。对于第 i 个神经元,其 PReLU 定义如下:
PReLUi(x)={xγixif x>0if x≤0=max(0,x)+γimin(0,x)
其中,γi 为 x≤0 时函数的斜率。
4.4 ELU 函数
ELU 是一个近似的零中心化的非线性函数,其定义如下:
ELU(x)={xγ(ex−1)if x>0if x≤0=max(0,x)+min(0,γ(ex−1))
其中,γ≥0 是一个超参数,决定 x≤0 时的饱和曲线,并调整输出均值在 0 附近。
4.5 Swish 函数
Swish 函数是一种自门控激活函数,其定义如下:
swish(x)=xσ(βx)
其中,σ(⋅) 为 Logistic 函数,β 为可学习的参数(或一个固定的超参数)。
4.6 GELU 函数
GELU 函数也是一种通过门控机制来调整其输出值的激活函数,和 Swish 函数类似,其定义如下:
GELU(x)=xP(X≤x)
其中,P(X≤x) 是高斯分布 N(μ,σ2) 的累积分布函数,其中 μ,σ 为超参数(一般设为标准高斯分布)。
- 由于 GELU 高斯分布的累积分布函数为 S 型函数,因此 GELU 函数可以用 Tanh 函数或 Logistic 函数来近似:
GELU(x)≈0.5x(1+tanh(π2(x+0.044715x3)))GELU(x)≈xσ(1.702x)
当使用 Logistic 函数来近似时,GELU 相当于一种特殊的 Swish 函数。
5. Maxout 单元
Maxout 单元也是一种分段线性函数,Sigmoid 型函数、ReLU 等激活函数的输入是神经元的净输入 x,是一个标量。而 Maxout 单元的输入是上一层神经元的全部原始输出, 是一个向量 x=[x1;x2;⋯;xD] 。
- 每个 Maxout 单元有 K 个权重向量 wk∈RD 和偏置 bk(1≤k≤K)。对于输入 x,可以得到 K 个净输入 zk,1≤k≤K:
zk=wkTx+bk
其中 wk=[wk,1,⋯,wk,D]T 为第 k 个权重向量。
Maxout 单元的非线性函数定义如下:
maxout(x)=maxk∈[1,K](zk)
【注】Maxout 单元不单是净输入到输出之间的非线性映射,而是整体学习输入到输出之间的非线性映射关系。