脉冲神经网络及有监督学习算法Tempotron
接下来一段时间开启脉冲神经网络模型的探索之旅。脉冲神经网络有更强的生物学基础,尽可能地模拟生物神经元之间的连接和通信方式。其潜在能力较强,值得踏进一步探索。

构建脉冲神经网络模型,至少需要考虑三点:
1. 外界刺激编码
2. 构建神经元模型
3. 制定学习规则
外界刺激的编码方式主要有Rate Coding和Temporal Coding等,这里不在细述。而Hodgkin和Huxley两位研究员早在1952年就提出了第一个神经元模型:HH[1]。随后陆续有各种神经元模型被提出,其中具有代表性的为Izhikevich模型[2]和LIF(Leaky-Integrate-and-Fire)模型[3]。
以LIF神经元模型为例,其数学表达形式如下:

其中,



为膜时间常数,
为膜电阻,
为膜电导,
为膜电位,
为复位电位,
为注入电流。当膜电位超过一个固定的阈值时,神经元发放一个脉冲,并很快地降至复位电位并维持一小段时间,然后接受前段突触的输入脉冲重新升高膜电位。各种神经元模型均类似于此过程。
学习规则又分为无监督和有监督,其中无监督学习方法以STDP(Spike-Timing-Dependent Plasticity)[4,5]为代表,而有监督学习包括Tempotron[6],ReSuMe(Remote Supervised Method)[7]和SpikeProp[8]等。
以Tempotron为例,阈值下的后突触膜电位(PSPs, Postsynaptic Potentials)为所有输入脉冲的加权和:

其中,
表示第
个输入神经元的脉冲发放时刻(注:输入神经元在一个时间窗口内可能发放多个脉冲,也可能没有脉冲发放)。

-
为输入神经元的第
个发放脉冲对后突触膜电位的贡献,具体为:

其中,
和
为时间常数。为使得

-
的幅值为1,先设定

,然后求导得到最大膜电位时间代入




-
,求其倒数得到归一化因子

为:

绘制



随时间变化的曲线如下:

有监督学习的重点是如何更新突触连接权重
,获得期望输出脉冲。而Tempotron算法的核心如下:

以二分类问题为例,如上更新规则为:首先分别求取类别1和类别2的最大膜电位时刻


。假定样本为类别1时,输出神经元发放脉冲,而当样本为类别2时输出神经元不发放脉冲。那么只需要判断最大膜电位




与阈值电位


的关系即可进行权重更新:
(1)如当样本的真实类别为类别1,输入脉冲神经网络之后,输出神经元在当前窗口时间范围内的最大膜电位大于阈值电位,则发放一个脉冲且无需更新突触连接权重。而当最大膜电位小于阈值电位时,需要根据如上公式更新连接权重,且

以增强贡献比较大的连接权重。
(2)反之,如当样本的真实类别为类别2,输入脉冲神经网络之后,输出神经元在当前窗口时间范围内的最大膜电位小于阈值电位,则不发放脉冲且无需更新突触连接权重。而当最大膜电位大于阈值电位时,需要根据如上公式更新连接权重,且

以削弱贡献比较大的连接权重。
Github上有两个基于Python的Tempotron实现代码
其中一个为Ajay Karpur提供的:https://github.com/ajaykarpur/tempotron-classifier,利用Tempotron进行MNIST分类,但是该代码的Tempotron部分没有写完整,存在比较大的问题,不建议参考。
另外一个代码是由目前在荷兰阿姆斯特丹大学,逻辑、语言和计算研究所的美女博士Dieuwke Hupkes提供,代码写的非常优雅:https://github.com/dieuwkehupkes/Tempotron,细节解释的也很清楚。
利用Tempotron学习规则进行简单的二分类训练,通过下图可以看到输出膜电位的变化。其中,raw为训练前的膜电位曲线,trained为训练后的膜电位曲线。可见,训练后的Positive类别仍然发放脉冲,而训练后的Negative类别样本被抑制发放脉冲。

该学习算法较为简单,其目前的主要缺点均为输出单个脉冲所致,如:
(1)无法直接做为下一层神经元的输入,因而不易扩展为深层脉冲神经网络;
(2)输出的单个脉冲不便于做序列预测。
因而,考虑学习一下其他的有监督学习算法,如ReSuMe[7]和SpikeProp[8]等。
[1] Hodgkin A L, Huxley A F. A quantitative description of membrane current and its application to conduction and excitation in nerve[J]. The Journal of physiology, 1952, 117(4): 500.
[2] Izhikevich E M. Simple model of spiking neurons[J]. IEEE Transactions on neural networks, 2003, 14(6): 1569-1572.
[3] Gerstner W, Kistler W M. Spiking neuron models: Single neurons, populations, plasticity[M]. Cambridge university press, 2002.
[4]. Markram H, Lübke J, Frotscher M, et al. Regulation of synaptic efficacy by coincidence of postsynaptic APs and EPSPs[J]. Science, 1997, 275(5297): 213-215.
[5]. Bi G, Poo M. Synaptic modifications in cultured hippocampal neurons: dependence on spike timing, synaptic strength, and postsynaptic cell type[J]. Journal of neuroscience, 1998, 18(24): 10464-10472.
[6]. Gütig R, Sompolinsky H. The tempotron: a neuron that learns spike timing–based decisions[J]. Nature neuroscience, 2006, 9(3): 420-428.
[7]. Ponulak F. ReSuMe-new supervised learning method for Spiking Neural Networks[J]. Institute of Control and Information Engineering, Poznan University of Technology.(Available online at: http://d1. cie. put. poznan. pl/~ fp/research. html), 2005.
[8]. Bohte S M, Kok J N, La Poutre H. Error-backpropagation in temporally encoded networks of spiking neurons[J]. Neurocomputing, 2002, 48(1): 17-37.
转自:http://jacoxu.com/tempotron/
脉冲神经网络及有监督学习算法Tempotron的更多相关文章
- 脉冲神经网络Spiking neural network
(原文地址:维基百科) 简单介绍: 脉冲神经网络Spiking neuralnetworks (SNNs)是第三代神经网络模型,其模拟神经元更加接近实际,除此之外,把时间信息的影响也考虑当中.思路是这 ...
- 从软件project的角度写机器学习3——主要监督学习算法的project性分析
主要机器学习算法的project适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.只是这件事情,也仅仅是在机器学习的深度上进一步拓展,而机器学习的广度(也即 ...
- <机器学习>无监督学习算法总结
本文仅对常见的无监督学习算法进行了简单讲述,其他的如自动编码器,受限玻尔兹曼机用于无监督学习,神经网络用于无监督学习等未包括.同时虽然整体上分为了聚类和降维两大类,但实际上这两类并非完全正交,很多地方 ...
- 曼孚科技:AI领域9种常见的监督学习算法
监督学习是机器学习中一种十分重要的算法.与无监督学习相比,监督学习有明确的目标. 分类与回归是监督学习两个主要任务,常见的监督学习算法主要有以下9种: 1 朴素贝叶斯 分类 2 决策树 分类 3 支 ...
- Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020
论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读 来源:晓飞的算法工程笔记 公众 ...
- 开源脉冲神经网络深度学习框架——惊蛰(SpikingJelly)
开源脉冲神经网络深度学习框架--惊蛰(SpikingJelly) 背景 近年来神经形态计算芯片发展迅速,大量高校企业团队跟进,这样的芯片运行SNN的能效比与速度都超越了传统的通用计算设备.相应的,神经 ...
- ML之监督学习算法之分类算法一 ——— 决策树算法
一.概述 决策树(decision tree)的一个重要任务是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,在这些机器根据数据创建规则时,就是机器学习的过程. ...
- 硕毕论文_基于 3D 卷积神经网络的行为识别算法研究
论文标题:基于 3D 卷积神经网络的行为识别算法研究 来源/作者机构情况: 中 国 地 质 大 学(北京),计算机学院,图像处理方向 解决问题/主要思想贡献: 1. 使用张量CP分解的原理, ...
- 基于BP神经网络的简单字符识别算法自小结(C语言版)
本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前面的闲话: 自我感觉自己应该不是一个非常 ...
随机推荐
- web 图片上传实现本地预览
在说上传之前先说说如何替换or美化浏览器自带的简陋上传按钮(自定义自己的上传按钮 如:img): 1.将自定义上传按钮上方添加 input file 框,实现input实现透明处理. 2.对自定义上传 ...
- Atitit.linux 内核 新特性 新功能
Atitit.linux 内核 新特性 新功能 1. Linux 3.2内核新特性 2012-02-12 22:41:471 1.1. EXT4:支持更大的块2 1.2. BTRFS:更快的数据清理 ...
- mybatis 使用注解实现多参数传递
若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数,以前的例子多属于此类.但这种方法却不适用于需要传递多个参数的情况,今天就来介绍如何使用注解传递多个参数 一 ...
- Python内置函数之classmethod()
函数的参数是一个函数: classmethod(func) 作用是,在外部,类对象能够直接调用类方法. 常用来作为装饰器. >>> class C: ... def f(self): ...
- c++ telescoping constructor is NOT supported until c++11
Telescoping constructor: see Effective Java 2nd Edition Item 2 If you want to use telescoping constr ...
- English 好的报纸
1. 高级阶段 China daily: ( 带有官方色彩 ) www.chinadaily.com.cn 2. econnomist ( 经济人报 ) www.econnomist.com
- Manjaro折腾笔记:我的数据科学环境搭建之路
ss并且开机启动 0. 安装shadowsocks sudo pip install shadowsocks 1. 建立配置文件ss.json 我的位置是:/home/ray/Documents/sh ...
- ThinkPHP自动填充实现无限级分类的方法
这篇文章主要介绍了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP项目开发中非常实用的一个技巧,需要的朋友可以参考下 本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是 ...
- c++标准库之thread
class thread是对线程的抽象.以下分别介绍thread是如何表示线程的大部分特征的. 执行体 线程的执行体由一个可执行(callable)对象来表示.这个执行体可以在thread创建的时候指 ...
- 集合Map多对多映射(使用xml文件)
我们可以使用set,bag,map等来映射多对多关系.在这里,我们将使用map来进行多对多映射. 在这种情况下,将创建三个表. 多对多映射示例 我们需要创建以下文件来映射map元素.首先创建一个项目: ...