深度学习最近非常火热,它归属于人工神经网络(ANNs)的范畴。ANNs是属于第二代神经网络,而我们关注的是下一代神经网络——脉冲神经网络(SNNs)
人工神经网络为什么会有这个名字呢?
"人工"表明了它是我们手动构建的,“神经网络”表明它是受大脑启发的。当我们深入了解ANNs时,你会发现,ANNs的神经元模型就是加权求和然后进行非线性激活。这和我们从生物学中了解的神经元模型差距太大了。同时在ANNs中信息的传递是基于数值。这和生物大脑中采用脉冲传递信息也存在差距。
脉冲神经网络的诞生:
诞生的原因:
1.人工神经网络需要高性能的计算平台。
2.人工神经网络仍不能实现强人工智能,人们认为是因为其与生物大脑仍存在巨大差距。
SNNs的特点:
1.采用了生物神经元模型如IF,LIF等,比之前ANNs的神经元更接近生物。
2.信息的传递是基于脉冲进行。所以网络的输入要进行额外编码,例如频率编码和时间编码等,转现在的数据(例如图片的像素)转换成脉冲,编码技术我们以后再讨论。
3.基于脉冲的脉冲的编码,能蕴含更多的信息
4.SNNs网络的能耗更低,每个神经元单独工作,部分神经元在没接受到输入时,将不会工作。
SNNs的学习算法:
首先一点非常重要,脉冲神经网络不能直接利于ANNs的基于反向传播的方式进行网络训练,因为脉冲神经元模型处理的是信息是离散的脉冲,不能直接求导。
1.将现有的ANNs映射到SNNs中
这种方法是当前比较主流的构建SNNs的方法,因为它能有效的将ANNs与SNNs结合起来,利用了ANNs和SNNs各自的优点,ANNs训练简单,SNNs的能耗低。(最近就是在研究这东西)
2.对生物神经元模型进行处理,换成一个能求导的模型,或者对传递的脉冲信息进行转换。然后就可以将反向传播用于SNNs的训练。(这种算法我没有研究过,所以也不太懂)
3.STDP类的算法,它里面有很多小分支,STDP这东西就类似一种思想,例如两篇文章都用了STDP算法,但他们的数学公式可能是存在差异。从原理上,该种算法就是根据前后神经元的脉冲发放关系然后对他们之间的权重进行调整。该种算法比较接近人脑,现在研究他的人比较多。但这种算法一般是无监督的(也有少部分人将其改成有的监督),收敛比较难。(之前看过相关论文,感觉它是几种算法中最接近生物的学习规则)
其实SNNs的学习算法仍是非常开放,一种统一江湖的算法仍没出现,所以也制约了它的发展。