【机器学习】 Sigmoid函数:机器学习中的关键激活函数

news2024/9/20 10:53:03

鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • Sigmoid函数:机器学习中的关键激活函数
    • 1. 引言
    • 2. Sigmoid函数定义
    • 3. Sigmoid函数的图像特性
    • 4. Sigmoid函数的导数
    • 5. Sigmoid函数在机器学习中的应用
      • 5.1 二元分类
      • 5.2 神经网络激活函数
      • 5.3 门控循环单元(GRU)
    • 6. Sigmoid函数的优点
    • 7. Sigmoid函数的缺点
    • 8. Sigmoid函数的替代品
    • 9. 结论

Sigmoid函数:机器学习中的关键激活函数

1. 引言

在机器学习和深度学习领域,激活函数扮演着至关重要的角色。它们为神经网络引入非线性,使得网络能够学习复杂的模式。Sigmoid函数是最早被广泛使用的激活函数之一,至今仍在许多应用中发挥重要作用。本文将深入探讨Sigmoid函数的定义、特性、应用以及优缺点。
在这里插入图片描述

2. Sigmoid函数定义

Sigmoid函数,也称为逻辑函数(Logistic Function),是一种常见的S型函数。其数学表达式为:

S ( x ) = 1 1 + e − x S(x) = \frac{1}{1 + e^{-x}} S(x)=1+ex1

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

3. Sigmoid函数的图像特性

Sigmoid函数具有以下几个重要的图像特性:

  1. 函数值域在(0, 1)之间
  2. 在原点(0, 0.5)处对称
  3. 在x趋近于正无穷时,y趋近于1;在x趋近于负无穷时,y趋近于0
  4. 函数曲线呈S型,在中间部分近似线性,两端逐渐平缓

4. Sigmoid函数的导数

Sigmoid函数的导数有一个非常优雅的形式,这也是它在早期神经网络中广泛使用的原因之一。Sigmoid函数的导数可以用函数本身表示:

S ′ ( x ) = S ( x ) ( 1 − S ( x ) ) S'(x) = S(x)(1 - S(x)) S(x)=S(x)(1S(x))

证明如下:

S ′ ( x ) = d d x ( 1 1 + e − x ) = e − x ( 1 + e − x ) 2 = 1 1 + e − x ⋅ e − x 1 + e − x = 1 1 + e − x ⋅ ( 1 − 1 1 + e − x ) = S ( x ) ( 1 − S ( x ) ) \begin{align*} S'(x) &= \frac{d}{dx}\left(\frac{1}{1 + e^{-x}}\right) \\ &= \frac{e^{-x}}{(1 + e^{-x})^2} \\ &= \frac{1}{1 + e^{-x}} \cdot \frac{e^{-x}}{1 + e^{-x}} \\ &= \frac{1}{1 + e^{-x}} \cdot (1 - \frac{1}{1 + e^{-x}}) \\ &= S(x)(1 - S(x)) \end{align*} S(x)=dxd(1+ex1)=(1+ex)2ex=1+ex11+exex=1+ex1(11+ex1)=S(x)(1S(x))

这个简洁的导数形式使得在神经网络的反向传播过程中计算梯度变得非常方便。

5. Sigmoid函数在机器学习中的应用

5.1 二元分类

Sigmoid函数最常见的应用之一是在逻辑回归中用于二元分类。由于Sigmoid函数的输出范围在0到1之间,我们可以将其解释为某一类别的概率。通常,我们设置一个阈值(如0.5),当输出大于阈值时归为一类,小于阈值时归为另一类。

在逻辑回归中,模型可以表示为:

P ( y = 1 ∣ x ) = 1 1 + e − ( β 0 + β 1 x 1 + β 2 x 2 + . . . + β n x n ) P(y=1|x) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n)}} P(y=1∣x)=1+e(β0+β1x1+β2x2+...+βnxn)1

其中,x是输入特征,β是模型参数。

5.2 神经网络激活函数

在传统的前馈神经网络中,Sigmoid函数常被用作隐藏层和输出层的激活函数。它将神经元的输出压缩到(0, 1)范围内,这种特性使得Sigmoid函数在早期神经网络中非常流行。

对于一个神经元,其输出可以表示为:

y = S ( w x + b ) = 1 1 + e − ( w x + b ) y = S(wx + b) = \frac{1}{1 + e^{-(wx + b)}} y=S(wx+b)=1+e(wx+b)1

其中,w是权重,x是输入,b是偏置。

5.3 门控循环单元(GRU)

在更复杂的神经网络结构中,如门控循环单元(GRU),Sigmoid函数也扮演着重要角色。GRU使用Sigmoid函数来控制信息的流动,具体来说,在更新门和重置门中使用Sigmoid函数。

GRU的更新门和重置门的计算如下:

z t = σ ( W z ⋅ [ h t − 1 , x t ] ) z_t = \sigma(W_z \cdot [h_{t-1}, x_t]) zt=σ(Wz[ht1,xt])
r t = σ ( W r ⋅ [ h t − 1 , x t ] ) r_t = \sigma(W_r \cdot [h_{t-1}, x_t]) rt=σ(Wr[ht1,xt])

其中,σ表示Sigmoid函数,z_t是更新门,r_t是重置门。
在这里插入图片描述

6. Sigmoid函数的优点

  1. 输出范围有界:Sigmoid函数的输出始终在0和1之间,这使得它在某些应用中非常有用,例如在需要将输出解释为概率的情况下。

  2. 平滑和连续:Sigmoid函数是平滑和连续的,这意味着它在整个定义域内都是可微的。这对于基于梯度的优化算法非常重要。

  3. 非线性:Sigmoid函数引入了非线性,使得神经网络能够学习复杂的非线性关系。

  4. 导数简单:Sigmoid函数的导数形式简单,可以用函数本身表示,这在计算梯度时非常方便。

7. Sigmoid函数的缺点

尽管Sigmoid函数有许多优点,但它也存在一些限制:

  1. 梯度消失问题:当输入值很大或很小时,Sigmoid函数的梯度接近于0,这可能导致深层网络中的梯度消失问题。

  2. 输出不是零中心的:Sigmoid函数的输出范围是(0, 1),这意味着输出总是正的。这可能导致后续层的梯度更新出现zigzag现象。

  3. 计算复杂度:Sigmoid函数涉及指数运算,计算复杂度相对较高。

  4. 软饱和性:在输入的绝对值较大时,函数的变化率接近于0,这可能导致学习过程变慢。

8. Sigmoid函数的替代品

由于Sigmoid函数存在一些限制,研究人员提出了一些替代函数:

  1. ReLU(Rectified Linear Unit):
    f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)
    ReLU解决了梯度消失问题,并且计算简单,现在已经成为许多深度学习模型的默认选择。

  2. Tanh函数:

f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=ex+exexex
Tanh函数的输出范围是(-1, 1),是零中心的,但仍然存在梯度消失问题。

  1. Leaky ReLU:

f ( x ) = { x , if  x > 0 α x , otherwise f(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{otherwise} \end{cases} f(x)={x,αx,if x>0otherwise
其中α是一个小的正常数,通常为0.01。Leaky ReLU解决了ReLU在负值区间梯度为0的问题。

9. 结论

Sigmoid函数在机器学习和深度学习的发展历程中扮演了重要角色。尽管在深度神经网络中已经不再是首选的激活函数,但在某些特定应用中,如二元分类和某些循环神经网络结构中,Sigmoid函数仍然是一个有力的工具。

理解Sigmoid函数的特性、优点和局限性,对于选择合适的激活函数和设计有效的神经网络架构至关重要。作为机器学习从业者,我们应该熟悉各种激活函数,并根据具体问题选择最合适的函数。

在未来,随着神经网络架构和训练技术的不断发展,我们可能会看到更多新型激活函数的出现。然而,Sigmoid函数作为机器学习中的基础概念,其重要性将永远不会被低估。

End

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++day04

1】思维导图 2】完成关系运算符重载&#xff0c;实现成员函数和全局函数的版本。 #include <iostream>using namespace std;class Stu { friend bool operator<(const Stu &L,const Stu &R); private:int age;int id; public:Stu(){}Stu(int age,int id):age…

OD工具-18个实操工具共创会

一、什么是共创会1.1 什么是共创共创&#xff0c;共同创造词组的缩写&#xff0c;字面上来看就是团队为了多个个体一起把以前没有的事物给产生出或者造出来&#xff0c;这明显的是一种典型的人类自主行为。 托德老师有一段描述:共创是一种工作状态&#xff0c;让团队中的每个个…

【时时三省】(C语言基础)操作符3

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 &取地址操作符 示例: 每个内存单元都有自己的编号 编号就成为内存单元的地址&a就是找出a的地址 后面可以加一个int *pa&#xff1d;&a 是可以用来存放地址 pa是用来存放地址的…

SQL进阶技巧:有序数据合并问题之如何按照指定的规则对数据进行合并?【详解collect_list函数有序性保证】

目录 0 问题描述【小红书面试题】 1 数据准备 2 问题分析 3 小结 0 问题描述【小红书】 有如下需求,需要将左边的表变换成右边的表,注意字段内容的顺序及对应内容的一致性。 第一个字段为name,第二个字段为subject,第三个字段为score,变换后要求subject按照语文、数学…

电脑管家软件搬运导致edge、chrome浏览器不可用

最新版本的腾讯电脑管家可以直接搬运软件到其他路径&#xff0c;但是搬运浏览器会造成软件问题&#xff0c;不建议搬运。 浏览器恢复到原路径&#xff0c;可以解决浏览器不可用的问题&#xff1a; 首先到达你的搬运路径下 可以看到软件文件夹&#xff0c;比如Microsoft Edge或…

C++11——包装器和绑定

1.包装器 C中有一些可调用对象&#xff0c;比如 函数指针&#xff0c;仿函数对象 lambda等等&#xff0c;但是他们又有缺点 因此就引出了包装器的概念 包装器 function的头文件是<functional> 我们可以用包装器包装函数指针&#xff0c;仿函数&#xff0c;lambda int …

关于LLC知识5

RLC的增益曲线不知一条 频率升高&#xff0c;增益会越来越低 无论在容性区还是感性区&#xff0c;当负载加重的时候&#xff0c;R阻值会变小&#xff0c;所以R的分压也会变小&#xff0c;导致增益会变低 当负载突然加重&#xff0c;输出电压会变低&#xff0c;增益曲线由红色变…

MySQL数据分析进阶(十二)设计数据库——PART3

※食用指南&#xff1a;文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记&#xff0c;笔记整理比较粗糙&#xff0c;主要目的自存为主&#xff0c;记录完整的学习过程。&#xff08;图片超级多&#xff0c;慎看&#xff01;&#xff09; 【中字】SQL进阶教程 | 史上最易懂S…

c++ - c++11(1)

文章目录 前言一、统一的列表初始化1、使用{ }初始化2、 std::initializer_list 二、声明1、auto2、decltype3、nullptr 三、范围for循环四、右值引用1、左值引用和右值引用2、左值引用和右值引用的比较3、左值引用的使用场景4、右值引用的使用场景5、完美转发 前言 一、统一的…

在百度飞浆中搭建pytorch环境

文章目录 1 先检查创建的环境2 创建虚拟环境3 最终结果 1 先检查创建的环境 选择GPU版本 检查python版本 2 创建虚拟环境 虚拟环境的创建 python3 -m venv env_name # (python3 -m 路径 环境名)激活虚拟环境 source env_name/bin/activate这里注意&#xff0c;同名文件…

MySQL的InnoDB的页里面存了些什么

文章目录 创建新表页的信息新增一条数据根据页号找数据信息脚本代码py_innodb_page_info根据地址计算页号根据页号计算起始地址 主要介绍数据页里面有哪些内容&#xff0c;一行数据在文件里面是怎么组织的 创建新表页的信息 CREATE TABLE test8 (id bigint(20) NOT NULL AUTO…

Android开发-使用FFmpeg-Android进行音视频处理

使用 FFmpeg-Android 进行音视频处理 1. 前言2. FFmpeg-Android 简介3. 功能介绍及实现3.1. 视频字幕添加Kotlin 代码示例&#xff1a;3.2. 尺寸剪切Kotlin 代码示例&#xff1a;3.3. 添加或去除水印Kotlin 代码示例&#xff1a;3.4. 时长截取Kotlin 代码示例&#xff1a;3.5. …

【十万个为什么】强磁场环境用什么编码器好?磁编为什么不怕强磁场?磁编与光编哪一个抗干扰强?

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、案例场景1&#xff1a;场景2&#xff1a; 二、为什么磁编可以在磁场中工作三、磁编为什么不怕强磁场&#xf…

LVS实战项目

LVS简介 LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成&#xff0c;章文嵩&#xff0c;阿里的四层SLB(Server LoadBalance)是基于LVSkeepalived实现。 LVS集群的类型 lvs-nat &#xff1a; 修改请求报文的目标IP, 多目标 IP 的 DNAT lvs-dr &#xff…

vpp编译安装(Ubuntu 16.04)

1、编译 git clone -b stable/1801 https://github.com/FDio/vpp.git cd vpp ./extras/vagrant/build.sh && make 报错 解决&#xff1a; 操作系统是Ubuntu 18.04.5 换成ubuntu 16即可

step11:打包qml程序

文章目录 0.文章介绍1.增加环境变量2.复制RDU.exe3.找到Qt安装路径4.操作qt 6.4.3&#xff08;minGW&#xff09;命令框 0.文章介绍 1.增加环境变量 电脑里安装了两个版本的QT&#xff0c;最好把现在打包的QT版本环境变量移到最前面 添加完成环境变量之后&#xff0c;再在wi…

力扣高频SQL 50题(基础版)第四十一题之1517.查找拥有有效邮箱的用户

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第四十一题1517.查找拥有有效邮箱的用户题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第四十一题 1517.查找拥有有效邮箱的用户 题目说明 表: Users -----------…

c++语言学习,isalnum()函数分析

1&#xff1a;isalnum() 函数说明&#xff1a; 检查参数c,是否为英文字母或阿拉伯数字 2&#xff1a;函数原型&#xff1a; int isalnum(int c) 3&#xff1a;函数参数&#xff1a; 参数c&#xff0c;为检测字符 4&#xff1a;返回值&#xff1a; 若参数c为字母或数字&#…

全网最详细教你学习LVS(Linux virual server)

LVS 官网 : http://www.linuxvirtualserver.org/ //&#xff08;可参考&#xff09; 一、LVS定义&#xff1a; 是一个基于 Linux 操作系统的开源软件负载均衡项目。 LVS 主要用于实现服务器的负载均衡和高可用性。它工作在网络的第四层&#xff0c;可以对…

ERP帮助中心的卓越实践:以用友ERP为例的成功之路

引言 在数字化转型的浪潮中&#xff0c;企业资源规划&#xff08;ERP&#xff09;系统作为企业管理的核心工具&#xff0c;其有效应用直接关系到企业的运营效率与竞争力。然而&#xff0c;ERP系统的复杂性和多功能性往往让用户在初识阶段感到困惑。因此&#xff0c;构建一个高…