游戏AI的创造思路-技术基础-sigmoid函数详解

在前面的机器学习和深度学习的内容中,大量出现了sigmoid函数,所以本篇为大家介绍下sigmoid函数,希望对大家理解前面的算法和后面的Transformer有所帮助

目录

3.8. sigmoid函数

3.8.1. 定义

3.8.2. 性质

3.8.3. 应用

3.8.4. 缺点

3.8.5. sigmoid函数的导数

3.8.5.1. 导数的定义

3.8.5.2. 导数的性质

3.8.5.3. 导数的应用

3.8.5.4. 注意事项

3.8.6. Python代码实现


3.8. sigmoid函数

3.8.1. 定义

sigmoid函数是一种常见的数学函数,其形状为“S”形曲线。

在机器学习和深度学习中,特别是在处理二分类问题时,sigmoid函数被广泛用作激活函数。

sigmoid函数的数学公式为:

[ f(x) = \frac{1}{1 + e^{-x}} ]

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

3.8.2. 性质

  • 值域:sigmoid函数的值域为(0, 1),这意味着无论输入( x )是什么,输出总是在0和1之间。这个性质使得sigmoid函数非常适合用于表示概率或者将任意实数映射到(0, 1)区间内。
  • 单调性:sigmoid函数在其定义域内是单调递增的。
  • 可导性:sigmoid函数在其定义域内是可导的,这个性质在神经网络中非常重要,因为它允许我们使用梯度下降等优化算法来训练网络。其导数为:

[ f'(x) = f(x)(1 - f(x)) ]

  • 形状:sigmoid函数的形状类似于“S”,在( x = 0 )附近变化较快,而在远离0的地方变化较慢。这种特性使得sigmoid函数在处理一些需要非线性变换的问题时非常有用。

3.8.3. 应用

  1. 二分类问题:在机器学习中,sigmoid函数常用于二分类问题的输出层,将网络的输出转换为概率值。例如,在逻辑回归中,sigmoid函数用于将线性回归的输出转换为预测为正类的概率。
  2. 神经网络激活函数:虽然近年来ReLU(Rectified Linear Unit)等激活函数在深度学习中更为流行,但sigmoid函数仍然在某些情况下被用作神经网络的激活函数,特别是在需要输出概率或进行二分类的任务中。

3.8.4. 缺点

尽管sigmoid函数有其优点,但在深度学习中作为激活函数时也存在一些缺点:

  1. 梯度消失问题:当输入值远离0时,sigmoid函数的导数接近于0。在深层神经网络中,这可能导致梯度在反向传播过程中迅速减小,使得网络难以训练。
  2. 计算成本:sigmoid函数涉及指数运算,这在计算上可能相对昂贵,尤其是在大规模数据集和深层网络上。
  3. 非零中心化:sigmoid函数的输出总是大于0,这意味着在神经网络中,后续层的输入总是正的。这可能导致权重更新的不稳定性。

3.8.5. sigmoid函数的导数

sigmoid函数的导数表示了该函数的斜率,即函数值随输入变量变化的速率。以下是关于sigmoid函数导数的详细解释:

3.8.5.1. 导数的定义

sigmoid函数的导数定义为函数值与其补的乘积,具体公式为:

[ f'(x) = f(x)(1 - f(x)) ]

其中,( f(x) )是sigmoid函数的值。

这个公式表明,sigmoid函数的导数可以通过原函数的值来计算。

3.8.5.2. 导数的性质
  • 范围:sigmoid函数的导数值在0到0.25之间。当输入值( x )趋近于正无穷或负无穷时,导数值趋近于0;而当输入值接近0时,导数值接近其最大值0.25。
  • 与函数值的关系:导数值与原函数值密切相关。
    • 当sigmoid函数的值( f(x) )接近1或0时,其导数值会变小,表明函数在这些区域的变化率较小。
    • 相反,当( f(x) )接近0.5(即( x )接近0)时,导数值较大,说明函数在这一区域变化较快。
3.8.5.3. 导数的应用
  • 神经网络训练:在神经网络中,sigmoid函数的导数对于使用反向传播算法进行权重更新至关重要。通过计算导数,我们可以了解函数值随输入变化的敏感度,并据此调整网络参数。
  • 优化算法:在优化算法中,如梯度下降法,sigmoid函数的导数用于计算损失函数关于模型参数的梯度,从而指导参数更新的方向和步长。
3.8.5.4. 注意事项

虽然sigmoid函数的导数在神经网络训练中有其应用,但由于存在梯度消失的问题(即在函数值接近1或0时导数值很小),在深层网络中可能导致训练困难。

因此,在实际应用中需要权衡sigmoid函数的优缺点。

3.8.6. Python代码实现

import numpy as np  
  
def sigmoid(x):  
    """  
    计算sigmoid函数值。  
      
    参数:  
    x -- 输入值,可以是标量、向量或矩阵  
      
    返回:  
    s -- sigmoid函数的值,与输入x的形状相同  
    """  
    s = 1 / (1 + np.exp(-x))  
    return s  
  
def sigmoid_derivative(x):  
    """  
    计算sigmoid函数的导数。  
      
    参数:  
    x -- 输入值,可以是标量、向量或矩阵  
      
    返回:  
    ds -- sigmoid函数的导数,与输入x的形状相同  
    """  
    s = sigmoid(x)  
    ds = s * (1 - s)  
    return ds  
  
# 示例用法  
x = np.array([1, 2, 3])  
print("Sigmoid Function Values:")  
print(sigmoid(x))  
  
print("Sigmoid Derivative Values:")  
print(sigmoid_derivative(x))

这段代码首先定义了两个函数:sigmoidsigmoid_derivativesigmoid函数计算给定输入x的sigmoid值,而sigmoid_derivative函数则计算sigmoid函数在给定输入x处的导数。

在示例用法部分,我们创建了一个NumPy数组x,其中包含三个元素,并分别调用了sigmoidsigmoid_derivative函数来计算这些值的sigmoid函数值和导数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

php,python AES/CBC/PKCS7Padding加密解密 base64/hex编码

1. python版本 import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpadclass AESUtilCBC:def __init__(self, key, iv):self.key key.encode(utf-8)self.iv iv.encode(utf-8)self.pad_length AES.block_sizedef encrypt(self, data):try…

JVM专题十一:JVM 中的收集器一

上一篇JVM专题十:JVM中的垃圾回收机制专题中,我们主要介绍了Java的垃圾机制,包括垃圾回收基本概念,重点介绍了垃圾回收机制中自动内存管理与垃圾收集算法。如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回…

Python代码打包成exe应用

目录 一、前期准备 二、Pyinstaller打包步骤 Pyinstaller参数详解 三、测试 Spec 文件相关命令 一、前期准备 (1)首先,我们需要确保你的代码可以在本地电脑上的pycharm正常运行成功。 (2)我们要先安装Pyinstalle…

Epic登录转圈/Epic登录不上一直转圈的五种办法分享

Epic Games(Epic商店)是Epic旗下的数字游戏综合平台,不仅游戏数量众多,还可以每周在上面免费领取各种类型的热门游戏,深受国内游戏玩家追捧。不少玩家反馈在登录epic账号时会遇到转圈圈的情况,一直无法登录…

cs与msf权限传递,与mimikatz抓取win2012明文密码

CS与MSF的权限互相传递抓取windows2012的明文密码 CS与MSF的权限互相传递 1、启动cs服务端 2、客户端连接 3、配置监听,并设置监听端口为9999 4、生成脚本 5、开启服务,下载并运行木马 已获取权限 6、进入msf并设置监听 7、cs新建监听,与m…

python-docx 设置页面边距、页眉页脚高度

本文目录 前言一、docx 页面边距在哪里二、对 <w:pgMar> 的详细说明1、上边距的说明2、右边距的说明3、下边距的说明4、左边距的说明5、页眉高度的说明6、页脚高度的说明三、设置 docx 页边距、页眉页脚高度1、完整代码2、代码执行效果图四、补充一些内容1、页面边距的两…

`THREE.PointsMaterial` 是 Three.js 中用于创建粒子系统材质的类。它允许你设置粒子系统的外观属性,比如颜色、大小和透明度。

demo案例 THREE.PointsMaterial 是 Three.js 中用于创建粒子系统材质的类。它允许你设置粒子系统的外观属性&#xff0c;比如颜色、大小和透明度。下面是对其构造函数的参数、属性和方法的详细讲解。 构造函数 const material new THREE.PointsMaterial(parameters);参数&am…

浏览器扩展V3开发系列之 chrome.commands 快捷键的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.commands API 允许开发者使用快捷键来执行特定的命令。 在使用 chrome.commands API 之前必须…

C# 入门—实现 Hello, World!

目录 一、.net 平台 二、.net 都能干什么&#xff1f; 三、.net 两种交互模式 四、使用 VS Code 开发 C# 程序 五、实现 Hello, World! 一、.net 平台 下载 .NET(Linux、macOS 和 Windows) (microsoft.com) .NET 简介 - .NET | Microsoft Learn C# :一种编程语言,可以开…

文件管理—linux(基础IO)

目录 ​编辑 一、C语言文件接口&#xff08;库函数&#xff09; hello.c写文件 hello.c读文件 输出信息到显示器 stdin & stdout & stderr 二、系统文件I/O&#xff08;系统调用&#xff09; hello.c 写文件&#xff1a; hello.c读文件 接口介绍 open open…

MQTT服务器/MQTT_C#客户端/Websoket连MQTT

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。 MQTT是一个基于客户端-服务器的消息发布/订…

ue 材质贴图Tiling repeat

材质问题&#xff0c;如下 贴图显然不符合逻辑&#xff0c;太大&#xff0c;并且是一次性贴图 换一个红砖纹理&#xff0c;就看清了&#xff0c;砖太大了 修改&#xff1a; 拖出一个TexCoord&#xff0c;代表坐标&#xff0c;拖出一个参数&#xff0c;代表次数&#xff0c;如…

Python数据分析之-Oracle数据库连接

文章目录 cx_Oracle 介绍cx_Oracle运行原理cx_Oracle 安装linux环境安装windows环境安装 cx_Oracle 使用单独使用结合Pandas使用 参考资料 cx_Oracle 介绍 cx_Oracle 8是一个Python扩展模块&#xff0c;它提供了对Oracle数据库的访问能力。以下是cx_Oracle 8的一些关键特性和功…

【学习笔记】Hive

Hive 作为数仓应用工具&#xff0c;对比 RDBMS&#xff08;关系型数据库&#xff09; 有3个“不能”&#xff1a; 不能像 RDBMS 一般实时响应&#xff0c;Hive 查询延时大&#xff1b; 不能像 RDBMS 做事务型查询&#xff0c;Hive 没有事务机制&#xff1b; 不能像 RDBMS 做行…

Android性能优化——卡顿优化

文章目录 一、从XML到屏幕上的展示造成跳帧的因素有那些发现问题定位问题定位代码 一、从XML到屏幕上的展示 数据加载阶段 数据控制阶段 数据展示阶段 xml —> view onCreat —> 解析layout.xml resume —> view —> wms ViewRootImpl UI 绘制流程 &#xff1a;测…

A股探底回升,跑出惊天大阳,你们知道为什么吗?

今天的A股&#xff0c;探底回升&#xff0c;让人惊呆了&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现3个重要信号&#xff0c;一起来看看&#xff1a; 1、今天A股市场炸锅了&#xff0c;AI人工智能、国产软件、存储芯片迎来了涨停潮&#xff0c;惊呆了&#xff0c;科技…

DataGrip 2024 mac/win版:让数据库管理更简单

JetBrains DataGrip 2024 是一款专为数据库开发者设计的集成开发环境(IDE)&#xff0c;它凭借其卓越的性能和丰富的功能&#xff0c;为数据库管理提供了前所未有的便利。 DataGrip 2024 mac/win版获取 DataGrip 2024 支持几乎所有主流的关系型数据库管理系统&#xff0c;如 My…

Vue41 ref属性

ref属性 ref是Vue提供的获取组件的属性 <template><div><h1 v-text"msg" ref"title"></h1><button ref"btn" click"showDOM">点我输出上方的DOM元素</button><MySchool ref"sch"…

酷开科技丨酷开系统大屏购物 打造沉浸式购物体验

在这个信息化的时代&#xff0c;购物已经不仅仅局限于传统的线下店铺&#xff0c;线上购物逐渐成为了我们生活中重要的一部分。而大屏购物作为线上购物的一种形式&#xff0c;更是凭借其独特的优势和实用的技巧&#xff0c;成为了消费者们的新宠。随着科技的进步和消费者需求的…

Redis报错:MISCONF Redis is configured to save RDB snapshots

错误提示内容&#xff1a; 2024-06-25 16:30:49 : Connection: Redis_Server > [runCommand] PING 2024-06-25 16:30:49 : Connection: Redis_Server > Response received : -MISCONF Redis is configured to save RDB snapshots, but it is currently not able to pers…