Pytorch激活函数

激活函数的作用详见:激活层的作用-CSDN博客文章浏览阅读243次,点赞2次,收藏3次。**加速学习过程**:使用适当的激活函数可以加快学习过程的收敛速度,例如ReLU函数相较于传统的Sigmoid或Tanh函数,能显著提高SGD的收敛速度[^5^]。- **实现复杂函数**:通过对每一层的线性输出应用激活函数,神经网络能够实现对输入数据的复杂、非线性映射,从而学习并模拟更复杂的数据关系和特征[^4^]。- **避免梯度消失**:某些激活函数如ReLU能够有效避免梯度消失问题,保持梯度在一个合适的范围内,有助于深层次网络的训练[^1^][^5^]。6. **增强学习能力**https://blog.csdn.net/a8039974/article/details/141905129 

1. ReLU(Rectified Linear Unit)

公式:

ReLU(x)=\left\{\begin{matrix} x, & x\geq0 \\ x, & otherwise \end{matrix}\right.

图像:

优点

  • 计算简单高效,只需要判断输入是否大于0。
  • 缓解了梯度消失问题,因为当输入为正时,梯度恒为1。
  • 加速了网络的收敛速度。

缺点

  • 当输入为负时,输出始终为0,可能导致神经元“死亡”,即永远不会被激活。
  • 输出不是以0为中心的,这可能会影响梯度下降的效率。

2. Sigmoid

公式:

Sigmoid(x)=\sigma (x)=\frac{1}{1+exp(-x)}

图像:

优点

  • 输出范围在(0, 1)之间,可以解释为概率,适用于二分类问题的输出层。
  • 引入了非线性,使得模型能够学习复杂的数据关系。

缺点

  • 在输入值远离0时,梯度趋近于0,容易导致梯度消失问题。
  • 输出不是以0为中心的,这可能会影响梯度下降的效率。
  • 计算量相对较大,因为涉及到了指数运算。

3. Tanh(双曲正切)

公式:

Tanh(x)=tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}

图像:

优点

  • 输出范围在(-1, 1)之间,以0为中心,有助于保持数据分布的均衡性。
  • 引入了非线性,使得模型能够学习复杂的数据关系。

缺点

  • 和Sigmoid类似,当输入值远离0时,梯度趋近于0,容易导致梯度消失问题。
  • 计算量也相对较大,同样涉及到了指数运算。

4. LeakyReLU

公式:

LeakyReLU(x)=\left\{\begin{matrix} x, & x\geq0\\ negetive\_slope\times x, & otherwise \end{matrix}\right.

图像:

优点

  • 解决了ReLU的神经元“死亡”问题,因为当输入为负时,输出不再是0,而是一个较小的负数。
  • 保留了ReLU的优点,如计算简单高效和缓解梯度消失问题。

缺点

  • 需要手动设置一个超参数(负斜率),这个超参数的选择可能会影响模型的性能。

5. PReLU(Parametric ReLU)

公式:

PReLU(x)=\left\{\begin{matrix} x, & x\geq0 \\ ax, & otherwise \end{matrix}\right.

其中,a是可学习的参数。

图像:

优点

  • 与LeakyReLU类似,但负斜率是通过学习得到的,增加了灵活性。
  • 有可能获得比LeakyReLU更好的性能。

缺点

  • 增加了模型的复杂度,因为需要学习额外的参数。

6. ELU(Exponential Linear Unit)

 ELU 的提出也解决了ReLU 的问题。与ReLU相比,ELU有负值,这会使激活的平均值接近零。均值激活接近于零可以使学习更快,因为它们使梯度更接近自然梯度。

ELU函数的特点:

没有Dead ReLU问题,输出的平均值接近0,以0为中心。
ELU 通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向零加速学习。
ELU函数在较小的输入下会饱和至负值,从而减少前向传播的变异和信息。
ELU函数的计算强度更高。与Leaky ReLU类似,尽管理论上比ReLU要好,但目前在实践中没有充分的证据表明ELU总是比ReLU好。

优点

  • 在负值区域引入了软饱和,有助于缓解梯度消失问题。
  • 输出均值接近于0,有助于加速收敛。

缺点

  • 计算量相对较大,因为涉及到了指数运算。

7. Softmax

公式:

Softmax(x_i)=\frac{exp(x_i)}{\sum_j exp(x_j)}

优点

  • 将输入向量映射到概率分布上,每个输出值在(0, 1)之间,且所有输出值之和为1。
  • 适用于多分类问题的输出层,能够直接给出每个类别的预测概率。

缺点

  • 计算量相对较大,特别是当类别数很多时。
  • 可能会出现数值不稳定的问题,尤其是在使用交叉熵损失函数时。

8. LogSoftmax

公式:

LogSoftmax(x_i)=log\begin{pmatrix} \frac{exp(x_i)}{\sum_j exp(x_j)} \end{pmatrix}

优点

  • 对Softmax的结果取对数,有助于计算交叉熵损失时保持数值稳定性。
  • 减少了因Softmax输出值过小或过大而导致的数值下溢或上溢问题。

缺点

  • 仍然需要计算Softmax,因此计算量相对较大。

9. SELU(Scaled Exponential Linear Unit)

公式:

SELU(x)=scale\ast (max(0,x)+min(0,\alpha\ast (exp(x)-1)))

其中,a=1.6732632423543772848170429916717,scale=1.0507009873554804934193349852946。

图像:

优点

  • 自归一化属性:SELU通过缩放因子确保激活值在传播过程中保持接近零均值和单位方差的分布,这有助于加速训练并提高稳定性。
  • 缓解梯度消失和梯度爆炸问题:由于其自归一化特性,SELU能够减少梯度消失和梯度爆炸的风险。

缺点

  • 敏感性:SELU的性能可能受到网络架构和参数初始化的影响,需要仔细调整以确保其自归一化属性。
  • 计算量:虽然比Sigmoid和Tanh小,但相比ReLU等函数仍有一定的计算开销。

10. SiLU(Sigmoid Linear Unit,也称为Swish)

公式:

SiLU(x)=x*\sigma (x)=x \ast \frac{1}{1+exp(-x)}

图像:

优点

  • 平滑性:SiLU函数是平滑的,有助于梯度在反向传播过程中保持稳定。
  • 非单调性:与ReLU不同,SiLU在输入为负时也有非零输出,这有助于避免神经元“死亡”问题。
  • 生物学合理性:SiLU函数与神经元激活的生物学特性相似,可能有助于模型学习更复杂的特征。

缺点

  • 计算量:SiLU函数涉及指数运算,相比ReLU等函数计算量较大。
  • 敏感性:SiLU的性能可能受到超参数(如β,尽管在标准SiLU中β通常固定为1)和模型架构的影响。

11. Mish

公式:

Mish(x)=x \ast Tanh(Softplus(x))

图像:

优点

  • 平滑性:与SiLU类似,Mish函数也是平滑的,有助于梯度在反向传播过程中保持稳定。
  • 非单调性:Mish函数在输入为负时也有非零输出,这有助于避免神经元“死亡”问题。
  • 生物学合理性:Mish函数在某些方面与神经元激活的生物学特性相似。

缺点

  • 计算量:Mish函数同样涉及指数运算,计算量相对较大。
  • 普及度:相比ReLU、Sigmoid等经典激活函数,Mish的普及度较低,可能需要更多的实验来验证其性能。

12. GELU(Gaussian Error Linear Unit)

公式:

GELU(x)=0.5 \ast x \ast (1+Tanh(\sqrt{(2/\pi)} \ast (x+0.044715 \ast x^{3})))

图像:

优点

  • 生物学合理性:GELU函数与神经元激活的生物学特性更为接近,因为它基于高斯分布的累积分布函数。
  • 灵活性:GELU函数可以通过调整其参数来适应不同的应用场景。

缺点

  • 计算量:GELU函数涉及复杂的数学运算(如高斯分布的累积分布函数),计算量相对较大。
  • 复杂性:相比简单的ReLU等函数,GELU的实现更为复杂。

13 Softplus

公式:

Softplus(x)=\frac{1}{\beta} \ast log(1+exp(\beta \ast x))

对于数值稳定性,当input \times \beta >threshold时,恢复到线性函数。

图像:

优点

  • 平滑性:Softplus函数是平滑的,类似于ReLU的平滑版本,有助于梯度在反向传播过程中保持稳定。
  • 非负性:Softplus函数的输出始终为非负值,这在某些应用中可能是有益的。

缺点

  • 计算量:Softplus函数涉及对数运算和指数运算,相比ReLU等函数计算量较大。
  • 梯度饱和:当输入值非常大时,Softplus函数的梯度可能趋近于0,导致梯度消失问题。

14. Softsign

公式:

SoftSign(x)=\frac{x}{1+\left | x \right |}

图像:

优点

  • 输出范围:Softsign函数的输出范围在(-1, 1)之间,类似于Tanh函数,但更加平滑。
  • 梯度稳定性:相比Sigmoid和Tanh函数,Softsign函数在输入值较大时梯度更加稳定。

缺点

  • 梯度饱和:当输入值接近±1时,Softsign函数的梯度趋近于0,可能导致梯度消失问题。
  • 计算量:虽然比Sigmoid和Tanh小,但相比ReLU等函数仍有一定的计算开销。

15. Hardtanh

优点

  • 线性区域:Hardtanh函数在[-1, 1]区间内是线性的,这有助于保持梯度的稳定性。
  • 简化计算:相比Tanh函数,Hardtanh函数的计算更加简单,因为它不涉及指数运算。

缺点

  • 梯度饱和:当输入值超出[-1, 1]区间时,Hardtanh函数的梯度为0,可能导致梯度消失问题。
  • 非线性能力有限:由于Hardtanh函数在大部分区间内是线性的,其非线性能力相对较弱。

16. Softshrink

优点

  • 压缩性:Softshrink函数能够压缩输入值,使其更接近0,这有助于减少噪声的影响。
  • 平滑性:Softshrink函数是平滑的,有助于梯度在反向传播过程中保持稳定。

缺点

  • 输出范围:Softshrink函数的输出范围取决于其参数,可能需要根据具体问题进行调整。
  • 梯度饱和:当输入值接近其压缩阈值时,Softshrink函数的梯度可能趋近于0,导致梯度消失问题。

17. Threshold

优点

  • 简化决策:Threshold函数通过设定一个阈值来简化决策过程,当输入值超过阈值时输出1(或指定值),否则输出0。
  • 易于理解:Threshold函数的决策过程直观易懂,适用于某些简单的分类或二值化任务。

缺点

  • 非连续性:Threshold函数在阈值处是不连续的,这可能导致梯度在反向传播过程中无法传递。
  • 非线性能力有限:由于Threshold函数本质上是一个阶跃函数,其非线性能力非常有限。

18. LeCun Tanh(也称为Scaled Tanh)

优点

  • 缩放特性:LeCun Tanh通过缩放因子调整Tanh函数的输出范围,可能有助于改善梯度流动和模型训练稳定性。
  • 生物学合理性:与神经元激活的生物学特性有一定的相似性。

缺点

  • 梯度消失:与Tanh函数类似,当输入值非常大或非常小时,梯度可能趋近于0,导致梯度消失问题。
  • 敏感性:缩放因子的选择可能对模型性能有显著影响。

19. Softmin

优点

  • 概率解释:Softmin函数将输入向量映射到概率分布上,每个输出值在(0, 1)之间,且所有输出值之和为1。与Softmax相反,Softmin更适用于处理最小值问题。

缺点

  • 适用性有限:由于Softmin更适用于处理最小值问题,因此在标准的多分类任务中并不常见。
  • 计算量:与Softmax类似,Softmin的计算量也相对较大。

20. Maxout

优点

  • 通用性:Maxout可以看作是ReLU和Leaky ReLU的泛化版本,通过学习输入特征的分段线性函数,能够拟合更复杂的函数关系。
  • 灵活性:Maxout网络能够学习隐藏层单元之间的激活函数,而不仅仅是固定的非线性函数。

缺点

  • 参数增加:由于Maxout需要为每个隐藏单元学习多个权重,因此参数数量显著增加,可能导致过拟合和计算量增大。
  • 训练难度:Maxout网络的训练可能比其他激活函数更加困难,需要更多的优化技巧和正则化方法。

21. Swish

优点

  • 平滑性:Swish函数是平滑的,有助于梯度在反向传播过程中保持稳定。
  • 非单调性:与ReLU不同,Swish函数在输入为负时也有非零输出,这有助于避免神经元“死亡”问题。
  • 生物学合理性:Swish函数在某些方面与神经元激活的生物学特性相似。

缺点

  • 计算量:Swish函数涉及乘法运算和Sigmoid函数,相比ReLU等函数计算量较大。
  • 敏感性:Swish函数的性能可能受到其参数(如β,尽管在标准Swish中β通常固定为1)和模型架构的影响。

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值