神经网络初学者的激活函数指南

news2024/9/22 1:41:46

如果你刚刚开始学习神经网络,激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。

但在我们深入研究激活函数之前,先快速回顾一下神经网络架构的基本元素。如果你已经熟悉神经网络的工作原理,可以直接跳到下一节。

神经网络架构

神经网络由称为神经元的链接节点层组成,神经元通过称为突触的加权连接来处理和传输信息。

每个神经元从上一层的神经元获取输入,对其输入的和应用激活函数,然后将输出传递给下一层。

神经网络的神经元!包含输入层、隐藏层和输出层。

输入层只接收来自域的原始数据。这里没有计算,节点只是简单地将信息(也称为特征)传递给下一层,即隐藏层。隐藏层是所有计算发生的地方。它从输入层获取特征,并在将结果传递给输出层之前对它们进行各种计算。输出层是网络的最后一层。它使用从隐藏层获得的所有信息并产生最终值。

为什么需要激活函数。为什么神经元不能直接计算并将结果转移到下一个神经元?激活函数的意义是什么?

激活函数在神经网络中的作用

网络中的每个神经元接收来自其他神经元的输入,然后它对输入进行一些数学运算以生成输出。一个神经元的输出可以被用作网络中其他神经元的输入。

如果没有激活函数,神经元将只是对输入进行线性数学运算。这意味着无论我们在网络中添加多少层神经元,它所能学习的东西仍然是有限的,因为输出总是输入的简单线性组合。

激活函数通过在网络中引入非线性来解决问题。通过添加非线性,网络可以模拟输入和输出之间更复杂的关系,从而发现更多有价值的模式。

简而言之,激活函数通过引入非线性并允许神经网络学习复杂的模式,使神经网络更加强大。

理解不同类型的激活函数

我们可以将这些函数分为三部分:二元、线性和非线性。

二元函数只能输出两个可能值中的一个,而线性函数则返回基于线性方程的值。

非线性函数,如sigmoid函数,Tanh, ReLU和elu,提供的结果与输入不成比例。每种类型的激活函数都有其独特的特征,可以在不同的场景中使用。

1、Sigmoid / Logistic激活函数

Sigmoid激活函数接受任何数字作为输入,并给出0到1之间的输出。输入越正,输出越接近1。另一方面,输入越负,输出就越接近0,如下图所示。

它具有s形曲线,使其成为二元分类问题的理想选择。如果要创建一个模型来预测一封电子邮件是否为垃圾邮件,我们可以使用Sigmoid函数来提供一个0到1之间的概率分数。如果得分超过0.5分,则认为该邮件是垃圾邮件。如果它小于0.5,那么我们可以说它不是垃圾邮件。

函数定义如下:

但是Sigmoid函数有一个缺点——它受到梯度消失问题的困扰。当输入变得越来越大或越来越小时,函数的梯度变得非常小,减慢了深度神经网络的学习过程,可以看上面图中的导数(Derivative)曲线。

但是Sigmoid函数仍然在某些类型的神经网络中使用,例如用于二进制分类问题的神经网络,或者用于多类分类问题的输出层,因为预测每个类的概率Sigmoid还是最好的解决办法。

2、Tanh函数(双曲正切)

Tanh函数,也被称为双曲正切函数,是神经网络中使用的另一种激活函数。它接受任何实数作为输入,并输出一个介于-1到1之间的值。

Tanh函数和Sigmoid函数很相似,但它更以0为中心。当输入接近于零时,输出也将接近于零。这在处理同时具有负值和正值的数据时非常有用,因为它可以帮助网络更好地学习。

函数定义如下:

与Sigmoid函数一样,Tanh函数也会在输入变得非常大或非常小时遭遇梯度消失的问题。

3、线性整流单元/ ReLU函数

ReLU是一种常见的激活函数,它既简单又强大。它接受任何输入值,如果为正则返回,如果为负则返回0。换句话说,ReLU将所有负值设置为0,并保留所有正值。

函数定义如下:

使用ReLU的好处之一是计算效率高,并且实现简单。它可以帮助缓解深度神经网络中可能出现的梯度消失问题。

但是,ReLU可能会遇到一个被称为“dying ReLU”问题。当神经元的输入为负,导致神经元的输出为0时,就会发生这种情况。如果这种情况发生得太频繁,神经元就会“死亡”并停止学习。

4、Leaky ReLU

Leaky ReLU函数是ReLU函数的一个扩展,它试图解决“dying ReLU”问题。Leaky ReLU不是将所有的负值都设置为0,而是将它们设置为一个小的正值,比如输入值的0.1倍。他保证即使神经元接收到负信息,它仍然可以从中学习。

函数定义如下:

Leaky ReLU已被证明在许多不同类型的问题中工作良好。

5、指数线性单位(elu)函数

ReLU一样,他们的目标是解决梯度消失的问题。elu引入了负输入的非零斜率,这有助于防止“dying ReLU”问题

公式为:

这里的alpha是控制负饱和度的超参数。

与ReLU和tanh等其他激活函数相比,elu已被证明可以提高训练和测试的准确性。它在需要高准确度的深度神经网络中特别有用。

6、Softmax函数

在需要对输入进行多类别分类的神经网络中,softmax函数通常用作输出层的激活函数。它以一个实数向量作为输入,并返回一个表示每个类别可能性的概率分布。

softmax的公式是:

这里的x是输入向量,i和j是从1到类别数的索引。

Softmax对于多类分类问题非常有用,因为它确保输出概率之和为1,从而便于解释结果。它也是可微的,这使得它可以在训练过程中用于反向传播。

7、Swish

Swish函数是一个相对较新的激活函数,由于其优于ReLU等其他激活函数的性能,在深度学习社区中受到了关注。

Swish的公式是:

这里的beta是控制饱和度的超参数。

Swish类似于ReLU,因为它是一个可以有效计算的简单函数。并且有一个平滑的曲线,有助于预防“dying ReLU”问题。Swish已被证明在各种深度学习任务上优于ReLU。

选择哪一种?

首先,需要将激活函数与你要解决的预测问题类型相匹配。可以从ReLU激活函数开始,如果没有达到预期的结果,则可以转向其他激活函数。

以下是一些需要原则:

  • ReLU激活函数只能在隐藏层中使用。
  • Sigmoid/Logistic和Tanh函数不应该用于隐藏层,因为它们会在训练过程中引起问题。
  • Swish函数用于深度大于40层的神经网络会好很多。

输出层的激活函数是由你要解决的预测问题的类型决定的。以下是一些需要记住的基本原则:

  • 回归-线性激活函数
  • 二元分类- Sigmoid
  • 多类分类- Softmax
  • 多标签分类- Sigmoid

选择正确的激活函数可以使预测准确性有所不同。所以还需要根据不同的使用情况进行测试。

https://avoid.overfit.cn/post/4bfdebfb39ef4817957295b39621e64d

作者:Mouâad B.

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

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

相关文章

STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯

目录 1、简介 2、硬件连接 3、上位机源码 3.1 widget.h 3.2 widget.c 3.3 显示图 4、下位机源码 4.1 cubemax配置 4.2 keil源码 1、简介 本文使用STM32F103C8T6单片机使用单片机通过ESP8266WIFI模块与QT设计的上位机进行通讯,ESP8266设置AP模式。实现DHT11传…

跨越DDD从理论到工程落地的鸿沟

DDD作为一种优秀的设计思想,的确为复杂业务治理带来了曙光。然而因为DDD本身难以掌握,很容易造成DDD从理论到工程落地之间出现巨大的鸿沟。就像电影里面的桥段,只谈DDD理论姿势很优美,一旦工程落地就跪了…所以DDD的项目&#xff…

Android实战-RecyclerView+Glide刷新列表的若干bug

文章目录 前言一. RecyclerView中使用Glide出现加载图片闪烁1.1 提出问题1.2 查看源码1.3 ViewTarget和SimpleTarget 二. CustomTarget和CustomViewTarget2.1 onResourceCleared和onLoadCleared2.2 onLoadStarted和onResourceLoading 结束 前言 最近在项目中使用RecyclerViewG…

Java——合并两个排序的链表

题目链接 牛客在线oj题——合并两个排序的链表 题目描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0≤n≤1000,−1000≤节点值≤1000 要求:空间复杂…

物联网定位技术|实验报告|实验二 多边定位算法、DV-HOP算法

在WSN定位中常常采用三边定位算法,试画图推导三边定位的计算公式,并表示为矩阵形式。 目录 1. 实验目标 2. 实验要求 3. 算法介绍 3.1基本内容介绍 3.2迭代多边定位算法 3.3 DV-HOP算法 4. 算法实现 4.1迭代多边定位算法 第一步:将数据读入内…

STM32HAL库USART外设配置流程及库函数讲解

HAL库中USART外设配置流程及库函数讲解 一说到串口通信,及必须说一下aRS-232/485协议。232协议标准物理接口就是我们常用的DB9串口线 RS-232电平: 逻辑1:-15~-3 逻辑0: 3~15 COMS电平: 逻辑1:3.3 逻辑0&a…

文件操作【下篇】

文章目录 🗃️5.文件的随机读写📁5.1. fseek📁5.2. ftell📁5.3. rewind 🗃️6.文本文件和二进制文件🗃️7.文件读取结束的判定📁7.1. 被错误使用的 feof 🗃️8.文件缓冲区 &#x1f…

如何使用YOLOv8推荐的Roboflow来制作训练自己的数据集

YOLOv8是Ultralytics开发的YOLO目标检测和图像分割模型的最新版本,相较于之前的版本,YOLOv8可以更快速有效地识别和定位图像中的物体,以及更准确地分类它们。 YOLOv8需要大量的训练数据来实现最佳性能。为了让YOLOv8能够有效地识别自己的应用…

【UE】保存游戏的demo

效果 注意左上角的打印信息,每当我按下k键,值就加1。当我关闭后重进游戏,按下k键,值是从上次退出游戏的值开始累加的。 步骤 1.新建蓝图,父类为“SaveGame” 命名为“MySaveGame”并打开 新建一个整型变量&#xff0c…

ODOO业财一体贸易行业ERP全面管理系统(核心流程简介)

前言: 贸易行业的两大管理难点在: 1.订单的跟踪效率:订单从报价、寄样、采购材料、委外加工、质检、入库、出库、收款,跟踪环节多,信息分散,跟单员难以把握订单执行进度,因此也导致延期交货等…

户外电源强制国标发布或加速行业洗牌 未来产品将往大容量及轻量化发展

一、户外电源行业概述 户外电源是一种内置锂离子电池的低碳绿色小型储能设备,又称“大号充电宝”、“便携式储能”。是电化学储能的分支,优在“便捷”,具有多次循环充放电、适配广泛、安全便捷的特点,在户外各场景中应用广泛受到…

Ubuntu安装k8s的Dashboard

介绍 Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到Kubernetes 集群中,也可以对容器应用排错,还能管理集群本身及其附属资源。您可以使用Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者…

从Allegro进行反标

从Allegro进行反标 目的反标流程常见问题 目的 通过反标,可以将Allegro中交换的管脚或重新编排的位号,一键更新到原理图中。 反标流程 从Capture输出最新网表文件: Capture Menu -> Tools -> Creat Netlist将最终的PCB设计文件放在…

Java:MybatisPlus--条件构造器

1、条件构造器类别 ①wrapper:抽象类,条件类的顶层,提供了一些获取和判断相关的方法。 ②AbstractWrapper:抽象类,Wrapper的子类,提供了所有的条件相关方法。 ③AbstractLambdaWrapper:抽象类…

对矩阵规模序列<5,10,3,12,5,50,6>,求矩阵链最优括号化方案

对矩阵规模序列<5,10,3,12,5,50,6>,求矩阵链最优括号化方案 理解符号的含义 n6 矩阵A1A2A3A4A5A6 本质是找一个最优的子结构 1.重要的递推公式 2.关键是求最小的m[i,j]就是乘积次数最少的。 k 的位置只有 j − i 种可能 3.下面是详细的解题的方案 根据矩阵链乘法问题&am…

网络工程师经常搞混的路由策略和策略路由,两者到底有啥区别?

当涉及到网络路由时&#xff0c;两个术语经常被混淆&#xff1a;策略路由和路由策略。虽然这些术语听起来很相似&#xff0c;但它们实际上有着不同的含义和用途。在本文中&#xff0c;我们将详细介绍这两个术语的区别和应用。 一、路由策略 路由策略是指一组规则&#xff0c;用…

算法套路九——二叉树广度优先遍历(层序遍历)

算法套路九——二叉树广度优先遍历&#xff08;层序遍历&#xff09; 算法示例LeetCode102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 法一&#xff1a;双数组…

二极管初识

二极管初识 二极管的主要参数如下&#xff1a; 一般的二极管可以在正向或反向偏置条件下工作。 当二极管正向偏置时&#xff0c;需要经过一定的电压降&#xff08;硅为0.7V&#xff0c;锗为0.3V&#xff09;&#xff0c;才能让电流开始流动。此后&#xff0c;二极管上的电压…

【Vue】学习笔记-绑定样式/条件样式

绑定样式/条件样式 绑定样式条件渲染 绑定样式 class样式 写法 :class"xxx" xxx可以是字符串&#xff0c;对象&#xff0c;数组 字符串写法适用于&#xff1a;类名不确定&#xff0c;要动态获取。 对象写法适用于&#xff1a;要绑定多个样式&#xff0c;个数不确定&…

如何给ClickHouse表生成随机真实测试数据

学习ClickHouse数据库&#xff0c;通常需要下载官网一些示例数据。我们也可以通过内置函数generateRandom快速生成测试数据&#xff0c;从而测试学习一些特性的性能及底层原理。 函数语法 generateRandom函数基于给定schema生成随机数据&#xff0c;用于填充测试表。不是所有类…