美文网首页
Matrix capsules with EM routing

Matrix capsules with EM routing

作者: zelda2333 | 来源:发表于2020-12-20 16:40 被阅读0次

    论文:Matrix capsules with EM routing

    没有太大的变动,主要还是一个新的路由算法,听说卷积胶囊就是由这篇文章来的。

    路由算法的本质和第一篇Dynamic Routing Between Capsules是一样的,只不过把相应的位置换成了EM算法罢了,其中提到的高斯混合模型是EM算法1个经典应用。

    我们直接使用李航《统计学习方法》里面的介绍粗略理解高斯混合模型

    高斯混合模型

    高斯混合模型定义

    用EM算法求解高斯混合模型(GMM)参数

    我们先使用最大似然估计来尝试求解GMM的参数。如下:

    算法

    输入:观测数据y_1,y_2,\dots,y_n,高斯混合模型
    输出:高斯混合模型参数
    (1)取参数的初始值开始迭代;
    (2)E步:依据当前的模型参数,计算分模型k对观测数据y_j的响应度,即计算每个数据 j 来自子模型 k 的可能性

    (3) M步:计算新一轮迭代的模型参数

    (4)重复计算E步和M步,直到收敛


    胶囊分配

    EM路由在运行时将胶囊分组形成一个更高级别的胶囊。它同时会计算分配概率r_{ij}来量化胶囊及其父胶囊之间的运行时连接。例如,手胶囊不属于人脸胶囊,它们之间的分配概率为零。r_{ij}也被一个胶囊的激活程度所影响。如果图像中的嘴被阻塞,嘴胶囊将会有零激活值。计算出来的r_{ij}也将是零。

    计算胶囊的激活值和姿态矩阵

    胶囊输出的计算不同于深度网络的神经元。在EM聚类中,我们通过高斯分布来表示数据点。在EM路由中,我们仍用高斯模型对父胶囊的姿态矩阵进行建模。姿态矩阵是一个4×4矩阵,即16个元素。我们用具有16个μ和16个σ的高斯模型对姿态矩阵建模,每个μ表示姿态矩阵的一个元素。

    v_{ij}为从胶囊i到父胶囊j的投票,v_{ij}^h为它的第h个元素。我们应用高斯概率密度函数:

    来计算v_{ij}^h属于胶囊j的高斯模型的概率:

    取自然对数:

    我们估算一下激活一个胶囊的成本。成本越低,胶囊就越有可能被激活。如果成本高,投票就不匹配父高斯分布,因此被激活的概率就越低。

    cost_{ij}为由胶囊i激活父胶囊j的成本,它是对数似然取负:

    由于低层的胶囊与胶囊 j有着不同的关联,我们根据运行时分配概率r_{ij}按比例计算成本。所有下层胶囊的成本为:

    我们用下面的公式来确定胶囊 j是否会被激活:

    原文中,“−b_{ij}”被解释为描述胶囊 j的均值和方差的成本。换句话说,如果父胶囊j表示数据点的收益 b_j高于投票差异造成的成本,我们激活输出胶囊。我们不通过分析来计算 b_j。相反,我们通过反向传播和成本函数来训练它。

    r_{ij}μσa_j通过下一节讨论的EM路由迭代地计算。上述公式中的λ是温度参数的倒数\frac{1}{temperature}。当r_{ij}越来越优,我们降低温度(λ变大),它增加sigmoid(z)S曲线的梯度。这有助于我们在这些区域内以更高的投票差异灵敏度更好地精调r_{ij}。在我们的实现里,迭代开始时λ首先被初始化为1,然后每次路由迭代后增加1。论文并没有说明细节,我们建议在实现中采用不同的方案进行试验。

    EM路由

    利用EM路由迭代计算出姿态矩阵和输出胶囊的激活值。EM法交替地调用步骤E和步骤M,将数据点拟合到混合高斯模型 。步骤E确定父胶囊每个数据点分配的概率r_{ij}。步骤M在r_{ij}的基础上重新计算高斯模型的值。我们重复迭代3次。最终的a_j就是父胶囊的输出。最终的高斯模型的16个μ将构成父胶囊的 4×4 姿态矩阵。

    上面的aV分别是激活值和子胶囊的投票。我们用均匀分布初始化分配概率r_{ij}。即开始时子胶囊与任意父胶囊有同样的关联。我们调用步骤M来计算更新的高斯模型(μ,σ)和父激活a_j,基于aV和当前的r_{ij}。然后我们调用步骤E基于新的高斯模型和新的a_j重新计算分配概率r_{ij}

    步骤M的细节:

    在步骤M中,我们计算 μσ,基于子胶囊的激活 a_i,当前r_{ij}和投票 V。步骤M也会重新计算父胶囊的成本和激活a_jβ_vβ_α会分别地训练。在我们的实现中,每一次路由迭代后 λ(温度参数的倒数)增加1。

    步骤E的细节:

    步骤E中,我们基于新的μσa_j重新计算分配概率 r_{ij}。如果投票越接近更新的高斯模型的μ,分配则增加。

    损失函数(使用Spread损失)

    矩阵胶囊需要一个损失函数来训练Wβ_vβ_α。我们选择传播损失(spread loss)作为反向传播的主要损失函数。第i类(不是真标签t)的损失被定义为:

    a_t是目标类(真标签)的激活值, a_i是类 i的激活值。
    总损失为:

    如果真标签和错误的类之间的边距小于m,我们通过 m−(a_t−a_i)的平方惩罚它。 m开始为0.2,在每一代训练后线性增加0.1。m达到最大值0.9后会停止增长。从较低的边距开始训练可以避免在早期阶段出现太多的死胶囊。

    其他实现将正则损失和重构损失添加到损失函数中。

    参考链接:
    关于矩阵胶囊与EM路由的理解(基于Hinton的胶囊网络)。)
    第二篇《Matrix Capsules with EM routing》解析
    如何看待Capsule的第二篇论文Matrix Capsules with EM Routing?
    “Matrix capsules with EM routing”(使用EM路由的矩阵胶囊)译文
    Matrix Capsule with EM Routing翻译
    学习Hinton老爷子的胶囊网络,这有一篇历史回顾与深度解读
    高斯混合模型的终极理解
    李航《统计学习方法》学习笔记之——第九章:EM算法及其推广(高斯混合模型)

    相关文章

      网友评论

          本文标题:Matrix capsules with EM routing

          本文链接:https://www.haomeiwen.com/subject/vxypbktx.html