宽度学习学习笔记

article/2025/11/9 22:19:13

宽度学习笔记

  • 随机向量函数链接网络(RVFLNN)
    • 增强节点
    • 权值计算
    • Greville 定理
  • 宽度学习系统(Broad Learning System)
    • 数据处理
    • 简单BLS
    • 增强节点的增量学习
    • 特征节点的增量学习
    • 输入的增量学习
    • SVD

参考论文: Broad Learning System: An Effective and Efficient
Incremental Learning System Without
the Need for Deep Architecture

随机向量函数链接网络(RVFLNN)

增强节点

RVFLNN是一个单层网络结构,只有输出层和隐藏层,此外还多余一个增强层。
在这里插入图片描述
输入层为训练样本,输入层和增强层之间随机确定一个权值矩阵和偏量,并将增强层与输入层合并作为输入层。
在这里插入图片描述

权值计算

对于单层网络来说,我们不需要通过反向传播得到权值,可以直接通过矩阵运算得到 W W W,也就是 A W = Y , W = A + Y AW=Y, W=A^{+}Y AW=Y,W=A+Y,我们只需要得到A的逆即可。

A A A可能并不一定是n*n的的矩阵,因此我们需要得到的是A的伪逆,我们用岭回归的方法求伪逆(Ridge regression),也就是 A + = lim ⁡ λ − > 0 ( λ I + A A T ) − 1 A T A^{+}=\lim\limits_{\lambda->0}(\lambda I+AA^{T})^{-1}A^{T} A+=λ>0lim(λI+AAT)1AT

然而训练样本以及增强层都有可能为了网络结构的性能增加,此时我们希望能够在之前的计算结果上迭代得到新权值,而不是重新对矩阵 A A A进行求逆操作,也就是实现增量学习。而实现增量学习的关键在于如何在已知 A n 和 A n + A_n和A_n^{+} AnAn+的情况下,得到 A n + 1 = A n ∣ a A_{n+1}={A_{n}|a} An+1=Ana a a a A A A增强层增加的节点)的伪逆 A n + 1 + A_{n+1}^+ An+1+

Greville 定理

此定理用于解决分块矩阵求伪逆

  1. 定理内容
    A ∈ C m ∗ n A \in C^{m*n} ACmn,记 a k ( k = 1 , 2... n ) a_k(k=1,2...n) ak(k=1,2...n) A A A的第 k k k列, A k A_k Ak A A A的前 k k k列构成的子矩阵,又记 d k = A k − 1 + a k d_k=A_{k-1}^+a_k dk=Ak1+ak c k = a k − A k − 1 d k = a k − A k − 1 A k − 1 + a k c_k=a_k-A_{k-1}d_k=a_k-A_{k-1}A_{k-1}^+a_k ck=akAk1dk=akAk1Ak1+ak

    A k + = [ A k − 1 + − d k b T b T ] A_k^+= \begin{bmatrix} A_{k-1}^+ -d_kb^{T} \\ b^T \end{bmatrix} Ak+=[Ak1+dkbTbT]
    b T = { c k + ( c k ≠ 0 ) ( 1 + d T d ) − 1 d T A k − 1 + ( c k = 0 ) b^T= \begin{cases} c_k^+(c_k\not= 0)\\(1+d^{T}d)^{-1}d^TA_{k-1}^+(c_k=0) \end{cases} bT={ck+(ck=0)(1+dTd)1dTAk1+(ck=0)

  2. 定理证明

宽度学习系统(Broad Learning System)

数据处理

  1. 稀疏自动编码器
    在这里插入图片描述
    我们希望能够提取原先一堆输入中的特征,也就是对原先数据参数进行降维的操作。例如原先输入参数有785个,我们通过sparse autoencoder来使得输入参数降维10个。方法就是构建一个只有一个隐藏层的网络,输入层和输出层都是训练样本。我们只需要得到从输入层到隐藏层的权值矩阵即可。

简单BLS

首先考虑无增量学习的BLS,我们只需要输入参数和特征节点全部放在输入层即可,然后通过岭回归计算得到的权值。

这里唯一需要注意的是特征节点(增强层)权值的设置有两种方法,也就是对于每个节点对应的权值相同或者不同,如下图:
在这里插入图片描述
在这里插入图片描述
实际上这两种随机权值的设置方法对后面的结果均无影响
在这里插入图片描述

增强节点的增量学习

网络结构不可能永远一成不变,我们在得到一个并不满意的结构后,希望能够增加增强层的节点数量来优化我们的网络结构。
在这里插入图片描述
由前面增量学习的知识可知,我们不需要重新计算一遍权值的伪逆,只需要在前面的结果上面迭代得到新的伪逆。
对于 A m = [ Z n ∣ H m ] A^m=[Z^n|H^m] Am=[ZnHm],我们有新的 A m + 1 = [ A m ∣ a ] A^{m+1}=[A^m|a] Am+1=[Ama],由Greville定理可得
( A m + 1 ) + = [ A m − d b T b T ] (A^{m+1})^+= \begin{bmatrix} A^m - db^T \\ b^T \end{bmatrix} (Am+1)+=[AmdbTbT]
其中
d = ( A m ) + a d=(A^m)^+a d=(Am)+a
c = a − A m d c=a-A^md c=aAmd
b T = { c + ( c ≠ 0 ) ( 1 + d T d ) − 1 d T A k − 1 + ( c = 0 ) b^T= \begin{cases} c^+(c\not= 0)\\(1+d^{T}d)^{-1}d^TA_{k-1}^+(c=0) \end{cases} bT={c+(c=0)(1+dTd)1dTAk1+(c=0)
在这里插入图片描述

特征节点的增量学习

除了单独增加增强层节点,我们还有可能需要增加特征值的维度,在这种情况下相当于在mapped feature里增加了一个特征节点
在这里插入图片描述
而对于增强层来说,因为mapped feature发生了改变,所以我们不仅仅需要在原先的增强层基础上增加由新的 Z n + 1 Z_{n+1} Zn+1产生的新节点
并且要增加由 n + 1 n+1 n+1个mapped feature组成的增强节点。所以一共增加了三个部分: Z n + 1 Z_{n+1} Zn+1,为 Z n + 1 Z_{n+1} Zn+1单独增加的增强节点,将 Z n + 1 Z_{n+1} Zn+1与原节点合并后的增强节点
在这里插入图片描述

输入的增量学习

改变网络结构还有可能是因为输入参数变多了,我们也不希望重新计算一遍权值。在这种情况下与之前的增量学习情况类似,但不同的是我们这次是在矩阵的纵向增加,而非横向。也就是在
A n + x m = [ A n m A x T ] A_{n+x}^m= \begin{bmatrix} A^m_n\\ A^T_x \end{bmatrix} An+xm=[AnmAxT]

( A n + x m ) + = [ ( A n m ) + − B D T ∣ B ] (A_{n+x}^m)^+=[(A_n^m)^+-BD^T|B] (An+xm)+=[(Anm)+BDTB]
其中 D T = A x T ( A n m ) + D^T=A_x^T (A_n^m)^+ DT=AxT(Anm)+
B T = { C ( C ≠ 0 ) ( 1 + D T D ) − 1 ( A n m ) D ( C = 0 ) B^T= \begin{cases} C^(C\not=0)\\ (1+D^TD)^-1(A_n^m)D (C=0) \end{cases} BT={C(C=0)(1+DTD)1(Anm)D(C=0)
其中 C = A x T − D T A n m C=A^T_x-D^TA^m_n C=AxTDTAnm

SVD

首先我们知道对于方阵 A A A来说,我们可以将 A A A分解为 A = W ∑ W T A=W\sum W^T A=WWT,其中 W W W A A A对应特征向量的矩阵, ∑ \sum 是特征值构成对角线的矩阵。

对于非方阵 A m ∗ n A_{m*n} Amn而言,我们也希望它有这样的分解,显然有 A T A A^TA ATA A A T AA^T AAT为方阵,我们想把 A A A分解为 A = U Σ V T A=U\Sigma V^T A=UΣVT,则显然有
A A T = U Σ 1 U T A T A = V Σ 2 V T AA^T=U\Sigma_1U^T\\ A^TA=V\Sigma_2V^T AAT=UΣ1UTATA=VΣ2VT
且能够发现 Σ 1 = Σ Σ T , Σ 2 = Σ T Σ \Sigma_1=\Sigma\Sigma^T, \Sigma_2=\Sigma^T\Sigma Σ1=ΣΣT,Σ2=ΣTΣ
因此我们能够通过计算方阵 A T A A^TA ATA A A T AA^T AAT的特征值和特征向量来得到A的奇异值分解

因此,我们可以在 Σ \Sigma Σ中选取k个最大的特征值进行 A A A的近似处理。注意这里选取的 U k U_k Uk V k T V_k^T VkT分别对应的第k个特征值的特征向量
在这里插入图片描述
除此之外,左奇异矩阵U可以用于压缩X的行数,右奇异矩阵V可以用于X的降维,也就是PCA主成分分析。

而在BLS中,我们也同样可以采用SVD进行数据的降维简化,论文中分别对mapped feature、enhanced nodes和增量学习中的节点用SVD右矩阵V进行降维处理,简化数据。


http://chatgpt.dhexx.cn/article/3Albnlgk.shtml

相关文章

宽度学习(一):宽度学习体系:有效和高效的无需深度架构的增量学习系统

Motivation 深度学习: 1,时间长:由于涉及到大量的超参数和复杂的结构,大多数神经网络的训练过程非常耗时。 2,重新训练:如果要更改神经网络的结构,或者增加样本,深度学习系统将遇到一个完整的重新训练过程。 宽度学习: 1,消除了训练过程长的缺点,并且提供了很好的…

第三十七课.宽度学习

目录 前置内容宽度学习的基本结构:RVFLNN宽度学习系统岭回归 前置内容 深度学习计算量过大,成本过高,因此提出宽度学习(BLS,Broad Learning System)。我们首先要知道,BLS的网络结构不是固定的&…

宽度学习详解(Broad Learning System)

宽度学习(Broad Learning System) 1:Introduction1.1:级联相关网络(本节来自周志华《机器学习》)1.2:随机向量函数连接网络(RVFLNN) 2:宽度学习系统(Broad Learning Syst…

七、宽度学习系统Broad Learning System

七、宽度学习系统Broad Learning System 1、宽度学习的发展2、宽度学习系统(BLS)3、 BLS的增量形式1、宽度学习的发展 宽度学习系统(BLS) 的提出最早源于澳门大学科技学院院长陈俊龙和其学生于2018年1月发表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,…

宽度学习(Broad Learning System)

一、宽度学习的前世今生 宽度学习系统(BLS) 一词的提出源于澳门大学科技学院院长陈俊龙和其学生于2018年1月发表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,VOL. 29, NO. 1 的一篇文章,题目叫《Broad Learnin…

宽度学习(BLS)实战——python复刻MNIST数据集的数据预处理及训练过程

目录 1.宽度学习(Broad Learning System) 2.MNIST数据集 3.复刻MNIST数据集的预处理及训练过程 1.宽度学习(Broad Learning System) 对宽度学习的理解可见于这篇博客宽度学习(Broad Learning System)_颹蕭蕭的博客-CSDN博客_宽度学习 这里不再做详细…

《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)进展同步更新

本博实时更新《Linux设备驱动开发详解(第3版)》的最新进展。 目前已经完成稿件。 2015年8月9日,china-pub开始上线预售: http://product.china-pub.com/4733972 2015年8月20日,各路朋友报喜说已经拿到了书。 本书已经rebase到开发中的Linu…

linux_设备驱动_设备树

一.什么是DTS?为什么要引入DTS? DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。 在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/ma…

Linux设备驱动模型(一)

一、sysfs文件系统 sysfs是一个虚拟文件系统,将内核总的设备对象的链接关系,以文件目录的方式表示出来,并提对设备提供读写接口。 二、kobject kobject是内核中对象表示的基类,可以认为所有的内核对象都是一个kobject kobject单…

Linux设备驱动基础03:Linux字符设备驱动

1 Linux文件系统与设备驱动 1.1 文件系统与设备驱动之间的关系 Linux中文件系统与设备驱动程序之间的关系如下图所示, 应用程序和VFS之间的接口是系统调用;VFS和文件系统以及设备文件之间的接口是file_operations结构体中的成员函数,该结构体…

Linux 设备驱动程序(二)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三) Linux 设备驱动程序(四) Linux设备驱动开发详解 …

Linux驱动——字符设备驱动

目录 一、代码编译环境 二、Linux驱动开发分类 三、字符设备驱动开发流程 1.编译驱动模块代码(Makefile) 2.驱动模块的加载与卸载 四、字符设备驱动编写 1.驱动模块 2. 字符设备驱动编写步骤 2.1 设备号的注册与注销 2.2 设备节点的注册与注销 …

【Linux设备驱动】设备驱动分类

Linux设备驱动分类 驱动分为有操作系统设备驱动和误操作系统的设备驱动。 有无操作系统设备驱动 无操作系统设备驱动 不是所有的计算机系统都一定要有操作系统,在许多情况下,操作系统都是不必存在的。对于功能比较单一、控制不复杂的系统&#xff0c…

Linux-设备驱动概述

文章目录 Linux设备驱动概述1. 设备驱动的作用2. 无操作系统的设备驱动3. 有操作系统时的设备驱动4. Linux设备驱动4.1 设备的分类及特点4.2 Linux设备驱动与整个软硬件系统的关系4.3 Linux设备驱动的重难点 5. 源代码阅读6. 设备驱动:LED驱动6.1 无操作系统的LED驱…

Linux设备驱动和设备匹配过程

Linux设备驱动和设备匹配过程 1. 设备驱动匹配简述2. 重点结构体介绍2.1 struct device2.2 struct platform_device2.3 struct platform_driver2.4 struct device_driver 3. device端发起匹配:3.1 流程图3.2 start_kernel时候解析设备树3.2.1 start_kernel3.2.2 set…

Linux设备驱动之字符设备驱动

一、linux系统将设备分为3类:字符设备、块设备、网络设备。 应用程序调用的流程框图: 三种设备的定义分别如下, 字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需…

Linux设备驱动基础01:Linux设备驱动概述

目录 1. 设备驱动的作用 2. 有无操作系统时的设备驱动 2.1 无操作系统 2.1.1 硬件、驱动和应用程序的关系 2.1.2 单任务软件典型架构 2.2 有操作系统 2.2.1 硬件、驱动、操作系统和应用软件的关系 3. Linux设备分类 3.1 常规分类法 3.1.1 字符设备 3.1.2 块设备 3.…

Linux设备驱动模型

目录 一、linux设备驱动模型简介1、什么是设备驱动模型2、为什么需要设备驱动模型3、驱动开发的2个点 二、设备驱动模型的底层架构1、kobject2、kobj_type3、kset 三、总线式设备驱动组织方式1、总线2、设备3、驱动4、类5、总结 四、platform平台总线工作原理1、何为平台总线2、…

【linux内核分析与应用-陈莉君】字符设备驱动

目录 1.什么是字符设备 2.如何来描述字符设备 3 struct cdev与const struct file_operations之间的关系 4.struct file_operations源码 5.字符设备驱动框架 6.编写字符设备驱动的步骤 7.字符设备结构 8.字符设备驱动程序的注册 9.从系统调用到驱动程序 10.用户空间与内…

微信小程序云数据库使用讲解

第一步:注册开通 单击云开发 第二步:创建数据库 选择数据库,并点击号创建一个集合 输入名字 创建完毕后点击添加记录即可添加数据 数据库获取: 查询: 查询指令: