函数的定义为:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e−x1
如下图所示,其值域为 ( 0 , 1 ) (0,1) (0,1)。也就是说,输入的每个神经元、节点都会被缩放到一个介于0和1之间的值。
当x大于零时输出结果会趋近于1,而当x小于零时,输出结果趋向于0,由于函数的特性,经常被用作二分类的输出端激活函数。
f ′ ( x ) = ( 1 1 + e − x ) ′ = 1 1 + e − x ( 1 − 1 1 + e − x ) = f ( x ) ( 1 − f ( x ) ) f^{'}(x)=(\frac{1}{1+e^{-x}})^{'}=\frac{1}{1+e^{-x}}\left( 1- \frac{1}{1+e^{-x}} \right)=f(x)(1-f(x)) f′(x)=(1+e−x1)′=1+e−x1(1−1+e−x1)=f(x)(1−f(x))
当 x = 0 x=0 x=0时, f ( x ) ′ = 0.25 f(x)'=0.25 f(x)′=0.25。
函数的定义为:
f ( x ) = T a n h ( x ) = e x − e − x e x + e − x f(x) = Tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=Tanh(x)=ex+e−xex−e−x
如下图所示,值域为 ( − 1 , 1 ) (-1,1) (−1,1)。
f ′ ( x ) = ( e x − e − x e x + e − x ) ′ = 1 − ( t a n h ( x ) ) 2 f^{'}(x)=(\frac{e^x - e^{-x}}{e^x + e^{-x}})^{'}=1-(tanh(x))^2 f′(x)=(ex+e−xex−e−x)′=1−(tanh(x))2
当 x = 0 x=0 x=0时, f ( x ) ′ = 1 f(x)'=1 f(x)′=1。
由Tanh和Sigmoid的导数也可以看出Tanh导数更陡,收敛速度比Sigmoid快。
导数值小于1,反向传播易导致梯度消失。
函数的定义为:
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)
如下图所示,值域为 [ 0 , + ∞ ) [0,+∞) [0,+∞)。
稀疏:数量少,通常分散在很大的区域。在神经网络中,这意味着激活的矩阵含有许多 0。这种稀疏性能让我们得到什么?当某个比例(比如 50%)的激活饱和时,我们就称这个神经网络是稀疏的。这能提升时间和空间复杂度方面的效率——常数值(通常)所需空间更少,计算成本也更低。
c ( u ) = { 0 , x < 0 1 , x > 0 u n d e f i n e d , x = 0 c(u)=\begin{cases} 0,x<0 \\ 1,x>0 \\ undefined,x=0\end{cases} c(u)=⎩⎪⎨⎪⎧0,x<01,x>0undefined,x=0
通常 x = 0 x=0 x=0时,给定其导数为1和0。
函数定义为:
f ( x ) = { a x , x < 0 x , x ≥ 0 f(x) = \left\{ \begin{aligned} ax, \quad x<0 \\ x, \quad x\ge0 \end{aligned} \right. f(x)={ax,x<0x,x≥0
如下图所示( a = 0.5 a = 0.5 a=0.5),值域为 ( − ∞ , + ∞ ) (-∞,+∞) (−∞,+∞)。
该方法与ReLU不同的是在x小于0的时候取f(x) = ax,其中a是一个非常小的斜率(比如0.01)。这样的改进可以使得当x小于0的时候也不会导致反向传播时的梯度消失现象。
函数的定义为:
f ( x ) = l n ( 1 + e x ) f(x) = ln( 1 + e^x) f(x)=ln(1+ex)
值域为 ( 0 , + ∞ ) (0,+∞) (0,+∞)。
函数图像如下:
可以把SoftPlus看作是ReLU的平滑。
函数定义为:
P ( y / x ) = e Z i ∑ k = 1 K e Z k P(y/x) = \frac{e^{Z_i}}{\sum_{k=1}^K e^{Z_k}} P(y/x)=∑k=1KeZkeZi
其中 Z i Z_i Zi可以等于 θ i T x \theta_i^T x θiTx, θ i \theta_i θi 和 x x x 是列向量, θ i T x \theta_i^T x θiTx 可能被换成函数关于 x x x 的函数 f i ( x ) f_i(x) fi(x)
通过 softmax 函数,可以使得 P ( y / x ) P(y/x) P(y/x) 的范围在 [ 0 , 1 ] [0,1] [0,1] 之间。在回归和分类问题中,通常 θ \theta θ 是待求参数,通过寻找使得 P ( y / x ) P(y/x) P(y/x) 最大的 θ i \theta_i θi 作为最佳参数。
使得范围在 [ 0 , 1 ] [0,1] [0,1] 之间的方法有很多,这里使用 e e e 的幂函数参考 了logistic 函数:
P y / x ) = 1 1 + exp ( − θ i T x ) Py/x) = \frac{1}{1+\exp(-\theta_i^T x)} Py/x)=1+exp(−θiTx)1
这个函数的作用就是使得 P ( y / x ) P(y/x) P(y/x) 在负无穷到 0 的区间趋向于 0, 在 0 到正无穷的区间趋向 1。同样 softmax 函数加入了 e e e 的幂函数正是为了两极化:正样本的结果将趋近于 1,而负样本的结果趋近于 0,并把输出总和进行了归一化。
这样为多类别提供了方便(可以把 P ( y / x ) P(y/x) P(y/x) 看做是样本属于类别的概率)。可以说,Softmax 函数是 logistic 函数的一种泛化。
它是一个网络预测多分类问题的最佳输出激活函数。
假设我们有一个数组, Z i Z_i Zi 表示 Z Z Z 中的第 i i i 个元素,那么这个元素的 softmax 值就是
P ( y / x ) = e Z i ∑ K e Z k P(y/x)= \frac{e^{Z_i}}{\sum_K e^{Z_k}} P(y/x)=∑KeZkeZi
从下图看,神经网络中包含了输入层,然后通过两个特征层处理,最后通过 softmax 分析器就能得到不同条件下的概率,这里需要分成三个类别,最终会得到 y = 0 , y = 1 , y = 2 y=0, y=1, y=2 y=0,y=1,y=2 的概率值。
继续看下面的图,三个输入通过 softmax 后得到一个数组 [ 0 , 0.12 , 0.88 ] [0 , 0.12 , 0.88] [0,0.12,0.88],这就是 soft 的功能。
更形象的映射过程如下图所示:
softmax 直白来说就是将原来输出是 3 , 1 , − 3 3,1,-3 3,1,−3 通过 softmax 函数一作用,就映射成为 [ 0 , 1 ] [0,1] [0,1] 的值,而这些值的累和为 1 1 1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。
选择一个适合的激活函数并不容易,需要考虑很多因素,通常的做法是,如果不确定哪一个激活函数效果更好,可以把它们都试试,然后看看在验证集或者测试集上的效果。然后看哪一种表现的更好,就去使用它。
以下是常见的选择情况:
ELU激活函数解决了 ReLU 的一些问题,同时也保留了一些好的方面。这种激活函数要选取一个 α \alpha α值;常见的取值是在 0.1 到 0.3 之间。
函数定义如下所示:
f ( x ) = { a ( e x − 1 ) , x < 0 x , x ≥ 0 f(x) = \left\{ \begin{aligned} a(e^x -1), \quad x<0 \\ x, \quad x\ge0 \end{aligned} \right. f(x)={a(ex−1),x<0x,x≥0
如果我们输入的 x x x值大于0,则结果与ReLU一样,即 y y y值等于 x x x值;但如果输入的 x x x值小于0,则我们会得到一个稍微小于0的值,所得到的 y y y值取决于输入的 x x x值,但还要兼顾参数 α \alpha α——你可以根据需要来调整这个参数。更进一步,我们引入了指数运算 e x e^x ex,因此 ELU 的计算成本比 ReLU 高。
下面给出了 α \alpha α值为0.2时的ELU函数图:
ELU的导数:
导数图如下所示: