宽度学习(Broad Learning System)

宽度学习(Broad Learning System)宽度学习系统(BLS)一词的提出源于澳门大学科技学院院长陈俊龙于2018年1月发表的《BroadLearningSystem:AnEffectiveandEfficientIncrementalLearningSystemWithouttheNeedforDeepArchitecture》

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述

一、宽度学习的前世今生

宽度学习系统(BLS) 一词的提出源于澳门大学科技学院院长陈俊龙和其学生于2018年1月发表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,VOL. 29, NO. 1 的一篇文章,题目叫《Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture 》。文章的主旨十分明显,就是提出了一种可以和深度学习媲美的宽度学习框架。

为什么要提出宽度学习? 众所周知,深度学习中最让人头疼之处在于其数量庞大的待优化参数,通常需要耗费大量的时间和机器资源来进行优化。

宽度学习的前身实际上是已经被人们研究了很久的随机向量函数链神经网络 random vector functional-link neural network (RVFLNN),如图所示:
在这里插入图片描述
咋一看这网络结构没有什么奇特之处,其实也对,就是在单层前馈网络(SLFN)中增加了从输入层到输出层的直接连接。网络的第一层也叫输入层,第二层改名了,叫做增强层,第三层是输出层。具体来看,网络中有三种连接,分别是

  • (输入层 => 增强层)加权后有非线性变换
  • (增强层 => 输出层)只有线性变换
  • (输入层 => 输出层)只有线性变换

所以在RVFLNN中只有增强层 是真正意义上的神经网络单元,因为只有它带了激活函数,网络的其他部分均是线性的。下面我们将这个网络结构扭一扭:
在这里插入图片描述
当我们把增强层和输入层排成一行时,将它们视为一体,那网络就成了由 A(输入层+增强层)到 Y 的线性变换了!线性变换对应的权重矩阵 W 就是 输入层加增强层输出层 之间的线性连接!!

这时你可能要问:那输入层到增强层之间的连接怎么处理/优化?我们的回答是:不管它!!! 我们给这些连接随机初始化,固定不变!

如果我们固定输入层到增强层之间的权重,那么对整个网络的训练就是求出 A 到 Y 之间的变换 W,而 W 的确定非常简单: W = A − 1 Y W = A^{-1}Y W=A1Y
输入 X 已知,就可以求出增强层 A;训练数据的标签已知,就知道了 Y。接下来的学习就是一步到位的事情了。

为什么可以这样做?
深度学习费了老劲把网络层数一加再加,就是为了增加模型的复杂度,能更好地逼近我们希望学习到的非线性函数,但是不是非线性层数越多越好呢?理论早就证明单层前馈网络(SLFN)已经可以作为函数近似器了,可见增加层数并不是必要的。RVFLNN也被证明可以用来逼近紧集上的任何连续函数,其非线性近似能力就体现在增强层的非线性激活函数上,只要增强层单元数量足够多,要多非线性有多非线性!

二、宽度学习系统(BLS)

在这里插入图片描述
之前介绍的是RVFLNN,现在来看BLS,它对输入层做了一点改进,就是不直接用原始数据作为输入层,而是先对数据做了一些变换,相当于特征提取,将变化后的特征作为原RVFLNN的输入层,这样做的意义不是很大,只不过想告诉你:宽度学习可以利用别的模型提取到的特征来训练,即可以可别的机器学习算法组装。现在我们不把第一层叫做输入层,而是叫它特征层

当给定了特征 Z,直接计算增强层 H,将特征层和增强层合并成 A=[Z|H],竖线表示合并成一行。由于训练数据的标签 Y 已知,计算权重 W = A − 1 Y W = A^{-1}Y W=A1Y 即可。实际计算时,使用岭回归 来求解权值矩阵,即通过下面的优化问题来解W(其中 σ 1 = σ 2 = v = u = 2 \sigma_1=\sigma_2=v=u=2 σ1=σ2=v=u=2):
在这里插入图片描述
解得
在这里插入图片描述
以上过程是一步到位,即当数据固定,模型结构固定,可以直接找到最优的参数 W

然而在大数据时代,数据固定是不可能的,数据会源源不断地来。模型固定也是不现实的,因为时不时需要调整数据的维数,比如增加新的特征。这样一来,就有了针对以上网络的增量学习算法。注意,宽度学习的核心在其增量学习算法,因为当数据量上亿时,相当于矩阵 ZX 有上亿行,每次更新权重都对一个上一行的矩阵求伪逆 是不现实的!

增量学习的核心就是,利用上一次的计算结果,和新加入的数据,只需少量计算就能得进而得到更新的权重。
在这里插入图片描述
例如:当我们发现初始设计的模型拟合能力不够,需要增加增强节点数量来减小损失函数。这时,我们给矩阵 A 增加一列 a,表示新增的增强节点,得到[A|a],这时要计算新的权值矩阵,就需要求 [ A ∣ a ] − 1 [A|a]^{-1} [Aa]1,于是问题就转化成分块矩阵的广义逆问题,得到了 [ A ∣ a ] − 1 [A|a]^{-1} [Aa]1,则更新的权重为 W n e w = [ A ∣ a ] − 1 Y W_{new} = [A|a]^{-1}Y Wnew=[Aa]1Y,具体解形式如下,可以看到, W n + 1 W_{n+1} Wn+1中用到了更新之前的权值矩阵 W n W_{n} Wn,因而有效地减少了更新权重的计算量。
在这里插入图片描述
第一次计算权值是用的是 岭回归 算法,因为有迭代过程,可能计算时间稍长。但是第二次、三次……计算时都只涉及矩阵的乘法,所以权值矩阵的更新是非常迅速。相比深度学习的反复训练,时常陷入局部最优无法自拔,宽度学习的优势非常明显。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143186.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 淘宝、天猫、京东、苏宁等平台抢购脚本

    淘宝、天猫、京东、苏宁等平台抢购脚本淘宝、天猫、京东、苏宁等平台抢购脚本扫码添加“SevenBlog”公众号,获取更多好玩脚本进入正题:建议使用Chrome浏览器1、安装浏览器插件,Ghelper(需要注册账号)打开浏览器扩展程序,并且打开开发者模式,将下载好的Ghelper解压,然后添加已解压的扩展程序2、浏览器地址栏输入chrome://apps/,并打开下面的网上应用店…

  • 什么是WSDL_wsdl文件详解

    什么是WSDL_wsdl文件详解WSDL(网络服务描述语言,WebServicesDescriptionLanguage)是一门基于XML的语言,用于描述WebServices以及如何对它们进行访问。wsdl:definitionsname=”nmtoken”?targetNamespace=”uri”>importnamespace=”uri”location=”uri”/>*

    2022年10月23日
  • 电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范[通俗易懂]

    电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范[通俗易懂]中华人民共和国国家标准电子计算机机房设计规范中华人民共和国国家标准电子计算机机房设计规范GB50174-93(1993年2月17日国家技术监督局、中华人民共和国建设部联合发布1993年9月1日实施)——————————————————————————–第一章总则第1.0.1条为了使电子…

  • Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!

    Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!本文章是Unity与SO交互的内容,详细的将每一步都做了介绍,生成一个so文件其实很简单!该专栏还有多篇优质内容在等待你观看。

  • idea2022.01.13激活码【最新永久激活】2022.02.24

    (idea2022.01.13激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • nvidia显卡无法弹出或拔出_英伟达控制面板显示未连接到gpu

    nvidia显卡无法弹出或拔出_英伟达控制面板显示未连接到gpu上个月在新入手的笔记本上安装了一个CUDA的开发环境,并选择安装了GeForceExperience工具,前两天打开GeForceExperience工具浏览时,工具提醒可以更新NVIDIA显卡驱动,于是便勾选并更新了NVIDIA显卡驱动,更新完成之后就没管它,也没有再使用过CUDA开发环境,直到昨天打开CUDA开发环境准备调试一个应用程序时,突然弹出错误提示框:       

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号