【人工智能】—_神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

神经网络、前向传播、反向传播

文章目录

  • 神经网络、前向传播、反向传播
  • 前向传播
  • 反向传播
  • 梯度下降
    • 局部最小值
      • 多层前馈网络表示能力
      • 多层前馈网络局限
      • 缓解过拟合的策略

前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过程。在前向传播中,神经网络会将每一层的输出作为下一层的输入,直到输出层得到最终的结果。

反向传播是指在神经网络训练过程中,通过计算损失函数的梯度,将梯度从输出层开始逆向传播到输入层,以更新每一层的权重参数。在反向传播中,通过计算梯度,可以得到每个神经元的误差,进而调整其权重和偏置,以最小化损失函数。

前向传播

在这里插入图片描述

反向传播

在这里插入图片描述
  1. 𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 = 𝑔’(𝑥𝐿)
    这个公式表示输出层对输入层的偏导数,它等于激活函数关于输入的导数,即𝑔’。

  2. 𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿−1 = 𝑊𝐿−1 · (𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1))
    这个公式表示倒数第L-1层对第L层的偏导数,它等于第L层权重矩阵𝑊𝐿−1乘以(𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1)),其中𝑓’表示激活函数的导数。

  3. 𝜕𝑙𝑜𝑠𝑠/𝜕𝑤𝐿−1 = (𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1)) · 𝑥𝐿−1
    这个公式表示对第L-1层的权重𝑤𝐿−1求偏导数,它等于(𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1))乘以第L-1层的输入𝑥𝐿−1。

这些公式描述了反向传播算法中的梯度计算过程,它们用于更新神经网络中的权重以最小化损失函数。

梯度下降

假设神经网络中只有两个参数 w 1 w_1 w1 w 2 w_2 w2。在梯度下降算法中,我们通过计算损失函数 C C C 关于参数的偏导数来确定梯度方向,并乘以学习率 η \eta η 来确定参数更新的步幅。这样反复迭代更新参数,直到达到收敛或满足停止条件。

具体步骤如下:

  1. 随机选择一个起始点 θ 0 \theta_0 θ0
  2. 计算在 θ 0 \theta_0 θ0 处的负梯度 − ∇ C ( θ 0 ) -\nabla C(\theta_0) C(θ0)
  3. 将负梯度与学习率 η \eta η 相乘。
  4. 更新参数:
    θ 0 = θ 0 − η ⋅ ∇ C ( θ 0 ) \theta_0 = \theta_0 - \eta \cdot \nabla C(\theta_0) θ0=θ0ηC(θ0)

其中, ∇ C ( θ 0 ) \nabla C(\theta_0) C(θ0) 是损失函数关于参数的偏导数组成的梯度。在二维空间中,可以表示为 ∇ C ( θ 0 ) = ( ∂ C ( θ 0 ) ∂ w 1 , ∂ C ( θ 0 ) ∂ w 2 ) \nabla C(\theta_0) = \left(\cfrac{\partial C(\theta_0)}{\partial w_1}, \cfrac{\partial C(\theta_0)}{\partial w_2}\right) C(θ0)=(w1C(θ0),w2C(θ0))

通过不断迭代更新参数,我们可以优化网络的性能,使损失函数最小化。

局部最小值

梯度下降算法并不保证能够达到全局最小值。不同的初始点 θ 0 \theta_0 θ0 可能会收敛到不同的局部最小值,因此会得到不同的结果。

这是因为神经网络的损失函数通常是非凸的,存在多个局部最小值。在非凸损失函数的情况下,梯度下降可能会陷入局部最小值而无法达到全局最小值。这就是为什么在训练神经网络时,初始点的选择非常重要。

然而,尽管梯度下降可能无法找到全局最小值,但在实际应用中,局部最小值往往已经足够好。此外,使用正则化和其他技巧可以帮助提高算法的鲁棒性,减少陷入不良局部最小值的风险。

因此,虽然非凸损失函数可能带来挑战,但梯度下降仍然是一种有效的优化方法,广泛应用于训练神经网络和其他机器学习模型中。

多层前馈网络表示能力

只需要一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数

多层前馈网络局限

• 神经网络由于强大的表示能力, 经常遭遇过拟合. 表现为:训练误差持续降低, 但测试误差却可能上升
• 如何设置隐层神经元的个数仍然是个未决问题. 实际应用中通常使用“试错法”调整

缓解过拟合的策略

• 早停:在训练过程中, 若训练误差降低, 但验证误差升高, 则停止训练
• 正则化:在误差目标函数中增加一项描述网络复杂程度的部分, 例如连接权值与阈值的平方和

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

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

相关文章

java.sql.SQLException: com.mysql.cj.jdbc.Driver

这篇文章分享一下Springboot整合Elasticsearch时遇到的一个问题,项目正常启动,但是查询数据库的时候发生了一个异常java.sql.SQLException: com.mysql.cj.jdbc.Driver java.sql.SQLException: com.mysql.cj.jdbc.Driverat com.alibaba.druid.util.JdbcU…

Linux centos7 bash编程——-求质数和

训练项目:使用函数求质数和。 定义一个函数IsPrime(),据此判断一个数是否为质数 由用户输入一个整数,求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…

Redis 7 第五讲 事务、管道、发布订阅 过渡篇

事务 理论 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 一个队列中,一次性、顺序性、排他性的执行一系列命令 Redis事务 VS 关系型数据库事务…

Java 多线程系列Ⅲ(wait+notify+notifyAll)

wait、notify、notifyAll 一、初识 wait、notify、notifyAll二、wait、notify、notifyAll 功能介绍1、wait()2、notify()3、notifyAll()4、wait、notify、notifyAll 要点总结5、wait/notify 使用示例 三、wait、join、sleep 归纳 一、初识 wait、notify、notifyAll 我们知道由…

QtConcurrent和QFuture的使用

在Qt中,有时候我们会遇到这样一种情况,需要执行一个很长时间的操作,这时候我们的主界面就会卡住。我们的通常做法就是把这个很长时间的操作扔到线程里去处理,可以使用标准库中的线程也可以使用QThread。 如果我们要在这个很长时间…

Java泛型机制

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

javacv 基础04-读取mp4,avi等视频文件并截图保存图片到本地

javacv 读取mp4,avi等视频文件并截图保存图片到本地 代码如下: package com.example.javacvstudy;import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.Im…

单元测试:优雅编写Kotlin单元测试

一、MockK简介 MockK是一款功能强大、易于使用的Kotlin mocking框架。在编写单元测试时,MockK能够帮助我们简化代码、提高测试覆盖率,并改善测试的可维护性。除了基本用法外,MockK还提供了许多额外的功能和灵活的用法,让我们能够…

ARM DIY(四)WiFi 调试

文章目录 焊接打开内核编译选项重新编译内核烧录 && 运行 && 测试完善脚本测速手搓天线正式天线 焊接 换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位 焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻 硬件部分就这…

linux centos7 bash中字符串反向输出

给定一个字符串,如何反向(倒序)输出? 字符串反转的方法:a.对各个字符位置进行循环调换(从原字符串左边取出放在新字符串的右边;从原字符串右边取出放在新字符串的左边)。b.对各个字符由水平排列转为垂直排…

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现EEMD-SSA-LSTM、E…

渗透测试漏洞原理之---【失效的访问控制】

文章目录 1、失效的访问控制1.1、OWASP Top 101.1.1、A5:2017-Broken Access Control1.1.2、A01:2021 – Broken Access Control 1.2、失效的访问控制类别1.2.1、水平越权1.2.2、垂直越权 1.3、攻防案例1.3.1、Pikachu靶场 Over Permision1.3.2、DVWA越权利用失效的访问控制漏洞…

大数据课程K16——Spark的梯度下降法

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的梯度下降法; ⚪ 了解Spark的梯度下降法家族(BGD,SGD,MBGD); ⚪ 掌握Spark的MLlib实现…

Data Rescue Professional for Mac:专业的数据恢复工具

在数字化时代,我们的生活和工作离不开电脑和存储设备。但是,意外情况时常发生,例如误删除文件、格式化硬盘、病毒攻击等,这些都可能导致重要的数据丢失。面对数据丢失,我们迫切需要一款可靠的数据恢复工具。今天&#…

剪枝基础与实战(5): 剪枝代码详解

对模型进行剪枝,我们只对有参数的层进行剪枝,我们基于BatchNorm2d对通道重要度 γ \gamma γ参数进行稀释训练。对BatchNorm2d及它的前后层也需要进行剪枝。主要针对有参数的层:Conv2d、BatchNorm2d、Linear。但是我们不会对Pool2d 层进行剪枝,因为Pool2d只用来做下采样,没…

在windows下进行maven安装配置

下载 https://maven.apache.org/download.cgi 安装配置 配置settings.xml文件 如果需要修改仓库的地址,可新增一条localRepository的记录,加上存放下载jar包的地址。 设置Maven镜像下载地址 配置完成,在命令行输入mvn help:system测试&#…

科创板50ETF期权交易:详细规则、费用、保证金和开户攻略

科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金(ETF),旨在跟踪科创板50指数的表现,下文介绍科创板50ETF期权交易:详细规则、费用、保证金和开户攻略&am…

uni-app中使用iconfont彩色图标

uni-app中使用iconfont彩色图标 大家好,今天我们来学习一下uni-app中使用iconfont彩色图标,好好看,好好学,超详细的 第一步 首先,从iconfont官网(iconfont-阿里巴巴矢量图标库)选择自己需要的图…

QT6为工程添加资源文件,并在ui界面引用

以添加图片资源为例 右键工程名字(不是最上面的名字),点击添加现有文件 这种方式虽然添加到了工程中,但不能在UI设计界面完成引用。主要原因可能是未把文件放入到项目资源文件中,以下面一种方式可以看出区别。 点击添…

FFmpeg报错:Connection to tcp://XXX?timeout=XXX failed: Connection timed out

一、现象 通过FFmpeg(FFmpeg的版本是5.0.3)拉摄像机的rtsp流获取音视频数据,执行命令: ./ffmpeg -timeout 3000000 -i "rtsp://172.16.17.156/stream/video5" 报错:Connection to tcp://XXX?timeoutXXX …