胶囊网络原理

一、整体结构

胶囊网络原论文《Dynamic Routing Between Capsules》中给出如下的网络结构:输入层、卷积层、主胶囊层、数字胶囊层。
胶囊网络结构图
图中输入为28×28的MNIST手写数字,经过256个9×9步长为1的卷积核得到20×20×256的特征图,该层就是普通的卷积神经网络,下一层采用8组9×9×32的卷积核卷积8次,会得到8组6×6×32的特征图,然后将每一个特征图展成一维,对应位置组合,一共得到1152个8维的向量神经元,也就是胶囊。最后通过动态路由算法得到数字胶囊层,数字胶囊层向量的模长大小就是预测结果。

二、主胶囊层详解

下图即为主胶囊层的计算过程,上一层得到的是20×20×256的特征图,接下来用8组9×9×32的卷积核进行步长为2的卷积操作,得到如下图所示的8组6×6×32的特征图,这里与普通卷积神经网络有了区别。然后将8组特征图都展成一维,然后对应位置合并,即可得到1152个胶囊。
主胶囊层理解

三、动态路由算法

下图展示了动态路由算法的整个过程。
动态路由图
红框1:主胶囊层的结果,得到1152个胶囊(向量神经元)
红框2:一个全连接结构,一共10行,每行相当于1152个胶囊对该类别的贡献,对应于原论文公式2
红框3:c_ij是b_ij通过softmax得到,加权时候每行相加就得到s_i
红框4:向量压缩结果,通过squashing函数将模长压缩到0-1之间,对应原论文公式1
以上四步是动态路由前向传播,下图中蓝色向量代表红框2中的某一行胶囊的部分向量,红色箭头代表s_i,也就是最终所有向量共同作用的结果。
向量加法
动态路由算法的权重更新公式如下:
b_ij=b_ij+U_ji · v_j
向量积的特点就是夹角θ越小,向量积越大,夹角为90°,向量积为0,大于90°为负,U_ji相当于单个胶囊的个人预测,v_j是所有胶囊共同作用的结果,所以向量积的大小代表了该胶囊对最终结果的一致程度,也就是耦合程度,如果向量积为负,耦合程度应该变小,如果向量积为正,耦合程度应该变大,这个更新公式正好实现,也就是原论文伪代码最后一行对应的公式。

四、损失函数

1、间隔损失(Margin Loss)

胶囊网络损失函数
Tk表示k类是否存在,存在为1,不存在为0
m+ 为0.9,惩罚假阳性,k类存在但是预测不存在会导致损失函数很大
m− 为0.1,惩罚假阴性,k类不存在但是预测存在,会导致损失函数很大

2. 重构损失

由两部分组成,第一部分是间隔损失,第二部分是用原图片的28×28个像素减去重构的28×28个像素然后取平方和然后乘0.005,间隔损失占主要地位。

                                </div>
  • 14
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值