其实取标题的时候很犹豫,这篇文章很大篇幅是在讲动态路由与聚类,但也有一部分关于胶囊网络的其他理解,大家不要太在意标题。
这是我参考的三篇博文:https://spaces.ac.cn/archives/4819、https://spaces.ac.cn/archives/5112、https://spaces.ac.cn/archives/5155,写的很好,我下面的一些理解就来自这里。
首先先谈一下个人对胶囊网络工作过程的理解,胶囊网络首先提取一组特征,然后在这组特征上做一个聚类,用聚类结果进行预测,根据预测结果进行反向传播,对提取特征的矩阵进行更新(可以理解为换一组特征或者对特征进行微调),然后继续聚类,这样循环往复。
胶囊网络给人最深的印象是vector in vector out,但个人感觉这点是针对于CNN而言的,而这一点在图像处理作用尤为明显,因为CNN的池化损失了太多的信息,这也使得一谈到胶囊网络就是vector in vector out。其实直接用个全连接层(对应论文里面的WijW_{ij}Wij​)就可以实现vector in vector out,真正有意义的是通过动态路由将聚类引入到深度学习,以及采用了类似Transformer中的多头注意力机制。当然这只是个人的理解,仅供参考。

动态路由与K-means

先给出论文中动态路由算法过程:

简单来说动态路由就是一个“软化”的K-means,在K-means中直接将点划分到最近的簇,而动态路由里面则是通过softmax获取相似度,成比例地将这点分到各个簇中。
当然上面的说法只是借助K-means的思想让大家更好的理解动态路由,仔细考虑的话并不准确。
假设低层的胶囊输出为ui,0<i<Mu_{i},0<i<Mui​,0<i<M,高层的胶囊输出为vj,0<j<Nv_{j},0<j<Nvj​,0<j<N,如果按上面的思路,初始的时候会对uiu_{i}ui​进行平均来获取初始的vjv_{j}vj​,这样的话所有的vjv_{j}vj​是一样的,这显然不合理。
其实动态路由可以看作是卷积+K-means,这里说卷积并不是指卷积操作,而是CNN中通过卷积来获取某个特征。
动态路由中有一步u^ij=Wijui\hat {u}_{ij}=W_{ij}u_{i}u^ij​=Wij​ui​,有M∗NM*NM∗N个WijW_{ij}Wij​。
从卷积的角度,可以把每个WijW_{ij}Wij​看做是一个卷积核,提取某一方面的特征,不同的vjv_{j}vj​关注不同方面的特征。上面参考的博文中有提到参数共享,即针对于每个vjv_{j}vj​会有固定的WjW_{j}Wj​,也就是Wj=W1j=W2j=...=WMjW_{j}=W_{1j}=W_{2j}=...=W_{Mj}Wj​=W1j​=W2j​=...=WMj​,这样就更接近卷积的思想。参考博文中的第二篇也给出一个关于M∗NM*NM∗N个WijW_{ij}Wij​的理解,就是为每个uju_{j}uj​分配一个W^j\hat W_{j}W^j​,这个W^j\hat W_{j}W^j​可以理解为uju_{j}uj​的位置编码,这样就需要M+NM+NM+N个矩阵,在做内积的时候就会出现WiW^jW_{i}\hat W_{j}Wi​W^j​的情况,如果直接用WijW_{ij}Wij​来替代,就变成了M∗NM*NM∗N个矩阵。当然这只是一种理解,仅供参考,个人觉得直接替换为WijW_{ij}Wij​这里有点生硬。
而引入WijW_{ij}Wij​后可以这么看动态路由和K-means:(1)K-means中开始时随机初始化聚类中心来代表不同的簇,而动态路由随机初始化WijW_{ij}Wij​来代表不同的特征;(2)K-means是直接将一个样本划分到某个簇中,而动态路由是获取uiu_{i}ui​在不同特征上的投影u^ij\hat {u}_{ij}u^ij​,然后根据与当前特征中心的相似度进行一个软的划分;(3)K-means最终是获取不同簇的中心,而动态路由是获取不同特征的中心,但这个中心是可以衡量这个当前输入在这个特征上的表现强度的,因为K-means中中心是要求均值的,但动态路由没有,这就造成我这个特征中得到的胶囊越多(注意这里不是uiu_{i}ui​的个数多,而是u^ij\hat {u}_{ij}u^ij​根据权重进行求和得到的值大),这个特征的中心就越大;
另外注意训练过程中WijW_{ij}Wij​也会通过反向传播进行更新,就是说特征并不是给定的,就像CNN中的卷积核一样。而加入动态路由后如何进行反向传播,在我参考的博文中说到:论文动态路由迭代来三次,就把它看作是三层神经网络,损失函数就可以进行梯度回传了。

动态路由与GMM

在Hinton的第二篇胶囊网络论文《Matrix Capsules with EM Routing》中则是用GMM替代了K-means,详细可参照参考博文的第三篇,这里不做详细介绍,只简单提一下GMM和K-means的关系。
GMM就是K-means的概率版本(或者说K-means是协方差矩阵进行特定约束的GMM),但将度量方式固定为欧氏距离。参考博文的第三篇有相关推导。
这里再补充一下,GMM通过EM算法进行求解,相关博文很多,这里不做介绍。同样的,K-means也可以按照EM算法进行理解,K-means中E步就是为每个样本找到最近的簇中心,而M步则是根据新的样本划分类更新簇中心。

动态路由与RNN

李宏毅将胶囊网络的视频(在B站就可以搜到)中简单提到两者之间的对比(在12分钟40秒处),可以将每次迭代uiu_{i}ui​对应的权重cic_{i}ci​看作是RNN的隐状态,参与下一次迭代,其实这个理解类似于前面提到的将三次迭代的动态路由看做是三层神经网络。

动态路由与Transformer

这里只是个人临时起意加的,用来加深理解。
(1)动态路由采用多个WjW_{j}Wj​来关注不同特征,Transformer采用多个自注意力头来获取多种注意力;(2)胶囊网络是两个不同层的胶囊计算相似度,然后进行加权和,Transformer则是相同层的向量进行相似度计算,并进行加权和。

其他

(1)胶囊网络相较于CNN的优势,很明显向量输入向量输出是关键,这样胶囊的表征能力更强。为什这么说呢?之前CNN通过池化来获取某个特征出现的概率,而胶囊网络一方面可以通过向量的模来表示某个特征存在的概率,另一方面通过这个向量各个维度来获取旋转角度、位置、大小等其他信息,这样就可以做更多的判断。例如一张人脸,CNN判断是否有鼻子、是否有眼睛、是否有嘴,有的话就表明这是张人脸;但胶囊网络不仅可以判断这些这些器官是否存在,还可以判断这些器官的其他属性是否可以让这些器官组成一张脸。详细可参照这篇文章https://www.jianshu.com/p/7b8b34e4ff83。造成这种差异的原因就是CNN在池化过程损失了大量信息,而胶囊网络通过动态路由对这些信息进行了整合。
(2)需要注意的是K-means聚类中心是样本的均值,而动态路由的聚类中心是更高层面的特征。举例来说,对一组二维空间的点进行聚类,得到的簇中心是就是这个簇中点坐标的均值,而动态路由中则是根据眼、鼻子、嘴等信息进行聚类,聚类中心是一张人脸,这样说有点抽象,可参照https://zhuanlan.zhihu.com/p/67907084进行理解,这篇文章给出了一个理解,就是通过眼的大小、位置、旋转角度来推测脸的大小、位置、旋转角度,同样根据鼻子、嘴的信息来推测脸的信息,最终通过对推测的结果进行聚类,得到脸最有可能的情况作为聚类中心。
(3)关于卷积提取特征,前面讲的也比较抽象,可以结合房子和船的例子进行理解,这个例子很多地方都有用到,这里给出一个链接以供参考:https://zhuanlan.zhihu.com/p/42864711,可以把房子理解为一个特征,把船理解为一个特征。

结语:其实讲了这么多,只是为了帮助对胶囊网络的理解,当真的把胶囊网络理解了,就会觉得这篇文章一些理解有点牵强附会。

胶囊网络的理解:动态路由与聚类相关推荐

  1. transformer 中的注意力机制和胶囊网络中的动态路由:它们在本质上或许具有相似性

    https://mp.weixin.qq.com/s/RUf0igO2FShhq3c8WIgxYQ

  2. 基于动态路由的胶囊网络在文本分类上的探索

    摘要 简介 模型 2.1 N-gram 卷积层 2.2 初级胶囊层 2.2.1 孩子-父母(部分-整体)关系 2.3 动态路由 孤立类别 Leaky-Softmax 参数修正 实验 3.1 实验数据集 ...

  3. 【Mo 人工智能技术博客】胶囊网络——Capsule Network

    胶囊网络--Capsule Network 作者:林泽龙 1. 背景介绍 CNN 在处理图像分类问题上表现非常出色,已经完成了很多不可思议的任务,并且在一些项目上超过了人类,对整个机器学习的领域产生了 ...

  4. 胶囊网络是什么及其应用

    In 1998, Yann LeCun and Yoshua Bengio introduced what is now one of the most popular models in Deep ...

  5. 论文阅读_胶囊网络CapsNet

    介绍 英文题目:Dynamic Routing Between Capsules 中文题目:胶囊之间的动态路由 论文地址:https://papers.nips.cc/paper/2017/file/ ...

  6. 胶囊网络在电机故障诊断的应用

    一.前言 异步电机常见故障类型分为电器故障和机械故障,其中电气故障主要分为转自故障和定子故障,机械故障分为偏心故障和轴承故障.在研究电机的故障诊断中,一般遵循的步骤都是对电机设备进行信号收集包括电流信 ...

  7. 翻译:揭开胶囊网络CapsNet的神秘面纱

    近年来,深度学习风靡全球.从自动驾驶汽车到预测性广告,它不可避免地成为我们日常生活的重要组成部分. 杰弗里·辛顿 (Geoffrey Hinton) 被认为是将深度学习带回主流并在很大程度上负责今天的 ...

  8. CapsNet入门系列之三:囊间动态路由算法

    编者按:深度学习开创者之一.反向传播等神经网络经典算法的发明人Geoffrey Hinton思考了胶囊网络数十年之久,然而直到上一个月才发表论文正式提出胶囊网络.主要原因就是一直没找到训练胶囊网络的合 ...

  9. 【计算机网络】网络层 : 路由算法 ( 路由算法分类 | 静态路由算法 | 动态路由算法 | 全局性动态路由算法 | 分散性动态路由算法 | 分层次路由选择协议 )

    文章目录 一.路由算法 二.路由算法 分类 三.静态路由算法 四.动态路由算法 五.动态路由算法 分类 六.分层次的路由选择协议 一.路由算法 路由算法 : 选择数传输的 "最佳路由&quo ...

最新文章

  1. rocketmq 消息 自定义_rocketMq-Topic创建过程
  2. 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
  3. Alfred+AppleScript实现快速复制当前文件夹路径
  4. Spring中类路径下文件读取方式
  5. mysql8出现The MySQL server is running with the --skip-grant-tables option so it cannot execute
  6. 前端学习(1609):路由进阶和高阶
  7. CentOS7启用SELinux和Firewall修改ssh端口号
  8. rebuild myself rebuild my world
  9. 超长焦夜拍定格辉煌 华为Mate40系列清晰见证天舟二号成功发射
  10. mysql集群搭建.pdf,内容太过真实
  11. 如何搭建百度离线地图服务
  12. 可视化滤波器fvtool
  13. 删除注册表里没用的服务
  14. 基于Springboot+MyBatisPlus+Vue前后端分离大学生毕业论文答辩系统
  15. 试喷一下今年的国家最高科学技术奖
  16. 数学建模:整数规划—指派模型与匈牙利算法
  17. First-chance exception in KERNEL32.DLL 0xE06D7363 Microsoft C++ Exception
  18. 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算
  19. Apifox 生成接口文档 教程与操作步骤
  20. 从ReentrantLock到AQS

热门文章

  1. 哈工大2018年秋计算机系统复习
  2. Mysql计算月份差
  3. 服务器2008系统备份检测不到u盘,U盘不能识别简单维修一例
  4. 【负荷预测】基于灰色预测算法的负荷预测(Python代码实现)
  5. 支付宝与微信新年红包战之我见
  6. 蓝牙耳机链接电脑(windows)莫名奇妙关机问题/老是关机问题
  7. 年后跳槽那点事:乐视+金山+360面试之行
  8. 博士招生从1万到10万再到100万
  9. 恶意软件冒充Steam和任天堂游戏MOD
  10. jdbc连接mysql8.0.21_MySQL的JDBC驱动(8.0版本)