介绍Sigmoid函数的平移、平滑和翻转【基于Python可视化分析】

文章目录

简介

本篇博客介绍了具有S型曲线的Sigmoid函数,以及如何设置、调整Sigmoid函数的参数实现S曲线的平滑、平移和翻转操作。博客给出了Python代码示例,更加深刻形象。😆😆

Sigmoid函数

Sigmoid函数,也称为Logistic函数,是一种常用的数学函数,通常表示为 σ ( z ) σ(z) σ(z),其中 z z z是实数输入。Sigmoid函数的数学表达式如下:

σ ( z ) = 1 1 + e − z σ(z) =\frac{1} {1 + e^{-z}} σ(z)=1+e−z1

其中, e e e表示自然对数的底数(约等于2.71828)。

Sigmoid函数具有以下特点:

  • 值范围:Sigmoid函数的输出范围在0到1之间,即σ(z)的值总是在0和1之间。这使得它特别适用于表示概率或将实数映射到概率分布。

  • S形状:Sigmoid函数的图形呈S形状曲线,因此它也被称为S形函数。这个曲线在z接近0时接近线性,然后在z远离0时饱和,导致输出趋于0或1。

Sigmoid函数在深度学习和人工智能中有多种应用,包括但不限于以下几个方面:

  • 二元分类:Sigmoid函数通常用于二元分类问题,其中模型的输出表示一个样本属于某一类的概率。模型的输出通过Sigmoid函数转化为概率值,然后可以根据设定的阈值来做出分类决策。

  • 神经网络的激活函数:Sigmoid函数曾经是神经网络中常用的激活函数之一。尤其在早期的神经网络中,Sigmoid函数被用于神经元的激活函数,但后来由于它存在梯度消失问题,逐渐被更复杂的激活函数如ReLU(Rectified Linear Unit)所取代。

  • 阈值单位:Sigmoid函数可以模拟神经元的兴奋与抑制效应,因此在一些特定应用中仍然有用,例如逻辑回归模型中的逻辑单元(Logistic Unit)。

  • 深度学习中的门控单元:Sigmoid函数的变种如长短时记忆网络(LSTM)和门控循环单元(GRU)中的门控单元起到重要作用,用于控制信息的流动和遗忘。

💥💥尽管Sigmoid函数在某些情况下仍有用,但在深度学习领域,它已经被其他激活函数如ReLU广泛取代,因为ReLU更容易训练,并且解决了梯度消失问题。👍👍但了解Sigmoid函数的原理仍然有助于理解深度学习的基本概念和发展历史。

Sigmoid函数曲线调控参数设置

  • 参数 a a a控制S曲线的平滑程度: a a a越接近于0越平滑, a a a越大则曲线越陡峭。
  • 参数 b b b控制S曲线的对称中心位置。
  • 取消参数 a a a前的负号,可以得到反S曲线。💯💯

σ ( z ) = 1 1 + e − a ( z − b ) σ(z) =\frac{1} {1 + e^{-a(z-b)}} σ(z)=1+e−a(z−b)1

python可视化

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

z = np.linspace(start=-10, stop=10, num=100)
colorlist = ['red', 'green', 'black', 'cyan', 'pink', 'blue', 'purple', 'orange', 'brown', 'grey', 'silver', 'golden', 'megenta']

fig = plt.figure(figsize=(12, 5))
ax1 = fig.add_subplot(1, 2, 1)
ax1.set_title(label="S curve")
# 绘制不同平滑度的S曲线
b = 0
for idx, a in enumerate(np.arange(start=0.5, stop=3, step=0.5)):
    sigmoid = 1 / (1 + np.exp(-a*z-b))
    ax1.plot(z, sigmoid, color=colorlist[idx], linewidth=1, linestyle='-', label=f'FPS score: a={a}, b={b}')
# 绘制S曲线的平移
b = 5
sigmoid = 1 / (1 + np.exp(-a*z-b))
ax1.plot(z, sigmoid, color=colorlist[idx], linewidth=2, linestyle='-', label=f'FPS score: a={a}, b={b}')
ax1.legend()
ax1.grid(visible=True, color='grey', linestyle='--', linewidth=0.5)

ax2 = fig.add_subplot(1, 2, 2)
ax2.set_title(label="Anti S curve")
# 绘制不同平滑度的反S曲线
b = 0
for idx, a in enumerate(np.arange(start=0.5, stop=3, step=0.5)):
    sigmoid = 1 / (1 + np.exp(a*z-b))
    ax2.plot(z, sigmoid, color=colorlist[idx], linewidth=1, linestyle='-', label=f'FPS score: a={a}, b={b}')
ax2.legend()
ax2.grid(visible=True, color='grey', linestyle='--', linewidth=0.5)
plt.savefig("sigmoid.jpg", dpi=600)
plt.show()

参考

  1. 知乎:Sigmoid函数及变形用于两种测量结果的加权求和
  2. 维基百科:S型函数
  3. 百度百科:Sigmoid函数🚀💥

收集整理和创作不易, 若有帮助🉑, 请帮忙点赞👍➕收藏❤️, 谢谢!✨✨🚀🚀

相关推荐
白熊1885 分钟前
【计算机视觉】CV项目实战- 深度解析TorchVision_Maskrcnn:基于PyTorch的实例分割实战指南
人工智能·pytorch·计算机视觉
安科瑞-小李10 分钟前
管理+技术”双轮驱动工业企业能源绿色转型
大数据·人工智能
AI假装科研16 分钟前
即插即用模块(3) -LSK 特征提取
人工智能·深度学习·计算机视觉
Emma歌小白19 分钟前
JavaScript (JS) 和 Python 语法对比
python
愚昧之山绝望之谷开悟之坡22 分钟前
什么是视频上墙
人工智能·笔记
pljnb30 分钟前
SVM(支持向量机)
人工智能·机器学习·支持向量机
掘金詹姆斯30 分钟前
LangChain4j—持久化聊天记忆 Persistence(五)
java·人工智能
梓羽玩Python41 分钟前
开源AI代理爆火!Suna:3天内新增5.5K+标星,自然对话驱动的自动化神器!
人工智能·python·github
新智元1 小时前
70% 大小,100% 准确!完美压缩 LLM 性能 0 损失,推理速度最高飙升 39 倍
人工智能·openai
咖啡调调。1 小时前
模板引擎语法-过滤器
python·django·sqlite