使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

简介: 使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥



🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。



⛳ 座右铭:行百里者,半于九十。


📋 📋 📋 本文目录如下: 🎁 🎁 🎁

目录

💥1 概述

1.1第一代神经网络

1.2 第二代神经网络:BP 神经网络

1.3 第三代神经网络:脉冲神经网络

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码实现


💥1 概述

脉冲神经网络简介:


脉冲神经网络 (SNN) 属于第三代神经网络模型,实现了更高级的生物神经模拟水平。除了神经元和突触状态之外,SNN 还将时间概念纳入了其操作之中,是一种模拟大脑神经元动力学的一类很有前途的模型。


那么什么是第一代和第二代神经网络模型呢?


1.1第一代神经网络

第一代神经网络又称为感知器,在1950年左右被提出来,它的算法只有两层,输入层输出层,主要是线性结构。它不能解决线性不可分的问题,对稍微复杂一些的函数都无能为力,如异或操作。


1.2 第二代神经网络:BP 神经网络

为了解决第一代神经网络的缺陷,在1980年左右 Rumelhart、Williams 等人提出第二代神经网络多层感知器 (MLP)。和第一代神经网络相比,第二代在输入层之间有多个隐含层的感知机,可以引入一些非线性的结构,解决了之前无法模拟异或逻辑的缺陷。


第二代神经网络让科学家们发现神经网络的层数直接决定了它对现实的表达能力,但是随着层数的增加,优化函数愈发容易出现局部最优解的现象,由于存在梯度消失的问题,深层网络往往难以训练,效果还不如浅层网络。


所有对目前机器学习有所了解的人都听说过这样一个事实:目前的人工神经网络是第二代神经网络。它们通常是全连接的,接收连续的值,输出连续的值。尽管当代神经网络已经让我们在很多领域中实现了突破,但它们在生物学上是不精确的,其实并不能模仿生物大脑神经元的运作机制。


1.3 第三代神经网络:脉冲神经网络

第三代神经网络,脉冲神经网络 (Spiking Neural Network,SNN) ,旨在弥合神经科学和机器学习之间的差距,使用最拟合生物神经元机制的模型来进行计算,更接近生物神经元机制。脉冲神经网络与目前流行的神经网络和机器学习方法有着根本上的不同。SNN 使用脉冲——这是一种发生在时间点上的离散事件——而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。


📚2 运行结果


8e7ed3e454acb214275008c949e1b8b6.png

1f3ec92a65eaeb5160cc3502b7ec007f.png

1228dd53aae5dfda5b5a8ff40f5dce65.png

091571055a1290da5e263095a1a6185f.png

b2326d10b8b458cd35a3e2734587188e.png

6582e4ac89cb96578c216195bc675ca9.png

17257e10aa1cd1ae6a283e64aa9931cc.png


主函数部分代码:

clear all​close all​clc​​​%% Fixed parameters across all simulations​dt = 0.00001; %time step ​N = 2000; %Network Size​td = 0.02; %decay time ​tr = 0.002; %Rise time ​%% ​T = 15; tmin = 5; tcrit = 10; nt = round(T/dt); tx = (1:1:nt)*dt;  xz = sin(2*tx*pi*5)'; G = 10; Q = 10^4; ​​​%% ​m = min(size(xz)); %dimensionality of teacher ​E = Q*(2*rand(N,m)-1); %encoders​BPhi = zeros(N,m);  %Decoders​%% Compute Neuronal Intercepts and Tuning Curves ​initial = 0;​p = 0.1; %Sparse Coupling ​OMEGA = G*randn(N,N).*(rand(N,N)<p)/(sqrt(N)*p); %Random initial weight matrix ​​​%Set the sample row mean of the weight matrix to be 0 to strictly enforce​%balance.  ​for i = 1:1:N ​    QS = find(abs(OMEGA(i,:))>0);​    OMEGA(i,QS) = OMEGA(i,QS) - sum(OMEGA(i,QS))/length(QS);​end​​​%% Storage Matrices and Initialization ​store = 10; %don't store every time step, saves time.  ​current = zeros(nt,m);  %storage variable for output current ​IPSC = zeros(N,1); %post synaptic current ​h = zeros(N,1); r = zeros(N,1); hr = zeros(N,1); ​JD = 0*IPSC;​​​vpeak = pi; %peak and reset​vreset = -pi; ​v = vreset + (vpeak-vreset)*rand(N,1); %initialze voltage ​v_ = v; %temporary storage variable for integration ​​​j = 1;​time = zeros(round(nt/store),1);​RECB = zeros(5,round(2*round(nt/store)));​REC = zeros(10,round(nt/store));​tspike = zeros(8*nt,2);​ns = 0;​tic​SD = 0; ​BPhi = zeros(N,m);​z = zeros(m,1);plot(tx(1:1:i),xz(1:1:i,:),'k','LineWidth',2), hold on​plot(time(1:1:j),current(1:1:j,:),'b--','LineWidth',2), hold off​xlim([dt*i-1,dt*i])​xlabel('Time')​ylabel('x(t)') ​figure(2)​plot(time(1:1:j),RECB(1:5,1:1:j),'.') ​xlabel('Time')​ylabel('\phi_j') ​​​figure(3)​plot(tspike(1:1:ns,2), tspike(1:1:ns,1),'k.')​ylim([0,100])​xlabel('Time')​ylabel('Neuron Index')​end


🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]李连江. 基于GPU的脉冲神经网络学习研究[D].华中科技大学,2015.


👨‍💻4 Matlab代码实现


相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
703 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
7月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
1140 56
|
11月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
548 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
5月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
589 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
6月前
|
数据采集 算法 前端开发
MATLAB|基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]
MATLAB|基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]
247 2
|
6月前
|
机器学习/深度学习 数据采集 边缘计算
【非侵入式负载监测】低采样率电动汽车充电的无训练非侵入式负载监测(Matlab代码实现)
【非侵入式负载监测】低采样率电动汽车充电的无训练非侵入式负载监测(Matlab代码实现)
115 6
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
505 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
机器学习/深度学习 文件存储 异构计算
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
1269 18
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
|
机器学习/深度学习 数据可视化 API
DeepSeek生成对抗网络(GAN)的训练与应用
生成对抗网络(GANs)是深度学习的重要技术,能生成逼真的图像、音频和文本数据。通过生成器和判别器的对抗训练,GANs实现高质量数据生成。DeepSeek提供强大工具和API,简化GAN的训练与应用。本文介绍如何使用DeepSeek构建、训练GAN,并通过代码示例帮助掌握相关技巧,涵盖模型定义、训练过程及图像生成等环节。
|
机器学习/深度学习 文件存储 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
319 1