激活函数


  1. 定义与作用
  2. 激活函数(Activation Function)是神经网络中的一个关键组件。在神经网络中,神经元接收来自其他神经元的输入信号,这些输入信号经过加权求和后,通过激活函数进行非线性变换,产生神经元的输出。它的主要作用是为神经网络引入非线性因素,使神经网络能够拟合复杂的非线性函数关系。如果没有激活函数,无论神经网络有多少层,其本质上都只是一个线性组合模型,无法有效处理复杂的数据分布和任务。
  3. 常见类型
  4. Sigmoid函数
    • 公式与图像:Sigmoid函数的数学表达式为(y=\frac{1}{1 + e^{-x}})。其函数图像呈S形,值域在((0,1))之间。当(x)趋近于正无穷时,(y)趋近于(1);当(x)趋近于负无穷时,(y)趋近于(0)。
    • 特点与应用场景:Sigmoid函数的输出范围有限,这使得它在处理概率估计相关的任务时非常有用,例如在逻辑回归中,输出可以解释为某一事件发生的概率。但是它也有一些缺点,如在输入值较大或较小的时候,梯度会趋近于(0),容易导致梯度消失问题,使得训练过程变慢甚至无法收敛。
  5. ReLU函数(Rectified Linear Unit)
    • 公式与图像:ReLU函数的表达式为(y = max(0,x))。其图像是一个在(x)轴负半轴为(0),正半轴为一条直线(y = x)的折线。
    • 特点与应用场景:ReLU函数计算简单,能够有效缓解梯度消失问题。在正向传播时,当输入大于(0)时,神经元处于激活状态,直接输出输入值;当输入小于等于(0)时,输出为(0)。这种特性使得它在深度学习中被广泛应用,尤其是在卷积神经网络(CNN)等深层神经网络中,可以加速训练过程。不过,ReLU函数可能会导致神经元“死亡”的问题,即如果某个神经元在训练过程中一直处于不激活状态(输入始终小于等于(0)),那么它的权重将无法更新。
  6. Tanh函数(双曲正切函数)
    • 公式与图像:Tanh函数的表达式为(y=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}})。其值域在(( - 1,1))之间,函数图像也是S形,但相对于Sigmoid函数,它是关于原点对称的。
    • 特点与应用场景:Tanh函数和Sigmoid函数类似,都是S形曲线,能够提供非线性变换。它的输出范围在(( - 1,1))之间,这使得它在一些需要输出有正有负的场景中比较合适,例如在某些循环神经网络(RNN)的隐藏层中,可以更好地处理数据的正负特征。然而,和Sigmoid函数一样,它也存在梯度消失的问题。
  7. 选择激活函数的考虑因素
  8. 任务类型:如果是进行二分类任务,Sigmoid函数可能比较合适,因为它的输出可以直接解释为概率。对于多层神经网络的隐藏层,ReLU函数通常是一个不错的选择,因为它可以避免梯度消失问题,加速训练。如果需要输出有正有负的值,Tanh函数可能是一个考虑的对象。
  9. 网络结构:在深层神经网络中,为了避免梯度消失问题,一般会避免在多个连续的层中使用Sigmoid或Tanh函数。而在浅层神经网络或者某些特定的小型网络中,这些函数可能也能发挥一定的作用。另外,一些新型的神经网络结构可能会根据自身特点选择特定的激活函数,或者对传统激活函数进行改进。
  10. 新的研究趋势和改进型激活函数
  11. 为了解决传统激活函数的一些问题,研究人员提出了许多改进型的激活函数。例如,Leaky ReLU函数是对ReLU函数的改进,它在(x\lt0)时,输出为(\alpha x)((\alpha)是一个很小的正数,如(0.01)),这样可以避免神经元“死亡”的问题。还有PReLU(Parametric ReLU)函数,它的(\alpha)是可以学习的参数,进一步增强了模型的灵活性和拟合能力。此外,还有一些基于其他原理的激活函数不断涌现,如Swish函数(y = x\cdot sigmoid(\beta x))((\beta)是一个常数)等,这些新的激活函数在不同的应用场景下展现出了一定的优势。