【全连接神经网络】核心步骤及其缺陷

前向传播

计算公式(其中一种)

  • x1/x2:输入值,一般是神经网络上一层的输出或者输入数据本身,上图中表示两个节点
  • w11 w13:权重,在神经网络中,权重是学习的参数,表示每个输入对输出的影响程度
  • b1:表示偏置顶,是一个额外的常数值,用来帮助神经网络调整输出。偏置项的作用是让神经元能够更好地拟合数据
  • sigmoid:激活函数

损失函数

基本了解

损失函数主要用于衡量模型预测结果与实际结果之间的差距或者误差。损失函数的作用是告诉我们模型在当前的预测中犯了多大的错误,训练过程就是通过最小化损失函数来调整模型参数,使得模型的预测更准确

简单来说,损失函数可以看做是误差的度量标准,帮助模型知道自己哪里出错了然后进行改进

损失函数常见的类型

  • 均方误差(MSE):用来衡量回归任务中的预测误差,适用于预测连续数值。比如预测房价、温度等
  • 交叉熵(Cross-Entropy):用来衡量分类任务中的预测误差,适用于分类问题,如判断图片是猫还是狗

均方误差函数

  • yi^表示第i个样本的预测值
  • yi表示第i个样本的真实值
  • n表示样本的总数量

投篮事例连理解该函数

假设你正在进行投篮游戏,每次投篮你都希望能进球。我们可以把这个投篮过程看作是一个回归问题,其中

  • 目标:你希望每次投篮的目标位置是篮筐的中心
  • 真实值:篮筐的实际位置
  • 预测值:你每次投篮的预测位置(即球的落点)

所以其中MSE就是来衡量每次投篮的精确度

  • 预测误差:每次投篮时,球的落点与篮筐中心之间的距离就是预测误差
  • 平方误差:为了避免正负误差互相抵消,投篮的误差被平方。假设有一次你投篮偏左 3 米,另一种情况是偏右 5 米。通过平方,两个误差都会被放大,使得两次投篮的误差都得到了应有的惩罚
  • 平均误差:你可以计算所有投篮的误差的平均值,这就是最终的 MSE

例如如果有三次投篮,那么计算其平均误差

  • 第一次投篮,球偏左 3 米,真实值是篮筐中心,误差是 3 米,误差的平方是 9
  • 第二次投篮,球偏右 4 米,误差的平方是16。
  • 第三次投篮,球正中篮筐,误差是 0,平方误差是  002=0

综上三次的平均数值就是 mse = 1/3 * (9+16+0) = 8.33

MSE 的值越小,说明你投篮越准确,模型表现得越好。反之,MSE 值较大,说明你的投篮偏差较大,模型还需要调整

交叉熵损失函数

基本了解

一种适合分类问题的损失函数,比如图像分类、文本分类等任务。它衡量的是两个概率分布之间的差异:一个是模型输出的预测概率分布,另一个是真实标签的概率分布。通过最小化交叉熵,模型可以更好地调整其输出,以使得预测的概率分布尽可能接近真实标签的分布

 二分类交叉熵损失

二分类的理解

假设你在预测某个城市是否会下雨,你的任务是根据一些气象数据(如温度、湿度等)来判断是否会下雨。你将这个任务视为一个二分类问题,输出为“下雨”(1)或“不下雨”(0)

  • 其中模型,输出的是一个概率值y^ ,表示模型预测下雨的概率
  • 真实标签y是0或1,分别表示下雨和不下雨

场景 1:真实标签 y=1y = 1y=1(下雨)

果模型预测 y^​=0.9,即模型预测下雨的概率为 90%,那么交叉熵损失是:

由于预测接近真实值,损失很小

场景 2:真实标签 y=0y = 0y=0(不下雨)

  • 如果模型预测y^​=0.1,即模型预测不下雨的概率为 90%,那么交叉熵损失是:

    由于模型预测正确,损失很小。

  • 如果模型预测y^​=0.9,即模型预测不下雨的概率为 10%,那么交叉熵损失是:

    由于预测错误,损失非常大

多分类交叉熵损失

多分类预测理解

预测一天的天气类型,可能的天气类型有三种:晴天阴天雨天,我们将这个任务视为一个多分类问题。模型输出的是每种天气类型的概率

  • 目标:预测某一天的天气类型
  • 真实标签:如果真实天气是“阴天”,标签为 [0,1,0][0, 1, 0][0,1,0](0 表示晴天,1 表示阴天,0 表示雨天)
  • 预测值:模型输出的天气预测概率,例如模型预测“晴天”的概率是 0.3,“阴天”的概率是 0.6,“雨天”的概率是 0.1

交叉熵损失将惩罚模型在错误天气类型上的大概率预测。例如模型的预测非常接近真实标签,预测60%阴天最后是阴天,那么损失就小。如果模型此时给了错误的判断,那么损失就会变大

梯度下降法

反向传播的具体实现方法

基本了解

梯度下降就类似爬山的过程,目标就是找到山谷中的最低点,也就是损失函数的最小值

  • 爬山:你站在山顶上,想要下山,找到最低点。你根据地形的坡度(梯度)来决定每一步走多远。坡度越陡,步伐越大;坡度越平缓,步伐越小
  • 梯度下降:就像爬山一样,我们通过计算梯度来决定往哪个方向走。在机器学习中,我们通过计算损失函数的梯度来确定更新参数的方向。每次调整的步长由学习率决定。如果步伐太大,可能会错过最低点;如果步伐太小,可能会走得很慢

优点

  • 可用于大规模数据:对于大型数据集,尤其是深度学习模型,随机梯度下降和小批量梯度下降能有效处理

缺点

  • 局部最小值:对于非凸的损失函数,梯度下降可能会陷入局部最小值或鞍点,而不是全局最优解
  • 学习率选择:选择合适的学习率是一个挑战,学习率过大或过小都会影响优化效果
  • 收敛速度:梯度下降可能需要许多迭代才能收敛,特别是在损失函数复杂时

基本概念

梯度下降的核心思想是通过计算损失函数对参数的导数(梯度),了解损失函数在当前参数位置的变化趋势。然后,根据梯度的方向调整模型参数,逐步降低损失

实现步骤

  1. 初始化参数:首先,我们随机初始化模型的参数(如神经网络的权重和偏置)
  2. 计算梯度:对于当前参数,计算损失函数对各个参数的梯度
  3. 更新参数:根据公式,参考下文
  4. 迭代:重复步骤 2 和 3,直到损失函数收敛,即损失不再显著减小,或者达到了预定的迭代次数

梯度下降法类型

批量梯度下降

每次更新参数时,使用整个训练数据集来计算梯度

  • 优点:每次计算的梯度都比较精确,能保证找到损失函数的全局最优解(如果损失函数是凸的)
  • 缺点:每次计算梯度时需要遍历整个数据集,计算量大,对于数据集较大的问题,效率较低

随机梯度下降 

每次更新参数时,仅使用一个样本(通常是随机选择的一个样本)来计算梯度并更新参数

  • 优点:每次更新都很快,适用于大规模数据集,可以快速得到一个近似最优解。由于每次只计算一个样本的梯度,计算量较小
  • 缺点:由于每次计算的梯度不准确,可能会导致更新方向波动较大,不容易收敛到全局最优解,最终的收敛过程可能较为慢

小批量梯度下降

批量梯度下降和随机梯度下降的折中方案,每次更新时,使用一个小的随机样本批次(mini-batch)来计算梯度并更新参数

  • 优点:结合了批量梯度下降和随机梯度下降的优点。相比批量梯度下降,计算速度更快,收敛也比SGD更稳定。对于大数据集,小批量梯度下降能在有效计算的同时,避免计算量过大
  • 缺点:需要选择合适的批次大小(通常介于 10 到 1000 之间)

梯度下降法的优化(了解)

  •  动量法(Momentum):为了加速收敛,并减小梯度下降中的震荡,动量法引入了过去梯度的记忆,使得每次更新不仅依赖当前的梯度,还依赖之前的梯度
  • 自适应学习率算法
    • Adagrad:根据参数的历史梯度自动调整学习率,适用于稀疏数据
    • RMSprop:改进了Adagrad,解决了学习率过快衰减的问题
    • Adam:结合了动量法和自适应学习率的优点,通常表现很好

反向传播

整体上理解后向传播

前向传播是从输入到输出的特征抽取与映射过程,而后向传播是从输出向输入方向计算梯度并更新参数的过程

  • 输入层的信息传递:输入原始的数据
  • 利用已有的w和b以及激活函数计算卷积核作用下的特征图:初始时候的w\b是随机的,但是后面经过几轮后就不是随机的
    • 通过卷积操作得到第一层的特征图,然后经过激活函数)非线性变换后得到激活特征
  • 第一层特征图多层卷积和池化:逐渐抽取更加抽象的特征图,这些特征会被传递到更深层的网络结构中
  • 预测输出y:最终从输出层得到预测值,这就是前向流程
  • 误差与反向传播:根据预测值与真实标签的差异(Loss),通过反向传播计算对各层参数的梯度,并更新每一层的权重(包括卷积核的权重w和偏置b)使网络逐步逼近正确的映射函数

前向传播与后向传播

CNN结构

输入图像 -> 多层卷积(+激活+池化) -> Flatten(展平) -> 全连接层 -> 输出层
在此流程中,卷积层侧重空间特征提取,全连接层则对全局特征进行综合与映射,从而产生最终的分类决策或回归值

前后传播的关系

在前向传播中,信息从输入层依次通过卷积层、激活、池化层、全连接层最终到输出层。在反向传播中,梯度从输出层出发,依次回流到全连接层、再到卷积层,最终传递到最初的卷积核参数,更新权重,使网络在下一次前向传播时能够产生更好的预测。整个训练过程不断迭代,直到收敛或达到预期的效果

整体角度看前向传播和后向传播的关系

  • 前向传播:输入数据通过网络的各层(如卷积层、池化层、全连接层等)进行计算,最终产生输出
  • 计算损失:将网络的输出与真实标签进行比较,使用损失函数(如交叉熵损失、均方误差等)计算误差
  • 反向传播:通过计算损失函数相对于网络中各个参数(如权重和偏置)的梯度,确定参数调整的方向和幅度
  • 参数更新:优化算法(如梯度下降、Adam等)根据计算得到的梯度更新网络参数,以减少未来的损失
  • 重复迭代:将更新后的参数用于下一轮的前向传播,整个过程不断循环,直至损失函数收敛或达到预定的训练轮次

全连接神经网络的问题

全连接神经网络在简单任务和小规模数据集上表现良好,但在面对复杂、高维、具有空间或序列结构的数据时,其缺点显得尤为明显

参数数量庞大

全连接神经网络中的每一层神经元与下一层神经元相连接,这样也就意味着随网络层数和每层神经元数量增减,参数数量会呈现指数级的上涨

  • 计算资源消耗大:需要大量的内存和计算能力,训练时间长
  • 存储需求高:模型文件变得非常大,不便于存储和传输

过拟合问题

由于参数众多,全连接网络具有很强的表达能力,容易在训练数据上表现出色,但在未见过的数据上表现不佳,即过拟合

  • 泛化能力差:在真实应用中,模型的表现不稳定,难以适应新数据
  • 需要更多正则化手段:如Dropout、L2正则化等,增加了模型训练的复杂性

缺乏空间结构感知

全连接网络无法有效利用输入数据的空间结构(如图像的二维结构),因为每个输入神经元与每个隐藏神经元全连接,忽略了局部特征和空间关系

简单来说全连接神经网络在分析图片的时候太重视部分,而会忽略整体,这样就导致图像整体内容不明晰

  • 效率低下:无法捕捉局部特征,导致需要更多的神经元和参数来学习相同的信息
  • 性能受限:在处理具有明显空间结构的数据(如图像、视频)时,表现不如卷积神经网络(CNN)等专门设计的网络

计算复杂性高

全连接网络在前向和反向传播过程中涉及大量的矩阵乘法运算,计算复杂度高,尤其是在处理高维输入时

  • 训练时间长:尤其是在大规模数据集和深层网络结构下,训练时间可能变得不可接受
  • 实时应用受限:在需要快速响应的应用场景中,全连接网络可能无法满足实时性要求

缺乏参数共享

全连接网络中每个神经元的权重都是独立的,没有参数共享机制。这导致相同的特征需要在不同位置被重复学习

  • 参数冗余:相同或相似的特征在不同位置被重复学习,导致模型复杂且参数浪费
  • 学习效率低:需要更多的训练数据和时间来学习相同的信息

不适合序列化数据

如果试图记住一篇文章的每个单词而不考虑它们的顺序,那么理解文章的意义将变得非常困难。同样,处理序列数据(如文本、时间序列)时,顺序信息至关重要

  • 性能不足:在自然语言处理、时间序列预测等任务中,全连接网络往往表现不佳
  • 无法捕捉长距离依赖:难以记住和利用数据中远距离的依赖关系

难以拓展到高维数据

随着输入数据维度的增加,全连接网络的参数数量呈指数增长,导致模型难以扩展和训练。这个就像一个仓库中如果需要管理的类型增多的话,就会导致管理变的十分困难

  • 扩展性差:在高维数据(如高分辨率图像、复杂特征向量)下,全连接网络难以有效工作
  • 训练不稳定:高维参数空间导致优化过程复杂,容易陷入局部最优或梯度消失/爆炸问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自荐一部IT方案架构师回忆录

作者本人毕业于一个不知名大专院校,所读专业计算机科学技术。2009年开始IT职业生涯,至今工作15年。擅长TSQL/Shell/linux等技术,曾经就职于超万人大型集团、国内顶级云厂商、央国企公司。参与过运营商大数据平台、大型智慧城市ICT、云计算、人…

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法,其官方名称为SMS4(SMS4.0),相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…

番外篇 | 关于YOLOv8网络结构中添加注意力机制的常见方法 | Neck网络

前言:Hello大家好,我是小哥谈。注意力机制是一种神经网络模型,它通过赋予输入不同的权重的处理方式,来使得模型对输入信息的处理更加关注重要的部分。注意力机制在自然语言处理、计算机视觉等领域中得到了广泛的应用。🌈 目录 🚀1.基础概念 🚀2.案例说明 案例…

有序集合ZSET【Redis对象篇】

🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…

JSON语法、序列化/反序列化、(JS、JSON、Java对象间转换)、fastjson库、JS内置对象JSON

目录 一、JSON基础。 (1)什么是JSON? (2)JSON对象语法。 1、数据结构。 2、键与值的格式。 3、JSON对象在线解析与格式验证网址。 4、JSON对象格式的完整示例。 二、序列化与反序列化。 (1)序列…

C#中的string操作详解-截取、分割、连接、替换等

在C#中,string 类提供了许多用于操作字符串的方法,包括截取、分隔和连接等。以下是一些常用字符串操作的介绍和实例: 1. 截取字符串 Substring 方法 用于从字符串中截取子字符串。 语法: //从startIndex开始截取,…

STOP: 0x0000007B

STOP: 0x0000007B 安装电脑,提示出错,硬盘模型错误,SATA模式3种:AHCI、IDE、RAID 高级这个图好像漏了,下次补吧,就在高级里面硬盘模式修改下

echarts自定义仪表盘样式及一些属性了解

目录 一、自定义仪表盘 1.仪表盘相关 2.常用属性 (1)series (2)graphic 二、自定义仪表盘 1.基本仪表盘绘制 2.分析结构,分别绘制 (1)自定义形状 (2)仪表盘各部…

图神经网络代码学习—基本使用与分类任务

初步接触图神经网络代码 环境配置 对于在多目标跟踪中应用图匹配网络,需要学习使用GNN图神经网络,对于图神经网络的实现需要学习使用一下库和项目来进行实践。 PyG(PyTorch Geometric)是一个建立在 PyTorch 基础上的库&#xf…

操作系统:死锁与饥饿

目录 死锁概念 饥饿与饿死概念 饥饿和死锁对比 死锁类型 死锁条件(Coffman条件) 死锁恢复方法 死锁避免 安全状态与安全进程序列: 银行家算法: 死锁检测时机(了解): 死锁检测 死锁案…

SkyWalking Helm Chart 4.7.0 安装、配置

https://skywalking.apache.org/events/release-apache-skywalking-kubernetes-helm-chart-4.7.0/https://github.com/apache/skywalking-helm/tree/v4.7.0https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/简介 skywalking 是分布式系统的 APM(Applicat…

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题 这篇文章是接我cocos专栏的上一篇文章继续写的,我上一篇文章写的是 cocos 开发触摸屏项目,需要嵌入一个网页用来展示,最后通过 electron 打包成 exe 程序,而且网页里面…

嵌入式Linux应用开发中CAN通信实现

14.1 CAN介绍 14.1.1 CAN是什么? CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速…

Grafana功能菜单介绍

Grafana的功能菜单设计为侧边栏(sidebar)形式,可以折叠隐藏,便于我们更加专注数据的可视化。现将菜单栏各项功能进行编号讲解,如下图所示:① Grafana Logo 在这里插入图片描述 点击Grafana的logo,无论当前处于哪个页面,都会跳转回Home Page(主页)。② 新建与导入用于…

MVC基础——市场管理系统(二)

文章目录 项目地址三、Produtcts的CRUD3.1 Products列表的展示页面(Read)3.1.1 给Product的Model里添加Category的属性3.1.2 View视图里展示Product List3.2 增加Product数据(Add)3.2.1 创建ViewModel用来组合多个Model3.2.2 在_ViewImposts里引入ViewModels3.2.3 添加Add的…

前端 mp4 视频改成 m3u8 流模式

前端 mp4 视频改成 m3u8 流模式 mp4 视频的问题 1、mp4 视频通常对应一个文件,播放时需要加载全部文件,消耗网络资源。如果用户从中间某个时间访问,也会从头开始下载,浪费服务器性能。 2、mp4 视频文件容易被用户下载到本地。有…

爬虫基础之代理的基本原理

在做爬虫的过程中经常会遇到一种情况,就是爬虫最初是正常运行、正常抓取数据的,一切看起来都是那么美好,然而一杯茶的工夫就出现了错误,例如 403 Forbidden,这时打开网页一看,可能会看到“您的IP访问频率太…

如何将自己的PHP类库发布到composer仓库

将自己的 PHP 类库发布到 Composer 仓库,需要经过一系列的准备和操作步骤,以下是详细说明: 准备工作 创建类库项目:确保你的 PHP 类库项目具有清晰的目录结构,遵循 PSR-4 等 PHP 编码规范。通常,类文件应…

频道web - 性能优化之往返缓存

性能优化之往返缓存 往返缓存简介:如何验证当前页面是否有往返缓存?有哪些开发场景可以用bfcache提升性能?哪些无需关注?阻止页面进行往返缓存的行为都有哪些?1、缓存2、强制刷新3、浏览器设置4、JavaScript 代码5、网络问题6、 iframe 本身不符合 bfcache 的条件为什么会…

当前热门 DApp 模式解析:六大方向的趋势与创新

去中心化应用(DApp)随着区块链技术的不断发展,已经成为 Web3 领域的核心创新之一。与传统应用不同,DApp 通过智能合约运行在区块链上,具有去中心化、透明、安全等特点。近年来,随着用户需求的变化和技术的发…