介绍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函数🚀💥

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

相关推荐
吴佳浩12 小时前
《拆解全球最火 AI 开源项目》第一季 · REA
人工智能
特立独行的猫A14 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
AllData公司负责人16 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
泯泷17 小时前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠90518 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
大可不必了18 小时前
03 函数定义和调用
开发语言·python
联犀19 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据19 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab19 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab19 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude