《机器学习by周志华》学习笔记-神经网络-03多层网络学习算法之误差逆传播算法

news2024/10/30 10:09:53

1、背景

由于多层网络的学习能力比单层感知机要强很多,想要训练多层网络的话,感知机的学习规则显然不使用,需要更强大的学习算法来进行训练。「误差逆传播」算法就是最杰出、最成功的神经网络学习算法之一。

现实世界的业务大多数以来使用该算法进行训练。

2、作用

不仅可以用于「多层前馈神经网络」,还适用于其它类型的神经网络,例如「训练递归神经网络」。

3、概念

误差逆传播(error BackPropagation,简称BP)算法,通常说的「BP网络」,一般是指用BP算法训练的「多层前馈神经网络」

4、推理

对于前文所述的西瓜案例来说,首先需要将离散属性处理,如果属性值之间存在序列关系,则可进行连续化,例如高、矮。否则通常转化为k维向量,k为属性值数。

给定训练集D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \right \}

其中输入示例x拥有d个属性描述(d个输入神经元)。输入层神经元的集合表示为:

X=\left \{ x_{1},x_{2},...,x_{d} \right \},x_{i}\in X

输出l维向量(l个输出神经元)。输出层神经元的集合表示为:

Y=\left \{ y_{1},y_{2},...,y_{l} \right \},y_{j}\in Y

假设该算法为「单隐层前馈神经网络」,其隐层的神经元为q个。隐含层神经元集合表示为:

B=\left \{ b_{1},b_{2},...,b_{q} \right \},b_{h}\in B

设「输入层>>隐含层」的权重用V_{ih}表示,「隐含层>>输出层」的权重用W_{hj}表示。其网络图表示如下:

根据上图我们可以求出「隐含层」中第h个神经元b_{h}的输入为:

\alpha _{h}=x_{1}V_{1h}+x_{2}V_{2h}+...+x_{d}V_{dh}=\sum_{i=1}^{d}x_{i}V_{ih}

还可以求出「输出层」中第j个神经元y_{j}的输入为:

\beta_{j}=b_{1}W_{1j}+b_{2}W_{2j}+...+b_{d}W_{qj}=\sum_{h=1}^{q}b_{h}W_{hj}

假设「隐含层」和「输出层」神经元都使用Sigmoid激活函数:

sigmoid(x)=\frac{e^{x}}{e^{x}+1}=\frac{1}{1+e^{-x}}

也就是「对率函数」

对于训练样例\left ( x_{k},y_{k} \right ),假定神经网络模型的输出集合为:

\widehat{Y}=\left \{ \widehat{y}_{1}^{k},\widehat{y}_{2}^{k},...,\widehat{y}_{l}^{k} \right \},\widehat{y}_{j}^{k}\in \widehat{Y},则:

\widehat{y}_{j}^{k}=f(\beta _{j}-\theta _{j})=f(\sum_{h=1}^{q}b_{h}W_{hj}-\theta _{j})

则该神经网络在\left ( x_{k},y_{k} \right )上的均方误差为:

E_{k}=\frac{1}{2}\sum_{j=1}^{l}\left ( \widehat{y}_{j}^{k}-y_{j}^{k} \right )^{2}(这里的\frac{1}{2}是为了后续求导的便利)

上面的神经网络图中,有以下权重和阈值需要确定:

①输入层>>>隐层

权重个数=d\times q,用「V_{ih}」表示

阈值个数=q,用「\gamma _{h}」表示

②隐层>>>输出层

权重个数=q\times l,用「W_{hj}」表示

阈值个数=l,用「\theta _{j}」表示

综合①②,上述神经网络中,需要确定的参数个数有:(d\times q)+q+(q\times l)+l=q(d+1+l)+l

BP是一个迭代学习算法,在迭代的每一轮中,采用光仪的感知机学习规则对参数进行更新估计。

任意参数\nuV_{ih}\gamma _{h}W_{hj}\theta _{j}的集合)的更新估计为:

\nu \leftarrow \nu +\bigtriangleup \nu

所以我们需要求出更新梯度:\Delta W_{hj}\Delta \theta _{j}\Delta V_{ih}\Delta \gamma _{h},才可以估计以下参数:

输出层-权重:W_{hj}\leftarrow W_{hj}+\Delta W_{hj}

输出层-阈值:\theta _{j}\leftarrow \theta _{j}+\Delta \theta _{j}

隐藏层-权重:V_{ih}\leftarrow V_{ih}+\Delta V_{ih}

隐藏层-阈值:\gamma _{h}\leftarrow\gamma _{h}+ \Delta \gamma _{h}

4.1.求解「输出层-权重」更新公式\Delta W_{hj}

下面我们以上图神经网络中「隐含层>>输出层」的连接权W_{hj}为例来进行推倒,本次推到采用「梯度下降(gradient descent)」策略,以目标的负梯度方向对参数进行调整。

梯度下降法是一种优化算法,广泛用于机器学习和深度学习中,特别是用于求解最小化损失函数的问题,比如线性回归和神经网络训练。其基本思想是通过沿着目标函数(通常是对数似然损失或其他成本函数)梯度的反方向迭代更新模型参数,使得损失函数值逐渐减小。

以下是梯度下降的基本步骤:

  1. 初始化:随机选择一组初始参数值。
  2. 计算梯度:对于当前参数,计算目标函数关于这些参数的梯度,梯度表示了函数值上升最快的方向。
  3. 更新参数:将当前参数减去一个小的学习率乘以梯度,这个学习率决定了每次迭代移动的步长,防止跳过全局最优。
  4. 重复迭代:不断重复上述过程,直到达到预设的停止条件(如达到最大迭代次数、梯度接近于零或验证误差不再降低等)。

梯度下降有多种变体,包括批量梯度下降(Batch GD)、随机梯度下降(SGD)、小批量梯度下降(Mini-batch GD),以及动量梯度下降(Momentum)、自适应学习率算法(如Adam)等,它们旨在提高收敛速度、稳定性和效率。

对在\left ( x_{k},y_{k} \right )上的均方误差,给定学习率\eta\eta \in \left ( 0,1 \right )通常被设置为最小正数,例如0.1。有:

\bigtriangleup W_{hj}=-\eta \frac{\partial E_{k}}{\partial W_{hj}}

这就是「链式法则」

链式法则:

也称为链规则(Chain Rule),是微积分中用于求复合函数导数的一种基本方法。当有一个复合函数是由两个或更多简单函数相乘、相除或者逐层应用的函数构成时,我们可以通过对每个简单函数求导,并将结果连接起来来计算整个复合函数的导数。这个过程类似于数学链条,每一环(即每个简单函数的导数)影响下一环。

在计算链式法则之前,我们先回顾一下复合函数(function composition)的求导法则。所谓的复合函数,在本质上

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

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

相关文章

.NET Core WebApi第4讲:控制器、路由

一、控制器是什么? 1、创建一个空的API控制器:TestController.cs 2、里面有一个类叫TestController,把它叫做控制器 因为它继承了ControllerBase类,ControllerBase类里提供了一系列的方法,使得TestController这个类具…

基于Mysql、JavaScript、PHP、ajax开发的MBTI性格测试网站(前端+后端)

源码地址:https://download.csdn.net/download/2302_79553009/89933699 项目简介 本项目旨在构建一个基于MBTI(迈尔斯-布里格斯性格分类指标)理论的在线平台——“16Personalities”。该平台利用PHP、MySQL、JavaScript等技术栈开发&#xf…

【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!

文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose(1). 安装 Docker(2). 安装 Docker Compose&#xff…

SpringBoot- 查看Maven依赖API文档

在 Maven 中查看某个依赖的所有 API 文档,最常见的方式是通过添加 Javadoc 并使用 IDE 自动集成查看,或者直接访问 Maven 仓库网站。以下是详细的步骤: 1. 使用 Maven Dependency Plugin 下载 Javadoc 可以通过 mvn dependency:resolve 命令…

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载 2024 年 10 月 28 日,Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作,为通知、邮件和消息生成摘要,体验交互更自然、功能更丰富的 Siri,使…

Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

1 、安装OpenResty 安装使用 OpenResty,这是一个集成了各种 Lua 模块的 Nginx 服务器,是一个以Nginx为核心同时包含很多第三方模块的Web应用服务器,使用Nginx的同时又能使用lua等模块实现复杂的控制。 (1)安装编译工具…

[Linux] linux 软硬链接与动静态库

标题:[Linux] linux 软硬链接与动静态库 个人主页水墨不写bug (图片来源于网络) /** _oo0oo_* o8888888o* 88" . "88* (| -_- |)* …

VSCode 设置环境变量(WSL 2)

环境:openEuler、Windows 11、WSL 2、python 3.12.3 背景:使用vscode连接Windows 的Linux子系统,开发python项目,获取环境变量失败 时间:20241029 说明:使用os.environ获取不到变量,设置/etc…

控制台安全内部:创新如何塑造未来的硬件保护

在 Help Net Security 的采访中,安全研究人员 Specter 和 ChendoChap 讨论了游戏机独特的安全模型,并强调了它与其他消费设备的不同之处。 他们还分享了对游戏机安全性的进步将如何影响未来消费者和企业硬件设计的看法。 斯佩克特 (Specter) 是本周在阿…

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图(图2.2.1-1) 2.2.2 系统功能表(表2.2.2…

TiDB体验一在单机上模拟部署TiDB生产环境集群

TiDB整体架构 TiDB集群主要包括三个核心组件:TiDB Server,PD Server和TiKV Server。 TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生…

Conditional DETR论文笔记

原文链接 [2108.06152] Conditional DETR for Fast Training Convergencehttps://arxiv.org/abs/2108.06152 原文笔记 What 《Conditional DETR for Fast Training Convergence》 这个工作也是针对于DETR Query的工作 用于解决DETR训练收敛慢(Object query需要…

在Excel中如何快速筛选非特定颜色

Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色…

C语言中的位操作

第一章 变量某位赋值与连续赋值 寄存器 | 值 //例如&#xff1a;a 1000 0011b a | (1<<2) //a 1000 0111 b 单独赋值 a | (3<<2*2) // 1011 0011b 连续赋值 第二章 变量某位清零与连续清零 寄存器 & ~&#xff08;&#xff09; 值 //例子&#xff1a;a …

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析 目录 微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析 1、iOS在scroll-view内部上下滑动吸顶的现象 正常的上下滑动吸顶覆盖&#xff1a; iOS及iPa…

详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute

目录 前言1. 基本知识2. Demo 前言 原先的permute推荐阅读&#xff1a;详细分析Pytorch中的permute基本知识&#xff08;附Demo&#xff09; 1. 基本知识 transpose 是 PyTorch 中用于交换张量维度的函数&#xff0c;特别是用于二维张量&#xff08;矩阵&#xff09;的转置操…

#PCIE#基础知识分解之 CC/SRNS/SRIS 时钟架构

参考资料为PCIe Base Spec和CEM Spec。 1.1 时钟架构分类 PCIe参考时钟的三种架构&#xff1a; Common Refclk (Shared Refclk) ArchitectureData Clocked Rx ArchitectureSeparate Refclk Architecture 下面&#xff0c;我们来简单地聊一聊前面说到的三种参考时钟架构&…

图书管理系统汇报

【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…

js 获取当前时间与前一个月时间

// 获取当前时间的毫秒数 var currentTimeMillis new Date().getTime();// 获取前一个月的Date对象 var dateLastMonth new Date(); dateLastMonth.setMonth(dateLastMonth.getMonth() - 1);// 获取前一个月的毫秒数 var timeMillisLastMonth dateLastMonth.getTime();conso…

Flutter InkWell组件去掉灰色遮罩

当InkerWell组件内部获取到焦点时&#xff0c;会展示一层灰色遮罩 将focusColor属性设置为透明即可 Flutter InkWell焦点效果源码分析 问题描述 当 InkWell 组件获得焦点时&#xff0c;会显示一层灰色遮罩效果。需要找出这个效果是由哪些组件控制的&#xff0c;以及具体的…