解决的问题:CNN的学习过分强调不变性(invariant )特征的学习,数据增强也服务于这一目的。而这样做,实际上,忽略了一个真实世界中的事实:
一个目标可以被看做是一组相互关联的部件按照几何学形式组合的结果。利用这种几何关系去重建目标的系统应当对视点的变化具有鲁棒性,因为其本质的几何关系不应随着观察视角的变化而发生改变
提出的方法:
本文中,研究人员描述了一种无监督的胶囊网络。其中,观察组成目标所有部件的神经编码器被用来推断目标胶囊的存在和姿态。编码器通过解码器的反向传播方法训练。
研究人员在 SVHN 和 MNIST 数据集上获得了当前最佳的无监督分类结果,准确率分别为 55% 和 98.5%。
复现论文
环境搭建:
conda create -n StaCap python=3.6
安装pip3
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
创建Stack Capsule所需环境
pip install -r requirements.txt
利用Pycharm远程连接环境
https://juejin.im/post/5a21433751882512a8611d36
运行Train.py,报错:
absl.flags._exceptions.IllegalFlagValueError: flag --pipeline_config_path=None: Flag --pipeline_config_path must have a value other than None
解决办法:
flag 没none,增加参数
# flags.DEFINE_string('name', None, '')
flags.DEFINE_string('name', 'mnist','')
设置其它相应的参数,复现代码成功
参考文献:
stacked_capsule_autoencoders
Hinton老爷子CapsNet再升级,结合无监督,接近当前最佳效果