神经网络激活函数的使用

我们都知道神经网络模型中使用激活函数的主要目的是将非线性特性引入到我们的网络中,强化网络的学习能力。激活函数应用于隐藏层和输出层中每个节点的称为 z 的输入加权和(此处输入可以是原始数据或前一层的输出)。

在本篇文章中我们将讨论神经网络中常见的激活函数,并使用可视化技术帮助你了解激活函数的函数定义和不同的使用场景。

在看完本文章后,你可以将清楚地了解何时使用哪种激活函数,并了解不同激活函数的定义。

神经网络中不同层的激活函数
神经网络通常由三种类型的层组成:输入层、隐藏层和输出层。

输入层只保存输入数据,不执行任何计算。 因此,这里不需要使用激活函数。

在神经网络的隐藏层中需要使用非线性激活函数, 这是因为需要在网络中引入非线性来学习复杂的模式。 如果没有非线性激活函数,具有许多隐藏层的神经网络将成为一个巨大的线性回归模型,这对于从现实世界数据中学习复杂模式毫无用处。 根据我们在隐藏层中使用的激活函数的类型,神经网络模型的性能会有很大差异。

在神经网络的输出层内使用激活函数的选择取决于我们要解决的问题类型。

线性与非线性函数
大多数激活函数是非线性的。但是有时也在神经网络中使用线性激活函数,例如在解决回归问题的神经网络模型的输出层中使用线性激活函数。

一个线性函数(称为 f)接受输入 z 并返回输出 cz,它是输入乘以常数 c。在数学上,这可以表示为 f(z) = cz。当 c=1 时,函数按原样返回输入,并且不对输入进行任何更改。二维空间中线性函数的图形是一条直线。

任何不是线性的函数都可以归类为非线性函数。非线性函数的图形不是一条直线。它可以是一个复杂的模式,也可以是两个或多个线性组件的组合。

不同类型的激活函数
下面将讨论神经网络中常用的激活函数。

1、Sigmoid

主要特点:

也是逻辑回归模型中使用的逻辑函数。
sigmoid 函数是一个 s 形图。
这是一个非线性函数。
sigmoid 函数将其输入转换为 0 到 1 之间的概率值。
它将大的负值转换为 0,将大的正值转换为 1。
对于输入 0,它返回 0.5。所以 0.5 被称为阈值,它可以决定给定的输入属于什么类型的两个类。
用法:

早期,Sigmoid 函数被用作 MLP、CNN 和 RNN 中隐藏层的激活函数。
现在,sigmoid 函数仍在 RNN 中使用。
我们通常不将 sigmoid 函数用于 MLP 和 CNN 中的隐藏层,因为太慢了,我们在那里使用 ReLU 或 Leaky ReLU。
当我们构建二进制分类器时,输出层必须使用 sigmoid 函数,其中输出被解释为类标签,具体取决于函数返回的输入的概率值。

当我们使用 sigmoid 函数建立一个多标签分类模型时,其中每个相互包含的类都有两个结果。 不要将此与多类分类模型混淆。

由于以下缺点,我们通常不在隐藏层中使用 sigmoid 函数。

sigmoid 函数存在梯度消失问题。 这也称为梯度饱和。
sigmoid 函数收敛慢。
它的输出不是以零为中心的。 因此,它使优化过程更加困难。
由于包含了 e^z 项,因此该函数的计算成本很高。
2、Tanh

主要特点:

tanh(正切双曲线)函数的输出始终介于 -1 和 +1 之间。
像 sigmoid 函数一样,它有一个 s 形图。这也是一个非线性函数。
与 sigmoid 函数相比,使用 tanh 函数的一个优点是 tanh 函数以零为中心。这使得优化过程更加容易。
tanh 函数的梯度比 sigmoid 函数的梯度更陡。
用法:

目前tanh 函数还被用作 MLP、CNN 和 RNN 中隐藏层的激活函数。
tanh 函数也在 RNN 中使用。
我们通常不将 tanh 函数用于 MLP 和 CNN 中的隐藏层。
我们从不在输出层使用 tanh 函数。
由于以下缺点,我们通常不在隐藏层中使用 tanh 函数。

tanh 函数存在梯度消失问题。
由于包含了 e^z 项,因此该函数的计算成本很高。
3、RELU

主要特点:

ReLU(整流线性单元)激活函数是 sigmoid 和 tanh 激活函数的绝佳替代品。
ReLU 发明是深度学习领域最重要的突破之一。
不存在梯度消失问题。
计算成本很低。认为 ReLU 的收敛速度比 sigmoid 和 tanh 函数快 6 倍。
如果输入值为 0 或大于 0,则 ReLU 函数按原样输出输入。如果输入小于 0,则 ReLU 函数输出值 0。
ReLU 函数由两个线性分量组成。因此,ReLU 函数是一个分段线性函数。所以ReLU 函数是一个非线性函数。
ReLU 函数的输出范围可以从 0 到正无穷大。
收敛速度比 sigmoid 和 tanh 函数快。这是因为 ReLU 函数对一个线性分量具有固定导数(斜率),而对另一个线性分量具有零导数。因此,使用 ReLU 函数的学习过程要快得多。
使用 ReLU 可以更快地执行计算,因为函数中不包含指数项。
用法:

ReLU 函数是MLP 和 CNN 神经网络模型中隐藏层的默认激活函数。
我们通常不会在 RNN 模型的隐藏层中使用 ReLU 函数。相反,我们在那里使用 sigmoid 或 tanh 函数。
我们从不在输出层使用 ReLU 函数。
缺点:

使用 ReLU 函数的主要缺点是它有一个dying ReLU问题。(当梯度值过大时,权重更新后为负数,经relu后变为0,导致后面也不再更新)
4、Leaky ReLU

主要特点:

leaky ReLU 激活函数是默认 ReLU 函数的修改版本。
与 ReLU 激活函数一样,该函数不存在梯度消失问题。
如果输入值是 0 大于 0,leaky ReLU 函数会像默认的 ReLU 函数一样输出输入。 但是如果输入小于 0,leaky ReLU 函数会输出一个由 αz 定义的小负值(其中 α 是一个小的常数值,通常为 0.01,z 是输入值)。
它没有任何具有零导数(斜率)的线性分量。 因此它可以避免dying ReLU 问题。
使用leaky ReLU 的学习过程比默认的 ReLU 更快。
用法:

ReLU 函数的相同用法也适用于leaky ReLU 函数。
5、参数 ReLU (PReLU) 激活函数

主要特点:

这是 ReLU 函数的另一个变体。
这几乎类似于leaky ReLU 函数。 唯一的区别是值 α 成为可学习的参数(因此得名)。 我们将 α 设置为网络中每个神经元的参数。 因此,α的最优值从网络中学习。
6、Relu6

主要特点:

ReLU 和 ReLU6 之间的主要区别在于,ReLU 允许正侧的值非常高,而 ReLU6 限制为正侧的值 6。 任何 6 或大于 6 的输入值都将被限制为值 6(因此得名)。
ReLU6 函数由三个线性分量组成。 它是一个非线性函数。
7、SoftMax

主要特点:

这也是一个非线性激活函数。
softmax 函数计算一个事件(类)在 K 个不同事件(类)上的概率值。 它计算每个类别的概率值。 所有概率的总和为 1,这意味着所有事件(类)都是互斥的。
用法:

必须在多类分类问题的输出层使用 softmax 函数。
不在隐藏层中使用 softmax 函数。

8、二元阶梯激活函数

主要特点:

该函数也称为阈值激活函数。 我们可以将任何值设置为阈值,在这里我们指定值 0。
如果输入大于阈值,此函数输出值 1。如果输入等于或小于阈值,此函数输出值 0。
这函数输出一个二进制值,0 或 1。
函数由两个线性分量组成。 因此该函数是分段线性函数。 所以二元阶跃函数是非线性函数,并且不是平滑函数。
用法:

通常不会在现代神经网络模型中使用这个函数。
但是可以使用这个函数来解释诸如“激发神经元”、“感知器的内部工作”等理论概念。 因此,阶跃函数在理论上很重要。
9、恒等激活函数

主要特点:

这也被称为线性激活函数。
当我们讨论激活函数时,这是唯一一个被认为是线性函数的函数。
这个函数按原样输出输入值。对输入不做任何更改。
用法:

该函数仅用于解决回归问题的神经网络模型的输出层。
不要在隐藏层中使用这个函数。

10、Swish

主要特点:

该函数是通过将 sigmoid 函数乘以输入 z 构成的。
这是一个非线性函数。
该图与 ReLU 激活函数的图非常相似。
曲线比 ReLU 激活函数更平滑。 在训练模型时,这种平滑度很重要。 该函数在训练时很容易收敛。
用法:

仅在隐藏层中使用。
不在神经网络模型的输出层使用这个函数。
缺点:

Swish 函数的主要缺点是计算量很大,因为函数中包含了 e^z 项。 这可以通过使用下面定义的称为“Hard Swish”的特殊函数来避免。
12、H-Swish

主要特点:

与 Swish 函数的曲线基本相同。这在计算上很便宜,因为 sigmoid 函数被线性模拟取代。
用法:

H-Swish的用法类似于 Swish 激活函数的用法。
最后总结
激活函数只是数学函数。激活函数应该具有的主要特征是该函数是可微的,因为这是模型中反向传播的要求。

选择正确的激活函数可以被认为是一种超参数调整,通过理解问题定义并考虑模型的性能和损失函数的收敛性来手动选择激活函数。
这里总结了上面讨论的不同激活函数的使用场景。当训练神经网络模型时,可以作为参考:

神经网络的输入层节点不需要激活函数,在定义输入层时无需担心激活函数。
输出层激活函数取决于我们要解决的问题类型。在回归问题中,我们使用线性(恒等)激活函数。在二元分类器中,我们使用 sigmoid 激活函数。在多类分类问题中,我们使用 softmax 激活函数。在多标签分类问题中,我们使用 sigmoid 激活函数,为每个类输出一个概率值。
隐藏层中使用非线性激活函数,通过考虑模型的性能或损失函数的收敛性来做出选择。可以从 ReLU 激活函数开始,如果你有一个Dying ReLU 问题,试试leaky ReLU。
在 MLP 和 CNN 神经网络模型中,ReLU 是隐藏层的默认激活函数。
在 RNN 神经网络模型中,我们对隐藏层使用 sigmoid 或 tanh 函数。 tanh 函数具有更好的性能。
只有恒等激活函数被认为是线性的。所有其他激活函数都是非线性的。
不要在隐藏层中使用 softmax 和恒等函数,在隐藏层中使用 tanh、ReLU、ReLU 的变体、swish 和 hard swish 函数。
hard swish是最新的研究结果,可以试试

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

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

相关文章

xsschallenge通关攻略详解

xsschallenge通过攻略 文章目录 xsschallenge通过攻略第一关第二关第三关第四关第五关第六关第七关第八关第九关第十关第十一关第十二关第十三关 简述 xsschallenge挑战攻略 ps: 终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT&g…

k8s的service自动发现服务:实战版

Service服务发现的必要性: 对于kubernetes整个集群来说&#xff0c;Pod的地址也可变的&#xff0c;也就是说如果一个Pod因为某些原因退出了&#xff0c;而由于其设置了副本数replicas大于1&#xff0c;那么该Pod就会在集群的任意节点重新启动&#xff0c;这个重新启动的Pod的I…

postman的使用

Postman的环境变量以及全局变量 设置接口的环境变量&#xff08;环境变量就是全局变量&#xff09;&#xff0c;设置接口的全局变量&#xff08;全局变量是能够在任何接口里面访问的变量&#xff09; 全局变量通过 {{变量名}} 获取 接口关联 场景&#xff1a;需要将“登录接口…

SAP中销售业务的查询修改及冲销操作手册

目的 物流在销售订单发货开票出问题时进行查询分析及处理冲销的相关操作 触发条件 销售业务出现变更导致需要重新做销售或人为错误 必要条件 订单&#xff0c;交货单&#xff0c;发票己完成并过账 有用提示 在实际冲销业务过程中需要去分析&#xff0c;在了解业务的情况下去…

JS 注释

JavaScript 不会执行注释&#xff0c;我们可以添加注释来对 JavaScript 进行解释&#xff0c;或者提高代码的可读性。 1.单行注释 单行注释以//开头。 以下代码中&#xff0c;单行注释用来对代码进行解释&#xff1a; <script>//定义点击次数的变量var clickCount 0;…

ACM练习——第一天

因为最近要去农大参加他们的算法邀请赛&#xff0c;然后赛制是ACM赛制的&#xff0c;所以我就直接很迷茫。 然后我就找到了牛客的ACM练习题&#xff0c;好好的练习一下ACM写法&#xff0c;而且我还要被迫写C&#xff0c;哭了。 开始钻研 1.从Java过度到C 题目源于牛客网&…

Clickhouse学习笔记(13)—— Materialize MySQL引擎

该引擎用于监听 binlog 事件&#xff0c;类似于canal、Maxwell等组件 ClickHouse 20.8.2.3 版本新增加了 MaterializeMySQL 的 database 引擎&#xff0c;该 database 能映射到 MySQL中的某个database &#xff0c;并自动在ClickHouse中创建对应ReplacingMergeTree。 ClickHous…

【赠书第4期】机器学习与人工智能实战:基于业务场景的工程应用

文章目录 前言 1 机器学习基础知识 2 人工智能基础知识 3 机器学习和人工智能的实战案例 4 总结 5 推荐图书 6 粉丝福利 前言 机器学习与人工智能是当前最热门的领域之一&#xff0c;也是未来发展的方向。随着科技的不断进步&#xff0c;越来越多的企业开始关注和投入机…

Tomcat学习

一、入门 在webapp里面必须先创建一个文件夹&#xff0c;文件夹里面放的内容&#xff0c;才会被访问到。 创建一个javaweb项目后 二、servlet 1.概述 2.servlet生命周期 3.servlet实例的创建时机 4.Servlet实例的初始化参数 5.HTTP状态码 6.servelet返回JSON数据 7.服务端设置…

2023数字科技生态大会-数字安全论坛 学习笔记

监管合规->价值创造的方向&#xff0c;在安全领域的发展方向-安全运营服务型 ICT->数字->数据 数字安全&#xff1a;网络安全数据安全 传统信息化以计算为核心&#xff0c;数字化以数据为核心 数字安全技术发展十大趋势&#xff1a; 一、 数字安全技术政策环境将不…

Linux环境实现mysql所在服务器定时同步数据文件到备份服务器(异地容灾备份场景)

目录 概述 1、建立ssh连接 1.1、操作mysql所在服务器 1.2、操作备份文件服务器 2、创建脚本实现备份以及传输 3、配置定时任务 概述 应对异地容灾备份场景&#xff0c;mysql所在服务器和本分服务器需要建立ssh连接&#xff0c;每天mysql服务器通过定时任务执行脚本&…

助力燃气安全运行:智慧燃气管网背景延展

关键词&#xff1a;城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前&#xff0c;随着我国城市化进程不断加快&#xff0c;城市燃气管网也不断延伸&#xff0c;运行规模庞大&#xff0c;地下管线复杂&#xff0c;不少城市建设“重地上轻地…

【Proteus仿真】【Arduino单片机】DS18B20温度计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS18B20温度传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传感器采集温度。 二、软件设计 /*…

React状态管理有哪些?

在React中&#xff0c;有多种方式可以进行状态管理&#xff0c;以下是一些常见的React状态管理解决方案&#xff1a; 1&#xff1a;React Context API&#xff1a; React Context API 是React官方提供的一种状态管理方案。它允许你在组件树中共享状态&#xff0c;避免了层层传…

【深度学习环境】windows安装 NVIDIA Docker

摘要 不要安装 Docker Desktop&#xff01;我们将在 Ubuntu 中自行安装 Docker。 请安装 Windows 10 Insider Build 或 Windows 11 &#xff08;Beta也行&#xff09;。&#xff08;稳定发行版无法在 WSL 2 中使用 GPU&#xff09; 请安装 WSL 2 w/Ubuntu 20.04 或同等版本。…

动态切换 Spring Boot 打包配置:使用 Maven Profiles 管理 JAR 和 WAR

引言 在多环境开发中&#xff0c;我们经常需要根据部署环境来改变 Spring Boot 应用的打包方式。本文将探讨如何使用 Maven Profiles 结合依赖排除来动态地切换 JAR 和 WAR 打包配置。 1. 修改 pom.xml 以支持 WAR 包 转换 Spring Boot 应用从 JAR 到 WAR 时&#xff0c;首先…

数据库恢复技术

事务 含义&#xff1a;用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位 地位&#xff1a;恢复和控制并发的基本单位 区分事务和程序&#xff0c;一个程序中包含多个事务 定义事务 事务的开始与结束…

【华为OD题库-017】矩阵稀疏扫描-Java

题目 如果矩阵中的许多系数都为零&#xff0c;那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省&#xff0c;并且在许多大的实践中都会出现矩阵稀疏的问题。给定一个矩阵&#xff0c; 现在需要逐行和逐列地扫描矩阵&#xff0c;如果某一行或者某一…

[pytorch]设备选择以及卷积神经网络的应用

0.写在前面: 首先这篇文章还没写完,因为今天要尝试对我之前的一个框架做一个简单的更新迭代,所以目前先更新这么多. 1.关于设备的选择 首先,目前的大多数电脑都是自带一些GPU(图形计算单元,在这里被称之为cuda), 需要安装相关的驱动才能正常使用这些设备和调用他们的具体情况…

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用

Docker是一种基于容器的虚拟化技术&#xff0c;它允许开发者将应用程序及其依赖项打包到一个轻量级容器中&#xff0c;然后在任何可用的开发、测试和生产环境中进行部署和运行。 下面是Docker的基本概念和优势&#xff1a; 容器&#xff1a;Docker容器是一种独立运行的软件包&a…