CapsNet|CapsNet 胶囊网络理解
姿态矩阵
物体姿态的变化主要包括旋转、平移和缩放三种形式。针对一个向量,可以通过乘上一个姿态矩阵来调整向量姿态(大小、方向等)。
文章图片
假设有一张 28 x 28 的 图片,初始向量包含了候选框的坐标信息,左上角(0,0)和右下角(28,28),一开始候选框囊括了整张图片的特征。那么将向量乘上有限次变换矩阵(姿态矩阵),可以囊括图片中任意子特征信息。同理,囊括了图片中部分细小特征的向量(14,14,18,18),可以通过有限次矩阵变换得到整张图片的特征。
【CapsNet|CapsNet 胶囊网络理解】下图表示依次对物体做了旋转、平移和缩放操作。首先将(x,y)先逆时针转 30 度,再向右平移 2 个单位,最后缩放 50% 到(x',y')。由于矩阵乘法的结合律,我们可以先将左边三个矩阵相乘,转化成一个矩阵,相当于仅仅对向量实施一次变换操作。
文章图片
因此,在定义姿态矩阵参数后,可以只对提取到的低层次特征做一次矩阵乘法,得到的结果理论上可以涵盖不同层次的高级特征。
网络结构
文章图片
- 第一个卷积层 Conv1 使用 256 个 9x9 的卷积核,得到 20x20x256 的输出;
- 第二个卷积层 Conv2 同样使用 256 个 9x9 的卷积核,得到 6x6x256 的输出;
对输出的结果做进一步操作:以 8 通道为一组,划分成 32 组;
在这里引入向量的概念,组合 8 个 1x1 的标量为 1 个 1x8 的向量,最后输出可以看作是 32 通道,每个通道有 6x6 个向量;
对向量统一执行 squash 操作; - FC 全连接层的输入,可以看作是数量为 6x6x32=1152 个 1x8 的向量,输出为 10 个 1x16 的向量;
用 shape 来表示输入和输出分别为 [1152,1,8] 和 [1152,10,16]。将输出矩阵看作 [1152,1,160],那么中间的转换矩阵可以表示为 [1152,8,160],即 [1152,1,8] * [1152,8,160] = [1152,1,160],最后将结果重新表示成 10 个 1x16 的向量;
此处的转换矩阵即全连接层的初始化参数,也可以将它理解成姿态矩阵; - 经过上一步,我们拥有了 1152 个预测的 10 分类向量,向量维度是 1x16 ;
然后使用 Dynamic Routing 算法,得出加权后的总的向量;
Dynamic Routing 算法可以理解为:不断地调整权重改变 1152 个候选向量对总向量的贡献值,调整的依据是计算每次生成的总向量与各个候选向量的相似度;计算总向量与候选向量的点积,如果两个向量越接近,那么点积结果就越大,因而代表该候选向量的贡献值越大,从而调高针对该向量的权重;因此不断地迭代,会使产生的总向量越来越接近所有候选向量的集中值,使之更具有代表性; - 最后计算不同类向量的 L2 范数,判断当前类存在的可能性;
一个低层特征对应一个高层特征,假设低层特征 a 预测高层特征 A 的概率为 0.6,预测高层特征 B 的概率为 0.4,通过迭代后预测 A 的概率变高了,变成了 0.8,那么意味着预测 B 的概率减少到了 0.2;而多个低层特征间对一个高层特征的预测是相互独立的,假设低层特征 b 预测高层特征 B 的概率增加了,但这并不会影响到低层特征 a 对高层特征 B 的预测概率;因此最后可能预测出多个高层特征,即可实现多分类问题。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 猎杀IP
- 自媒体形势分析
- 数学大作战
- 2018.03.18
- 星期天的下午茶(一)
- 08黑龙江迟淑荣弯柳树网络学院第五期学习赵宗瑞老师主讲的(传统文化与身心健康)教育体系心得体会
- 三国谋略22(找准你的定位)
- 何以燃夏
- LSTM网络层详解及其应用实例