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

news2024/12/12 23:28:00

前向传播

计算公式(其中一种)

  • 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)等专门设计的网络

计算复杂性高

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

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

缺乏参数共享

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

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

不适合序列化数据

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

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

难以拓展到高维数据

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

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

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

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

相关文章

微服务的问题

1.创建maven项目 然后配置对应的maven地址 2.创建父工程 删掉其中的src文件 在父pom中进行版本依赖和管理 如下图所示 3.在子文件中进行添加依赖 然后刷新maven进行下载

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

在CANoe中创建网络节点作为以太网主机时,可以给其配置独立的TCP/IP Stack。 配置的协议栈有一些底层配置参数可以在界面上设置或修改,比如: MTU上图中MTU显示500只是图形界面显示错误,正确值是1500。 TCP延迟确认这些参数也可以通过CAPL动态配置,甚至CAPL还可以配置很多界…

计算机视觉与医学的结合:推动医学领域研究的新机遇

目录 引言医学领域面临的发文难题计算机视觉与医学的结合:发展趋势计算机视觉结合医学的研究方向高区位参考文章结语 引言 计算机视觉(Computer Vision, CV)技术作为人工智能的重要分支,已经在多个领域取得了显著的应用成果&…

微搭低代码AI组件单词消消乐从0到1实践

目录 1 为什么要开发单词消消乐2 需要具备什么功能3 采用什么技术方案实现4 逻辑设计4.1 数据结构设计4.2 游戏的核心逻辑4.3 数据设计 5 代码详解5.1 导入依赖5.2 定义函数组件5.3 数据初始化5.4 状态定义5.5 打乱解释的逻辑5.6 定义选择单词的函数5.7 定义选择解释的函数5.8 …

learn-(Uni-app)输入框u-search父子组件与input输入框(防抖与搜索触发)

1.父子组件u-search &#xff08;1&#xff09;父组件 <!-- 父组件 --> <template> <div><searchBar change"change" search"search"></searchBar> </div> </template> <script> // 子组件搜索 import…

SpringBoot【九】mybatis-plus之自定义sql零基础教学!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE mybatis-plus的基本使用&#xff0c;前两期基本讲的差不多&#xff0c;够日常使用&#xff0c;但是有的小伙伴可能就会抱怨了&#xff0c;若是遇到业务逻辑比较复杂的sq…

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

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

webrtc学习----前端推流拉流,局域网socket版,一对一

提示&#xff1a;局域网socket版 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 ‌‌‌‌‌WebRTC&#xff08;Web Real-Time Communication&#xff09;‌是一种实时通讯技术&#xff0c;允许网络应用或…

net/http: TLS handshake timeout 问题

最近系统偶现”net/http: TLS handshake timeout“&#xff0c;而且都集中在同一个机房&#xff0c;这个报错还是第一次见&#xff0c;产生的原因和解决的方案都比较有意思。 现场 报错的信息为&#xff1a; Error sending request:%!(EXTRA *url.ErrorGet "https://**…

HTML简单贪吃蛇游戏

1.功能说明&#xff1a; 游戏网格&#xff1a;一个20x20的网格&#xff0c;每个格子的大小为20x20像素。 蛇的移动&#xff1a;玩家可以通过方向键&#xff08;左、上、右、下&#xff09;控制蛇的移动。 食物生成&#xff1a;食物会在随机位置生成&#xff0c;当蛇吃到食物时…

http 502 和 504 的区别

首先看一下概念&#xff1a; 502&#xff1a;作为网关或者代理工作的服务器尝试执行请求时&#xff0c;从上游服务器接收到无效的响应。503&#xff1a;由于临时的服务器维护或者过载&#xff0c;服务器当前无法处理请求。这个状况是临时的&#xff0c;并且将在一段时间以后恢…

基于SpringBoot医疗挂号系统(计算机毕业设计)+万字说明文档

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系统…

【青牛科技】D4800 AB类 立 体 声 耳 机 音 频 功 率 放 大器电路可应用在便携式数字 音 响 设 备 中 作 功 率 放 大 用

概 述 &#xff1a; D4800 是 一 块 AB类 立 体 声 耳 机 音 频 功 率 放 大器电路。 D4800 在5V电 源 时 输 出 功 率 最 高 可 达 290mW(8 Ω 负载&#xff0c; 失真度 10%)。适合在便携式数字 音 响 设 备 中 作 功 率 放 大 用 。 主要特点&#xff1a; 电源电压&#x…

vue3+vite接入iconify,支持离线

前言 找一个图标太难了。Element-plus Icon的不够用。阿里巴巴的iconfont又比较麻烦。如果有自己的UI组件也可以考虑。 为了快速开发&#xff0c;我选择unocss iconify。 网上的教程太多了&#xff0c;建议大家直接看文档&#xff0c;其实配置步骤只有几步&#xff0c;不多。…

SD Express 卡漏洞导致笔记本电脑和游戏机遭受内存攻击

Positive Technologies 最近发布的一份报告揭示了一个名为 DaMAgeCard 的新漏洞&#xff0c;攻击者可以利用该漏洞利用 SD Express 内存卡直接访问系统内存。 该漏洞利用了 SD Express 中引入的直接内存访问 (DMA) 功能来加速数据传输速度&#xff0c;但也为对支持该标准的设备…

网页核心页面设计(第8章)

一、伪元素 伪元素是 CSS 中的一种选择器&#xff0c;用于选择某些特定的元素或元素的一部分&#xff0c;而这些元素本身并不存在于文档的结构中。伪元素使得网页设计师可以更灵活地控制样式&#xff0c;从而可以为元素的内容、框架或文本提供额外的样式&#xff0c;增强网页的…

黑马商城微服务复习(5)

MQ 一、同步调用和异步调用1. 同步调用2. 异步调用 二、RabbitMQ1. 基础使用2. 实际操作 怎么用?3. RabbitMQ虚拟主机 数据隔离4. 在JAVA中实现RabbitMQ5. 交换机种类 一、同步调用和异步调用 1. 同步调用 微服务一旦拆分&#xff0c;必然涉及到服务之间的相互调用&#xff…

【MySQL】表的基本查询(上)

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

【Java学习笔记】Map接口和常用方法

一、 Map接口实现类的 特点[很实用] key是自己存的java对象 value是一个固定的 //当有相同的 k ,就等价于替换. 二、 Map常用方法 &#xff08;根据键–>k&#xff09; 三、Map接口遍历方法 package com.hspedu.map_; import java.util.*; /** * author 韩顺平 * ver…

MySQL8版本升级

1.官方升级手册必看 1.1 理解升级过程会做什么 手册网址&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/upgrading.html 升级mysql 系统数据库&#xff08;默认的库&#xff09;&#xff0c;升级mysql 用户数据库&#xff08;用户创建的库&#xff09; 升级步骤分为…