【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略
【人工智能】— 神经网络、前向传播、反向传播
- 前向传播
- 反向传播
- 梯度下降
- 局部最小值
- 多层前馈网络表示能力
- 多层前馈网络局限
- 缓解过拟合的策略
前向传播和反向传播都是神经网络训练中常用的重要算法。
前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过程。在前向传播中,神经网络会将每一层的输出作为下一层的输入,直到输出层得到最终的结果。
反向传播是指在神经网络训练过程中,通过计算损失函数的梯度,将梯度从输出层开始逆向传播到输入层,以更新每一层的权重参数。在反向传播中,通过计算梯度,可以得到每个神经元的误差,进而调整其权重和偏置,以最小化损失函数。
前向传播

反向传播

-
𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 = 𝑔’(𝑥𝐿)
这个公式表示输出层对输入层的偏导数,它等于激活函数关于输入的导数,即𝑔’。 -
𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿−1 = 𝑊𝐿−1 · (𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1))
这个公式表示倒数第L-1层对第L层的偏导数,它等于第L层权重矩阵𝑊𝐿−1乘以(𝜕𝑙𝑜𝑠𝑠/𝜕𝑥𝐿 ⊙ 𝑓’(𝑊𝐿−1𝑥𝐿−1)),其中𝑓’表示激活函数的导数。 -
𝜕𝑙𝑜𝑠𝑠/𝜕𝑤𝐿−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 η 来确定参数更新的步幅。这样反复迭代更新参数,直到达到收敛或满足停止条件。
具体步骤如下:
- 随机选择一个起始点 θ 0 \theta_0 θ0。
- 计算在 θ 0 \theta_0 θ0 处的负梯度 − ∇ C ( θ 0 ) -\nabla C(\theta_0) −∇C(θ0)。
- 将负梯度与学习率 η \eta η 相乘。
- 更新参数:
θ 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)=(∂w1∂C(θ0),∂w2∂C(θ0))。
通过不断迭代更新参数,我们可以优化网络的性能,使损失函数最小化。


局部最小值
梯度下降算法并不保证能够达到全局最小值。不同的初始点 θ 0 \theta_0 θ0 可能会收敛到不同的局部最小值,因此会得到不同的结果。
这是因为神经网络的损失函数通常是非凸的,存在多个局部最小值。在非凸损失函数的情况下,梯度下降可能会陷入局部最小值而无法达到全局最小值。这就是为什么在训练神经网络时,初始点的选择非常重要。
然而,尽管梯度下降可能无法找到全局最小值,但在实际应用中,局部最小值往往已经足够好。此外,使用正则化和其他技巧可以帮助提高算法的鲁棒性,减少陷入不良局部最小值的风险。
因此,虽然非凸损失函数可能带来挑战,但梯度下降仍然是一种有效的优化方法,广泛应用于训练神经网络和其他机器学习模型中。

多层前馈网络表示能力
只需要一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数
多层前馈网络局限
• 神经网络由于强大的表示能力, 经常遭遇过拟合. 表现为:训练误差持续降低, 但测试误差却可能上升
• 如何设置隐层神经元的个数仍然是个未决问题. 实际应用中通常使用“试错法”调整
缓解过拟合的策略
• 早停:在训练过程中, 若训练误差降低, 但验证误差升高, 则停止训练
• 正则化:在误差目标函数中增加一项描述网络复杂程度的部分, 例如连接权值与阈值的平方和
相关文章:
【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略
【人工智能】— 神经网络、前向传播、反向传播 前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略 前向传播和反向传播都是神经网络训练中常用的重要算法。 前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后…...
小文智能自定义变量详解
在小文交互场景设计时,有一个特殊功能,叫做自定义变量。有时,根据外呼对象的不同,需要对用户传达不同的内容,比如称呼、地址、公司名称等等。此时,就可以使用小文交互的自定义变量功能来实现对不同用户呼出…...
平面电磁波的反射与折射,极化滤波作用
目录 引言 反射定律和折射定律 反射系数和折射系数 平面电磁波在理想介质分界面上的全反射和全折射 全反射 全折射 极化滤波作用 平面电磁波在良导体上的反射与折射 引言 再复杂的电磁波我们都可以看作是很多平面电磁波的叠加 我们在前面介绍的时候,我们认…...
键盘当鼠标用
当鼠标坏掉又需要使用电脑时发现触控板也不能用这就很烦那么键盘当鼠标用教程来了 使用键盘当鼠标的步骤如下: 1. 按住“AltShiftNum Lock”快捷键,弹出鼠标键开启咨询框,点击“是”按钮。 小键盘的数字就是方向/和*就是左右键切换5是单击 …...
动态规划part9 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
文章目录 198.打家劫舍思路思路代码官方题解代码 213.打家劫舍II思路思路代码官方代码困难 337.打家劫舍III思路思路代码官方题解代码困难 今日收获 198.打家劫舍 198.打家劫舍 思路 dp含义,偷前i个房,切第i个房偷 dp[i]max(dp[i-2],dp[i-3])nums[i] …...
【k8s系列】一分钟搭建MicroK8s Dashboard
本文基于上一篇文章的内容进行Dashboard搭建,如果没有看过上一篇的同学请先查阅上一篇文章 k8s系列】使用MicroK8s 5分钟搭建k8s集群含踩坑经验 使用MicroK8s搭建Dashboard很简单,只需要在Master节点按照以下几步操作 1.启用Dashboard插件 microk8s en…...
ArcEngine二次开发0——入门(下载 部署 组件学习)
折腾一下ArcGIS Engine二次开发。 目录 1、开发环境配置2、部署一个ArcGIS Engine应用程序3、ArcObject组件学习4、报错及解决4、其他 1、开发环境配置 参考:https://blog.csdn.net/H48662654/article/details/113384150 (使用ArcEngine前,…...
人工智能---D分离
D分离(D-Separation)是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法,D-Separation更加直观,且计算简单。对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点…...
java spring cloud 企业工程项目管理系统源码-全面的工程项目管理
工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重,…...
2023最新软件测试面试题【1000道题含答案】
1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化测…...
【目标跟踪】MOT数据集GroundTruth可视化
MOT数据集格式简介 MOT15数据集下载:https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例: 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…...
软件测试的概念与过程----学习软件测试前的思考
软件测试的概念与过程----学习软件测试前的思考 1、软件测试工作是做什么的?2、那我做软件测试拿到一个软件产品我应该从哪里测试,怎末开始工作?3、测试早做好还是晚一些做好?4、软件测试能将软件测试的一点问题都没有嘛ÿ…...
Streamlit基础教程
streamlit是什么 streamlit是一个开源的python库,它能够快速的帮助我们创建定制化的web应用,而且还非常便于和他人分享,特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识,包括html、css、javascript等&#x…...
内网穿透技术
文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…...
计算机网络笔记:内部网关协议RIP
文章目录 1.协议RIP的工作原理2.距离向量算法3.坏消息传播得慢 1.协议RIP的工作原理 RIP的地位:RIP是内部网关协议IGP中最先得到广泛使用的协议,其中文译名为路由信息协议。 RIP概述: RIP是一种分布式的基于距离向量的路由选择协议&#x…...
基于Java学生信息管理系统设计实现(源码+lw+部署文档+讲解等)
博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…...
PHP简单入门
PHP是一种流行的服务器端编程语言,被广泛用于Web开发。许多著名的网站和应用程序都是使用PHP编写的,例如Facebook、Wikipedia和WordPress等。本篇文章将为您介绍如何入门PHP编程。 环境配置 在开始使用PHP之前,需要先配置开发环境。要在本…...
java 客户端操作HDFS
1、windows上部署hadoop包 部署包win版本 源码包zip包 lib整合:共121个jar包 $HADOOP_PREFIX/share/hadoop/{common,hdfs,mapreduce,yarn,tools}/{lib,.}*.jar 将windows版本hadoop/bin/hadoop.dll 放到c:/windows/system32下 2、windows环境变量配置 hadoop的…...
区块链中的共识机制以及共识算法
目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW)...
【计算机网络自顶向下】DNS简答题总结
主要功能:将域名解析为主机能识别的IP地址 DNS实现的功能 主机到IP地址的转换主机别名的转换邮件服务器别名负载均衡 DNS实现冗余服务器:一个IP地址集合对应同一个规范主机名 域名系统 分布式数据库:一个由多层DNS服务器实现的分布式数据库应…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
