随机向量函数链神经网络(RVFLNN)简介——附测试代码

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

函数链神经网络(Functional-link neural network,简称FLNN)的结构如下图。
From Learning and generalization characteristics of the random vector Functional-link net

和深度神经网络结构不同的是,FLNN相当于把隐层放到了输入层中,作为增强结点(Enhancement nodes)。也可以理解成FLNN在输入层就对输入向量进行了非线性变换。作为简洁的扁平网络结构,RVFLNN在监督学习时训练时更快,并且能够在已知有限训练次数内收敛于最优解。

结构分析

假设一个RVFLNN结构有 N N N个原输入节点和 J J J个增强节点。
其中各个节点的权重为 W = [ β 1 , β 2 , ⋯   , β N , β N + 1 , ⋯   , β N + J ] \mathbf{W}=[\beta_1,\beta_2,\cdots,\beta_N,\beta_{N+1},\cdots,\beta_{N+J}] W=[β1,β2,,βN,βN+1,,βN+J]
原输入节点经过线性组合加上偏置项作为第 i i i个增强节点的输入值 θ i = A i X T + b i \theta_i=\mathbf{A_iX^\mathsf{T}}+b_i θi=AiXT+bi A i , b i \mathbf{A_i},b_i Ai,bi是以随机方式生成,原则上需要避免激活后的值落在激活函数的饱和区间。
原输入节点和经过激活(非线性变换)的增强节点构成了输入层 d = [ δ 1 , δ 2 , ⋯   , δ N , δ N + 1 , ⋯   , δ N + J ] \mathbf{d}=[\delta_1,\delta_2,\cdots,\delta_N,\delta_{N+1},\cdots,\delta_{N+J}] d=[δ1,δ2,,δN,δN+1,,δN+J]

在输出为一个标量时, o = W d T o=\mathbf{Wd^\mathsf{T}} o=WdT。(输出为多个标量时同理)

共轭梯度(Conjugate Gradient)训练

训练过程可以定义为让误差最小化: E = 1 2 P ∑ p = 1 P ( t p − W d T p ) 2 E=\frac{1}{2P}\sum_{p=1}^P (t_p-\mathbf{W}\mathbf{d^\mathsf{T}}_p)^2 E=2P1p=1P(tpWdTp)2其中 p p p是训练样本编号, t p t_p tp是第 p p p个训练样本目标值。

将多个训练样本写成矩阵形式,目标值向量 t = [ t 1 , t 2 , ⋯   , t P ] \mathbf{t}=[t_1,t_2,\cdots,t_P] t=[t1,t2,,tP],输入向量组成了输入矩阵 D = [ d 1 , d 2 , ⋯   , d P ] \mathbf{D}=[\mathbf{d}_1,\mathbf{d}_2,\cdots,\mathbf{d}_P] D=[d1,d2,,dP],上述式子也可以写成 E = 1 2 P ( t − W D T ) ( t − W D T ) T E=\frac{1}{2P}(\mathbf{t}-\mathbf{WD^\mathsf{T}})(\mathbf{t}-\mathbf{WD^\mathsf{T}})^\mathsf{T} E=2P1(tWDT)(tWDT)T
通过求导得到
r = ∂ E ∂ W = − 1 p ( t − W D ) D T \mathbf{r}=\frac{\partial E}{\partial \mathbf{W}}=-\frac{1}{p}(\mathbf{t}-\mathbf{WD})\mathbf{D}^\mathsf{T} r=WE=p1(tWD)DT

求解最优解可以使用共轭梯度法避免Zig-Zag问题带来的时间浪费:
W λ + 1 = W λ + η s λ s λ = − r λ + ∣ ∣ r λ ∣ ∣ 2 ∣ ∣ r λ − 1 ∣ ∣ 2 s λ − 1 \mathbf{W}_{\lambda+1}=\mathbf{W}_{\lambda}+\eta \mathbf{s}_\lambda\\\mathbf{s}_\lambda=-\mathbf{r}_\lambda+\frac{||\mathbf{r}_\lambda||^2}{||\mathbf{r}_{\lambda-1}||^2}\mathbf{s}_{\lambda-1} Wλ+1=Wλ+ηsλsλ=rλ+rλ12rλ2sλ1其中 s 0 = r 0 \mathbf{s}_0=\mathbf{r}_0 s0=r0
λ = K ≤ N + J \lambda=K\leq N+J λ=KN+J时,可以得到最优权重矩阵 W \mathbf{W} W

测试

对正弦函数 y = sin ⁡ ( x ) y=\sin(x) y=sin(x)随机采样

def sin_generation(size=10):
    X = np.random.uniform(low=-6.28,high=6.28,size=size)
    Y = np.sin(X)
    return X,Y


训练结果:

Enhancement Nodes = 300 
Epoch=12300
MAError=0.09811056069650284
Time=0:00:00.434139 (用笔记本的CPU训练的,确实很快)

在这里插入图片描述
代码:
https://github.com/t170815518/BroadLearningSystemFrame/tree/master/RVFLNN


参考资料
Learning and generalization characteristics of the random vector Functional-link net (1994), Yoh-Han Pao, Gwang-HoonPark and Dejan J. Sobajic

  • 13
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值