【机器学习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,非常适合多分类任务
  • 缺点:实际应用中,由于取指数运算,可能会造成溢出

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

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

相关文章

网络防御保护——课程笔记

一.防火墙 防火墙的主要职责&#xff1a;控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 防火墙的分类 防火墙的发展进程 防火墙的控制 带内管理 --- 通过网络环境对设备进行控制 --- telnet&#xff0c;ssh&#xff0c;web --- 登录设备…

【Go 快速入门】包及依赖管理 | Go 第三方包发布 | 接口 | 反射

文章目录 包和依赖管理依赖管理go modgo get go.mod 文件go.sum 文件Go Modules 发布包 接口空接口接口值类型断言 反射reflect.TypeOfreflect.ValueOf结构体反射 项目代码地址&#xff1a;04-PackageInterfaceReflection 包和依赖管理 Go 使用包来支持代码模块化和代码复用&…

【Django开发】前后端分离美多商城项目:项目准备和搭建(附代码,文档)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论django商城项目开发相关知识。本项目利用Django框架开发一套前后端不分离的商城项目&#xff08;4.0版本&#xff09;含代码和文档。功能包括前后端不分离&#xff0c;方便SEO。采用Django Jinja2模板引擎 Vue.js实现…

分表过多引起的问题/Apache ShardingSphere元数据加载慢

目录 环境 背景 探寻 元数据的加载策略 如何解决 升级版本到5.x 调大max.connections.size.per.query max.connections.size.per.query分析 服务启动阶段相关源码 服务运行阶段相关源码 受到的影响 注意事项&#xff08;重要&#xff09; 其他 环境 Spring Boot 2…

数据结构3、基于栈的后缀算术表达式求值

1 题目描述 图1 中缀表达式转化为后缀表达式题目描述 图2 基于栈的后缀算术表达式求值题目描述 2 题目解读 借助一个运算符栈&#xff0c;可将中缀表达式转化为后缀表达式&#xff1b;借助一个运算数栈&#xff0c;可对后缀表达式求值。借助一个运算符栈和一个运算数栈&#xf…

MongoDB安装以及卸载

查询id&#xff1a; docker ps [rootlocalhost ~]# docker stop c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rm c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rmi mongo sudo docker pull mongo:4.4 sudo docker images 卸载旧的 sudo docker stop mong…

Win10无法完成更新正在撤销更改的解决方法

在Win10电脑操作过程中&#xff0c;用户看到了“无法完成更新正在撤销更改”的错误提示&#xff0c;这样系统就不能成功完成更新&#xff0c;不知道如何操作才能解决此问题&#xff1f;以下小编分享最简单的解决方法&#xff0c;帮助大家轻松解决Win10电脑无法完成更新正在撤销…

BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket&#xff1f; Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作 系统提供。客户端连接上一个服务端&#xff0c;就会在客户端中产生一个 socket 接口实例&#xff0c;服务端每接受 一个客户端…

【Linux网络编程】网络编程套接字(1)

【Linux网络编程】网络编程套接字(1) 目录 【Linux网络编程】网络编程套接字(1)源IP地址和目的IP地址端口号端口号和进程ID的关系 网络通信TCP协议UDP协议网络字节序socket编程接口简单的UDP网络程序 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.1.29 前言&#xff1…

SV-7101T网络音频终端 网络对讲终端

SV-7101是一款IP网络广播终端&#xff0c;主要作为网络播放器使用&#xff0c;其接收网络的音频数据&#xff0c;提供音频输出。SV-7101与服务器主控软件、有源音箱配套使用可实现主控室对HG7101终端进行定时打铃、实时语音广播和紧急广播等功能。 淘宝速购&#xff1a; SV-701…

Android中属性property_get和property_set的详细用法介绍

1&#xff0c;property_get和property_set的作用说明 在Android操作系统中&#xff0c;property_get和property_set是用于获取和设置系统属性的函数。这些属性通常用于存储和读取配置信息&#xff0c;例如设备配置、网络设置、系统参数等。 property_get函数用于获取指定属性…

websocket 通信协议

websocket是什么 答: 它是一种网络通信协议&#xff0c;是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 意思就是服务器可以主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息 属于服务器推送技术的一种. 为什么需要websocket? 疑问?…

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数据…

MySQL原理(二)存储引擎(3)InnoDB

目录 一、概况&#xff1a; 1、介绍&#xff1a; 2、特点&#xff1a; 二、体系架构 1、后台线程 2、内存池&#xff08;缓冲池&#xff09; 三、物理结构 1、数据文件&#xff08;表数据和索引数据&#xff09; 1.1、作用&#xff1a; 1.2、共享表空间与独立表空间 …

【C/C++ 05】快速排序

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序算法&#xff0c;其基本思想是&#xff1a;任取待排序序列中的某元素作为基准值&#xff0c;按照该基准值将待排序集合分割成两个子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所有元素均大于…

MySQL原理(二)存储引擎(1)概述

一、存储引擎介绍 1、概念&#xff1a; &#xff08;1&#xff09;MySQL中的数据用各种不下同的技术存储在文件中&#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力&#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎…

【数据结构与算法】7.详解队列的基本操作

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢…

2024年最新 MySQL的下载、安装、启动与停止

一、MySQL的下载 MySQL最常用的2个版本&#xff1a; 社区版&#xff1a;免费开源&#xff0c;自由下载&#xff0c;不提供官方技术支持&#xff0c;大多数普通用户选择这个即可。企业版&#xff1a;需要付费&#xff0c;不能在线下载&#xff0c;可以使用30天&#xff0c;提供…

ctfshow web72

下载源码&#xff1a; 开启环境&#xff1a; 本题设置了 open_basedir()&#xff0c;将php所能打开的文件限制在指定的目录树中&#xff0c;包括文件本身。 因为 ini_set() 也被限制了&#xff0c;所以 open_basedir() 不能用 ini_set() 重新设置绕过。 使用 php 伪协议 glob:…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…