宽度学习笔记
- 随机向量函数链接网络(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^{+} An和An+的情况下,得到 A n + 1 = A n ∣ a A_{n+1}={A_{n}|a} An+1=An∣a( a a a是 A A A增强层增加的节点)的伪逆 A n + 1 + A_{n+1}^+ An+1+
Greville 定理
此定理用于解决分块矩阵求伪逆
-
定理内容
设 A ∈ C m ∗ n A \in C^{m*n} A∈Cm∗n,记 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=Ak−1+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=ak−Ak−1dk=ak−Ak−1Ak−1+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+=[Ak−1+−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)−1dTAk−1+(ck=0) -
定理证明
略
宽度学习系统(Broad Learning System)
数据处理
- 稀疏自动编码器

我们希望能够提取原先一堆输入中的特征,也就是对原先数据参数进行降维的操作。例如原先输入参数有785个,我们通过sparse autoencoder来使得输入参数降维10个。方法就是构建一个只有一个隐藏层的网络,输入层和输出层都是训练样本。我们只需要得到从输入层到隐藏层的权值矩阵即可。
简单BLS
首先考虑无增量学习的BLS,我们只需要输入参数和特征节点全部放在输入层即可,然后通过岭回归计算得到的权值。
这里唯一需要注意的是特征节点(增强层)权值的设置有两种方法,也就是对于每个节点对应的权值相同或者不同,如下图:


实际上这两种随机权值的设置方法对后面的结果均无影响

增强节点的增量学习
网络结构不可能永远一成不变,我们在得到一个并不满意的结构后,希望能够增加增强层的节点数量来优化我们的网络结构。

由前面增量学习的知识可知,我们不需要重新计算一遍权值的伪逆,只需要在前面的结果上面迭代得到新的伪逆。
对于 A m = [ Z n ∣ H m ] A^m=[Z^n|H^m] Am=[Zn∣Hm],我们有新的 A m + 1 = [ A m ∣ a ] A^{m+1}=[A^m|a] Am+1=[Am∣a],由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)+=[Am−dbTbT]
其中
d = ( A m ) + a d=(A^m)^+a d=(Am)+a
c = a − A m d c=a-A^md c=a−Amd
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)−1dTAk−1+(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)+−BDT∣B]
其中 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=AxT−DTAnm
SVD
首先我们知道对于方阵 A A A来说,我们可以将 A A A分解为 A = W ∑ W T A=W\sum W^T A=W∑WT,其中 W W W是 A A A对应特征向量的矩阵, ∑ \sum ∑是特征值构成对角线的矩阵。
对于非方阵 A m ∗ n A_{m*n} Am∗n而言,我们也希望它有这样的分解,显然有 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进行降维处理,简化数据。
















