【激活函数--中】激活函数和阶跃函数的可视化及对比

文章目录

  • 一、Python中绘制阶跃函数的图形
  • 二、实现和可视化Sigmoid函数
    • 2.1 Python实现
    • 2.2 可视化Sigmoid函数
  • 三、比较Sigmoid函数与阶跃函数
    • 3.1 Sigmoid函数与阶跃函数的差异
    • 3.2 Sigmoid函数与阶跃函数的共同点

一、Python中绘制阶跃函数的图形

在Python中实现阶跃函数的代码如下:

import numpy as npdef step_function(x):return np.array(x > 0, dtype=np.int)

这个函数接受一个NumPy数组x,并返回一个整数数组,其中大于0的元素被置为1,其余为0。

为了可视化阶跃函数,我们使用matplotlib库绘制其图形。首先,我们生成一个从-5.0到5.0的数组x,然后应用step_function函数计算对应的y值,并使用matplotlib.pyplot进行绘图:

import matplotlib.pylab as pltx = np.arange(-5.0, 5.0, 0.1)  # 生成从-5到5的值,步长为0.1
y = step_function(x)            # 应用阶跃函数
plt.plot(x, y)                  # 绘制x和y
plt.ylim(-0.1, 1.1)             # 设置y轴的范围
plt.show()

绘制的结果如图所示,可以清晰地看到阶跃函数的特征:当输入小于或等于0时,输出为0;当输入大于0时,输出为1。这种从0到1的突变正是阶跃函数的核心特性,也是其名称的由来。

在这里插入图片描述

二、实现和可视化Sigmoid函数

2.1 Python实现

在Python中,可以通过使用NumPy库中的exp函数来实现Sigmoid函数,如下所示:

import numpy as npdef sigmoid(x):return 1 / (1 + np.exp(-x))

此实现利用了NumPy的广播功能,使得函数能够接受单个数值、列表或NumPy数组作为输入,并对每个元素执行Sigmoid运算。

Sigmoid函数的输出始终在0和1之间,这对于模拟概率非常有用。当输入接近正无穷时,输出趋近于1;当输入接近负无穷时,输出趋近于0;当输入为0时,输出为0.5。

2.2 可视化Sigmoid函数

为了更好地理解Sigmoid函数的行为,我们可以使用matplotlib库来绘制其图形。以下是绘制Sigmoid函数的Python代码:

import matplotlib.pyplot as plt
import numpy as np# 定义Sigmoid函数
def sigmoid(x):return 1 / (1 + np.exp(-x))# 生成数据
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)# 绘图
plt.plot(x, y)
plt.title("Sigmoid Function")
plt.ylim(-0.1, 1.1)  # 设置y轴范围
plt.show()

执行上述代码后,将得到如下图所示的Sigmoid函数图形:

在这里插入图片描述

Sigmoid函数由于其平滑的梯度和输出范围限制在(0,1)之间的特性,曾广泛用于神经网络的输出层,尤其是在二分类问题中。然而,由于它在输入值很大或很小时导致的梯度消失问题,现在在隐藏层中较少使用,被ReLU等函数所取代。但是,了解Sigmoid函数仍然对于理解神经网络的历史和基本理论非常重要。

三、比较Sigmoid函数与阶跃函数

Sigmoid函数和阶跃函数都作为神经网络中的激活函数,但它们各有不同的属性和对模型行为的影响。通过检查它们的图形表示并讨论它们的含义,我们来探讨它们之间的差异和相似之处。

3.1 Sigmoid函数与阶跃函数的差异

  1. 平滑性和连续性

    • Sigmoid函数:它是平滑且连续的,从0渐变到1。这种平滑性允许进行导数计算,这对于在训练神经网络时使用的反向传播算法至关重要。
    • 阶跃函数:在阈值(x=0)处从0跳跃到1。这种突然的变化意味着它在传统意义上缺乏导数,这可能会使基于梯度的学习方法复杂化。

    Sigmoid函数的平滑性对于基于梯度的优化方法特别重要,因为它在每个点上都提供了梯度,这有助于有效的网络训练。

  2. 输出范围

    • Sigmoid函数:输出值在0到1之间,这使得它非常适合用作概率表示。它可以返回介于0和1之间的任何值,如0.731、0.880等。
    • 阶跃函数:只能输出0或1,这限制了它的输出能表示的信息量。

3.2 Sigmoid函数与阶跃函数的共同点

尽管在平滑性上存在差异,从宏观视角看,Sigmoid函数和阶跃函数具有相似的形状。实际上,它们的结构都是“输入小时,输出接近0(或为0);随着输入增大,输出向1靠近(或变成1)”。这意味着:

  • 当输入信号是重要信息时,阶跃函数和Sigmoid函数都会输出较大的值。
  • 当输入信号不重要时,两者都输出较小的值。
  • 无论输入信号多小或多大,输出信号的值都限制在0到1之间。

在这里插入图片描述

阶跃函数和Sigmoid函数虽然处理信息的方式有所不同,但它们都是为了在神经网络中实现输入到输出的有效映射。Sigmoid函数因其平滑性和连续的输出范围而广泛用于早期的神经网络模型中,尤其是在需要概率输出的应用中。然而,由于梯度消失的问题,现代更多使用ReLU等其他激活函数来代替Sigmoid函数。阶跃函数因其简单和直观,常被用于理论演示和二元分类的最终决策阶段。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690580.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SD-WAN提升Microsoft 365用户体验

随着数字化时代的到来,SaaS应用如Microsoft 365已经成为各类企业的主流选择。在这一趋势下,企业需要以更加灵活、高效的方式使用Microsoft 365,以满足日益增长的业务需求。而传统的网络基础设施可能无法满足这一需求,因此&#xf…

Gitlab:从其它项目组里导入一个项目

1.首先获取原项目的http地址 http://ip/projectGroup/ProjectX.git其中,ip 为公司gitlab内网地址。 2.进入目的项目组进行创建 首先,需要拥有一个该组拥有者权限的账号,才能进行后续的操作。 2.1.点击创建项目按钮 2.2.选择导入项目 其中…

SAP_MM模块-配置物料主数据号码段时的一些坑

业务背景:对于新入职的一家公司,人员不熟悉,业务不熟悉、系统也不熟悉的情况下,领导要求负责一个推广项目(只需要维护MM和FICO模块),对于一个没有独立配置过财务模块的后勤顾问来说,…

Python | Leetcode Python题解之第83题删除排序链表中的重复元素

题目: 题解: class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head:return headcur headwhile cur.next:if cur.val cur.next.val:cur.next cur.next.nextelse:cur cur.nextreturn head

数据结构与算法学习笔记三---循环队列的表示和实现(C语言)

目录 前言 1.为啥要使用循环队列 2.队列的顺序表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言 本篇博客介绍栈和队列的表示和实现。 1.为啥要使用循环队列 上篇文章中我们知道了顺序队列…

[单机]成吉思汗3_GM工具_VM虚拟机

稀有端游成吉思汗1,2,3单机版虚拟机一键端完整版 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的&#x…

阿里云域名备案流程

阿里云域名备案流程大致可以分为以下几个步骤,这些信息综合了不同来源的最新流程说明,确保了流程的时效性和准确性: UP贴心的附带了链接: 首次备案流程:ICP首次备案_备案(ICP Filing)-阿里云帮助中心 (aliyun.com) …

软件验收计划书-验收规程(Word原件)

编写软件验收计划是软件开发过程中的一个关键步骤,其重要性体现在以下几个方面: 明确验收标准:软件验收计划详细列出了验收的标准、测试方法、测试环境等,确保所有相关人员对验收的期望和要求有清晰的认识。这有助于避免在验收阶段…

音视频--AAC编码解析和示例

目录 1:AAC编码介绍 2:AAC格式介绍 3:AAC -ADTS帧组成 4:AAC-ADTS:(adts_fixed_header)格式介绍 5:AAC-ADTS:(adts_variable_header)格式介绍…

苍穹外卖项目---------收获以及改进(9-12)

①Spring Task-------实现系统定时任务 概念: 应用场景: 使用步骤: 实现订单超时和前一天派送中的订单的自动任务处理: Component Slf4j public class Mytask {Autowiredprivate OrderServiceimpl orderServiceimpl;/*** 处理订…

ETLCloud中如何执行Java Bean脚本

ETLCloud中如何执行Java Bean脚本 在ETLCloud这一强大的数据集成和转换平台中,执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码,而是一种强大的工具,可以帮助用户定制和优化数据处理的每一个环…

泵站远程启停

随着物联网技术的迅猛发展,传统泵站的管理方式正面临前所未有的变革。在这一变革的浪潮中,HiWoo Cloud平台凭借其卓越的技术实力和创新理念,为泵站远程启停控制带来了全新的解决方案。本文将详细介绍HiWoo Cloud平台在泵站远程启停方面的应用…