百面算法工程师 | 激活函数 Activate Function

目录

10.1激活函数作用:

10.2 为什么激活函数都是非线性的

10.3 常见激活函数的优缺点及其取值范围

10.4 激活函数问题的汇总

10.4.1 Sigmoid的缺点,以及如何解决

10.4.2 ReLU在零点可导吗,如何进行反向传播

10.4.3 Softmax溢出怎么处理

10.4.4 怎么理解ReLU负半区间也是非线性激活函数

10.4.5 ReLU函数的特点

10.5 如何选择激活函数

10.6 激活函数有哪些性质


 欢迎大家订阅我的专栏一起学习共同进步,主要针对25届应届毕业生

祝大家早日拿到offer! let's go

🚀🚀🚀http://t.csdnimg.cn/dfcH3🚀🚀🚀

 10.1激活函数作用:
  1. 引入非线性性:神经网络的每一层都是由线性变换(如矩阵相乘)和激活函数组成。如果没有激活函数,多层神经网络就会退化成单个线性变换,无法学习复杂的非线性关系。激活函数的非线性特性使得神经网络可以学习和表示更加复杂的函数。
  2. 映射到合适的范围:不同的激活函数可以将神经网络的输出映射到不同的范围内。例如,sigmoid 函数将输出映射到 (0, 1) 区间内,tanh 函数将输出映射到 (-1, 1) 区间内,ReLU 函数将负数映射为 0,而保持正数不变。这样的映射可以使得网络的输出符合特定的要求,例如在分类任务中输出概率值。
  3. 提供非线性导数:在反向传播算法中,梯度下降法用于调整神经网络中的参数以最小化损失函数。激活函数的非线性性质使得网络的损失函数对参数的导数不为零,从而使得梯度下降算法能够进行有效的参数更新。
  4. 增加网络的表达能力:通过合适选择激活函数,可以增加神经网络的表达能力,使其能够更好地适应不同类型的数据和任务。
10.2 为什么激活函数都是非线性的

假若网络中全是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。做不到用非线性来逼近任意函数。使用非线性激活函数 ,使网络更加强大,可以学习复杂的事物,表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。

10.3 常见激活函数的优缺点及其取值范围

激活函数

表达式

值域

优点

缺点

sigmoid

σx=11+e-x

(0, 1)

输出在 0 到 1 之间,适合用于输出层的二分类问题

容易出现梯度消失问题,当输入很大或很小时,梯度接近于 0

tanh

tanhx=ex-e-xex+e-x

(-1, 1)

输出在 -1 到 1 之间,比 sigmoid 函数输出范围更广

仍然存在梯度消失问题,对于大部分负数输入,梯度会非常小

Relu

ReLUx=max0,x

[0, +∞)

计算速度快,收敛速度较快,解决了梯度消失问题

可能存在神经元死亡问题,当输入小于 0 时,梯度为 0

Leaky ReLU

Leaky ReLUx=xif x>0αxotherwise

(-∞, +∞)

解决了 ReLU 函数中神经元死亡问题,避免了零梯度

参数 α的选择可能会影响性能,需手动调节

ReLU

ReLU6x=minmax0,x,6

[0, 6]

输出被限制在 [0, 6] 范围内,有助于稳定训练, 具有简单的表达式,计算速度快

存在神经元死亡问题,当输入小于 0 时,梯度为 0,输出限制在6,可能导致信息丢失

Mish

Mishx=x⋅tanhsoftplusx

(-∞, +∞)

具有更好的平滑性,相对于 ReLU 有更好的梯度特性

计算复杂度较高,可能需要更多的计算资源

Swish

Swishx=xσx

(-∞, +∞)

相对于 ReLU 具有更好的非线性特性,保留了线性函数的优点

相较于 ReLU 更加复杂,可能会增加训练时间和计算成本

P-ReLU

P-ReLUx=xif x>0αxif x0

(-∞, +∞)

参数化 ReLU,通过学习参数 (\alpha) 使得网络更加灵活

需要额外学习参数,增加了模型的复杂度

ELU

ELUx=xif x>0αex-1if x0

(-α, +∞)

相较于 ReLU 有更平滑的负半段,可以缓解梯度消失问题

计算复杂度较高,可能会增加训练时间和计算成本

 公式乱码,在下图中显示

和上表的内容是一样的,但是公式没有乱码

10.4 激活函数问题的汇总
10.4.1 Sigmoid的缺点,以及如何解决

Sigmoid型函数的输出存在均值不为0的情况,并且存在梯度消失与梯度爆炸的问题。(因为函数本身的表达式导致的梯度消失/爆炸)

 解决办法:

 1.在深层网络中使用其他激活函数替代。如ReLU(x)、Leaky ReLU(x)等

 2.在分类问题中,Sigmoid做激活函数时,使用交叉熵损失函数替代均方误差损失函数。

 3.采用正确的权重初始化方法。

 4.加入BN层。

 5.分层训练权重。

10.4.2 ReLU在零点可导吗,如何进行反向传播

不可导。人为将梯度规定为0。当输入小于等于 0 时,将梯度传递到下一层的神经元时,梯度将变为零,从而无法更新参数。这就是所谓的“神经元死亡”问题。

解决办法

Leaky ReLU

10.4.3 Softmax溢出怎么处理

解决办法:https://www.cnblogs.com/guoyaohua/p/8900683.html

10.4.4 怎么理解ReLU负半区间也是非线性激活函数
  1. 单侧抑制;ReLU 函数从图像上看,是一个分段线性函数,把所有的负值都变为 0,而正值不变,这样就成为单侧抑制。因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。
  2. 稀疏激活性:从信号方面,神经元同时只对输入信号的少部分选择性响应,大量信号被刻意屏蔽,这样可以提高学习精度,更好更快地提取稀疏特征。当 x<0 时,ReLU 硬饱和,而当 x>0 时,则不存在饱和问题。ReLU 能够在 x>0 时保持梯度不衰减,从而缓解梯度消失问题
10.4.5 ReLU函数的特点
  1. 在区间变动很大的情况下,ReLU激活函数的导数都会远大于 0,使用 ReLu 激活函数神经网络通常会比使用Sigmoid 或者 tanh 激活函数学习的更快
  2. Sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,会造成梯度弥散,而 ReLU和Leaky ReLU函数大于 0 部分都为常数,不会产生梯度弥散现象。
  3. ReLU 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性,而 Leaky ReLu 不会产生这个问题。
10.5 如何选择激活函数
  1. 如果输出是 0、1 值(二分类问题),则输出层选择 Sigmoid 函数,然后其它的所有单元都选择 ReLU函数。
  2. 如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 ReLU激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当是负值的时候,导数等于0。
  3. Sigmoid 激活函数,除了输出层是一个二分类问题基本不会用它。
  4. tanh 激活函数,tanh 是非常优秀的,几乎适合所有场合。
  5. ReLU激活函数,最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者 Leaky ReLu,再去尝试其他的激活函数。
  6. 如果遇到了一些死的神经元,我们可以使用 Leaky ReLU 函数。
10.6 激活函数有哪些性质
  1. 非线性。
  2. 可微性。 当优化方法是基于梯度的时候,就体现了该性质。
  3. 单调性。当激活函数是单调的时候,单层网络能够保证是凸函数。
  4. f ( x ) ≈ x f(x)≈xf(x)≈x。 当激活函数满足这个性质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要详细地设置初始值;
  5. 输出值的范围。当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的学习率。

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

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

相关文章

当贝D6X和坚果N1 Air高亮版哪个好?参数对比,教你怎么选

当贝在4月18日的春季新品发布会上推出了首款三色激光投影仪——当贝D6X。这款D6X系列的新品不仅采用了一体式灵动云台&#xff0c;还首创“AI灵动屏”&#xff0c;一经发布就引发热议。那么&#xff0c;当贝D6X的实力究竟如何呢&#xff1f; 我们通过同价位的当贝D6X和坚果N1 A…

Vue+Echarts 实现中国地图和飞线效果

目录 实现效果准备 实现效果 在线预览&#xff1a;https://mouday.github.io/vue-demo/packages/china-map/dist/index.html 准备 高版本的echarts&#xff0c;不包含地图数据&#xff0c;需要自己下载到项目中 1、地图数据下载 https://datav.aliyun.com/portal/school/at…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…

Maven基础篇7

私服-idea访问私服与组件上传 公司团队开发流程 本地上传–>repository–>私服 其他成员从私服拿 1.项目完成后发布到私服 在pom文件最后写上发布的配置管理 ​ //写发布的url也就是你发布到哪一个版本&#xff0c;以及写入id ​ ​ 发布的时候&#xff0c;将项…

开源贡献代码之​探索一下Cython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景&#xff0c;展开讲讲Cython遇到的问题&#xff0c;以及尝试自己从0写一个库出来&#xff0c;代码也已经放星球了&#xff0c;感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…

通配符SSL证书有哪些优点?怎么免费申请?

通配符证书就像一把“万能钥匙”&#xff0c;可以同时给一家公司旗下所有以某个主域名开头的子网站都“上锁”。这样有以下几个好处&#xff1a; 安全放心&#xff1a; - 全副武装&#xff1a;甭管用户访问的是公司的邮箱网站&#xff08;比如mail.公司名.com&#xff09;、购…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

WEB服务的配置与使用 Apache HTTPD

服务端&#xff1a;服务器将发送由状态代码和可选的响应正文组成的 响应 。状态代码指示请求是否成功&#xff0c;如果不成功&#xff0c;则指示存在哪种错误情况。这告诉客户端应该如何处理响应。较为流星的web服务器程序有&#xff1a; Apache HTTP Server 、 Nginx 客户端&a…

揭秘npm:高效包管理的绝佳技巧(AI写作)

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

整合阿里云OSS 对象存储

1. 创建Bucket 填写属性参数 2. 获取秘钥accessKey 2.1 进入accessKey管理页面 2.2 创建accessKey&#xff0c;并获取信息 需要自行进行安全验证 记录自己的 信息 3. 查看官方SDK文档 位置 找到开发参考Java 4. 具体实现-参考官网 4.1 添加依赖 <dependency&…

Java | Leetcode Java题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution {public int trap(int[] height) {int n height.length;if (n 0) {return 0;}int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i]);}int[] …

element中file-upload组件的提示‘按delete键可删除’,怎么去掉?

问题描述 element中file-upload组件会出现这种提示‘按delete键可删除’ 解决方案&#xff1a; 这是因为使用file-upload组件时自带的提示会盖住上传的文件名&#xff0c;修改一下自带的样式即可 ::v-deep .el-upload-list__item.is-success.focusing .el-icon-close-tip {d…

SQL基础(关系模型)

目录 SQL及定义域概念 SQL是什么 定义域 关系简介 关系的定义 关系的封闭性 关系模型简介 关系模型 谓词逻辑 运算基础 SQL的加减乘除 SQL的除法1 SQL的除法2 SQL的除法3 三值逻辑 NULL的危害 消除NULL SQL及定义域概念 SQL是什么 Structured Query Languag…

【计算机毕业设计】药品销售系统产品功能介绍——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

Cellebrite Inseyets- 一站式流线型提取

Cellebrite Inseyets - &#xff08;原Cellebrite Premium/ES/SAAS&#xff09;一站式流线型数据提取 Premium现已迎来重大更新升级&#xff0c;简化您的数据处理流程&#xff0c;加快处理速度&#xff01; Cellebrite Inseyets- 提高设备优先级、减少处理时间并增加有意义的数…

用html画一个四叶草

<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>四叶草</title> <link href"" rel"stylesheet"> <link rel"stylesheet" href"css/style.css&q…

Barnes-Hut t-SNE:大规模数据的高效降维算法

在数据科学和分析中&#xff0c;理解高维数据集中的底层模式是至关重要的。t-SNE已成为高维数据可视化的有力工具。它通过将数据投射到一个较低维度的空间&#xff0c;提供了对数据结构的详细洞察。但是随着数据集的增长&#xff0c;标准的t-SNE算法在计算有些困难&#xff0c;…

Spring SpringBoot(详解)

1. Spring简介 1.1 Spring 核心设计思想 1.1.1 Spring 是什么&#xff1f; Spring 是包含了众多⼯具⽅法的 IoC 容器。Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;Spring ⽀持⼴泛的应⽤场景&#xff0c;它…

Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 1、Ribbon简介1.1、架构图1.2、简单实现负载均衡 2、配置负载均衡策略2.1、IRule2.2、使用IRule简单示例2.2.1、Overview2.2.1、注入IRule2.2.2、关联IRule和服务 1、Ribbon简介 我们都知道Ribbon是用于负载均衡…

5-内核开发-/proc File System 学习

5-内核开发-/proc File System 学习 课程简介&#xff1a; Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础&#xff0c;让他们能够理解和参与到Linux内核的开发过程中。…
最新文章