写在前面
这是一篇关于宽度学习的论文,下面的权当自己的笔记,有些英文为了自己好理解可能翻译的不准确,如果有什么错误望各位不吝赐教!!!
引言
尽管深层网络已经具有很强的逼近能力,但是大部分的网络因为大量的超参数和复杂的结构,训练过程的时间开销很大。并且复杂的结构不利于在理论上分析。为了训练深层的网络,会消耗很多的计算资源,而且,用传统基于梯度下降法进行参数学习,模型会受到超参数的影响,也容易陷入收敛缓慢和局部最优,因此有没有一种模型能够避免开销大这个问题?
作者在这篇论文中首先介绍了一下随机向量函数连接网络(RVFLNN),先上图:

就是这个图,现在看RVFLNN是有三层,最下面的一层叫输入层,中间的叫增强层,上面的叫输出层。先简单的解释一下这个网络,只有中间的一层具有非线性因素,增强节点是通过x经过 来计算得到的, 是随机生成的,而且保持不变,最后输入节点和增强节点都和输出节点两两连接。我们可以很明显的看到,这种网络有什么特点?比起那些深度网络,这个网络层数少很多。接下来,我们把增强节点放到和输入层一起的位置。如下图,我们还可以发现,这种网络结构的特点就是宽。

那么现在,我们用数学式子表示一下这个网络: 。其中 。这个网络,我们知道的有什么?显然,A已知,输出结果Y已知。因此,求出权重W,就意味着大功告成。显然 , 是A的伪逆,因为A不一定可逆,因此作者在这里用伪逆来算W。在这种扁平的网络中,伪逆可以说是解决权重的一个非常方便快捷的方法。
那么现在问题来了, 该怎么求?
这里先介绍一下奇异值分解(SVD)。关于奇异值分解参考:https://www.cnblogs.com/pinard/p/6251584.html这篇文章
一个矩阵A可以分解为如下形式:
上式中A是mn的矩阵,U是mm的矩阵,D是mn的矩阵,V是nn的矩阵。
U的求法:
如果我们将A的转置和A做矩阵乘法,那么会得到n×n的一个方阵 。对这个方阵 求出其特征值和特征向量,将其所有的特征向量组成一个矩阵,这个nn的矩阵就是V。一般我们将V中的每个特征向量叫做A的右奇异向量。
同理,如果我们将A和A的转置做矩阵乘法,就会得到一个mm的方阵 ,对此方阵求出其特征值和特征向量,本次求出的特征向量组成的矩阵,就是U矩阵。D矩阵除了奇异值,其余元素都是0。奇异值的求法就是 的特征值开根号。
那么,矩阵被分解以后,有什么性质呢?在D矩阵中,奇异值是从大到小往下排的,而且奇异值的减少特别的快,因此,我们就可以把比 小的奇异值都舍弃,就取比 大的奇异值,这样矩阵能够被简化。

如上图所示,我们可以将A这个较大的矩阵,用图中红色圈中的mr的小矩阵来表示,达到简化的目的。
的求法,《深度学习》这本书上(花书)有其介绍:

到这里为止,关键的伪逆根据公式可以求出来了,又W = Y,因此就可以得到W这个权重。为了得到更稳定的权重,那么作者采用了岭回归算法。

岭回归其实就是在最小二乘法的基础上,加了一个正则项,用最小二乘法要保证 可逆,因此加一个拉姆达来保证这个矩阵可逆。

到这里为止,如果一切进展顺利,这个网络已经能够预测新来的数据了。那么如果这个已经搞好的网络,不能够精准的逼近我们想要的结果怎么办?这个网络只有增强节点有非线性因素,因此,我们是不是可以加一个增强节点来达到我们想要的效果。

如上图所示,我们在已经训练好的网络中,添加一个a向量。那么 就变成了 。其中 = [ |a]。如此这般,权重就得重新求了,如果再像上述所说,再求 ,再用岭回归算法,那计算开销和深层神经网络也区别不大。因此论文中给出的公式,可以直接用上一次的伪逆,计算网络扩展后的伪逆,公式如下:

这个公式的推导,我是看的https://blog.csdn.net/itnerd/article/details/104360595这篇文章。推导这个公式的核心思想就是设一个矩阵,最后解方程组求解。
到此为止,我们关于随机向量函数连接网络(RVFLNN)的内容就介绍完了。宽度学习系统(BLS)其实是在随机向量函数连接网络(RVFLNN)的基础上,将原始的输入,转变成映射。很简单,就是用 这个式子来将输入变成特征映射。把原始输入X变成Z,这个结构就是宽度学习的基本结构。如下图:

宽度学习两种结构等价的证明
上面这个图,是宽度学习的一种结构,还有一种结构:

,我觉得论文中的图似乎不太直观,我简略的画一个图:

第一种结构简略图如下:

那么这两种结构区别是显而易见,就是增强节点的计算,一种结构是根据所有映射节点来计算一个增强节点,而另一种结构是根据一组映射节点计算一个增强节点。之后作者证明了这两种结构在满足一定条件下是等价的,证明如下:
我们先看第一种方式:我们记某组映射节点为 ,i从1...n,每组有k维。那么很明显共有nk个节点。增强节点为 ,j从1...m,每组有q维度。很明显共有qm个增强节点。
同理,第二种方式某组映射节点为 ,i从1...n,每组有k维。增强节点为 ,j从1...n,每组有 维度。
那么,如果qm = n ,那么,这两种结构就是等价的。显然,满足这个条件了,说明增强节点的规模是一样大了,那么只需要证明任意一个对应的增强节点都等价,那么整个网络就等价。
我们记 是输入数据中的任意一个样本,显然它是一个一维的横向量。 (权重和偏置)都是随机从同一个高斯分布中采样的数据。那么,先看第一种方式,任意一个与 相关的增强节点可以表示如下:
 (先将 经过映射,再经过增强)
上式中各项代表的东西可以具体看论文中的解释,论文中很明确的解释了。

从上一步到到这一步很容易,将两个向量相乘即可得到。

这一步的约等于,其实可以根据意思来理解,
这个式子很容易看出来,小标都带着 ,说明这里参与计算的权重和偏置都是与 相关的,而下一步
却不再含有小标 ,这里的权重和偏置都是重新从高斯分布中采样出来的,既然都是从高斯分布中取出来的,那就不能相等,而是约等于。

由特殊换成一般,与任意一个样本 相关的增强节点,都可以按照上面这个公式来计算。
第一种方式求得了,那么第二种方式同理

我用红框圈住的部分,应该是有错。
所以两种方式求增强节点就有如下关系

显然,如果使用归一化,是完全等价的。举个简单的例子,一组数是(1,2,3,4),另一组数是(2,4,6,8)。如果使用归一化,

那么第一组数就成了(0,1/3,2/3,1),第二组也是(0,1/3,2/3,1)。显然等价
介绍完基本的宽度学习结构以后,再来介绍一下宽度学习的增量学习。增量学习也分三种情况,下面一一介绍。
增量学习
(1)添加增强节点
我们的宽度学习网络不再能够满足我们的需要的准确率时候,我们可以通过增强节点来更好的逼近,上面已经介绍过增加一列a
怎么求 的伪逆,因此在这里可以直接以此类推:

(2)添加映射节点
当增强节点的添加,不能够使网络有很好的效果时候,或许是特征提取没有做好,那么我们就可以增加映射节点。同理,增加后的新矩阵的伪逆以此类推:

(3)增加新的数据
新的数据来临,这是很正常的情况,怎么通过新来的数据继续更新权重,以此类推:

网络的简化
当我们在增加增强节点,映射节点后,可能达到了我们想要的效果,但是也增加了网络冗余的风险。那么怎么对网络进行一定的简化,用到的便是上面介绍的SVD来简化。
简化网络结构又分四种情况:
(1)简化映射节点

上角标带P的,表示的是取前r个奇异值的简化后的矩阵。
(2)简化已经计算好的增强节点
下面的式子以此类推,达到简化的效果。

(3)简化新增一个增强节点的网络

因为是新增的增强节点,所以简化完成后还没完事,还要进行增量学习。
(3)简化完成后的网络

实验

这是实验中的一部分,我们可以很明显的看到宽度学习的高效。
写在最后
本篇文章,其实还有稀疏编码器,ADMM算法解决lasso问题,软阈子公式没有详细介绍,我觉得这篇文章包含的东西十分广博,整篇论文值得我学习的地方确实还有很多,即使写这篇博客的过程中,我又有了新的收获,温故而知新,可以为师矣。我在这篇论文中的理解还有欠缺,多回头总结,十分有必要。真心要感谢我导,感谢实验室的各位兄弟姐妹帮助我解决问题。
参考的一些文章如下:
admm算法、lasso回归、软阈子公式:
https://zhuanlan.zhihu.com/p/106896627
https://zhuanlan.zhihu.com/p/103161094
分块矩阵求伪逆:
https://blog.csdn.net/itnerd/article/details/104360595
总体结构
https://blog.csdn.net/Liangjun_Feng/article/details/80541689 |