激活函数大总结:是什么?为什么?怎么选?

2024.11.15

当我们谈神经网络的激活函数的时候,通常是指非线性激活函数,因为谈线性的没有什么意义。

1.什么是函数非线性?

非线性是指函数不能表示为输入变量的简单线性组合(即多个变量通过加权求和的方式得到一个新变量)。
换一个角度解释:非线性表示曲线的导数不是常数,即不是一条直线。
eg:矩阵乘法,加权求和、多项式组合都是属于线性组合。

2. 为什么要用非线性激活函数?

故事要从AI的第一次寒冬谈起,1973年,那个时候的神经网络还是幼儿状态的感知机

其计算公式为:Z = WX+b, Y= sign(Z),sign是一个符号函数,输出0(或-1)或1.

一篇报告指出感知机本质是一个线性模型,只能处理线性问题,连最简单的异或问题也不能解决。这直接导致了接下来10年AI进行低谷期。

局面的改变要归功于Sigmoid函数,1986年,Hinton提出多层感知机(MLP),在层间使用Sigmoid函数来引入非线性,此时的计算公式为:

Z=WX+b,Y=sigmoid(Z), sigmoid就是一个非线性函数。

在这里插入图片描述
在现在的多层神经网络中,当用于回归任务时,只在隐藏层添加激活函数,输出层不添加;用于分类任务时,隐藏层和输出层都会添加激活函数,但作用是不同的,比如在隐藏层使用ReLU是为了引入非线性,在输出层使用sigmoid(二分类)或者softmax(多分类)这个是为了将输出值转换为类别概率。

为什么非线性激活函数可以解决异或问题?或者说为什么要引入非线性激活函数?

不管是DNN、CNN还是RNN,其本质都是从输入到输出的一系列的向量和矩阵运算(属于线性组合)。

如果没有非线性激活函数,多层神经网络将退化为一个简单的线性模型(每一层输入都是上一层输出的线性函数,z=Wx+b),无论有多少层,其表达能力都会受到极大的限制(相当于单层)。

而在层间引入非线性激活函数,相当于对数据空间进行变换,原本线性不可解的问题变得可解,理论上,深层神经网络可以逼近任意函数。

3.非线性激活函数常用有哪些?

在这里插入图片描述

以下是一些常用的非线性激活函数及其作用:

  1. Sigmoid:
    - 公式: f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1
    - 特点: Sigmoid 函数将输入映射到 (0, 1) 之间,具有平滑的梯度,但容易导致梯度消失问题,特别是在输入远离原点时。
    - 应用: 传统上用于二分类问题的输出层,但现在较少使用于隐藏层,因为它的梯度消失问题。

  2. Tanh (Hyperbolic Tangent):
    - 公式: f ( x ) = tanh ⁡ ( 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+exexex
    - 特点: Tanh 函数将输入映射到 (-1, 1) 之间,相比于 Sigmoid,它的输出中心位于0,这有助于训练过程中的数据居中。
    - 应用: 曾经广泛用于隐藏层,但现在也被 ReLU 等函数取代。

  3. ReLU (Rectified Linear Unit):
    - 公式: f ( x ) = max ⁡ ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
    - 特点: ReLU 在正区间是线性的,在负区间输出为0。它在实践中非常流行,因为它计算简单,能够缓解梯度消失问题,并且能够产生稀疏激活(即只有部分神经元被激活)。
    - 应用: 广泛应用于各种类型的神经网络,尤其是卷积神经网络(CNNs)和深度前馈网络。

  4. Leaky ReLU:
    - 公式: f ( x ) = { x if  x > 0 α x if  x ≤ 0 f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases} f(x)={xαxif x>0if x0,其中 α \alpha α 是一个小的正数(例如 0.01)。
    - 特点: Leaky ReLU 解决了 ReLU 在负区间梯度为0的问题,允许小的负梯度传递,有助于缓解“死亡神经元”问题。
    - 应用: 用于需要缓解 ReLU 梯度消失问题的情况。

  5. PReLU (Parametric ReLU):
    - 公式: f ( x ) = { x if  x > 0 α x if  x ≤ 0 f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases} f(x)={xαxif x>0if x0,其中 α \alpha α 是一个可学习的参数。
    - 特点: PReLU 类似于 Leaky ReLU,但 α \alpha α 是一个可以学习的参数,而不是固定的值。这使得网络可以根据数据自适应地调整 α \alpha α
    - 应用: 用于需要自适应调整负梯度的情况。

  6. Softmax:
    - 公式: f ( x i ) = e x i ∑ j e x j f(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} f(xi)=jexjexi
    - 特点: Softmax 将一组数值转换为概率分布,使得所有输出的和为1。它常用于多分类问题的输出层。
    - 应用: 主要用于多分类问题的输出层,将输出转换为各类别的概率。

  7. Swish:
    - 公式: f ( x ) = x ⋅ σ ( x ) f(x) = x \cdot \sigma(x) f(x)=xσ(x),其中 σ ( x ) \sigma(x) σ(x) 是 Sigmoid 函数。
    - 特点: Swish 是一个自门控激活函数,它在某些情况下比 ReLU 表现更好。它在正区间是线性的,在负区间是平滑的。
    - 应用: 用于需要更平滑激活函数的情况。

通过这些非线性激活函数,神经网络能够学习复杂的特征表示,从而能够处理非线性问题,如图像识别、自然语言处理等。每种激活函数都有其优缺点,选择合适的激活函数取决于具体的应用场景和数据特性。

4.大模型中的非线性激活函数

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值