一、宽度学习的前世今生

宽度学习系统(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−1YW = A^{-1}YW=A−1Y
输入 X 已知,就可以求出增强层 A;训练数据的标签已知,就知道了 Y。接下来的学习就是一步到位的事情了。

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

二、宽度学习系统(BLS)


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

当给定了特征 Z,直接计算增强层 H,将特征层和增强层合并成 A=[Z|H],竖线表示合并成一行。由于训练数据的标签 Y 已知,计算权重 W=A−1YW = A^{-1}YW=A−1Y 即可。实际计算时,使用岭回归 来求解权值矩阵,即通过下面的优化问题来解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}[A∣a]−1,于是问题就转化成分块矩阵的广义逆问题,得到了[A∣a]−1[A|a]^{-1}[A∣a]−1,则更新的权重为 Wnew=[A∣a]−1YW_{new} = [A|a]^{-1}YWnew​=[A∣a]−1Y,具体解形式如下,可以看到,Wn+1W_{n+1}Wn+1​中用到了更新之前的权值矩阵WnW_{n}Wn​,因而有效地减少了更新权重的计算量。

第一次计算权值是用的是 岭回归 算法,因为有迭代过程,可能计算时间稍长。但是第二次、三次……计算时都只涉及矩阵的乘法,所以权值矩阵的更新是非常迅速。相比深度学习的反复训练,时常陷入局部最优无法自拔,宽度学习的优势非常明显。

宽度学习(Broad Learning System)相关推荐

  1. 宽度学习代码的一些问题

    最近在拜读陈院士的宽度学习论文,受益匪浅,在此先感谢陈院士团队的开源代码! 在复现代码的过程中,发现了一些小问题,在此记录,方便自己日后翻阅. 此博客仅代表个人观点,姑且算作个人读书笔记. [1] C ...

  2. Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”

    Coursera公开课笔记: 斯坦福大学机器学习第十一课"机器学习系统设计(Machine learning system design)" 斯坦福大学机器学习斯坦福大学机器学习第 ...

  3. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 2)

    机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) - tony的专栏 - 博客频道 - CSDN.NET 注:机器学习资料篇目一共 ...

  4. 【深度学习Deep Learning】资料大全

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习, ...

  5. 机器学习(Machine Learning)深度学习(Deep Learning)资料汇总

    本文来源:https://github.com/ty4z2008/Qix/blob/master/dl.md 机器学习(Machine Learning)&深度学习(Deep Learning ...

  6. 深度学习Deep Learning 资料大全

    转自:http://www.cnblogs.com/charlotte77/ [深度学习Deep Learning]资料大全 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: ...

  7. 机器学习(Machine Learning)深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  8. 机器学习(Machine Learning)深度学习(Deep Learning)资料集合

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 原文链接:https://github.com/ty4z2008/Qix/blob/master/dl ...

  9. 大量机器学习(Machine Learning)深度学习(Deep Learning)资料

    机器学习目前比较热,网上也散落着很多相关的公开课和学习资源,这里基于课程图谱的机器学习公开课标签做一个汇总整理,便于大家参考对比. 1.Coursera上斯坦福大学Andrew Ng教授的" ...

  10. 简略阅读《Guiding Deep Learning System Testing using Surprise Adequacy》

    Guiding Deep Learning System Testing using Surprise Adequacy Abstract 深度学习(DL)系统正迅速被应用于安全和安全关键领域,迫切需 ...

最新文章

  1. 2019年上半年收集到的人工智能Python编程干货文章
  2. Linux 配置多个Tomcat
  3. 特征选择--文本分类: 信息增益
  4. java的json解析工具_json文件解析工具类(java)
  5. 47、Windows驱动程序模型笔记(五),内存管理
  6. 实际中的WebRTC:STUN,TURN以及信令(五)
  7. 【概率与期望】[UVA11021]Tribles
  8. TensorFlow.js快速入门
  9. select2实现全选
  10. (STL,set,priority_queue)丑数
  11. 使用saltstack编译安装nginx
  12. [转载]百分之百自动登录2345王牌技术员联盟源代码(delphi)
  13. 苹果电脑硬盘数据丢失后如何恢复?
  14. Kde桌面程序启动器程序图标无法显示
  15. android 模拟点击menu键,android编程之menu按键功能实现方法
  16. 常见通信协议与通讯协议梳理- 通讯协议
  17. CSS--实心小圆点样式
  18. 天刀霸王枪服务器怎么维护了,1月31日服务器例行维护公告(已完成)
  19. 华为鸿蒙harmonyos-面向全场,华为鸿蒙 OS 下月发布?别做梦了……
  20. 数据结构《顺序栈》知识点详解+C语言完整代码-超详细

热门文章

  1. java启动tomcat9闪退
  2. 迈普交换机中断计算机网络,迈普3100交换机配置命令大全
  3. 【校招VIP】产品行测之逻辑计算题
  4. 面向程序员的精品开源字体
  5. 一些常用的Maven命令的作用
  6. vue判断设备是手机端还是pc端
  7. html中pc端与移动端区别,pc端是什么意思?pc端和移动端有什么区别
  8. VUE源码解析(持续更新)
  9. win10 32位和64位的区别,win10 32位和64位有什么区别
  10. CSS基础知识——常用基础命令