[capsNets系列]2018-06-12

CNN 目前的不足

尽管卷积神经网络在诸多方面性能表现良好,但是依旧存在一些问题;回归到问题的本质------众所周知,CNN最初的结构是有仿生学原理在里面的。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks,CNN)。那么问题来了---现在的CNN的结构是否真的完全模拟出卷积神经网络?这就是我们对CNN产生的疑惑;基于以下几点,均是从问题的本质上提出的:

1、 通常情况下,大脑的认知不是一个神经元关注一个特征,而是一组神经元关注一个特征,一个和一组的区别在于,一个只能输出一个数值,而一组可以输出一个向量一组神经元输出的信息量远远大于一个神经元,不是简单的加法。从仿生模拟的角度来说,使用向量作为输出结果,更为贴切。

2、 在CNN中,不同位置上相同的实体激活同一个神经元,相同位置上不同的实体激活不同的神经元,但是人脑工作似乎不是这样,相同位置差别不大的实体激活同一组神经元,不同位置上即使相同的实体也会激活不同的神经组。人的大脑识别具有位置和实体的通识性和变识性。

3、在生物学中, 人的大脑对于相近实体的反复刺激后,会建立特殊的联结以加快和改善对于该实体的识别,而CNN没有这个功能。

因此Hinton建议用神经元组来替代神经元,发展一套新的深度学习策略。

CapsNet

根据Hinton的论文,我们可以得知:新的神经网络每一层有若干节点,每一个节点表示一个神经元向量(NC),底层的神经元向量通过边连接到高一层的NC,连接权值在学习过程中会变化,由此引起节点连接程度的变化,因此叫做动态路由(dynamic routing)。


[capsNets系列]2018-06-12_第1张图片



模型的实现



[capsNets系列]2018-06-12_第2张图片
1. 第一层卷积 ,具体方法忽略;最后一句是验证卷积后的维度 



[capsNets系列]2018-06-12_第3张图片
重点关注primary_caps()的实现


[capsNets系列]2018-06-12_第4张图片
primary_caps()的实现方法: 可以看出,依旧是
[capsNets系列]2018-06-12_第5张图片




参考文献

知乎:如何看待Hinton的论文《Dynamic Routing Between Capsules》?

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

你可能感兴趣的:([capsNets系列]2018-06-12)