【机器学习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.hqwc.cn/news/449772.html

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

相关文章

使用css绘制小三角形

要使用CSS绘制小三角形&#xff0c;您可以使用border属性来设置边框样式。下面是一种常见的绘制小三角形的方法&#xff1a; <style>.box {width: 0;height: 0;/* border-top: 10px solid red; */border-bottom: 10px solid blue;border-left: 10px solid transparent;b…

CodeEase插件市场上线了

目录 怎么进入插件市场&#xff1f;插件市场有哪些功能&#xff1f;怎么上传自己的插件&#xff1f;怎么进入后台&#xff1f;结语 CodeEase生态的插件市场正式上线了&#xff01; 我们非常激动地宣布&#xff0c;CodeEase生态的插件市场已经正式上线&#xff01;这是一个为广…

Java开发工具 IntelliJ IDEA 2023中文

IntelliJ IDEA 2023是一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于多种编程语言&#xff0c;包括Java、Python、Kotlin等。它提供了许多特色功能&#xff0c;以提高开发效率和代码质量。 Java开发工具 IntelliJ IDEA 2023中文 以下是一些IntelliJ ID…

MySQL数据库入门

MySQL数据库概述 1&#xff0c;为什么要使用数据库2&#xff0c;数据库的相关概念3&#xff0c;常见的数据库管理系统4&#xff0c;MySQL介绍5&#xff0c;关系型数据库和非关系型数据库6&#xff0c;关系型数据库的设计规则7&#xff0c;表的关联关系7.1&#xff0c;一对一7.2…

【c/python】GtkBox

一、GtkBox及C语言示例 GtkBox是一个容器部件&#xff0c;用于在GTK&#xff08;GIMP Toolkit&#xff09;应用程序中水平或垂直地排列多个子部件。以下是一个简单的例子&#xff0c;展示了如何在一个基本的GTK应用程序中使用GtkBox来垂直排列两个按钮&#xff1a; 首先&#…

网络安全全栈培训笔记(60-服务攻防-中间件安全CVE复现WeblogicJenkinsGlassFish)

第60天 服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish 知识点: 中间件及框架列表: lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins, GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,jQuery 1、中间件-Web…

Python 数据分析(PYDA)第三版(二)

原文&#xff1a;wesmckinney.com/book/ 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 四、NumPy 基础知识&#xff1a;数组和向量化计算 原文&#xff1a;wesmckinney.com/book/numpy-basics 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 此开放访问网络版…

混合攻击流量对系统安全性的综合评估

很多针对安全设备的测试仅仅针对安全设备本身的防护&#xff0c;比如防御的漏洞攻击行为、恶意代码是否足够多&#xff0c;能否抵御大流量的L23层DDoS或者应用层的DDoS攻击&#xff0c;却没有考虑是否防御攻击时&#xff0c;一并阻止了正常的业务流量。以下图为例&#xff0c;当…

【动态规划】【C++算法】1335 工作计划的最低难度

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1335. 工作计划的最低难度 你需要制定一份 d 天的工作计划表。工作之间存在依赖&#xff0c;要想执行第 i 项工作&#xff0c;你必须完成全部 j 项工作&am…

STM32控制DHT11温湿度传感器模块获取温湿度数据

时间记录&#xff1a;2024/1/29 一、DHT11引脚介绍 &#xff08;1&#xff09;VCC&#xff1a;电源引脚&#xff0c;3.3-5.5V &#xff08;2&#xff09;DATA&#xff1a;数据输入输出引脚 &#xff08;3&#xff09;NC&#xff1a;保留引脚&#xff0c;悬空即可 &#xff08;…

思科交换机调试流程介绍(主要适用于OEM的思科的浪潮FS6700)

文章目录 1、光纤交换机配置流程2、交换机初始化 2-1、 默认管理地址 2-2、 更改默认管理地址 2-3、 远程登录模式 2-4、 更改用户名 3、VSAN 3-1、什么是VSAN 3-2、关于 VSAN 的一些主意事项 3-3、配置VSAN 3-4、配置验证…

获取真实 IP 地址(二):绕过 CDN(附链接)

一、DNS历史解析记录 DNS 历史解析记录指的是一个域名在过去的某个时间点上的DNS解析信息记录。这些记录包含了该域名过去使用的IP地址、MX记录&#xff08;邮件服务器&#xff09;、CNAME记录&#xff08;别名记录&#xff09;等 DNS 信息。DNS 历史记录对于网络管理员、安全研…