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

news2024/9/21 16:34:20

        在我写的上一篇文章中介绍了感知机(单个神经元)的构成,其中就谈到了神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出值。这也称为“神经元被激活”。如果想对神经网络是什么有更多了解的小伙伴可以去看看我上一篇文章,链接我发在下面啦!
【机器学习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.coloradmin.cn/o/1421768.html

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

相关文章

人工智能是哪个专业

人工智能是一个以计算机科学为基础&#xff0c;由计算机、心理学、哲学等多学科交叉融合的交叉学科、新兴学科。其研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学&#xff0c;企图了解智能的实质&#xff0c;并生产出一种新的能以人类…

机器学习——绪论总结

目录 一、引入 二、基本术语 三、假设空间与归纳偏 四、模型选择 一、引入 机器学习&#xff1a;通过计算手段&#xff0c;得出具有能够自我修改、完善能力的模型&#xff0c;利用经验改善系统自身性能。算法使用数据得到模型的过程即称为学习&#xff0c;或训练 流程&…

uni-app app引入天地图

话不多说咸鱼来了 <template><view><div class"mapBox" style"width: 100%; height: 100vh;background: #ddc0c0;" id"mapId" ></div></view> </template> <script module"test" lang"r…

vue使用antv-x6 绘制流程图DAG图(二)

代码&#xff1a; <template><div class"graph-wrap" click.stop"hideFn"><Toobar :graph"graph"></Toobar><!-- 小地图 --><div id"minimap" class"mini-map-container"></div>…

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…

C++ 数论相关题目 台阶-Nim游戏

现在&#xff0c;有一个 n 级台阶的楼梯&#xff0c;每级台阶上都有若干个石子&#xff0c;其中第 i 级台阶上有 ai 个石子(i≥1 )。 两位玩家轮流操作&#xff0c;每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中&#xff08;不能不拿&#xff09;。 已经拿到地面…

JAVA处理类似饼状图占比和100%问题,采用最大余额法

前言&#xff1a; 在做数据统计报表的时候&#xff0c;有两种方式解决占比总和达不到100%或者超过100%问题。 第一种方式是前端echart图自带的算分框架。 第二种方式是java后端取处理这个问题。 现存问题&#xff1a; 前端通过饼状图的方式去展示各个分类的占比累加和为100%问题…

vue前端页面时间显示问题解决方法

解决方法&#xff0c; <template slot-scope"scope"><span>{{ parseTime(scope.row.boxClosingOnlineTime, {y}-{m}-{d} {h}:{i}:{s}) }}</span> </template> 刷新页面&#xff1a; 此外&#xff0c;使用JsonFormat(pattern "yyyy-M…

Kaggle竞赛系列_SpaceshipTitanic金牌方案分析_数据分析

文章目录 【文章系列】【前言】【比赛简介】【正文】&#xff08;一&#xff09;数据获取&#xff08;二&#xff09;数据分析1. 缺失值2. 重复值3. 属性类型分析4. 类别分析5. 分析目标数值占比 &#xff08;三&#xff09;属性分析1. 对年龄Age分析&#xff08;1&#xff09;…

OpenHarmony—环境准备

JS SDK安装失败处理指导 问题现象 下载JS SDK时&#xff0c;下载失败&#xff0c;提示“Install Js dependencies failed”。解决措施 JS SDK下载失败&#xff0c;一般情况下&#xff0c;主要是由于npm代理配置问题&#xff0c;或未清理npm缓存信息导致&#xff0c;可按照如…

如何更新github上fork的项目(需要一定git基础)

如何更新Fork的项目(需要一定git基础) 前言&#xff1a;本文记录一下自己在github上fork了大佬的开源博客项目https://github.com/tangly1024/NotionNext&#xff0c;如何使用git克隆以及自定义开发和同步合并原项目更新迭代内容的的步骤 如何更新fork的项目(进阶版) 首先你…

MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL

文章目录 解析全局配置文件二级缓存解析解析二级缓存缓存中的调用过程缓存中使用的设计模式 解析SQL 解析全局配置文件 启动流程分析 String resource "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 reader Resources.getResourceAsReader(re…

华天动力OA ntkodownload.jsp 任意文件读取漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合,为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA ntkodownload.jsp接口处存在任意文件读取漏洞,未经身份认证的攻击者可利用此漏洞获取服务器内部敏感…

条款32:确定你的public继承塑模出 is-a 关系

如果你编写类D(“派生类”)public继承类B(“基类”)&#xff0c;就是在告诉C编译器(以及代码的读者)每个类型D的对象都是类型B的对象&#xff0c;但反之则不然。 class Person {...}; class Student: public Person {...}; void eat(const Person& p); // 素有的Person都…

笔记本从零安装ubuntu server系统+环境配置

文章目录 前言相关链接ubuntu Server 安装教程屏幕自动息屏关上盖子不休眠MobaXterm外网SSH内网穿透IPV6远程 为什么我要笔记本装Linux为什么要换ubuntu Server版能否连接wifi之后Linux 配置清单总结 前言 之前装了个ubuntu desktop 版&#xff0c;发现没有命令行&#xff0c;…

FLUENT Meshing Watertight Geometry工作流入门 - 3 BOI FOI

本视频中学到的内容&#xff1a; 如何使用和设置 “Body Of Influence”&#xff08;BOI&#xff09;、“Face Of Influence”&#xff08;FOI&#xff09;。 视频链接&#xff1a; 【FLUENT Meshing入门教程-局部尺寸控制3-BOI&FOI-哔哩哔哩】 https://b23.tv/UHYY828 在…

【React】前端项目引入阿里图标

【React】前端项目引入阿里图标 1、登录自己的iconfont-阿里巴巴矢量图标库&#xff0c;把需要的图标加入到自己的项目中去&#xff1b;2、加入并进入到项目中去选择Symbol点击复制代码3、安装ant-design/icons4. 新建一个MyIcon.js文件内容如下5、在项目中使用 1、登录自己的i…

【Linux笔记】文件描述符与重定向

一、Linux关于文件操作的一些系统调用 1、open和close 我们在C语言阶段已经学过很多文件操作的函数&#xff0c;今天我们要来看看操作系统中对于文件是怎么操作的。 1.1、open与close的用法 C语言的库函数中有很多关于文件操作的接口&#xff0c;包括fopen、fclose、fprint…

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像&#xff08;image)容器&#xff08;container&#xff09;仓科&#xff08;repository&#xff09;…

基于大数据的B站数据分析系统的设计与实现

摘要&#xff1a;随着B站&#xff08;哔哩哔哩网&#xff09;在国内视频分享平台的崛起&#xff0c;用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据&#xff0c;设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…