CNN 目前的不足
尽管卷积神经网络在诸多方面性能表现良好,但是依旧存在一些问题;回归到问题的本质------众所周知,CNN最初的结构是有仿生学原理在里面的。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks,CNN)。那么问题来了---现在的CNN的结构是否真的完全模拟出卷积神经网络?这就是我们对CNN产生的疑惑;基于以下几点,均是从问题的本质上提出的:
1、 通常情况下,大脑的认知不是一个神经元关注一个特征,而是一组神经元关注一个特征,一个和一组的区别在于,一个只能输出一个数值,而一组可以输出一个向量,一组神经元输出的信息量远远大于一个神经元,不是简单的加法。从仿生模拟的角度来说,使用向量作为输出结果,更为贴切。
2、 在CNN中,不同位置上相同的实体激活同一个神经元,相同位置上不同的实体激活不同的神经元,但是人脑工作似乎不是这样,相同位置差别不大的实体激活同一组神经元,不同位置上即使相同的实体也会激活不同的神经组。人的大脑识别具有位置和实体的通识性和变识性。
3、在生物学中, 人的大脑对于相近实体的反复刺激后,会建立特殊的联结以加快和改善对于该实体的识别,而CNN没有这个功能。
因此Hinton建议用神经元组来替代神经元,发展一套新的深度学习策略。
CapsNet
根据Hinton的论文,我们可以得知:新的神经网络每一层有若干节点,每一个节点表示一个神经元向量(NC),底层的神经元向量通过边连接到高一层的NC,连接权值在学习过程中会变化,由此引起节点连接程度的变化,因此叫做动态路由(dynamic routing)。
模型的实现
参考文献
A Keras implementation of CapsNet in the paper:
Sara Sabour, Nicholas Frosst, Geoffrey E Hinton. Dynamic Routing Between Capsules. NIPS 2017
This code is adopted from CapsNet-Keras to test the performance of CapsNet on Fashion-MNIST
https://github.com/XifengGuo/CapsNet-Fashion-MNIST
https://github.com/JunYeopLee/capsule-networks/blob/master/capsNet