【机器学习300问】21、什么是激活函数?常见激活函数都有哪些?

        在我写的上一篇文章中介绍了感知机(单个神经元)的构成,其中就谈到了神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出值。这也称为“神经元被激活”。如果想对神经网络是什么有更多了解的小伙伴可以去看看我上一篇文章,链接我发在下面啦!
【机器学习300问】20、什么是神经网络?和深度学习什么关系?icon-default.png?t=N7T8http://t.csdnimg.cn/47Sgq

承接上文中谈到的“神经元被激活”,我们介绍一个神经网络中非常基础的知识点——激活函数。

一、什么是激活函数?

单个神经元

        图中是一个神经元,它有两个输入(x_1,x_2)分别有着两个权重(w_1,w_2),如果写成数学公式的话就是下面这样的形式:

        b是被称为偏置的参数,用于控制神经元被激活的容易程度;而w和是表示各个信号的权重的参数,用于控制各个信号的重要性。这里假设被“激活”输出1,“未激活”输出0,如果简化一下公式将其写成:

y=h(b+w_1x_1+w_2x_2)

         输入的信号会经过h函数的处理,只有在满足条件的时候才能输出y。那么不同的h函数就对应着不同的“激活”条件,这个h函数就是激活函数

        在这里我进一步处理一下公式,令a=b+w_1x_1+w_2x_2,那么最终激活函数就可以写成y=h(a)。这里解释一下为什么这么令,a是单词“激活值”activation,因为上一层的激活值就是下一层的输入值,而这个激活值就是通过公式b+w_1x_1+w_2x_2计算出来的。

二、常见的激活函数

(1)阶跃函数

        在上面的例子里,我们自然会想到,大于0就“激活”输出,小于等于0就“未激活”不输出(换言之输出值为0),那么按照这样的规则进行激活,写成公式的形式:

h(a)=\left\{\begin{matrix} 0 &(a< 0) \\ 1 &(a\geqslant 0) \end{matrix}\right.

画出他的图像:

虽然阶跃函数非常好理解很直观,但在神经网络的激活函数选择中,一般不会使用阶跃函数作为激活函数。 因为它有如下几个不足:

  1. 不连续性:阶跃函数在阈值处不连续,导数在阈值处不存在,这在反向传播过程中会导致梯度消失,无法有效地更新权重。
  2. 导致饱和问题:在输出层,一旦神经元的输入越过阈值,无论输入如何变化,输出始终保持不变,不利于模型的学习和优化。
  3. 缺乏平滑性:由于非平滑性,模型很难通过梯度下降法等优化算法来找到合适的权重,这在现代深度学习优化中是一个严重的限制。 

(2)Sigmoid函数

        神经网络中常用的一个激活函数,必须掌握。Sigmoid函数的输出在(0, 1)之间,可用于处理二分类问题,可以将连续数转化为概率。它的数学表达式如下:

h(a) = \frac{1}{1 + e^{-a}}

画出他的图像:

  • 优点:S型函数,输出值在0-1之间,具有良好的连续性和可微性。
  • 缺点:可能产生梯度饱和现象,即网络无法从数据中学习;对于神经网络层次较深的情况,容易出现梯度消失问题。

【注】梯度消失:在这里不展开细讲,简单理解就是在当网络层数增加时,梯度值越来越小,直到几乎为零,这就是所谓的梯度消失现象。如果想深入学习梯度相关知识,可以看看我之前写的文章

【机器学习300问】9、梯度下降是用来干嘛的?

(3)Tanh函数

        它还有个名字叫做双曲正切函数,输出范围在(0, 1)之间,常用于二元逻辑回归和早期的多层感知器(MLP)的隐藏层,现在较少在现代深度学习中作为隐层激活函数。数学表达式为:

h(a) = \frac{e^{a} - e^{-a}}{e^{a} + e^{-a}}

画出他的图像:

  • 优点:比sigmoid函数的数据压缩范围要大,在反向传播中不会那么容易饱和
  • 缺点:依然存在梯度消失问题,当输入很大或很小时,导数非常接近于0,这会减慢训练速度,训练起来也相较复杂

(4)ReLU函数

       Rectified Linear Units可以翻译成线性整流函数,但一般就直接用缩写称呼它。当输入大于0时输出等于输入本身,小于等于0时输出恒为0。正因为ReLU函数将负数转化为0,保留正数不变,所以解决了梯度消失和梯度爆炸的问题。数学表达式如下:

h(a) = max(0, a)

h(a)=\left\{\begin{matrix} a & (a>0)\\ 0 & (a\leqslant 0) \end{matrix}\right.

画出他的图像:

  • 优点:训练速度快,避免了梯度消失问题,并能加快收敛速度
  • 缺点:ReLU在负值部分完全不激活,一旦输入在训练过程中到达零或者负值,那么该神经元在任意数据点的梯度都是0,那么这个神经元将会不再对任何数据敏感,也就是说这个神经元已经死去了

【注】梯度爆炸:和梯度消失一样,是深度神经网络训练中遇到的常见问题,表现正好相反。通常发生在层数较多的情况下,在反向传播过程中,当错误从网络的最后一层向前传播时,梯度会逐渐积累,最终在最早的层变得非常大。

(5)Softmax函数

        它将一系列数值转换为概率分布的形式,所有输出的概率总和为1,在多分类问题中特别有用,尤其是输出层。它的数学公式如下:

h(a_{j})=\frac{e^{a_{j}}}{\sum_{i}^{n}e^{a_{i}}}

        看上去很复杂,听我给你解释一下。分子是输入信号aj的指数函数,分母是所有输入信号的指数函数的和。

a_{j}是第 j 个神经元的输入
a_{i}某一个神经元的输入
\sum_{i}^{n}e^{a_{i}}所有输入的指数函数之和
n类别的总数(一共有多少个类别)

        softmax 函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。输出总和为1是softmax函数的一个重要性质。正因为有了这个性质,我们才可以把 softmax函数的输出解释为“概率”。

  • 优点:输出在(0, 1)之间,可以被看成概率,且所有输出的和为1,非常适合多分类任务
  • 缺点:实际应用中,由于取指数运算,可能会造成溢出

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DataPanel组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之DataPanel组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DataPanel组件 数据面板组件&#xff0c;用于将多个数据占比情况使用占比图进…

集成学习之Boosting方法系列_XGboost

文章目录 【文章系列】【前言】【算法简介】【正文】&#xff08;一&#xff09;XGBoost前身&#xff1a;梯度提升树&#xff08;二&#xff09;XGBoost的特点&#xff08;三&#xff09;XGBoost实际操作1. 前期准备&#xff08;1&#xff09;数据格式&#xff08;2&#xff09…

小程序定制开发:解析定制化移动应用的未来

引言 在当今数字化时代&#xff0c;移动应用已经成为人们生活不可或缺的一部分。随着智能手机的普及&#xff0c;移动应用的需求呈现出爆发式增长&#xff0c;企业们也纷纷投身于这场数字化浪潮。然而&#xff0c;众多企业在竞争激烈的市场中&#xff0c;如何突显个性、提高用…

使用Eclipse搞Android项目报错

相信现在都没什么人还会用Eclipse来开发的了。 不过安装完后&#xff0c;打开Eclipse会提示我的Jdk版本不符合 --------------------------- Incompatible JVM --------------------------- Version 1.8.0_391 of the JVM is not suitable for this product. Version: 17 or g…

python之poetry模块,项目管理

一、简介 Poetry 是一个用于管理 Python 项目依赖关系和构建工具的工具。它提供了一个简单的命令行界面&#xff0c;可以帮助您创建、管理和发布 Python 项目&#xff0c;使用方法&#xff1a;command [options] [arguments] 官网&#xff1a;https://python-poetry.org/docs/…

详解SpringCloud微服务技术栈:深入ElasticSearch(1)——数据聚合

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;ElasticSearch实战&#xff08;旅游类项目&#xff09; &#x1f4da;订阅专栏&#x…

软件设计不是CRUD(11):低耦合模块设计理论——业务抽象:规划模块分层

上一篇文章《软件设计不是CRUD(10):低耦合模块设计理论——业务抽象:从需求中提取业务维度》本专题详细讲解了业务抽象的一个重要步骤:提取业务维度。本篇文章内容主要讲解在提取业务维度后,如何对应用程序中初步划分的各个功能模块进行分层规划。 1、为什么要进行模块分…

【lesson2】定长内存池的实现

文章目录 介绍定长内存池的设计定长内存池的实现需要成员变量需要的成员函数定长内存池结构定长内存池Delete&#xff08;释放空间&#xff09;的实现定长内存池New&#xff08;申请空间&#xff09;的实现 定长内存池的实现完整版 介绍 作为程序员(C/C)我们知道申请内存使用的…

Zookeeper实现分布式队列

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ&#xff0c;RocketMQ&#xff0c;Kafka等。Zookeeper作为一个分布式的小文件管理系统&#xff0c;同样能实现简单的队列功…

【python】图形化开发pyqt6基本写法模板与基础控件属性方法整理

pyqt6的简介 首先呢Python有许多可以编写图形化界面的库&#xff0c;我们通常跟着教程的话最初会接触的tkinter&#xff0c;但是学习中会发现编写的图形化跟我们平常接触的软件有很大区别&#xff08;简单来说就是丑&#xff09;。 pyqt则是第三方库&#xff0c;在Python中算…

ETL怎么实现文件处理

在现代企业及各类组织的日常运作中&#xff0c;数据作为一种关键的信息资源&#xff0c;其管理和分析能力直接影响到决策效率与准确性。文件作为数据的主要载体&#xff0c;承载着从运营报告、客户记录、交易明细等各种类型的数据信息。这些海量且多样的文件数据在未经处理的情…

flask_django基于python的城市轨道交通公交线路查询系统vue

同时&#xff0c;随着信息社会的快速发展&#xff0c;城市轨道交通线路查询系统面临着越来越多的信息&#xff0c;因此很难获得他们对高效信息的需求&#xff0c;如何使用方便快捷的方式使查询者在广阔的海洋信息中查询&#xff0c;存储&#xff0c;管理和共享信息方面有效&…

C语言菜鸟入门·运算符(算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,三目运算符)详细介绍

目录 ​编辑 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 6. 杂项运算符 ↦ sizeof & 三元 6.1 sizeof&#xff08;&#xff09; 6.2 &取地址运算符 6.3 * 6.4 三目运算符 7. 运算符优先级 运算符是一种告诉编译器执行…

ElementUI组件:Link 文字链接

Link 文字链接 点击下载learnelementuispringboot项目源码 效果图 el-link.vue页面效果图 项目里el-link.vue文件代码 <script> export default {name: el_link }</script> <!--https://element.eleme.cn/#/zh-CN/component/link --> <template>&l…

嵌入式学习第十四天

1.结构体&#xff08;2&#xff09;: &#xff08;1&#xff09;结构体类型定义 &#xff08;2&#xff09;结构体变量的定义 &#xff08;3&#xff09;结构体元素的访问 &#xff08;4&#xff09;结构体的存储: 内存对齐: char 按照1字节对齐 …

C# OpenCvSharp DNN Gaze Estimation 视线估计

目录 介绍 效果 模型信息 项目 代码 frmMain.cs GazeEstimation.cs 下载 C# OpenCvSharp DNN Gaze Estimation 介绍 训练源码地址&#xff1a;https://github.com/deepinsight/insightface/tree/master/reconstruction/gaze 效果 模型信息 Inputs ----------------…

医院安全(不良)事件报告系统源码,不良事件处理的全过程管理,实现11大类不良事件类型的报告上报、流转审批、跟踪改进及统计分析功能。

医院安全&#xff08;不良&#xff09;事件报告系统源码&#xff0c;不良事件上报系统源码&#xff0c;PHP源码 医院安全&#xff08;不良&#xff09;事件报告系统提供11大类不良事件的上报、事件审核处理、时间按分析、事件跟踪与持续改进&#xff0c;事件提醒、权限控制、外…

聊聊DoIP吧

DoIP是啥? DoIP代表"Diagnostic over Internet Protocol",即互联网诊断协议。它是一种用于在车辆诊断中进行通信的网络协议。DoIP的目标是在现代汽车中实现高效的诊断和通信。通过使用互联网协议(IP)作为通信基础,DoIP使得诊断信息能够通过网络进行传输,从而提…

React通用后台模板

一. 项目初始化 1. 创建项目 环境 npm init vite 打开package.json,参考以下各模块版本: "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^7.2.8", …

Security ❀ TCP异常报文详解

文章目录 1. TCP Out-Of-Order2. TCP Previous Segment Lost3. TCP Retransmission4. TCP Dup Ack XXX#X5. TCP Windows Update6. TCP Previous segment not captured7. 异常案例分析 TCP协议中seq和ack seq的联系&#xff1a; id4的http请求报文由客户端发向服务器&#xff0…