一、神经网络

1.神经网络

  • 定义:人工神经网络(Artificial Neural Network,ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。人脑可以看作是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。

  • 神经网络中信息只向一个方向移动,即从输入节点向前移动,通过隐藏节点,再向输出节点移动。其中基本部分是:

    • 输入层:即输入x的那一层
    • 输出层:即输出y的那一层
    • 隐藏层:输入层和输出层之间都是隐藏层
  • 特点:

    • 同一层神经网络之间没有连接
    • 第N层的每个神经元和第N-1层的所有神经元相连,这就是全连接神经网络(full connected,fc)
    • 第N-1层神经元的输出就是第N层神经元的输入
    • 每个连接都有一个权重值(w系数和b系数)

2.激活函数

  • 激活函数用于对每层的输出数据(加权和数据)进行变换,进而为整个网络注入了非线性因素。此时,神经网络就可以拟合各种曲线
    • 没有引入非线性因素的网络等价于使用一个线性模型来拟合
    • 通过给网络输出增加激活函数,实现引入非线性因素,使得网络模型可以逼近任意函数,提升网络对复杂问题的拟合能力

(1)sigmiod函数

  • 公式:f(x)=11+e−xf(x) = \frac{1}{1+e^{-x}}f(x)=1+ex1

  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.

  • 缺点:当神经网络的激活处于0, 1位置时,其梯度几乎为0,容易导致梯度消失,此时网络参数将更新极其缓慢,或者无法更新

  • 一般来说,sigmoid网络在5层之类就会产生梯度消失现象。而且,该激活函数并不是以0为中心,所以在实践中很少使用这种激活函数,sigmoid函数一般只用于二分类的输出层

(2)tanh激活函数

  • 公式:f(x)=1−e−2x1+e−2xf(x) = \frac{1-e^{-2x}}{1+e^{-2x}}f(x)=1+e2x1e2x
  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.
  • 其输出值域是(-1, 1),值域范围更大,使之更适合于神经网络的输入层和隐藏层
  • 与sigmoid相比,它是以0为中心的,且梯度相对于sigmoid大,使得其收敛速度要比sigmoid快,减少迭代次数,但当输入值较大时,会导致梯度消失的问题
  • 使用时:可在隐藏层使用tanh函数,在输出层使用sigmoid函数

(3)ReLU激活函数

  • 是目前使用最多的一种激活函数

  • 公式:f(x)=max(0,x)f(x)=max(0, x)f(x)=max(0,x)

  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.

  • 激活函数将小于0的值映射为0,而大于0的值则保持不变,它更加重视正信号,而忽略负信号,这种激活函数运算更为简单,能够提高模型的训练效率

  • 当x<0时,ReLU导数为0,而当x>0时,则不存在饱和问题。所以,ReLU能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入小于0的区域,导致对应权重无法更新,这种现象被称为“神经元死亡”

  • ReLU是目前最常用的激活函数。与sigmoid相比,ReLU的优势是:采用sigmoid函数,计算量大(指数运算),反向传播球误差梯度时,计算量相对大,而采用ReLU激活函数,整个过程的计算量节省很多。sigmoid函数反向传播时,很容易出现梯度消失的情况,从而无法完成深度网络的训练。ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性(网络变得简单),并且减少了参数的相互依存关系,缓解了过拟合问题的发生

(4)Softmax函数

  • softmax用于多分类过程中,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率形式呈现出来

  • 公式:softmax(zi)=ezi∑jejzsoftmax(z_i)=\frac{e^{z_i}}{\sum_je^z_j}softmax(zi)=jejzezi

    • ziz_izi:输出层中每个神经元加权和(logits)
  • Softmax就是将网络输出logits通过softmax函数,就映射成为(0,1)的值,而这些值的累和为1,那么我们将它理解成概率,选取概率最大(也就是值对应最大的节点),作为我们的预测目标类别

(5)激活函数的选择方法

对于隐藏层

  1. 优先选择ReLU激活函数
  2. 如果ReLU效果不好,那么尝试其他激活,如Leaky ReLU等
  3. 如果你使用了ReLU,需要注意一下Dead ReLU问题,避免出现大的梯度导致过多的神经元死亡
  4. 少使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层

  1. 二分类问题选择sigmoid激活函数
  2. 多分类问题选择softmax激活函数
  3. 回归问题选择identity激活函数(恒等激活)

3.参数初始化

优先选择kaiming和xavier初始化方式

(1)初始化www

  • 均匀分布初始化:权重参数初始化从区间均匀随机取值。即在(−1d,1d)(-\frac{1}{\sqrt d}, \frac{1}{\sqrt d})(d1,d1)均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量
  • 正态分布初始化:随机初始化从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数W进行初始化

(2)初始化bbb

  • 全0初始化:将神经网络中的所有权重参数初始化为0
  • 全1初始化:将神经网络中的所有权重参数初始化为1
  • 固定值初始化:将神经网络中的所有权重参数初始化为某个固定值

(3)初始化方法改进

  1. kaiming初始化,也叫做HE初始化
    • HE初始化分为正态分布的HE初始化,均匀分布的HE初始化
      • 正态分布的HE初始化:stddev=2fan_instddev = \sqrt{\frac{2}{fan\_in}}stddev=fan_in2
      • 均匀分布的HE初始化:从[-limit, limit]中的均匀分布中抽取样本,limit是6fan_in\sqrt{\frac{6}{fan\_in}}fan_in6
      • fan_infan\_infan_in输入神经元个数
  2. xavier初始化,也叫做Glorot初始化
    • Glorot初始化分为正态分布的xavier初始化,均匀分布的xavier初始化
      • 正态化的xavier初始化:stddev=2fan_in+fan_outstddev=\sqrt{\frac{2}{fan\_in+fan\_out}}stddev=fan_in+fan_out2
      • 均匀分布的Xavier初始化:从[-limit, limit]中的均匀分布中抽取样本,limit是6fan_in+fan_out\sqrt{\frac{6}{fan\_in+fan\_out}}fan_in+fan_out6
      • fan_infan\_infan_in是输入神经元个数,fan_outfan\_outfan_out是输出的神经元个数

4.神经网络搭建和参数计算

(1)模型搭建

  • 在pytorch中定义深度神经网络其实就是层堆叠的过程,继承自nn.Module,实现两个方法
    • _init\_ 方法中定义网络中的层结构,主要是全连接层,并进行初始化
    • forward方法,在实例化模型的时候,底层会自动调用该函数。该函数中可以定义学习率,为初始化定义的layer传入数据等。

(2)网络参数量的统计方法

  • 统计每一层中的权重w和偏置b的数量
from torchsummary import summary
……
summary(my_modelll, input_size=(3, ), batch_size = 8)for name, para in my_model.named_parameters():print(name)print(para)

5.神经网络优缺点

  • 优点
    • 精度高,性能优于其他机器学习方法,甚至在某些领域超过了人类
    • 可以近似任意的非线性函数随之计算机硬件的发展
    • 近年来在学界和业界受到了热捧,有大量的框架和库可调
  • 缺点
    • 黑箱,很难解释模型是怎么工作的
    • 训练时间长,需要大量的算力
    • 网络结构复杂,需要调整超参数
    • 小数据集上表现不佳,容易发生过拟合

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

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

相关文章

【牛客算法】 小红的奇偶抽取

文章目录 一、题目介绍1.1 题目描述1.2 输入描述1.3 输出描述1.4 示例二、解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:字符串分离法3.1.1 初级版本分析3.2 解法二:数学逐位构建法(推荐)3.2.1 优化版本分析四、总结与拓展4.1 关键优化技…

Maven 继承:构建高效项目结构的利器

一、引言 Maven 是一个强大的项目管理工具&#xff0c;它通过标准化的项目结构和依赖管理极大地简化了 Java 项目的开发流程。在 Maven 中&#xff0c;继承是一种非常有用的功能&#xff0c;它允许我们创建一个父项目&#xff0c;其他子项目可以继承这个父项目的配置信息&#…

Mysql组合索引的update在多种情况下的间隙锁的范围(简单来说)

简单来说&#xff0c;当 UPDATE 语句的 WHERE 条件使用了组合索引&#xff0c;并且需要锁定不存在的“间隙”来防止幻读时&#xff0c;就会产生间隙锁。间隙锁的范围取决于 WHERE 条件如何利用组合索引&#xff0c;以及数据库的隔离级别。 我们用图书馆的例子。比如&#xff1a…

什么是Apache Ignite的affinity(亲和性)

在 Apache Ignite 中&#xff0c; affinity&#xff08;亲和性&#xff09; 是一种用于控制数据分布和查询性能的重要机制。它允许开发者指定数据如何在集群中的节点之间分布&#xff0c;从而优化数据访问和查询效率。以下是关于 affinity 的详细解释&#xff1a;数据亲和性&a…

youtube图论

dfs排序lifo & fifo存储方式邻接矩阵dijstra处理过的保存/更新&#xff0c;意味着一个节点避免了重复访问bfs dfs

借助ssh实现web服务的安全验证

背景 公有云服务器 http 服务 80端口&#xff0c;想做到安全访问无须HTTPS 客户端证书方便、快捷、安全 SSH 隧道 本地代理 使用 SSH 隧道将 HTTP 服务“隐藏”在 SSH 之后&#xff1a; # 客户端建立隧道&#xff08;将本地 8080 转发到服务器的 80 端口&#xff09; ssh…

状态机在前端开发中的艺术:从理论到框架级实践

文章目录一 状态机&#xff1a;复杂逻辑的终结者1.1 什么是状态机&#xff1f;1.2 为何前端需要状态机&#xff1f;二 状态机核心概念深度解析2.1 有限状态机&#xff08;FSM&#xff09;与分层状态机&#xff08;HSM&#xff09;2.2 状态机的数学表示三 前端开发中的状态机实战…

把word中表格转成excle文件

把word中表格转成excle文件 from docx import Document from openpyxl import Workbook from pathlib import Path# 打开 Word 文档 document Document(./weather_report.docx) tables document.tables# 输出文件路径 output_file Path(./weather_report.xlsx)# 如果文件已存…

运维打铁: 阿里云 ECS 实例的高效运维与管理

文章目录思维导图正文内容一、实例基础管理1. 实例创建2. 实例配置调整3. 实例停止与启动二、性能监控与优化1. 系统性能指标监控2. 磁盘 I/O 优化3. 网络优化三、安全防护1. 防火墙设置2. 账号安全管理3. 数据备份与恢复四、自动化运维1. 脚本自动化2. 使用云助手五、成本优化…

RV1126平台(Buildroot Linux)+ SunplusIT SPCA2688 USB摄像头 RTSP推流全流程复盘与问题解决记录

# RK RV1126平台&#xff08;Buildroot Linux&#xff09; SunplusIT SPCA2688 USB摄像头 RTSP推流全流程复盘与问题解决记录一、平台与需求- **硬件平台**&#xff1a;Rockchip RV1126 - **操作系统**&#xff1a;基于Buildroot定制的Linux系统 - **USB摄像头**&#xff1a;Su…

深入理解Java虚拟机:Java内存区域与内存溢出异常

前言Java虚拟机&#xff08;JVM&#xff09;的自动内存管理是其核心特性之一&#xff0c;它极大地简化了开发者的工作&#xff0c;减少了内存泄漏和内存溢出的问题。本文将详细介绍JVM的自动内存管理机制的内存区域与内存溢出异常问题&#xff0c;包括运行时数据区域、对象的创…

位图入门算法191. 位1的个数

题目链接&#xff1a; 191. 位1的个数 - 力扣&#xff08;LeetCode&#xff09; 这道题让我们找出一个数字中二进制中1的个数&#xff0c;这个题目我们就用1的&来解决&#xff0c;最后一位有0为0&#xff0c;都是1才是1&#xff0c;我们只需要判断32次即可。 代码如下&am…

[架构之美]虚拟机Ubuntu密码重置

[架构之美]虚拟机Ubuntu密码重置 当您在虚拟机中运行Ubuntu系统时&#xff0c;忘记密码不再意味着数据丢失&#xff01;本文将详细介绍可靠的密码重置方法&#xff0c;帮助您快速恢复系统访问权限。 一、虚拟机密码重置原理与准备 1.1 为什么虚拟机重置密码更容易 在虚拟机环…

kotlin中withContext,async,launch几种异步的区别

在 Kotlin 协程中&#xff0c;withContext、async 和 launch 是常用的异步/并发操作函数&#xff0c;它们的主要区别在于用途和返回值&#xff1a;1. launch 作用&#xff1a;启动一个新的协程&#xff0c;用于执行不返回结果的并发任务。使用场景&#xff1a;适合执行没有返回…

git 报错fatal: refusing to merge unrelated histories

解决方案在你操作命令后面加--allow-unrelated-histories 例如&#xff1a; git merge master --allow-unrelated-historiesgit pull或者git push报fatal: refusing to merge unrelated histories 同理&#xff1a; git pull origin master --allow-unrelated-histories

Android 13----在framworks层映射一个物理按键

基于Android 13.一、映射步骤确定要映射的物理按键值在kl文件中增加键值对在InputEventLabels.cpp增加AKEYCODE在keycodes.h中定义AKEYCODE值attrs.xml中增加KEYCODEKeyEvent.java中增加KEYCODE在PhoneManagerWindow等相关类中进行拦截处理相关KEYCODE&#xff0c;属于具体的业…

【Java EE】Mybatis-Plus

1. 开始先进行和以前一样的项目配置、数据库连接配置&#xff0c;在这些基础上&#xff0c;额外引入 Mybatis-Plus 依赖即可。<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><vers…

各版本操作系统对.NET支持情况(250707更新)

借助虚拟机和测试机&#xff0c;检测各版本操作系统对.NET的支持情况。 安装操作系统后&#xff0c;安装相应运行时并能够运行星尘代理或幸运四叶草为通过条件。 测试平台&#xff1a;VMware Workstation 镜像来源&#xff1a;MSDN I Tell You 参考&#xff1a; .NET Fram…

5-Kafka-replication(副本机制)概念

&#x1f504; Kafka 副本机制&#xff08;Replication&#xff09; 核心概念概念说明Replica (副本)分区的完整拷贝&#xff0c;分布在不同 BrokerReplication Factor副本总数&#xff08;含 Leader&#xff09;&#xff0c;生产环境建议 ≥3Leader Replica处理所有读写请求&a…

langgraph的ReAct应用

一、什么是langgraph的ReActLangGraph 中的 ReAct&#xff08;Reasoning Acting&#xff09;代理是一种结合推理与行动能力的 AI 代理架构&#xff0c;通过动态决策链实现复杂任务处理。以下是其核心要点及实践指南。1、ReAct 代理的核心原理1.1工作流程&#xff1a;ReAct 代理…