深度学习03-神经网络02-激活函数

可以使用这个进行跳转链接​​​​​​​icon-default.png?t=O83Ahttp://playground.tensorflow.org/#activation=relu&batchSize=11&dataset=spiral®Dataset=reg-gauss&learningRate=0.01®ularizationRate=0.1&noise=0&networkShape=7,5,4,3,2&seed=0.54477&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false到谷歌的神经网络可视化网站

A Neural Network Playground

激活函数的选择方法

对于隐藏层:

  1. 1.不管几层都是使用一个激活函数,一般优先选择ReLU激活函数

  2. 2.如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。

  3. 3.如果你使用了ReLU, 需要注意一下Dead ReLU问题, 避免出现大的梯度从而导致过多的神经元死亡。

  4. 4. 少用使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层:


1. 二分类问题选择sigmoid激活函数 ,输出层:一个神经元节点

2. 多分类问题选择softmax激活函数 ,输出层:有多少分类,就用多少神经元节点

3. 回归问题选择identity激活函数,输出层:一个神经元节点

从一个神经网络看,这里就是两部分是我们人关注的,第一部分是我们如何进行权重参数的初始化, 第二部分我们怎么选择激活函数。

架构决定了,同一层一般是使用同一个非线性激活函数

因为生活中很少有真实的线性关系,基本都是非线性关系。

目前大部分的使用这个relu 效果都还不错。负半轴为0可能会发生神经元死亡的问题,但是这样减少了网络的稀疏。缓解了过拟合。

​​​​​​​

回归的时候不加激活函数, identity (恒等激活 即 y = x  )  

激活函数是神经网络中的关键组成部分,其作用是引入非线性,使神经网络能够学习复杂的模式和解决非线性问题。在没有激活函数的情况下,神经网络的每一层都是线性组合,最终整个网络将会退化为一个简单的线性模型,失去解决复杂问题的能力。因此,激活函数是深度学习模型成功的关键。

激活函数的主要作用

  1. 引入非线性:如果神经网络仅仅是线性变换的堆叠,不管层数多少,最终的网络仍然是一个线性函数。激活函数提供了非线性,使得神经网络可以逼近任意复杂的函数。

  2. 控制神经元的输出范围:通过将输出值限定在某个范围内,激活函数可以稳定神经网络的训练过程,减少数值不稳定问题。

常见的激活函数及其详细分析

1. Sigmoid 函数

公式\sigma(x) = \frac{1}{1 + e^{-x}}   输出范围(0, 1)​​​​​​​  特点

  • 将输入压缩到 (0, 1)​​​​​​​ 的范围。

  • 适合输出为概率值的任务,例如二分类问题。

  • 缺点:容易出现梯度消失问题,尤其是在深层网络中。输入的绝对值较大时,Sigmoid 函数的导数接近 0,导致反向传播时梯度更新非常缓慢,训练效率低。

优点

  • 它能够使输出值保持在有限范围内,便于理解输出。

应用场景:二分类问题的输出层。

2. Tanh 函数

公式\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}   输出范围(-1, 1)​​​​​​​ 特点

  • 类似于 Sigmoid,但输出范围为 (-1, 1) 。

  • 相较于 Sigmoid,Tanh 的输出更居中,值域更广,梯度消失的问题较弱。

  • 在输入接近 0 时,Tanh 函数的导数最大,网络的梯度流动效果更好。

优点

  • 输出的零中心特性(输出在 (-1) 到 (1) 之间)使得训练过程更加平稳,避免了 Sigmoid 函数的非零均值问题。

应用场景:适用于需要平滑输出值的任务。

3. ReLU (Rectified Linear Unit)

公式f(x) = \max(0, x) 输出范围[0, \infty)  特点

  • 如果输入为负,则输出为 0;如果输入为正,则输出为输入本身。

  • ReLU 是目前最常用的激活函数之一,尤其适合深度神经网络,因为它计算简单且有效。

  • 优势:避免了 Sigmoid 和 Tanh 的梯度消失问题,并且计算速度快。

  • 缺点:会出现“死亡 ReLU”现象,即一旦某个神经元在反向传播中输出 0,那么该神经元在随后的训练中将永远不会激活,因为它的梯度为 0。

应用场景:适用于大部分隐藏层,尤其是卷积神经网络。

4. Leaky ReLU

公式f(x) = \max(\alpha x, x)  输出范围(-\infty, \infty)特点

  • 与 ReLU 类似,但允许负数通过一个较小的斜率 \alpha(通常 \alpha = 0.01)。

  • 优势:减少了 ReLU 的死亡现象,增加了对负值的敏感性。

应用场景:适用于避免死亡 ReLU 的场景,通常在深度网络中比 ReLU 更稳定。

5. Softmax 函数

公式: \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}  输出范围(0, 1) ,且所有输出的总和为 1 特点

  • Softmax 将输出值转换为概率分布,所有输出值加起来为 1。

  • 常用于多分类问题的输出层,因为它提供了一种将神经网络输出解释为概率的方式。

应用场景:多分类问题的输出层,例如图像分类。

激活函数的比较与选择

  • Sigmoid 和 Tanh 常用于较浅的网络或输出层,但由于梯度消失问题,逐渐被 ReLU 和其变种取代。

  • ReLU 和 Leaky ReLU 在深度网络中表现更好,因为它们能够有效避免梯度消失问题,并且计算更简单。

  • Softmax 通常用于多分类问题的输出层,用于将输出转化为概率分布。

如何选择激活函数

  1. ReLU 及其变种(如 Leaky ReLU):大多数情况下,推荐在隐藏层使用 ReLU 或其改进版本。它计算简单且有效,尤其在深度神经网络中表现优异。

  2. Sigmoid 或 Tanh:适用于较浅的网络或用于输出层,尤其是需要输出概率的二分类任务中。

  3. Softmax:用于多分类任务的输出层。

梯度消失与梯度爆炸

梯度消失是指在反向传播中,随着网络层数的增加,梯度逐渐减小,最后趋于 0,导致权重无法更新。Sigmoid 和 Tanh 函数容易出现这种问题。而 ReLU 及其变种通过保持正梯度来缓解梯度消失问题。梯度爆炸则是当梯度在反向传播过程中变得过大,导致参数更新过快,使得模型无法收敛。

总结

激活函数是深度学习网络中的核心组件,负责将线性变换引入非线性,进而增强神经网络的学习能力。不同激活函数各有优缺点,选择合适的激活函数对于神经网络的训练效果至关重要。

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

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

相关文章

Excel VLOOKUP函数怎么用?vlookup函数的使用方法及案例

大家好,这里是效率办公指南! 🔎 在Excel的世界里,VLOOKUP函数无疑是查询和数据分析中的明星。无论是从庞大的数据表中提取特定信息,还是进行数据的快速匹配,VLOOKUP都能大显身手。今天,我们将深…

第15章 程序的动态加载和执行

第15章 程序的动态加载和执行 该章节讲解了MBR加载内核,然后内核加载用户程序这样一套流程,模拟操作系统的工作原理。 本章代码清单 本章的代码实现的功能位:主引导扇区加载内核,内核加载用户程序,用户程序通过调用…

速通LLaMA3:《The Llama 3 Herd of Models》全文解读

文章目录 概览论文开篇IntroductionGeneral OverviewPre-TrainingPre-Training DataModel ArchitectureInfrastructure, Scaling, and EfficiencyTraining Recipe Post-TrainingResultsVision ExperimentsSpeech Experiments⭐Related WorkConclusionLlama 3 模型中的数学原理1…

【力扣每日一题——2374. 边积分最高的节点】python

2374. 边积分最高的节点 给你一个有向图,图中有 n 个节点,节点编号从 0 到 n - 1 ,其中每个节点都 恰有一条 出边。 图由一个下标从 0 开始、长度为 n 的整数数组 edges 表示,其中 edges[i] 表示存在一条从节点 i 到节点 edges[…

mimics教程案例1-骨折三维重建

骨折三维重建 1 打开软件新建工程,将数据导入 FILE -> New Project ->找到自己的数据 ->Next ->Open 2 新建图层 SEFMENT -> New Mask ->选择阈值(合适的阈值是可以将骨骼边缘覆盖住)-> OK 3 使用Region Grow(区域增…

【全网最全】2024年华为杯研赛B题成品论文获取入口(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/hMgWngXvcQhttps://qm.qq.com/q/hMgWngXvcQ你是否在寻找数学建模比赛的突破点&a…

【无标题】HG6201M路由的超级管理密码获取

这里写自定义目录标题 1、开启telnet http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable1&keyXXXXX 注意:此处的XXXXX为路由背面标签的MAC地址,去掉“-”,且大写。 成功后会显示:telnet开启 2、登录telnet 此处采…

GB28181协议接入SVMSPro平台

国标28181协议接入SVMSPro平台 步骤一:海康摄像机28181配置;登录海康摄像机网页进配置选项,左边选网络-高级设置-平台接入-类型选28181 勾选启用,28181协议版本选最新2016 SIP服务器ID:默认20位 34020000002000000001,也可在服务端…

SVTR文字识别

论文地址:https://arxiv.org/abs/2205.00159 notes: 论文2.5中说的N nodes,就是输出的类别数量,英文37,中文6625,英文37说的是最简单的英文文字识别任务,不区分大小写,就是26个字母…

数据库(选择题)

基本概念 数据库(DB):长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统(DBMS):它是数据库的机构,是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护…

AiAutoPrediction足球网与泊松分布足球预测比赛模型介绍

AiAutoPrediction足球软件上线于2020年9月,是国内首家将泊松分布概率公式应用于足球比赛比分预测的软件。 AiAutoPrediction足球系列软件如下: AIAutoPrediction SoccerPredictor |走地大小球|走地让球|走地角球|数据分析 AiScorePredictor 泊松分布…

日志系统第一弹:日志系统介绍

日志系统第一弹:日志系统介绍 一、日志的重要性1.什么是日志?2.排查BUG3.监控系统4.监控程序性能 二、日志系统技术1.同步写日志2.异步写日志3.日志文件轮换方案1.日志分类方式2.日志轮换方案 三、项目设计1.目标2.设计1.日志消息模块2.日志格式化模块3.…

在python爬虫中xpath方式提取lxml.etree._ElementUnicodeResult转化为字符串str类型

简单提取网页中的数据时发现的 当通过xpath方式提取出需要的数据的text文本后想要转为字符串,但出现lxml.etree._ElementUnicodeResult的数据类型不能序列化,在网上查找到很多说是编码问题Unicode编码然后解码什么的;有些是(导入的xml库而不…

LeetCode讲解篇之1343. 大小为 K 且平均值大于等于阈值的子数组数目

文章目录 题目描述题解思路题解代码 题目描述 题解思路 题目让我们求长度为k的子数组并且该子数组的平均值大于threshold,对于这题,我们可以考虑维护一个长度为k的窗口,窗口不断向右滑动,遍历所有长度为k的子数组,我们…

基于Spring Boot的Java免税商品优选商城设计

第一章 绪论 1.1 课题开发的背景 从古至今,通过书本获取知识信息的方式完全被互联网络信息化,但是免税商品优选购物商城,对于购物商城工作来说,仍然是一项非常重要的工作。尤其是免税商品优选购物商城,传统人工记录模式…

JS | 详解浏览器存储机制cookies、sessionStorage和localStorage的区别

F12在浏览器查看 一、HTML4的本地存储——cookie 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。 cookie和session cookie 和 session都是用来跟踪浏览器用户身份的会话方式。 区别&a…

如何使用 Python 的 sqlite3 模块操作 SQLite 数据库?

如何使用 Python 的 sqlite3 模块操作 SQLite 数据库? SQLite 是一种轻量级的数据库,它不需要服务器,数据库被存储在一个文件中,非常适合嵌入式系统或桌面应用程序。Python 标准库中包含了一个名为 sqlite3 的模块,可…

vue-入门速通

setup是最早的生命周期,在vue2里边的data域可以使用this调用setup里面的数据,但是在setup里边不能使用thisvue项目的可执行文件是index,另外运行前端需要npm run vue的三个模块内需要三个不同的结构,里边放置js代码,注…

【Go开发】Go语言基本语法入门:数据类型与方法定义

文章目录 环境准备一、引言二、Var关键字三、数据类型1. 整型符号表示值的范围 2. 浮点型精度范围性能 3. 布尔型4. 字符串 三、变量声明1. 指定变量类型2. 自动推导类型3. 批量声明 四、方法定义五、总结 环境准备 开发环境:MacOS Go版本:go version g…

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…