深度学习:激活函数的比较和优缺点,sigmoid,tanh,relu

2023-10-26

1、什么是激活函数

2、为什么要用

3、都有什么激活函数

4、sigmoid,Relu,softmax

1. 什么是激活函数

如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。

2. 为什么要用

如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

3. 都有什么激活函数

(1) sigmoid函数

公式:

曲线:

导数:

sigmoid函数也叫 Logistic 函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。
在特征相差比较复杂或是相差不是特别大时效果比较好。

sigmoid缺点:

  • 激活函数计算量大,反向传播求误差梯度时,求导涉及除法
  • 反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练

  • Sigmoids函数饱和且kill掉梯度。
  • Sigmoids函数收敛缓慢。

下面解释为何会出现梯度消失:

反向传播算法中,要对激活函数求导,sigmoid 的导数表达式为:

sigmoid 原函数及导数图形如下:

由图可知,导数从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象

(2) Tanh函数

公式

曲线

也称为双切正切函数,取值范围为[-1,1]。
tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。
与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好。

(3) ReLU

Rectified Linear Unit(ReLU) - 用于隐层神经元输出

公式

曲线

RELU特点:

输入信号 <0 时,输出都是0,>0 的情况下,输出等于输入

ReLU 的优点:

Krizhevsky et al. 发现使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多

ReLU 的缺点:
训练的时候很”脆弱”,很容易就”die”了
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

(4) softmax函数

Softmax - 用于多分类神经网络输出

公式

举个例子来看公式的意思:

就是如果某一个 zj 大过其他 z, 那这个映射的分量就逼近于 1,其他就逼近于 0,主要应用就是多分类。

为什么要取指数,第一个原因是要模拟 max 的行为,所以要让大的更大。
第二个原因是需要一个可导的函数。

4. sigmoid ,ReLU, softmax 的比较

Sigmoid 和 ReLU 比较:

sigmoid 的梯度消失问题,ReLU 的导数就不存在这样的问题,它的导数表达式如下:

曲线如图

对比sigmoid类函数主要变化是:
1)单侧抑制
2)相对宽阔的兴奋边界
3)稀疏激活性。

Sigmoid 和 Softmax 区别:

softmax is a generalization of logistic function that “squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1.

sigmoid将一个real value映射到(0,1)的区间,用来做二分类。

而 softmax 把一个 k 维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中 bi 是一个 0~1 的常数,输出神经元之和为 1.0,所以相当于概率值,然后可以根据 bi 的概率大小来进行多分类的任务。

二分类问题时 sigmoid 和 softmax 是一样的,求的都是 cross entropy loss,而 softmax 可以用于多分类问题

softmax是sigmoid的扩展,因为,当类别数 k=2 时,softmax 回归退化为 logistic 回归。具体地说,当 k=2 时,softmax 回归的假设函数为:

利用softmax回归参数冗余的特点,从两个参数向量中都减去向量θ1 ,得到:

最后,用 θ′ 来表示 θ2−θ1,上述公式可以表示为 softmax 回归器预测其中一个类别的概率为

另一个类别概率的为

这与 logistic回归是一致的。

softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布
  
多个logistic回归通过叠加也同样可以实现多分类的效果,但是 softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。


5. 如何选择

选择的时候,就是根据各个函数的优缺点来配置,例如:

如果使用 ReLU,要小心设置 learning rate,注意不要让网络出现很多 “dead” 神经元,如果不好解决,可以试试 Leaky ReLU、PReLU 或者 Maxout.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习:激活函数的比较和优缺点,sigmoid,tanh,relu 的相关文章

  • Doc2vec计算文本相似度

    1 Doc2vec模型介绍 Doc2Vec模型基于Word2vec模型 并在其基础上增加了一个段落向量 以Doc2Vec的C BOW方法为例 算法的主要思想在以下两个方面 训练过程中新增了paragraph id 即训练语料中每个句子都有一
  • java栈与队列

    3 栈 栈是一种特殊的线性表 栈只能在一端 栈顶 进行操作 往栈里添加元素叫入栈 删除栈里的元素叫出栈 后进的元素先出 官方栈 java util Stack 栈的应用 浏览器的前进与后退 如果输入三个网址 假设123三个 出栈过程 后退操
  • SpringCloud服务间调用

    SpringCloud服务间的调用有两种方式 RestTemplate和FeignClient 不管是什么方式 他都是通过REST接口调用服务的http接口 参数和结果默认都是通过jackson序列化和反序列化 因为Spring MVC的R
  • 修改jar包增加自己需要功能的操作步骤(小白实践)

    一 修改静态文件的方式比较简单 1 先将要修改的jar包备份 cp xxx jar xxx 2 jar 2 建立一个新的目录便于后面的打包 mkdir jar tmp 3 将包放到刚刚创建的目录里解压 mv xxx 2 jar jar tm
  • GUI系统之SurfaceFlinger(11)SurfaceComposerClient

    文章都是通过阅读源码分析出来的 还在不断完善与改进中 其中难免有些地方理解得不对 欢迎大家批评指正 转载请注明 From LXS http blog csdn net uiop78uiop78 GUI系统之SurfaceFlinger章节目
  • qwtplot3D安装--终结解决方案

    帮同学做一个地热信息展示的软件 需要用到3D显示的内容 一方面 自己比较懒 懒去看OpenGL相关的内容 虽然以前做过3D开发相关的内容 但是毕竟需要处理的代码太多了 另一方面 也是一直在用QWT在帮他做2D图形显示这块 因此就想着用qwt

随机推荐

  • python3面向对象

    一些术语 类 class 用来描述具有相同的属性和方法的对象的集合 它定义了该集合中每个对象所共有的属性和方法 对象是类的实例 an example 4 learning class nClass i 123456
  • 论文笔记1——SSDA-YOLO: SEMI-SUPERVISED DOMAIN ADAPTIVE YOLO FOR CROSS-DOMAIN OBJECT DETECTION

    SSDA YOLO SEMI SUPERVISED DOMAIN ADAPTIVE YOLO FOR CROSS DOMAIN OBJECT DETECTION 源码地址 https github com hnuzhy SSDA YOLO
  • c#中“?”的几种用法

    c 中 的几种用法 1 可空类型修饰符 如 A B表示如果A为null则返回B 否则返回A 2 三元运算符 如 bool f false return f true 1 0 如果f为true则返回1 否则返回0 3 空合并运算符 如 a b
  • MySQL 管理方法

    MySQL 管理方法 一 Mysql介绍 二 Mysql启动 三 Mysql用户管理 一 Mysql介绍 MySQL是一个开放源码的小型关联式数据库管理系统 开发者为瑞典MySQL AB公司 目前MySQL被广泛地应用在Internet上的
  • Pytest系列-使用自定义标记mark(6)

    简介 pytest 可以支持自定义标记 自定义标记可以把一个 web 项目划分为多个模块 然后指定模块名称执行 Pytest 里面自定义标记 用法 将 pytest mark 标记名称 放到测试函数或者类上面 使用 执行时加上 m 标记名
  • 单片机新手指导1:STM32单片机学习思路

    学习内容 1 写在前面 1 学习态度 单片机 编程学习需要持续的恒心和毅力 涉及的学科跨度大 知识多 前期需长期投入大的精力入门 整个学习过程中最难的是入门这一步 也就是从0到1的过程 后期的学习是从1到10 由于掌握了一定的学习方法 所以
  • 真题详解(有向图)-软件设计(六十二)

    真题详解 极限编程 软件设计 六十一 https blog csdn net ke1ying article details 130435971 CMM指软件成熟度模型 一般1级成熟度最低 5级成熟度最高 采用更高级的CMM模型可以提高软件
  • 2022最简单易懂的IOS App打包发布完整流程

    创建appid标识符 进入apple开发者中心点击Account 点击Certificates Identifiers Profiles 创建AppIDS标识符 点击左侧菜单栏Identifiers 再点击 按钮 选择App IDs 再点击
  • python批量 txt转xml_Python版YOLOV3 Label(.txt)文件转xml文件

    最近在训练自己的yolo模型 训练之后想算mAP 发现网络上基本都是VOC数据集的标签制作方法 我的标签一开始是这样的 类型 x y w h 所以和VOC的不一样 于是就自己做xml文件 附代码 from xml dom minidom i
  • 栈溢出及解决方法

    栈溢出及解决方法 文章目录 栈溢出及解决方法 1 什么是栈溢出 2 栈溢出的解决方法 1 什么是栈溢出 缓冲区溢出是由于C语言系列设有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小 因此当这个数据足够大的时候 将会溢出缓冲区的范围
  • IC SPEC相关数据

    恢复内容开始 静态电流 静态电流是指没有信号输入时的电流 也就是器件本身在不受外部因素影响下的本身消耗电流 纹波电压的害处 1 容易在用设备中产生不期望的谐波 而谐波会产生较多的危害 2 降低了电源的效率 3 较强的纹波会造成 浪涌电压或电
  • c++中string类与字符串数组

    strlen及用 给c 字符串数组赋值 strlen 很笨 它会在遇到 0之前一直找下去 所以在cstr2中没有 0的时候 它会一直找下去 而那些地方还没有被初始化过 所以就是乱的 而且strlen计算出的字符串数组长度是不包含 0的那部分
  • elasticsearch中mapping中的可设置的属性

    mappings 在index 库 下创建时使用 下面可以有多个mapping 以下数据结构主要针对每个mapping进行说明 一级属性 二级属性 三级属性 说明 dynamic 新增字段自动模式 true 表示自动识别新字段并创建索引 f
  • 动态爬虫(ajax)-爬取bilibili热门视频信息

    文章目录 前言 一 页面分析 二 编写爬虫 1 引入库 2 发出请求 2 1生成请求头 2 2发出请求并获取响应 3 解析响应的内容 4 保存提取的信息到本地 5 康康主函数 三 运行结果 前言 使用python爬虫爬取bilibli每日热
  • VS2019利用Developer Command Prompt for VS 2019查看对象模型中的Class

    本文利用Developer Command Prompt for VS 2019工具 快速查看对象模型中类的结构 便于大家迅速了解衍生类和基类的关系 文章目录 一 打开开发人员命令提示工具 二 使用步骤 1 确定cpp文件位置 1 1 查找
  • chatGPT侧边栏历史记录消失解决方法

    从昨天3月8日开始 很多程序员发现自己的chatGPT打开后左侧侧边栏历史记录消失了 自己辛辛苦苦测试的Prompt都没有了 折腾了很久都不行 不得不重新写Prompt 解决方法 其实很简单 就是退出账号登录 然后重新登录账号再刷新就恢复了
  • QT界面UI文件不读取问题

    QT的C 项目有一段时间没有打开 重新打开时发现部分ui界面不知道为什么无法在QT Creator中用designer编辑器打开了 问题如下图 1 双击该ui界面不会自动跳转到界面编辑器了 2 可以随意更改ui界面的代码内容了 正常的ui界
  • C/C++使用Windows的API实现共享内存以及同步

    目录 共享内存 事件 Event 实现思路 创建方 服务端 连接方 进程同步 windows的API CreateFileMapping MapViewOfFile CreateEvent WaitForSingleObject Creat
  • 复习js笔记

    JS w3cschool官网 1000多本编程教程免费学 在日常中遇到的js函数 forms document forms name for in 循环 let x name lai age 18 city nanyang var y fo
  • 深度学习:激活函数的比较和优缺点,sigmoid,tanh,relu

    1 什么是激活函数 2 为什么要用 3 都有什么激活函数 4 sigmoid Relu softmax 1 什么是激活函数 如下图 在神经元中 输入的 inputs 通过加权 求和后 还被作用了一个函数 这个函数就是激活函数 Activat