【阅读笔记】Deep SCNN Trained with STDP

Deep Spiking Convolutional Neural Network Trained with Unsupervised Spike Timing Dependent Plasticity

本文提出了一个叫 SpiCNN 的神经网络,通过 Leaky-Integrate-and-Fire (LIF) neurons 作为类似激活函数的单元构造神经网络,通过 Spike Timing Dependent Plasticity (STDP) 进行权重学习。

SNN FUNDAMENTALS

Computational Model of Spiking Neuron and Synapse

使用 LIF 模型作为 spiking neuronal dynamics
τ m e m d V m e m d t = − V m e m + W ⋅ δ ( t − t i ) \tau_{mem}\frac{dV_{mem}}{dt}=-V_{mem}+W\cdot \delta(t-t_i) τmemdtdVmem=Vmem+Wδ(tti)

Synaptic Plasticity

使用 weight-dependent positive-STDP 作为权重学习的机制
Δ W = η ( e t p r e − t p o s t τ − X o f f s e t ) ( W m a x − W ) ( W − W m i n ) \Delta W = \eta(e^{\frac{t_{pre}-t_{post}}{\tau}}-X_{offset})(W_{max}-W)(W-W_{min}) ΔW=η(eτtpretpostXoffset)(WmaxW)(WWmin)

Δ W \Delta W ΔW是链接权重变化量, η \eta η是学习率, t p r e t_{pre} tpre t p o s t t_{post} tpost是前后两个 neuron 的放电时间, W W W是现在的权重, X o f f s e t X_{offset} Xoffset是抑制或者促进的阈值, τ \tau τ是 decay time constant。
【阅读笔记】Deep SCNN Trained with STDP_第1张图片

PROPOSED SNN ARCHITECTURE AND LEARNING METHODOLOGY

Deep Spiking Convolutional Neural Network (SpiCNN)

与正常 CNN 类似,也是由卷积、池化和全连组成网络,输出层神经元之间有相互抑制的作用,类似于 softmax。
【阅读笔记】Deep SCNN Trained with STDP_第2张图片

Unsupervised Convolutional STDP Learning Methodology

每当 post-neuronal 发生 spike 时, 使用 STDP 更新权重。为了更有效的进行学习,我们还额外定了几个规则:当一个局部神经元集体放电时,给这个特征图的神经元的放电阈值增加一些,这是因为卷积神经网络权重共享,减少少数神经元的主导作用。

Supervised STDP Learning Methodology for final layer

最后一层输出神经元用标签施加确定的电压 pattern 进行 STDP 的学习。

SIMULATION FRAMEWORK

先使用 Laplacian of Gaussian (LoG) filter 提取图像像素之间的对比度并突出边缘,截断像素值到0到1之间对应 0 到 400Hz的泊松过程输入到卷积层,使用 200Hz firing rate 的 Poisson 过程来训练全连层。权重初始化符合 xavier 初始化:
W j , j + 1 ∈ U [ − 6 n j + n j + 1 , 6 n j + n j + 1 ] W_{j,j+1}\in U[-\sqrt{\frac{6}{n_j+n_{j+1}}},\sqrt{\frac{6}{n_j+n_{j+1}}}] Wj,j+1U[nj+nj+16 ,nj+nj+16 ]
【阅读笔记】Deep SCNN Trained with STDP_第3张图片

RESULTS

MNIST Digit Recognition

【阅读笔记】Deep SCNN Trained with STDP_第4张图片
【阅读笔记】Deep SCNN Trained with STDP_第5张图片
【阅读笔记】Deep SCNN Trained with STDP_第6张图片
训练的时候采用 mini-batch 的方式进行训练,要对样本进行 shuffle,每张图片持续一段时间进行训练;推断时每张图片持续 一段时间,看哪个输出 fire rate 最高。

读后感

里面的规则除了 STDP 以外还有若干补充规则,例如某种情况下增大阈值,某种情况乘一个系数,给我的感觉是不太优雅,因为我也看得不太清楚,所以笔记中也没记录这么详细,体会个大概,因为听说 SNN 可以直接搞成神经芯片,功耗比较低,有可能将来会有发展,所以我先看看做个科普。
文章的整体感觉就是先把图片用 LoG filter 搞出边缘,是的输入的泊松过程的空间模式更加明显,在用 STDP 无监督学习前几层的模式,最后一层监督学习输出的权重。

你可能感兴趣的:(机器学习,读书笔记)