定义
- 激活函数( A c t i v a t i o n F u n c t i o n Activation\ Function Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经网络中,除了输入层外,隐藏层和输出层的每个神经元都配备有一个激活函数。这个函数的作用是将神经元的输入(即来自前一层神经元的加权和)映射到输出端,并引入非线性因素,使得神经网络能够学习和理解复杂的非线性函数。
作用
引入非线性因素:
- 激活函数的主要作用之一是向神经网络引入非线性因素,以解决线性模型表达能力不足的缺陷。没有激活函数的神经网络,其每一层输出都是上层输入的线性函数,这限制了神经网络的表达能力和学习能力。而激活函数通过其非线性特性,使得神经网络可以逼近任意复杂的非线性函数。
执行数据归一化:
- 激活函数还能执行数据的归一化,将输入数据映射到某个范围内,再往下传递。这样做的好处是可以限制数据的扩张,防止数据过大导致的溢出风险。
改变数据的线性关系:
- 激活函数的存在使得神经网络的“多层”有了实际的意义。通过改变数据的线性关系,激活函数使得神经网络可以学习复杂的事物、复杂的数据以及表示输入输出之间非线性的复杂任意函数映射。
增强网络能力:
- 引入激活函数后,神经网络可以学习并表示更广泛的函数映射关系,这极大地增强了神经网络的学习能力和适应性。
常见激活函数
-
S i g m o i d Sigmoid Sigmoid函数:
公式: ( f ( x ) = 1 1 + e − x ) (f(x) = \frac{1}{1 + e^{-x}}) (f(x)=1+e−x1)
特点:
输出范围在 [ 0 , 1 ] [0, 1] [0,1]之间,适用于作为预测概率输出。
梯度平滑,避免跳跃的输出值,函数可微。
缺点:
在深度神经网络中梯度反向传递时,可能导致梯度消失,因为 s i g m o i d sigmoid sigmoid函数的导数取值范围在 [ 0 , 0.25 ] [0, 0.25] [0,0.25]之间。
函数输出不是以 0 0 0为中心的,这可能会降低权重更新的效率。
执行指数运算,计算速度相对较慢。 -
T a n h Tanh Tanh函数:
公式: ( f ( x ) = e x − e − x e x + e − x ) (f(x) = \frac{e{x} - e{-x}}{e{x} + e{-x}}) (f(x)=ex+e−xex−e−x)
特点:
输出范围在 [ − 1 , 1 ] [-1, 1] [−1,1]之间,以 0 0 0为中心。
与 s i g m o i d sigmoid sigmoid函数类似,但输出范围更广。
缺点:
与 s i g m o i d sigmoid sigmoid函数相似,在深度神经网络中也可能导致梯度消失。 -
R e L U ( R e c t i f i e d L i n e a r ) ReLU(Rectified Linear ) ReLU(RectifiedLinear)函数:
公式: ( f ( x ) = max ( 0 , x ) ) (f(x) = \max(0, x)) (f(x)=max(0,x))
特点:
当输入大于 0 0 0时,输出等于输入;当输入小于或等于 0 0 0时,输出为 0 0 0。
优点包括计算效率高(只涉及加法和乘法)、有助于缓解梯度消失问题(因为导数在输入大于 0 0 0时为1)。
缺点:
在训练过程中,某些神经元可能会“死亡”,即权重不再更新,因为它们的输出始终为 0 0 0。 -
L e a k y R e L U Leaky\ ReLU Leaky ReLU函数:
公式: ( f ( x ) = { x , x ≥ 0 a l p h a x , x < 0 ) (f(x) = \begin{cases}x, x \geq 0 \\alpha x, x < 0\end{cases}) (f(x)={x,x≥0alphax,x<0)
特点:
类似于 R e L U ReLU ReLU,但当输入小于 0 0 0时,输出不为 0 0 0,而是乘以一个小的正数 ( α ) (\alpha) (α)。
旨在解决ReLU中的“死亡神经元”问题。 -
E L U ( E x p o n e n t i a l L i n e a r U n i t ) ELU(Exponential\ Linear\ Unit) ELU(Exponential Linear Unit)函数:
公式: ( f ( x ) = { x , x ≥ 0 a l p h a ( e x − 1 ) , x < 0 ) (f(x) = \begin{cases}x, x \geq 0 \\alpha (e^{x} - 1), x < 0\end{cases}) (f(x)={x,x≥0alpha(ex−1),x<0)
特点:
当输入小于 0 0 0时,输出是一个指数函数,有助于缓解梯度消失问题。 -
S o f t m a x Softmax Softmax函数:
通常用于多分类问题的输出层。
将神经网络的输出转换为概率分布,使得所有类别的概率之和为 1 1 1。
对于输入向量 x x x中的第 i i i个元素 x i x_i xi,其 S o f t m a x Softmax Softmax值 y i y_i yi由以下公式给出: y i = Softmax ( x i ) = e x i ∑ k = 1 N e x k y_i = \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{k=1}^{N}e^{x_k}} yi=Softmax(xi)=∑k=1Nexkexi
其中: e x i e^{x_i} exi是 x i x_i xi的自然指数函数值。 N N N 是输入向量 x x x的元素个数。 ∑ k = 1 N e x k \sum_{k=1}^{N}e^{x_k} ∑k=1Nexk 是对所有输入元素 x k x_k xk(其中 k k k从 1 1 1到 N N N)的自然指数函数值进行求和。这个公式的作用是将输入向量 x x x中的每个元素转换为一个在 ( 0 , 1 ) (0, 1) (0,1)区间内的值,并且这些值的总和为 1 1 1,因此可以将其解释为概率分布。
关键点归纳:
指数化:通过计算 e x i e^{x_i} exi,将输入值映射到一个正数域。
归一化:通过除以所有元素指数化后的和 ∑ k = 1 N e x k \sum_{k=1}^{N}e^{x_k} ∑k=1Nexk,确保输出的概率值在 ( 0 , 1 ) (0, 1) (0,1)之间,并且总和为 1 1 1。
多分类: S o f t m a x Softmax Softmax函数通常用于多分类问题的输出层,将神经网络的输出转换为类别概率分布。
数学性质: S o f t m a x Softmax Softmax函数具有一些优良的数学性质,如平移不变性、满足概率性质、对称性和可导性等。
注意:由于使用了指数函数,当输入值 x i x_i xi的绝对值很大时,经过 S o f t m a x Softmax Softmax函数后,对应的输出值 y i y_i yi将趋近于 1 1 1,而其他元素的输出值将趋近于 0 0 0。这种现象在多分类问题中很常见,因为通常我们希望模型能够明确地将输入分类到某个类别中。