矩阵胶囊的前向计算

矩阵胶囊在向量胶囊的基础上改变了胶囊的表示方式,矩阵胶囊由激活概率与姿态矩阵两部分构成一个元组单位。激活概率用于表示矩阵胶囊被激活的概率,姿态矩阵用于表示胶囊的姿态信息。在向量胶囊的前向计算中,动态路由被视为胶囊元的非线性激活函数,对于矩阵胶囊,胶囊元的前向计算采用EM路由作为非线性激活函数,EM路由是根据EM算法中Estep和Mstep组成的参数估计方法。矩阵胶囊元的前向计算过程如图。对于胶囊元jjj,输入多个低层矩阵胶囊,经过EM路由输出一个矩阵胶囊。其中,低层胶囊的姿态矩阵需要经过变换矩阵进行视觉坐标的线性变换得到投票矩阵,而激活概率不进行变换。矩阵WijW_{ij}Wij​表示低层胶囊iii到高层胶囊jjj的视觉坐标变换。高层胶囊的激活概率aja_{j}aj​表示胶囊元jjj所对应特征被激活的概率。

结合上图所示的矩阵胶囊元,现考虑多个胶囊元并构建一层胶囊网络,令ΩL\Omega_{L}ΩL​和ΩL+1\Omega_{L+1}ΩL+1​分别表示低层胶囊和高层胶囊的集合,VijhV_{ij}^{h}Vijh​表示投票矩阵VijV_{ij}Vij​变形为向量后的第hhh个元素,假设路由迭代数为TTT,EM路由过程为:

步骤1. 对于任意的胶囊i∈ΩLi\in\Omega_{L}i∈ΩL​和胶囊j∈ΩL+1j\in\Omega_{L+1}j∈ΩL+1​,初始化两个胶囊间的连接概率为均匀分布:Rij=1∣ΩL+1∣R_{ij}=\frac{1}{|\Omega_{L+1}|}Rij​=∣ΩL+1​∣1​
步骤2. 在迭代第ttt次时,依次执行:遍历胶囊j∈ΩL+1j\in\Omega_{L+1}j∈ΩL+1​,执行Mstep(a,R,V,j)Mstep(a,R,V,j)Mstep(a,R,V,j);遍历胶囊i∈ΩLi\in\Omega_{L}i∈ΩL​,执行Estep(μ,σ,a,V,i)Estep(\mu,\sigma,a,V,i)Estep(μ,σ,a,V,i);记t=t+1t=t+1t=t+1。

步骤3. 当迭代次数满足t=Tt=Tt=T时,返回高层胶囊的激活概率aaa和姿态矩阵MMM;否则执行步骤2。

EM路由的Estep和Mstep

在EM路由过程中,Mstep(a,R,V,j)Mstep(a,R,V,j)Mstep(a,R,V,j)定义为:

  • 遍历胶囊i∈ΩLi\in\Omega_{L}i∈ΩL​,修正连接概率:Rij=RijaiR_{ij}=R_{ij}a_{i}Rij​=Rij​ai​
  • 对投票矩阵VijV_{ij}Vij​中任意的第hhh个元素,计算高斯混合模型的均值和方差:μjh=∑iRijVijh∑iRij,(σjh)2=∑iRij(Vijh−μjh)2∑iRij\mu_{j}^{h}=\frac{\sum_{i}R_{ij}V_{ij}^{h}}{\sum_{i}R_{ij}},(\sigma_{j}^{h})^{2}=\frac{\sum_{i}R_{ij}(V_{ij}^{h}-\mu_{j}^{h})^{2}}{\sum_{i}R_{ij}}μjh​=∑i​Rij​∑i​Rij​Vijh​​,(σjh​)2=∑i​Rij​∑i​Rij​(Vijh​−μjh​)2​
  • 计算第hhh个元素对应的代价:costjh=(βu+log(σjh))∑iRijcost_{j}^{h}=(\beta_{u}+log(\sigma_{j}^{h}))\sum_{i}R_{ij}costjh​=(βu​+log(σjh​))i∑​Rij​
  • 根据代价计算激活概率:aj=sigmoid(λ(βa−∑hcostjh))a_{j}=sigmoid(\lambda(\beta_{a}-\sum_{h}cost_{j}^{h}))aj​=sigmoid(λ(βa​−h∑​costjh​))

其中,βu,βa\beta_{u},\beta_{a}βu​,βa​是可学习参数,λ\lambdaλ是退火系数,随着迭代次数上升而增大。姿态矩阵MjM_{j}Mj​的第hhh个元素取高斯混合模型的均值μjh\mu_{j}^{h}μjh​。代价的推导过程如下:


对于低层胶囊iii和高层胶囊jjj的连接,用Pi∣jhP_{i|j}^{h}Pi∣jh​表示胶囊iii到胶囊jjj的投票矩阵在第hhh个元素上的正态分布:Pi∣jh=12π(σjh)2exp(−(Vijh−μjh)22(σjh)2)P_{i|j}^{h}=\frac{1}{\sqrt{2\pi(\sigma_{j}^{h})^{2}}}exp(-\frac{(V_{ij}^{h}-\mu_{j}^{h})^{2}}{2(\sigma_{j}^{h})^{2}})Pi∣jh​=2π(σjh​)2​1​exp(−2(σjh​)2(Vijh​−μjh​)2​)
概率取对数得到:ln(Pi∣jh)=−(Vijh−μjh)22(σjh)2−ln(σjh)−ln(2π)2ln(P_{i|j}^{h})=-\frac{(V_{ij}^{h}-\mu_{j}^{h})^{2}}{2(\sigma_{j}^{h})^{2}}-ln(\sigma_{j}^{h})-\frac{ln(2\pi)}{2}ln(Pi∣jh​)=−2(σjh​)2(Vijh​−μjh​)2​−ln(σjh​)−2ln(2π)​
结合胶囊间的连接概率信息,并取相反数得到损失的表达:costjh=∑i−Rijln(Pi∣jh)=(ln(σjh)+12+ln(2π)2)∑iRijcost_{j}^{h}=\sum_{i}-R_{ij}ln(P_{i|j}^{h})=(ln(\sigma_{j}^{h})+\frac{1}{2}+\frac{ln(2\pi)}{2})\sum_{i}R_{ij}costjh​=i∑​−Rij​ln(Pi∣jh​)=(ln(σjh​)+21​+2ln(2π)​)i∑​Rij​
这个损失也被称为代价,代价的表达式实际上是信息熵的表达式,代价越小,信息熵越小,胶囊的不确定性越小,因此应该以更大概率激活胶囊:aj=sigmoid(λ(k−∑hcostjh))a_{j}=sigmoid(\lambda(k-\sum_{h}cost_{j}^{h}))aj​=sigmoid(λ(k−h∑​costjh​))其中,k,λ,12+ln(2π)2k,\lambda,\frac{1}{2}+\frac{ln(2\pi)}{2}k,λ,21​+2ln(2π)​都是常数。常数的调整可以改变胶囊网络激活胶囊的能力。


EM路由中,Estep(μ,σ,a,V,i)Estep(\mu,\sigma,a,V,i)Estep(μ,σ,a,V,i)定义为:

  • 遍历胶囊j∈ΩL+1j\in\Omega_{L+1}j∈ΩL+1​,对于胶囊iii到胶囊jjj的投票矩阵,计算16个元素所对应高斯分布的联合概率:Pj=1∏h162π(σjh)2exp(−∑h16(Vijh−μjh)22(σjh)2)P_{j}=\frac{1}{\sqrt{\prod_{h}^{16}2\pi(\sigma_{j}^{h})^{2}}}exp(-\sum_{h}^{16}\frac{(V_{ij}^{h}-\mu_{j}^{h})^{2}}{2(\sigma_{j}^{h})^{2}})Pj​=∏h16​2π(σjh​)2​1​exp(−h∑16​2(σjh​)2(Vijh​−μjh​)2​)
  • 遍历胶囊j∈ΩL+1j\in\Omega_{L+1}j∈ΩL+1​,更新胶囊iii到胶囊jjj的连接概率:Rij=ajPj∑k∈ΩL+1akPkR_{ij}=\frac{a_{j}P_{j}}{\sum_{k\in\Omega_{L+1}}a_{k}P_{k}}Rij​=∑k∈ΩL+1​​ak​Pk​aj​Pj​​

EM路由过程中的Estep(μ,σ,a,V,i)Estep(\mu,\sigma,a,V,i)Estep(μ,σ,a,V,i)用于得到低层胶囊iii到高层胶囊jjj的连接概率,Mstep(a,R,V,j)Mstep(a,R,V,j)Mstep(a,R,V,j)将连接概率代入高斯混合模型的极大似然参数估计表达式,得到均值和方差,从而得到姿态矩阵,再计算代价得到高层胶囊jjj的激活概率。

卷积架构下的矩阵胶囊网络

卷积架构下的矩阵胶囊网络如图所示。卷积胶囊网络由卷积层,矩阵预胶囊层,卷积矩阵胶囊层组成。输入图像经过卷积层得到通道数为A的特征图。使用两组卷积模块分别对特征图计算,第一组卷积模块为B个并行的卷积网络,每个卷积网络的卷积核大小为1×11\times 11×1,通道数为4×44\times 44×4。第二组卷积模块也是B个并行的卷积网络,每个卷积网络的卷积核大小为1×11\times 11×1,通道数为1。因此预胶囊层的参数数量为1×1×A×B×(4×4+1)1\times 1\times A\times B\times (4\times 4+1)1×1×A×B×(4×4+1)。将两组卷积的张量在最后一维拼接得到由胶囊构成的特征图。使用向量胶囊网络构建滤波器,在胶囊的特征图上计算卷积即称为卷积矩阵胶囊层。第一层卷积矩阵胶囊层输入通道数为B,输出通道数为C,令卷积核大小为K×KK\times KK×K,由于每个转换矩阵Wij∈R4×4W_{ij}\in R^{4\times 4}Wij​∈R4×4,因此,该卷积矩阵胶囊层的参数数量为K×K×B×C×(4×4)K\times K\times B\times C\times (4\times 4)K×K×B×C×(4×4)。同理,在图中,第二层卷积矩阵胶囊层的参数数量应当为K×K×C×D×(4×4)K\times K\times C\times D\times (4\times 4)K×K×C×D×(4×4)。在最后一层输出胶囊集合时,先基于激活概率进行最大池化,即在图中反映为i=1i=1i=1,再使用全连接胶囊网络计算,因此参数数量为D×E×(4×4)D\times E\times (4\times 4)D×E×(4×4)。

如果令A,B,C,D=32,输入图像为1通道的32×3232\times 3232×32灰度图,卷积核大小均设置K=3K=3K=3。第一层胶囊卷积的步长为2,第二层胶囊卷积步长为1,均不设填充。输出胶囊集合为E=10E=10E=10。则从张量变换的角度看,张量形状变化如下图所示。

矩阵胶囊的损失函数

矩阵胶囊网络基于折页函数构建损失,并在向量胶囊损失函数的基础上进行了化简。对于一个样本,记输出胶囊中标签目标类别 ttt 的激活概率为ata_{t}at​,其他类别iii的激活概率为aia_{i}ai​,则类别iii与目标类别ttt的损失计算为:Li=max(0,m−(at−ai))2L_{i}=max(0,m-(a_{t}-a_{i}))^{2}Li​=max(0,m−(at​−ai​))2从损失的形式上可见,当目标类别的激活概率小于其他类别 iii 的激活概率时,损失值会增加。其中,mmm为折页的限制边界,在训练过程中,逐步从0.2上升至0.9,递增折页边界有利于逐步软化输出的概率分布,增强模型的泛化能力。一个样本的损失为所有类别损失的加和:L=∑i≠tLiL=\sum_{i\neq t}L_{i}L=i​=t∑​Li​如果固定地取值m=1m=1m=1,函数LLL从形式上等价于多分类支持向量机的损失。

第三十一课.矩阵胶囊与EM路由相关推荐

  1. 关于矩阵胶囊与EM路由的理解(基于Hinton的胶囊网络)

    本文介绍了Hinton的第二篇胶囊网络论文"Matrix capsules with EM Routing",其作者分别为Geoffrey E Hinton.Sara Sabour ...

  2. 第三十课.向量胶囊与动态路由

    向量胶囊的前向计算 神经元用于检测一种确定的特征,而胶囊在检测特征的同时更注重描述这个特征.向量胶囊使用单位向量表达某种具体的特征,向量的模长反映该特征存在的概率.神经元与胶囊元的示意如图所示,(a) ...

  3. 三味Capsule:矩阵Capsule与EM路由

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 事实上,在论文<Dynamic Routing Between Capsules>发布 ...

  4. 【问链财经-区块链基础知识系列】 第三十一课 Fabric版本变迁之路从1.1-1.4

    Fabric个版本更新内容 V1.1 ・Node.js链代码支持 - 开发人员现在可以使用世界上最流行的编程语言最流行的框架编写链代码 ・基于通道的事件服务 - 使客户端能够在每个通道的基础上订阅阻止 ...

  5. 爱情三十一课,先信自己

    我们每个人一生都在迎接两个问题的考验:其一,我是否值得被爱:其二,我是否可以成功. 如果某人在这两个问题上的自我认识是"值得"和"可以",无论境遇多遭,都可以获 ...

  6. AGG第三十一课 pattern_perspective样式透明

    摘自:http://article.gmane.org/gmane.comp.graphics.agg/2911/ > I've read the pattern_perspective.cpp ...

  7. python第三十一课--递归(3.递归的弊端)

    演示递归的弊端: def mySum(num):if num == 1:return 1return num+mySum(num-1)mySum(998) [注意]:递归可以解决绝大多数循环能干的事情 ...

  8. 新版标准日本语初级_第三十一课

    语法   1. 小句1(动词基本形/ない形)と,小句2:~と用在表述恒常性状态.真理.反复性状态.习惯等内容的复句里,表示小句1是小句2的条件. このボタンを押すと,電源が入ります(按下这个钮,电源就 ...

  9. 第三十一课 ERC1410标准从分析到代码实现

    1,摘要 ERC1410为STO环境中使用的一个以太坊协议标准.辉哥着眼于深度理解和编码实现,从以下几个方面阐述对ERC1410的理解. 1) ERC1410和ERC1411(ERC1400),ERC ...

最新文章

  1. MPB:中大李文均组-​热泉高温细菌分离培养方法
  2. 工作中搜索页面搜索记录功能的封装(存储到本地)
  3. php 8 jit,PHP8正式版发布,带来了注解和JIT
  4. html照片与照片之间的间隔,css设置图片之间的间隔的方法
  5. java md5加密32位小写_Java生成MD5的方法,简单封装并转为32位小写
  6. LTE各场景下的密钥处理
  7. 2015-01-14
  8. 论文学习1-DeepPath: A Reinforcement Learning Method for Knowledge Graph Reasoning
  9. c# MVC在WEB.Config中配置MIME
  10. spite用法 java_despite 和in spite of 用法
  11. Win10 输入法工具栏抽风,无法调整水平垂直。
  12. 操作分布式文件之一:如何搭建配置FttpAdapter环境
  13. 二总线芯片RF601
  14. 正则表达式-验证手机号与邮箱
  15. 如何制作朋友圈搞笑证件图片(附源码实例)
  16. 2021最新Android常用开源库总结,建议收藏
  17. 手机经常收到回复TD退订,回还是不回?今天总算是弄清楚了
  18. Java游戏运行框架
  19. 格签名相似概念区分: SVP、SIS、LWE的区分
  20. php访问小程序内容检测接口,关于小程序接入敏感词检测接口的坑

热门文章

  1. 代码审查规范(试用版)
  2. 杭州码农哀叹:新买的房子装修到一半没钱了,靠着贷款平台借钱才勉强推进。这套房子价格高达1000多万,有钱买却没钱装修!...
  3. 异地多活实践与设计思考点归纳
  4. 项目延期半年,我被软件外包坑惨了!
  5. 雷军这个程序员!真的牛逼!
  6. 某程序员感叹自己学历虽低,却能进入阿里!虽然只是p6,却面过不少清北毕业生!清北毕业生也没什么了不起,水货一抓一大把!...
  7. 不是广告--如何学Java,我说点不太一样的学习方式
  8. 数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!
  9. 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析
  10. 漫谈云计算、虚拟化、容器化--云平台技术栈05