激活函数 | 神经网络

news2024/11/25 20:20:49

1 为什么使用激活函数(Activation Function)

1.数据角度:
由于数据是线性不可分的,如果采用线性化,那么需要复杂的线性组合去逼近问题,因此需要非线性变换对数据分布进行重新映射;
2.线性模型的表达力问题:
由于线性模型的表达能力不够,引入激活函数添加非线性因素
通常被放置在每个神经元的输出端,用于对神经元的输出进行非线性变换,因为线性模型的表达力不够。
在这里插入图片描述

2 激活函数介绍

2.1 sigmoid详解

2.1.1 公式

在这里插入图片描述

z可以理解为线性组合:b + w1x1 + w2x2,转化为一个分类问题,
在这里插入图片描述

2.1.2 作用

能够把输入的连续实值压缩在0-1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。常用在全连接层和,分类的概率,输出为0.9可以解释为90%的概率为正样本。

在这里插入图片描述

2.1.2 缺点

1.如果我们初始化神经网络的权值为[0,1]之间的随机数,由反向传播算法的数学推导可以知道,梯度从后向前传播时,每传递一层梯度值都会下降为原来原来的0.25倍,如果神经网络层比较多是时,那么梯度会穿过多层之后变得接近于0,也就出现梯度消失问题,当权值初始化为 [1,+]期间内的值时,则会出现梯度爆炸问题();
在这里插入图片描述

output 不是0均值(即zero-centered);
后果:会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:x>0, f=wTx+b那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果;
幂函数耗时;
在这里插入图片描述
2.2 sigmoid为什么容易梯度消失
在这里插入图片描述

Sigmoid和Relu激活函数的对比

1 sigmoid在0处正负饱和区梯度接近于0,造成梯度弥散:梯度很小,网络训练不动。
relu函数在大于0的部分梯度为常数,不会弥散。第2:稀疏激活性 3 加快运算

是逻辑斯蒂回归的压缩函数,它的性质是可以把分隔平面压缩到[0,1]区间一个数(向量),在线性分割平面值为0时候正好对应sigmod值为0.5,大于0对应sigmod值大于0.5、小于0对应sigmod值小于0.5;0.5可以作为分类的阀值;

在这里插入图片描述

https://zhuanlan.zhihu.com/p/24990626

2.2 tanh

2.2.1 tanh什么是 tanh 函数

  • 公式
    tanh 函数 能够 解决 sigmoid 函数 非 0 均值(sigmoid输出是0-1,经过变换后均值不是0)问题
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 relu 函数

只保留正数
在这里插入图片描述
在这里插入图片描述

2.3.1 为什么选 relu 函数 作为激活函数

  1. 解决了gradient vanishing问题 (在正区间) ,因为导数是1,在反向传播是梯度不会变化。
  2. 计算速度非常快,只需要判断输入是否大于0
  3. 收敛速度远快于sigmoid和tanh

单侧抑制,把所有负值变为0,输出0神经元就不会被激活,只有一部分被激活会很稀疏,
取最大值的函数。把所有负值都变为0,而正值不变-单侧抑制,只有一部分神经元会被激活,从而使网络很稀疏,提高计算效率,使神经元具有稀疏激活性。

稀疏激活性:从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。当x<0时,ReLU 硬饱和,而当x>0时,则不存在饱和问题。ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。

2.4 softmax原理

在很多场景下分类问题的类别数目是比较多的,可以将网络输出转换为概率分布,映射到(0,1)区间内,可以看成概率来理解。所有输出概率和为1,便于理解和处理。

公式
在这里插入图片描述
目的:处理图像的离散数值分类问题。归一化指数函数
多物体分类,输入是多类别的得分多分类结果用概率形式表示出来,之和等于1,第一用指数函数转化为非负数,第2步归一化处理

在这里插入图片描述

在这里插入图片描述

2.4.1 缺点

在计算softmax时,需要计算所有类别的概率,并且分母中需要对所有类别的得分进行求和,计算复杂度较高。对于类别数量非常大的情况,计算量可能会非常大。同时,softmax也容易受到过大或过小的输入值的影响,可能会出现数值不稳定的情况。

3 激活函数选择

1.深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据
(可以经过数据预处理实现)和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
2.如果使用ReLU,那么一定要小心设置 learning rate,而且要注意不要让网络出现很多 “dead”神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者 Maxout。
3.最好不要用sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout。

参考

动手学pytorch
https://www.cnblogs.com/developer-ios/p/8684852.html
https://www.jianshu.com/p/338afb1389c9
https://www.cnblogs.com/DjangoBlog/p/9151829.html
https://blog.csdn.net/Grateful_Dead424/article/details/123287546
九天relu详解
激活函数 github面试

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

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

相关文章

python flask server 接收post数据注意

前面写了两篇文章&#xff0c;结果错误不少&#xff0c;经过修正&#xff0c;改了很多错误 1 跨域 加上以下两条 from flask_cors import CORS from flask_cors import cross_origin以下让整个全景跨域 CORS(app, supports_credentialsTrue)2 secret_key 加上secret_key 防…

系列五、RocketMQ集群搭建

一、概览 二、集群特点 2.1、NameServer NameServer是一个几乎无状态节点&#xff0c;可集群部署&#xff0c;节点之间无任何信息同步。 2.2、Broker Broker部署相对复杂&#xff0c;Broker分为Master与Slave&#xff0c;一个Master可以对应多个Slave&#xff0c;但是一个Sla…

客户端是win10远程连接ubuntu后图形化执行程序verdi

一、安装xlaunch 1.1 搜索vcxsrv安装即可 1.2 对vcx进行配置&#xff0c;参考 将ubuntu终端打开的GUI图形界面窗口显示在windows上_heusjh的博客-CSDN博客https://blog.csdn.net/m0_51194302/article/details/128768284#:~:text%E5%B0%86ubuntu%E7%BB%88%E7%AB%AF%E6%89%93%…

天翎MyApps低代码平台案例分享—百川信保安服务综合管理系统

项目背景&#xff1a;百川信&#xff08;北京&#xff09;信息服务有限公司&#xff08;以下简称“百川信”&#xff09;成立于2014年&#xff0c;是一家专注于为安保行业提供高效、全场景、智能化协同办公管理与服务的科技公司。作为国内领先的数字安保解决方案与应用服务提供…

winform去掉最小化后左下角窗口,托盘处理

去掉如图的窗口&#xff1b; public partial class FormZpenSample : Form{public FormZpenSample(){InitializeComponent();#region 托盘处理//隐藏ui this.WindowState FormWindowState.Minimized;//隐藏任务栏区图标this.ShowInTaskbar false;//不显示this.Hide();//图标显…

masm32 链接问题

当我参考资料学习Windows环境下32位汇编时&#xff0c;编译倒没什么问题&#xff0c;可是链接就不对了。 网上也没找到解决办法&#xff0c;经过后来思考了一下&#xff0c;会不会是link.exe这个玩意有问题&#xff1f;比如有多个&#xff1f; 所以使用link的绝对路径试了一下…

使用json-server 模拟后端数据

1. json-server是什么 json-server 是一个 Node 模块&#xff0c;运行 Express 服务器&#xff0c;你可以指定一个 json 文件作为 api 的数据源。 简单的说&#xff0c;它可以模拟小型后台接口&#xff0c;在一个JSON文件中操作数据&#xff0c;是基于的node.js的一个模块。 比…

【MySQL】MySQL分区表详解

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 文章目录 分区表介绍表分区的优缺点和限制 分区适用场景分区方式分区策略RANGE分区LIST分区HASH分区KEY分区COLUMNS 分区 常见分区命令是否支持分区创建分区表向分区表添加新的分区删除指定的分区重新组织分…

2 增长渐进阶求解

2 增长渐进阶求解 作者: 赵晓鹏时间限制: 1S章节: 递归与分治 #include<iostream> using namespace std;int main() {cout << "A"<<endl ; cout << "A"<<endl ; cout << "A"<<endl ; cout << …

Linux 学习记录49(QT篇)

Linux 学习记录49(QT篇) 本文目录 Linux 学习记录49(QT篇)一、事件处理机制1. 什么是事件2. 如何处理事件(1. 当事件发生时(2. QObject类的子类 3. 事件处理函数由来4. 鼠标和键盘事件5. 键盘按键示例 二、定时器1. 定时器事件2. 代码实现3. 自制文本闹钟 三、绘制事件&#xf…

Centos7离线模式安装Redis6.2.13详细步骤(rpm方式)

本篇文章主要介绍在CentOS7服务器中安装Redis6.2.13&#xff0c;前提是需要有gcc的环境&#xff0c;那么在此我也会向大家介绍gcc的详细安装过程&#xff0c;参考了很多其它相关博客&#xff0c;但有些博主的文章可能是搬运的&#xff0c;导致我在实操时出现报错&#xff0c;那…

CVE-2023-23752-Joomla权限绕过漏洞研判分析

CVE-2023-23752-Joomla权限绕过漏洞分析 简介 Joomla是一个开源免费的内容管理系统&#xff08;CMS&#xff09;&#xff0c;基于PHP开发。 在其4.0.0版本到4.2.7版本中&#xff0c;存在一处属性覆盖漏洞&#xff0c;导致攻击者可以通过恶意请求绕过权限检查&#xff0c;访问…

Go轻量级线程Goroutine

文章目录 Goroutinegoroutine的创建GPM介绍goroutine调度 道阻且长&#xff0c;行则将至&#xff0c;行而不辍&#xff0c;未来可期&#x1f31f;。人生是一条且漫长且充满荆棘的道路&#xff0c;一路上充斥着各种欲望与诱惑&#xff0c;不断学习&#xff0c;不断修炼&#xff…

第二十一章:用户与权限管理

第二十一章&#xff1a;用户与权限管理 21.1&#xff1a;用户管理 登录MySQL服务器 # 语法 mysql -h hostname|hostIP -P port -u username -p DatabaseName -e "SQL语句"; # -h参数 后面接主机名或者主机IP&#xff0c;hostname为主机&#xff0c;hostIP为主机IP。…

请求响应-简单参数的接受

请求响应 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构。客户端只需要浏览器&#xff0c;应用程序的逻…

BCD码与二进制码的区别与联系

二进制数是整串二进制编码表示一个整数&#xff0c;BCD码是用二进制码逐一表示0&#xff5e;9的整数。 (本笔记适合对整数进制编码有一定了解&#xff0c;熟悉二进制数编码的编程爱好的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org…

【python】制作一个串口工具(下)!

上一章节我们说了UI界面的设计&#xff0c;这一节来说下怎样实现其功能。 一.实例演示 1.创建一个.py文件&#xff0c;以下代码用来实现获取所有的串口信息&#xff1a; import serial import serial.tools.list_portsfrom PyQt5.QtWidgets import QComboBoxclass My_ComBoBo…

使用Feign进行微服务之间的接口调用:Spring Cloud Alibaba中的声明式服务调用

一、Feign介绍 Feign是一个声明式的HTTP客户端框架&#xff0c;用于简化微服务架构中服务之间的通信。它是Spring Cloud框架的一部分&#xff0c;旨在提供一种优雅且易于使用的方式来定义和调用HTTP请求。 Feign的设计目标是让服务之间的通信变得更加简单和直观。通常情况下&am…

EmEditor自定义快捷键之下一个标签页上一个标签页

EmEditor自定义快捷键 有好几种叫法 下一个标签页上一个标签页 下一个选项卡上一个选项卡 在这里个软件它叫’右侧文档’ ‘左侧文档’ 工具 - 所有配置的属性 - 键盘 - 窗口 - 类别: 选’窗口’ - 依次选 ‘右边的文档’ ‘左边的文档’ 按下新的快捷键 - 是每次只按一个键(不…

简单的复习下与 CSS Flex 布局相关的几个关键属性

揭开align-content、justify-content、align-items和justify-items的神秘面纱&#xff0c;解释它们各自的功能以及在不同的情境下如何使用。 在过去几年中&#xff0c;由于弹性盒子和网格布局的演变&#xff0c;CSS布局设计的艺术发生了重大变化。而这一变革的核心&#xff0c;…