目录

  • 随机向量函数链神经网络(RVFLNN)
    • 结构分析
    • 共轭梯度(Conjugate Gradient)训练
    • 测试

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

函数链神经网络(Functional-link neural network,简称FLNN)的结构如下图。

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

结构分析

假设一个RVFLNN结构有NNN个原输入节点和JJJ个增强节点。
其中各个节点的权重为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​]。
原输入节点经过线性组合加上偏置项作为第iii个增强节点的输入值θi=AiXT+bi\theta_i=\mathbf{A_iX^\mathsf{T}}+b_iθi​=Ai​XT+bi​;Ai,bi\mathbf{A_i},b_iAi​,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=WdTo=\mathbf{Wd^\mathsf{T}}o=WdT。(输出为多个标量时同理)

共轭梯度(Conjugate Gradient)训练

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

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

求解最优解可以使用共轭梯度法避免Zig-Zag问题带来的时间浪费:
Wλ+1=Wλ+ηsλsλ=−rλ+∣∣rλ∣∣2∣∣rλ−1∣∣2sλ−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λ−1​∣∣2∣∣rλ​∣∣2​sλ−1​其中s0=r0\mathbf{s}_0=\mathbf{r}_0s0​=r0​。
当λ=K≤N+J\lambda=K\leq N+Jλ=K≤N+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

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

  1. 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)

    目录 1. 交换变量 2. 集合去重 3. 列表推导.集合推导和字典推导 4. 统计字符串中各个字符出现的次数 5.优雅地打印JSON数据 6.行内的if语句 6. 符合正常逻辑的数值比较 7. 田忌 ...

  2. 三种方式获取大疆照片的EXIF/XMP信息(附测试代码)

    目录 软件方式 在线方式 Python方式 第一种:pyexiv2 第二种:pyexif 测试代码:三种方式获取大疆照片的EXIF/XMP信息(附测试代码) - 小锋学长生活大爆炸 (xfxuezha ...

  3. 沃拼图游戏软件测试,超完整的手机拼图游戏附测试代码本科毕业论文.doc

    超完整的手机拼图游戏附测试代码本科毕业论文 本 科 毕 业 设 计 设 计 题 目 基于J2ME手机拼图游戏的关键技术研究与实现 姓名(学号) 系 别 专 业 通信工程 导 师 姓 名 二○一二 年 ...

  4. 【BP分类】基于鸟群算法优化BP神经网络实现数据分类附matlab代码

    1 简介 ​BSA 算法优化 BP 神经网络的基本思想是: 利 用 BSA 算法的全局搜索能力, 优化 BP 神经网络初始的权值和阈值, 也就是决策变量, 其中每一组决策变量均包含在鸟群个体所处的空间 ...

  5. 机器学习随机森林实战:声纳信号分类(附python代码保姆级解析)

    随机森林是一种很常用的机器学习算法,"随机"表示每棵树的训练样本随机以及训练时的特征随机.         训练形成的多棵决策树形成了"森林",计算时我们把每棵 ...

  6. Windows/Linux TCP Socket网络编程简介及测试代码

    典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中.当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字(socket)读出和写入数据在彼此 ...

  7. FFmpeg中libswresample库简介及测试代码

    libswresample库功能主要包括高度优化的音频重采样.rematrixing和样本格式转换操作. 以下是测试代码(test_ffmpeg_libswresample.cpp),对音频了解较少, ...

  8. FFmpeg中libswscale库简介及测试代码

    libswscale库功能主要包括高度优化的图像缩放.颜色空间和像素格式转换操作. 以下是测试代码(test_ffmpeg_libswscale.cpp): #include "funset ...

  9. FFmpeg中libavutil库简介及测试代码

    libavutil是一个实用库,用于辅助多媒体编程.此库包含安全的可移植字符串函数.随机数生成器.数据结构.附加数学函数.加密和多媒体相关功能(如像素和样本格式的枚举).libavcodec和liba ...

  10. Go语学习笔记 - websocket gorilla(附测试代码) | 从零开始Go语言

    目录 项目结构 消息结构 服务端代码 定义客户端行为 服务启动 测试代码 总结 学习笔记,写到哪是哪. websocket也是常用的协议了,在上一篇中主要测试使用了一下grpc. 下面我会把代码贴出来 ...

最新文章

  1. hdu2371 矩阵乘法(求序列位置改变m次后的序列)
  2. 点(Dot)与像素(Pixel)的区别
  3. Java 13,最新最全新特性解读
  4. Python 程序 可以一直输入 quit_从零开始学Python - 第002课:第一个Python程序
  5. mysqldump备份数据不锁表的加参数方法及原理分析
  6. 【海报设计灵感】潮翻天的波普艺术海报设计
  7. eclipse上新建Maven项目报错及解决
  8. linux下查看文件inode,Linux下如何寻找相同文件?
  9. 安卓rom制作教程_【教程】一加5/5T刷入第三方ROM教程
  10. jabber服务器_最近JavaScript Jabber播客-Microsoft(而非Microsoft)和Web
  11. 两个音轨合并_技能!如何合并两个音频文件?
  12. Wavefront公司的.obj文件格式及.mtl文件格式
  13. Oracle基础包之DBMS_RLS(八)
  14. EFR32 xG1x的bootloader被擦除
  15. Linux下安装RTX腾讯通
  16. 英文歌曲初恋《heartbeats》 心跳
  17. 《javascript语言精粹》读书笔记——函数
  18. 现在的年轻人怎么了?
  19. 云网融合个人浅析(二)
  20. 什么是嵌入式编程?如何入门和提高?

热门文章

  1. 2022-2027年中国百元酒店行业市场全景评估及发展战略规划报告
  2. IMEI IMSI和ICCID
  3. 国内知名流程管理软件-汇总介绍
  4. Mac解决docker kubernetes一直starting
  5. 系统与漏洞的风云人物
  6. 计算机内打不开小米路由器,小米路由器登录界面打不开怎么办?
  7. java变量不声明可以直接使用吗_Java基础_变量的声明与使用
  8. 电子电路设计中的脉冲电路详解
  9. 常用Nginx反向代理配置
  10. M-Arch(12)第十一个示例:如何用无源蜂鸣器播放音乐