深度学习系列--03.激活函数
一.定义
激活函数是一种添加到人工神经网络中的函数,它为神经网络中神经元的输出添加了非线性特性
在神经网络中,神经元接收来自其他神经元的输入,并通过加权求和等方式计算出一个净输入值。激活函数则根据这个净输入值来决定神经元是否应该被激活,以及激活的程度,从而决定神经元向后续层传递的输出值。通过引入激活函数,神经网络能够学习和表示更复杂的非线性关系,大大提高了模型的表达能力。
二.工作流程
1.接收输入
神经网络中的每个神经元会接收来自上一层神经元的输出作为输入。这些输入通常是经过加权求和后的结果,即
其中xi是第i个输入,w是对应的权重,b是偏置,n是输入的数量。z这个值就是激活函数的输入。
2. 计算处理
激活函数根据其特定的数学表达式对输入值z进行计算。例如:
3.产生输出
- 经过激活函数的计算后,会得到一个输出值。这个输出值将作为当前神经元的输出,传递给下一层神经元作为输入,继续在神经网络中进行信息传递和处理。
- 在二分类问题中,Sigmoid 函数的输出值可以表示样本属于正类的概率,比如输出 0.8,表示样本有 80% 的概率属于正类。
- 在多分类问题中,Softmax 函数的输出是一个概率分布向量,例如输出,表示样本属于三个不同类别的概率分别为 20%、30% 和 50%。
- ReLU 函数输出的正值会直接传递给下一层,而输出的 0 值可能会导致下一层神经元接收的输入减少,在一定程度上起到了数据筛选和稀疏化的作用。
激活函数通过这样的运作流程,为神经网络引入了非线性因素,使得神经网络能够学习和处理各种复杂的非线性关系,从而提高模型的性能和泛化能力
三.常见激活函数
1.Sigmoid函数
公式:
导数公式:
图像:
作用
- 归一化与概率表示:能将任意实数输入映射到区间(0,1),在二分类问题中,常将输出解释为属于某一类别的概率。比如在判断一封邮件是否为垃圾邮件时,Sigmoid 函数输出值为0.8,就表示该邮件有的概率80%是垃圾邮件。
优点
- 输出范围固定:输出值在(0,1)之间,具有明确的物理意义,便于对结果进行解释和理解,可直接作为概率或比例等使用。
- 平滑可导:函数曲线平滑,处处可导,这使得在神经网络的训练过程中,能够方便地使用梯度下降等算法进行参数更新,保证训练的顺利进行。
- 单调性:函数具有单调性,输入值的增加或减少会导致输出值单调地增加或减少,有助于模型学习输入和输出之间的单调关系。
缺点
- 梯度消失问题:当输入值x的绝对值较大时,函数的导数会趋近于0。在神经网络反向传播过程中,梯度值过小会导致信息传递困难,使得模型训练速度变慢,甚至难以收敛,尤其是在深层神经网络中,这个问题会更加严重。
- 输出非零均值:输出值的均值不为,这可能会导致神经网络在训练过程中出现梯度更新的偏差,使得训练不够稳定,需要更多的技巧和调整来保证训练的效果。
- 计算复杂度相对较高:涉及指数运算,在计算资源有限或对计算速度要求较高的场景下,计算量相对较大,可能会影响模型的训练和推理效率。
2.Tanh函数
公式:
导数:
图像
作用
- 归一化与数据压缩:能将实数域的输入值压缩到区间内,对于一些需要将数据归一化到特定范围的场景非常有用,比如在数据预处理阶段,可将数据映射到合适的区间,便于后续的计算和处理。
- 解决回归问题:在一些回归任务中,函数可以将输出值限制在一定范围内,避免模型输出过大或过小的值,提高模型的稳定性和预测准确性。
优点
- 输出范围合适:输出值在 (-1.1) 之间,相比 Sigmoid 函数,其输出更接近零均值,在神经网络训练中,能使数据分布更加对称,有助于加快训练收敛速度,减少梯度更新的偏差。
- 非线性特性强:具有比 Sigmoid 函数更强的非线性,能够更好地拟合复杂的非线性关系,在处理一些具有高度非线性的数据时,可能会取得更好的效果。
- 平滑可导:函数曲线平滑,处处可导,这使得在使用梯度下降等优化算法进行训练时,能够顺利地计算梯度,保证模型训练的稳定性和收敛性。
缺点
- 梯度消失问题:与 Sigmoid 函数类似,当输入值的绝对值较大时,的导数也会趋近于,在深层神经网络中容易出现梯度消失现象,导致信息在反向传播过程中难以传递,影响模型的训练效果和收敛速度。
- 计算复杂度相对较高:同样涉及指数运算,计算量相对较大,在一些对计算速度要求较高的场景下,可能会影响模型的实时性和效率。
3.ReLU函数
图像
作用
- 缓解梯度消失:在正向传播过程中,当x>0时,梯度为1,不会像 Sigmoid 和 tanh 函数那样在某些区域出现梯度趋近于0的情况,这有助于在神经网络训练过程中,梯度能够更有效地反向传播,缓解了梯度消失问题,使得深层神经网络的训练更加容易。
- 稀疏性激活:它会使一部分神经元的输出为0,从而使神经网络具有稀疏性。这种稀疏性可以减少模型的计算量和存储量,提高模型的运行效率,同时也有助于提取数据中的关键特征,减少特征之间的冗余。
优点
- 计算简单高效:计算过程只需要判断x是否大于0,然后进行简单的取值操作,相比 Sigmoid 和 tanh 函数不需要进行复杂的指数运算,大大降低了计算量,提高了模型的训练和推理速度。
- 收敛速度快:由于其能够缓解梯度消失问题,在使用梯度下降等优化算法进行训练时,模型的收敛速度通常比使用 Sigmoid 或 tanh 函数作为激活函数时更快,能够更快地找到最优解,节省训练时间。
- 生物合理性:在一定程度上模拟了生物神经元的激活特性,当输入信号超过一定阈值时神经元才会被激活,输出非零值,这使得神经网络在生物学上具有一定的合理性,更符合生物神经系统的工作原理。
4.Softmax函数
图像
优点
- 输出概率可解释性强:直观地给出了每个类别被预测为正确类别的概率,方便人们理解模型的决策过程和结果,有助于对模型进行评估和分析。
- 灵活的概率分布表示:能够根据输入数据的不同,灵活地调整各个类别的概率分布,对于不同的分类任务都能提供较为合理的概率输出,适应各种复杂的分类场景。
- 与交叉熵损失函数的完美结合:在训练过程中,Softmax 函数与交叉熵损失函数的组合具有良好的数学性质,能够使得梯度计算和模型优化过程更加稳定和高效,有助于模型快速收敛到较好的结果
缺点
- 计算复杂度高:涉及指数运算,当输入向量的维度较高时,计算量会显著增加,这会导致模型的训练和推理速度变慢,在一些对实时性要求较高的应用场景中可能不太适用。
- 容易出现梯度消失或爆炸:在计算 Softmax 函数的导数时,如果输入值过大或过小,可能会导致指数函数的值过大或过小,进而使得梯度消失或爆炸,这会影响模型的训练稳定性和收敛速度,尤其是在深层神经网络中,这个问题可能会更加严重。
- 对输入的敏感性:Softmax 函数对输入值的变化比较敏感,即使输入值的微小变化也可能导致输出概率分布的较大变化,这可能会使得模型的鲁棒性较差,在面对噪声或数据波动较大的情况时,模型的预测结果可能会不够稳定。
未完待续.....
相关文章:
深度学习系列--03.激活函数
一.定义 激活函数是一种添加到人工神经网络中的函数,它为神经网络中神经元的输出添加了非线性特性 在神经网络中,神经元接收来自其他神经元的输入,并通过加权求和等方式计算出一个净输入值。激活函数则根据这个净输入值来决定神经元是否应该…...
在linux 中搭建deepseek 做微调,硬件配置要求说明
搭建 可参考 使用deepseek-CSDN博客 官方网站:DeepSeek DeepSeek 是一个基于深度学习的开源项目,旨在通过深度学习技术来提升搜索引擎的准确性和效率。如果你想在 Linux 系统上搭建 DeepSeek,你可以遵循以下步骤。这里我将提供一个基本的指…...
机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战
前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …...
MySQL - Navicat自动备份MySQL数据
对于从事IT开发的工程师,数据备份我想大家并不陌生,这件工程太重要了!对于比较重要的数据,我们希望能定期备份,每天备份1次或多次,或者是每周备份1次或多次。 如果大家在平时使用Navicat操作数据库&#x…...
javaEE-9.HTML入门
目录 一.什么是html 二.认识html标签 1.标签的特点: 2.html文件基本结构 3.标签的层次结构 三、html工具 四、创建第一个文件 五.html常见标签 1标题标签h1-h6 2.段落标签:p 3.换行标签:br 4.图片标签:img 图片路径有1三种表示形式: 5.超链接:a 链接的几种形式: …...
springcloud微服务使用不同端口启动同一服务
若想同时启动两个服务,则会产生端口冲突,在启动类设置界面,添加虚拟机选项,随后设置 -Dserver.portxxxx即可...
JavaScript系列(61)--边缘计算应用开发详解
JavaScript边缘计算应用开发详解 🌐 今天,让我们深入探讨JavaScript的边缘计算应用开发。边缘计算是一种将计算和数据存储分布到更靠近数据源的位置的架构模式,它能够提供更低的延迟和更好的实时性能。 边缘计算基础架构 🌟 &am…...
【容器技术01】使用 busybox 构建 Mini Linux FS
使用 busybox 构建 Mini Linux FS 构建目标 在 Linux 文件系统下构建一个 Mini 的文件系统,构建目标如下: minilinux ├── bin │ ├── ls │ ├── top │ ├── ps │ ├── sh │ └── … ├── dev ├── etc │ ├── g…...
Effective Python系列(1.3):使用zip函数同时遍历两个迭代器
zip函数是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组等)的元素配对,生成一个迭代器。 使用 zip 函数的好处之一就是能够节省内存空间,因为该函数会创建惰性生成器,每次遍历时只生成一个元…...
gitlab个别服务无法启动可能原因
目录 一、gitlab的puma服务一直重启 1. 查看日志 2. 检查配置文件 3. 重新配置和重启 GitLab 4. 检查系统资源 5. 检查依赖和服务状态 6. 清理和优化 7. 升级 GitLab 8. 查看社区和文档 二、 gitlab个别服务无法启动可能原因 1.服务器内存或磁盘已满 2.puma端口冲突…...
基于Springboot+vue的租车网站系统
基于SpringbootVue的租车网站系统是一个现代化的在线租车平台,它结合了Springboot的后端开发能力和Vue的前端交互优势,为用户和汽车租赁公司提供了一个高效、便捷、易用的租车体验和管理工具。以下是对该系统的详细介绍: 一、系统架构 后…...
Github - 记录一次对“不小心包含了密码的PR”的修复
Github - 记录一次对“不小心包含了密码的PR”的修复 前言 和好朋友一起开发一个字节跳动青训营抖音电商后端(now private)的项目,某大佬不小心把本地一密码commit上去并提了PR。 PR一旦发出则无法被删除,且其包含的commit也能被所有能看到这个仓库的…...
【后端开发】系统设计101——通信协议,数据库与缓存,架构模式,微服务架构,支付系统(36张图详解)
【后端开发】系统设计101——通信协议,数据库与缓存,架构模式,微服务架构,支付系统(36张图) 文章目录 1、通信协议通信协议REST API 对比 GraphQL(前端-web服务)grpc如何工作&#x…...
SpringMVC请求
一、RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上:第一级的访问目录 2. 作用在方法上:第二级的访问目录 3. 细节:路径可以不编写 / 表示应…...
【学术征稿-组织单位 武汉理工大学西安理工大学、西安财经大学】第三届通信网络与机器学习(CNML 2025)
重要信息 官网:www.iccnml.org 大会时间:2025年2月21日-23日 大会地点:中国 南京 通信网络 通信是人与人之间通过某种媒体进行的信息交流与传递。网络是用物理链路将各个孤立的工作站或主机相连在一起,组成的数据链路。通信网…...
代码随想录算法训练营打卡第55天:并查集相关问题;
Java并查集的模板 //并查集模板 class DisJoint{private int[] father;public DisJoint(int N) {father new int[N];for (int i 0; i < N; i){father[i] i;}}public int find(int n) {return n father[n] ? n : (father[n] find(father[n]));}public void join (int …...
设计模式学习
1.设计模式分类 1.创建型模式 用于描述“怎样创建对象”,主要特点是“将对象的创建与使用分离”。 单例,原型,工厂方法,抽象工厂,建造者 2.结构型模式 用于描述如何将类或对象按某种布局组成更大的结构 代理&…...
js-对象-JSON
JavaScript自定义对象 JSON 概念: JavaScript Object Notation,JavaScript对象标记法. JSON 是通过JavaScript 对象标记法书写的文本。 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输. json中属性名(k…...
C/C++编译器
C/C 代码是不可跨平台的,Windows 和 Unix-like 有着不同的 API,C/C 在不同平台有着不同编译器。 MSVC Windows 平台,MSVC 是 Visual Studio 中自带的 C/C 编译器。 GCC Unix-like 平台,GCC 原名 GNU C Compiler,后…...
【R语言】数据操作
一、查看和编辑数据 1、查看数据 直接打印到控制台 x <- data.frame(a1:20, b21:30) x View()函数 此函数可以将数据以电子表格的形式进行展示。 用reshape2包中的tips进行举例: library("reshape2") View(tips) head()函数 查看前几行数据&…...
Linux 安装 RabbitMQ
Linux下安装RabbitMQ 1 、获取安装包 # 地址 https://github.com/rabbitmq/erlang-rpm/releases/download/v21.3.8.9/erlang-21.3.8.9-1.el7.x86_64.rpm erlang-21.3.8.9-1.el7.x86_64.rpmsocat-1.7.3.2-1.el6.lux.x86_64.rpm# 地址 https://github.com/rabbitmq/rabbitmq-se…...
“AI智能分析综合管理系统:企业管理的智慧中枢
在如今这个快节奏的商业世界里,企业面临的挑战越来越多,数据像潮水一样涌来,管理工作变得愈发复杂。为了应对这些难题,AI智能分析综合管理系统闪亮登场,它就像是企业的智慧中枢,让管理变得轻松又高效。 过去…...
2024最新版Java面试题及答案,【来自于各大厂】
发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~ 篇幅限制就只能给大家展示小册部分内容了,需要完整版的及Java面试宝典小伙伴点赞转发,关注我后在【翻到最下方,文尾点击名片】即可免费获取…...
调用腾讯云批量文本翻译API翻译srt字幕
上一篇文章介绍了调用百度翻译API翻译日文srt字幕的方法。百度翻译API是get方式调用,参数都放在ur中,每次调用翻译文本长度除了接口限制外,还有url长度限制,而日文字符通过ur转码后会占9个字符长度,其实从这个角度来讲…...
【分块解决大文件上传的最佳实践】
前言 前几天看了一篇关于大文件上传分块实现的博客,代码实现过于复杂且冗长,而且没有进行外网上传的测试。因此,我决定自己动手实现一个大文件上传,并进行优化。 实现思路 在许多应用中,大文件上传是常见的需求&…...
机器学习中的关键概念:通过SKlearn的MNIST实验深入理解
欢迎来到我的主页:【Echo-Nie】 本篇文章收录于专栏【机器学习】 1 sklearn相关介绍 Scikit-learn 是一个广泛使用的开源机器学习库,提供了简单而高效的数据挖掘和数据分析工具。它建立在 NumPy、SciPy 和 matplotlib 等科学计算库之上,支持…...
【Elasticsearch】post_filter
post_filter是 Elasticsearch 中的一种后置过滤机制,用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍: 工作原理 • 查询后过滤:post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…...
Git基础
目录 一、Git介绍二、Git下载与配置1、下载安装Git2、Git配置2.1 注册码云账号2.2 Git配置 三、Git开发流程1、相关代码2、上述代码执行截图示例 四、Git提交&撤销五、Git资料 一、Git介绍 Git是一种分布式版本控制系统,广泛用于软件开发项目的版本管理。它由L…...
深度学习系列--02.损失函数
一.定义 损失函数(Loss Function)是机器学习和深度学习中用于衡量模型预测结果与真实标签之间差异的函数,它在模型训练和评估过程中起着至关重要的作用 二.作用 1.指导模型训练 提供优化方向:在训练模型时,我们的目…...
如何在自己mac电脑上私有化部署deep seek
在 Mac 电脑上私有化部署 DeepSeek 的步骤如下: 1. 环境准备 安装 Homebrew(如果尚未安装): Homebrew 是 macOS 上的包管理工具,用于安装依赖。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com…...
攻防世界 fileclude
代码审计 WRONG WAY! <?php include("flag.php"); highlight_file(__FILE__);//高亮显示文件的源代码 if(isset($_GET["file1"]) && isset($_GET["file2"]))//检查file1和file2参数是否存在 {$file1 $_GET["file1"];$fi…...
Ubuntu24登录PostgreSql数据库的一般方法
命令格式如 psql -U user -d db 或者 sudo psql -U user -d db 修改配置 /etc/postgresql/16/main/postgresql.conf 改成md5,然后重新启动pgsql sudo systemctl restart postgresql...
3.5 Go(特殊函数)
目录 一、匿名函数 1、匿名函数的特点: 2、匿名函数代码示例 2、匿名函数的类型 二、递归函数 1. 递推公式版本 2. 循环改递归 三、嵌套函数 1、嵌套函数用途 2、代码示例 3、作用域 & 变量生存周期 四、闭包 1、闭包使用场景 2、代码示例 五、De…...
设计模式学习(三)
行为模式 职责链模式(Chain of Responsibility Pattern) 定义 它允许多个对象有机会处理请求,从而避免请求的发送者与接收者之间的耦合。职责链模式将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止…...
挑战项目 --- 微服务编程测评系统(在线OJ系统)
一、前言 1.为什么要做项目 面试官要问项目,考察你到底是理论派还是实战派? 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题,或扩展需求…...
堆(Heap)的原理与C++实现
1. 什么是堆? 堆(Heap)是一种特殊的树形数据结构,通常用于实现优先队列。堆可以分为两种类型: 最大堆(Max Heap):每个节点的值都大于或等于其子节点的值。最小堆(Min H…...
(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例
(1) 先介绍下后面的代码里要用到的基础函数: 以及: (2) 接着给出现代版的 读写 socket 参数的系统函数 : 以及: (3) 给出 一言的 范例代码,获取…...
linux 进程补充
环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪 里,但是照样可以链接成功&#…...
通过docker安装部署deepseek以及python实现
前提条件 Docker 安装:确保你的系统已经安装并正确配置了 Docker。可以通过运行 docker --version 来验证 Docker 是否安装成功。 网络环境:保证设备有稳定的网络连接,以便拉取 Docker 镜像和模型文件。 步骤一:拉取 Ollama Docker 镜像 Ollama 可以帮助我们更方便地管理…...
vim-plug的自动安装与基本使用介绍
vim-plug介绍 Vim-plug 是一个轻量级的 Vim 插件管理器,它允许你轻松地管理 Vim 插件的安装、更新和卸载。相较于其他插件管理器,vim-plug 的优点是简单易用,速度较快,而且支持懒加载插件(即按需加载) 自动…...
Python 自学秘籍:开启编程之旅,人生苦短,我用python。
从2009年,用了几次python后就放弃了,一直用的php,现在人工智能时代,完全没php什么事情。必须搞python了,虽然已经40多岁了。死磕python了。让滔滔陪着你一起学python 吧。 开启新世界 在当今人工智能化的时代ÿ…...
DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)
一、引言 1.1 研究背景与意义 在医疗领域的改革进程中, DRG/DIP 2.0 时代,医院成本管理的重要性愈发凸显。新的医保支付方式下,医院的收入不再单纯取决于医疗服务项目的数量,而是与病种的分组、费用标准以及成本控制紧密相关。这…...
swift 专题三 swift 规范一
一、Swift编码命名规范 对类、结构体、枚举和协议等类型的命名应该采用大驼峰法,如 SplitViewController。 文件名采用大驼峰法,如BlockOperation.swift。 对于扩展文件,有时扩展定义在一个独立的文件中,用“原始类型名 扩展名…...
Vue的状态管理:用响应式 API 做简单状态管理、状态管理库(Pinia )
文章目录 引言单向数据流多个组件共享一个共同的状态I 用响应式 API 做简单状态管理使用 reactive()创建一个在多个组件实例间共享的响应式对象使用ref()返回一个全局状态II 状态管理库Pinia枚举状态管理引言 单向数据流 每一个 Vue 组件实例都在“管理”它自己的响应式状态了…...
排序算法--希尔排序
希尔排序是插入排序的改进版本,适合中等规模数据排序,性能优于简单插入排序。 // 希尔排序函数 void shellSort(int arr[], int n) {// 初始间隔(gap)为数组长度的一半,逐步缩小for (int gap n / 2; gap > 0; gap …...
HAL库 Systick定时器 基于STM32F103EZT6 野火霸道,可做参考
目录 1.时钟选择(这里选择高速外部时钟) 编辑 2.调试模式和时基源选择: 3.LED的GPIO配置 这里用板子的红灯PB5 4.工程配置 5.1ms的systick中断实现led闪烁 源码: 6.修改systick的中断频率 7.systick定时原理 SysTick 定时器的工作原理 中断触发机制 HAL_SYSTICK_Co…...
ESXI虚拟机中部署docker会降低服务器性能
在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析 在 ESXi 虚拟机中运行 Docker 容器时,性能影响主要来自以下几个方面: 虚拟化开销:ESXi 虚拟化层和 Docker 容器化层的叠加。资源竞争:虚拟机与容器之间对 CPU、内存、…...
前端 | JavaScript中的reduce方法
1. 什么是reduce reduce 方法是 JavaScript 中数组的重要方法之一,用于对数组中的元素进行累积计算。它接收一个回调函数作为参数,并返回一个最终计算结果。reduce 在许多场景下都非常有用,比如求和、数组扁平化、对象计数、数据转换等。 2…...
基于联合概率密度与深度优化的反潜航空深弹命中概率模型研究摘要
前言:项目题材来自数学建模2024年的D题,文章内容为笔者和队友原创,提供一个思路。 摘要 随着现代军事技术的发展,深水炸弹在特定场景下的反潜作战效能日益凸显,如何最大化的发挥深弹威力也成为重要研究课题。本文针对评估深弹投掷落点对命中潜艇概率的影响进行分析,综合利…...
将OneDrive上的文件定期备份到移动硬盘
背景: 我在oneDrive上存了很多文件,分布在多个文件夹中,也有套了好几层文件夹的情况。我希望每隔一段时间,将oneDrive上的所有文件向移动硬盘上拷贝一份,但是我只想将距离上一次向移动硬盘拷贝的文件相比,发…...