【Python】Sigmoid和Hard Sigmoid激活函数对比总结及示例

前言

在神经网络和深度学习中,激活函数扮演着至关重要的角色。它们能够引入非线性因素,使得神经网络能够学习复杂的模式和数据表示。Sigmoid和Hard Sigmoid是两种常用的激活函数,它们在各自的场景下有着广泛的应用。本文将详细介绍这两种激活函数的基本特性、原型、示例以及它们之间的对比。

函数与案例详解

Sigmoid激活函数

Sigmoid函数是一种S型函数,也称为逻辑斯蒂函数或S型生长曲线。

Sigmoid函数可以将任意实值映射到(0, 1)区间内,输出值可以解释为概率或激活度。这种特性使得Sigmoid函数特别适用于二分类问题。

优点

输出范围限制在(0, 1):便于理解和解释,可以直接用作概率输出。
平滑:有助于减小梯度消失问题,使得网络在训练过程中更加稳定。

缺点

梯度消失:当输入值非常大或非常小时,Sigmoid函数的梯度接近于0,导致反向传播时梯度消失,影响网络训练。
计算量大:由于涉及到指数运算,计算成本较高。
输出不是以0为中心:会影响网络的收敛速度。

Hard Sigmoid激活函数

Hard Sigmoid是Sigmoid函数的一种变体,用于简化计算和加速前向传播。

Hard Sigmoid函数通过分段线性近似Sigmoid函数,在-2.5和2.5之间进行线性变换,并在这两个临界点之外分别返回0和1。

优点

计算简单:不需要计算指数函数,计算速度更快。
输出以0为中心:有助于网络训练。

缺点

输出不非常平滑:与Sigmoid函数相比,Hard Sigmoid的输出曲线较为粗糙,可能在某些情况下导致梯度消失问题。
在输入值接近0时梯度较小:影响网络的训练效率。

原型与示例

Sigmoid函数示例

import torch
import torch.nn as nn
import matplotlib.pyplot as plt

sigmoid = nn.Sigmoid()
sigmoid_inputs = torch.arange(-10, 10, 0.1)
sigmoid_outputs = sigmoid(sigmoid_inputs)

plt.plot(sigmoid_inputs, sigmoid_outputs)
plt.title('Sigmoid Function')
plt.xlabel('Input')
plt.ylabel('Output')
plt.show()

在这里插入图片描述

Hard Sigmoid函数示例

import torch
import torch.nn as nn
import matplotlib.pyplot as plt

hard_sigmoid = nn.Hardsigmoid()
hard_sigmoid_inputs = torch.arange(-10, 10, 0.1)
hard_sigmoid_outputs = hard_sigmoid(hard_sigmoid_inputs)

plt.plot(hard_sigmoid_inputs, hard_sigmoid_outputs)
plt.title('Hard Sigmoid Function')
plt.xlabel('Input')
plt.ylabel('Output')
plt.show()

在这里插入图片描述

函数对比

计算效率

Sigmoid:由于需要计算指数函数,计算成本较高。
Hard Sigmoid:计算简单,不涉及指数运算,计算速度更快。

梯度问题

Sigmoid:在输入值非常大或非常小时,梯度接近于0,容易导致梯度消失。
Hard Sigmoid:虽然输出曲线不如Sigmoid平滑,但在一定范围内(如-2.5到2.5之间)梯度较为稳定,但在输入值接近0时梯度较小。

输出特性

Sigmoid:输出值在(0, 1)之间,但不以0为中心。
Hard Sigmoid:输出值同样在(0, 1)之间,且以0为中心。

总结

Sigmoid和Hard Sigmoid是两种常用的激活函数,它们各有优缺点。在选择激活函数时,需要根据具体的应用场景和需求来决定。如果需要处理二分类问题并且对计算量要求较高,可以考虑使用Hard Sigmoid;如果对网络的稳定性和平滑性要求较高,可以选择使用Sigmoid激活函数。在实际应用中,也可以尝试结合其他激活函数,如ReLU。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木彳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值