常见激活函数总结


前言

激活函数在神经网络中起着重要的作用,具有以下几个功能:

  1. 引入非线性:激活函数通过引入非线性将线性操作转化为非线性操作。线性变换的叠加只能得到一个线性变换,而非线性激活函数允许神经网络学习和表示更复杂的模式和特征。非线性激活函数的存在使得神经网络能够逼近任意复杂的函数。
  2. 增加网络的表达能力:激活函数的非线性特性增加了神经网络的表达能力。它们允许网络学习非线性关系,从而能够处理更加复杂的数据和任务。激活函数的选择对于网络的性能和学习能力非常重要。
  3. 实现特定的激活模式:不同的激活函数可以实现不同的激活模式。例如,ReLU
    激活函数可以引入稀疏激活性,即大部分神经元处于非激活状态,只有少部分神经元处于激活状态。这种稀疏性可以促使网络学习更具判别性的特征,并提高模型的泛化能力。
  4. 解决梯度消失问题:某些激活函数具有较大的导数,可以帮助缓解梯度消失问题。梯度消失问题指的是在反向传播过程中,梯度逐渐变小并可能趋近于零,导致深层网络的梯度无法传递到浅层,使得浅层的参数难以更新。通过使用适当的激活函数,可以在一定程度上缓解梯度消失问题,促进梯度的有效传播。

1.ReLU(修正线性单元)

  torch.nn.relu() 是 PyTorch 框架中实现 ReLU 激活函数的函数之一。ReLU(修正线性单元)函数可以将负值设置为零,并保持正值不变。这是一个非常常用的激活函数,用于增加神经网络的非线性性。

1.1 公式

在这里插入图片描述

1.2 图像

在这里插入图片描述

1.3 优缺点

在这里插入图片描述

1.4 代码

import torch
import torch.nn as nn

# 创建输入张量
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# 使用 torch.nn.relu() 应用 ReLU 激活函数
output_tensor = nn.ReLU()(input_tensor)

print(output_tensor)
tensor([0., 0., 0., 1., 2.])

2.Sigmoid函数

  将输入映射到0到1之间的输出,具有平滑的S形曲线。Sigmoid函数在早期的神经网络中广泛使用,但它的主要缺点是在远离零点时梯度接近于零,导致梯度消失问题。

2.1 公式

在这里插入图片描述

2.2 图像

在这里插入图片描述

2.3 优缺点

在这里插入图片描述

2.4 代码

import torch
# 创建输入张量
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
# 使用 torch.nn.sigmoid() 应用 Sigmoid 激活函数
output_tensor = torch.nn.Sigmoid()(input_tensor)
print(output_tensor)
tensor([0.1192, 0.2689, 0.5000, 0.7311, 0.8808])

3.Tanh函数

  输入映射到-1到1之间的输出,具有平滑的S形曲线。与Sigmoid函数类似,Tanh函数也存在梯度消失问题,但相对于Sigmoid函数来说,它在负区间上具有更大的梯度。

3.1 公式

在这里插入图片描述

3.2 图像

在这里插入图片描述

3.3 优缺点

在这里插入图片描述

3.4 代码

import torch
import torch.nn as nn

# 创建输入张量
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# 使用 torch.nn.Tanh() 应用 Tanh 激活函数
output_tensor = nn.Tanh()(input_tensor)

print(output_tensor)
tensor([-0.9640, -0.7616,  0.0000,  0.7616,  0.9640])

4.Softmax()函数

  Softmax 函数将输入向量的元素转化为表示概率分布的值,使得它们的总和等于 1。

4.1 公式

在这里插入图片描述

4.2 图像

在这里插入图片描述

4.3 优缺点

在这里插入图片描述

4.4 代码

import torch
import torch.nn as nn

# 创建输入张量
input_tensor = torch.tensor([1.0, 2.0, 3.0])

# 使用 torch.nn.softmax() 应用 Softmax 函数
output_tensor = nn.Softmax(dim=0)(input_tensor)

print(output_tensor)
tensor([0.0900, 0.2447, 0.6652])

5 .Leaky ReLU函数

  Leaky ReLU(Leaky Rectified Linear Unit)是一种修正线性单元激活函数的变体,旨在解决传统 ReLU 函数的一些问题,特别是负数输入时输出为零的情况。Leaky ReLU 允许负数输入产生非零输出,从而引入了一定的负数响应。

5.1 公式

![在这里插入图片描述](https://img-blog.csdnimg.cn/7db8db447cfc4f17a1b3f98bb80d1b6e.png

5.2 图像

在这里插入图片描述

5.3 优缺点

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值