本文已参加「新人创造礼」活动,一起敞开创造之路。
《Attention Routing Between Capsules Jaewoong Choi Hyun Seo Suii Im Myungjoo Kan》
Introduction
CNN存在问题:关于改换后输入的编码才能有限,问题出在了Maxpooling方面,使用池化当然可以为网络带来更好的鲁棒性与平移不变性,但这种不变性是以丢失信息为价值的,且跟着网络深层的感触野扩展,这种信息的丢失益发严重。CapsuleNet经过用向量作为基本单位表征实体解决这一问题,向量的模用来表征特征存在的概率,相位用于描绘实体特征。CapsuleNet两个关键点是动态路由算法和激活函数的设计,本文企图对它们做出改善:
- 关于动态路由算法,作者将原本的迭代进程修改为前向传播的卷积,然后加快网络的速度一起保存了空间信息;
- CapsuleNet的激活函数有两个重要特质,一是确保了输入向量的视点信息;二是核算时以cap(向量)为基本单位,前人对激活函数的改善都会集在保存视点信息方面,本文则企图从cap-wise性质入手,首要对cap进行仿射改换再进行element-wise的激活,如此丢失视点不变性但确保cap为激活基本单位;
methodology
首要记胶囊网络中某一层为uw,h,d,nlu^l_{w,h,d,n},其间l,w,hl,w,h为层数和空间尺度,d,nd,n描绘为每个空间方位上用于描绘的胶囊尺度dd和通道数nn(感觉这儿用nn个dd维的胶囊来解说更为精确,因为按照hinton的说法胶囊便是一个向量,不知道本文作者为什么要参加dimension和channle这种描绘),u:,:,:,nlu^l_{:,:,:,n}表明某个通道的一切胶囊(实际上便是每个空间方位都用一个胶囊描绘的景象,∈Rw∗h∗d\in R^{w*h*d}),这儿界说某个通道一切胶囊是因为后续许多的界说都是同通道胶囊为基本单位。
激活函数
本文给出的胶囊激活函数如下:
本质便是对输入的capsule的每个元素进行dd次线性改换后经过tanh()函数输出,关于每个输入cap该式可以改写为:
一起作者假定在同一通道上的一切Cap同享线性改换权重,这就意味着实际上咱们只需对输入做nn次输出通道数为dd的1*1卷积再经过Relu激活即可得到终究输出。
作者以为过往研讨关于激活函数的改善都过于执着于确保胶囊的方向特征,而对激活函数的基本单位是“向量”这一点视而不见,因而作者以向量的元素为基进行线性改换然后强调这一特性,但也因而丢失原输入向量的方向。一起为了防止胶囊的模值产生较大差异,使用了tanh()函数映入非线性因子的一起将模值限定在合理范围内。直觉上了解的化适当于将胶囊所代表实体的特征进行混合输出,在后续试验中也证明了cap的每个元素的改变都会使得重构图片的某些特征如粗细、视点产生改变,这一理念也是有迹可循的。但为何要同一通道胶囊同享改换参数不是很了解,同一通道并不意味着什么,相反同一空间方位的胶囊同享改换参数反倒更好解说,或许仅仅是为了节省参数?
路由办法
作者以为原始的路由办法存在着两个重要缺陷,一是参数量过大(应该是指的权重改换矩阵部分),二是使用了迭代进程拖慢核算速度。为此引入了一种attention模式的解决方案。
- 首要关于l−1l-1层某个通道的一切Cap咱们先核算一次输出通道数为DlD^{l}的卷积以使得胶囊的维度产生改变,得到初始改换后的胶囊值(类似于原始算法中的改换矩阵,但参数同享,conv的概念又和matrix capsule类似) s~(:,:,:,m0)l,n0=Conv33(u(:,:,:,m0)l−1)\widetilde{s}^{l,n_0}_{(:,:,:,m_0)}=Conv_{3\times3}(u^{l-1}_{(:,:,:,m_0)})
- 第ll层该通道某个方位的胶囊值由相同方位的一切通道的改换后胶囊值加权得到(与原始办法共同): s(w0,h0,:,n0)l=∑m=1,2,…,Nl−1c(w0,h0,m)l,n0⋅s~(w0,h0,:,m)l,n0s^l_{(w_0,h_0,:,n_0)}=\sum_{m=1,2,…,N^{l-1}}c^{l,n_0}_{(w_0,h_0,m)}\cdot \widetilde{s}^{l,n_0}_{(w_0,h_0,:,m)}
- 权重的获取方式类似于胶囊层面的注意力机制,为了核算底层某空间方位处某个胶囊的权重首要将该一方位的一切胶囊进行拼接,得到[u~(w0,h0,:,1)l,n0,u~(w0,h0,:,2)l,n0,…,u~(w0,h0,:,Nl−1)l,n0][ \widetilde{u}^{l,n_0}_{(w_0,h_0,:,1)}, \widetilde{u}^{l,n_0}_{(w_0,h_0,:,2)},…, \widetilde{u}^{l,n_0}_{(w_0,h_0,:,N^{l-1})}]巨细为RDlNl−1R^{D^{l}\times N^{l-1}}的矩阵,经过与参数矩阵W∈RDlNl−1W\in R^{D^l\times N^{l-1}}点乘完成开始改换得到开始权重参数b(w0,h0,m0)l,n0b^{l,n_0}_{(w_0,h_0,m_0)},如此核算完该方位一切胶囊的权重后沿着cap通道层面完成权重的归一化取得终究的权重CC。 一起咱们加假定一切方位的参数矩阵是同享的,则这一进程可以简化为对U∈RWlHlDlNl−1U\in R^{W^l\times H^l\times D^l\times N^{l-1}}的输出通道为Nl−1N^{l-1} 的11Dl1\times 1\times D^l 3D卷积,公式表明如下:
剖析这个公式咱们可以得到,首要是对每个底层胶囊都需要依据对应相同空间方位的一切胶囊的一切元素核算出权重,然后再执行归一化操作。原始办法相同存在着底层胶囊加权,其意图是类似与聚类一般找到底层胶囊的中心,而因为原始的胶囊经过激活依然可以坚持方向,则咱们可以使用底层与当前聚类中心的乘积来衡量二者的类似程度,使得越靠近中心的胶囊具有更高的权重,而聚类中心也鄙人一次迭代进程中更接近与真实中心。(全体就很类似于K-means聚类的思路)而在本文中,因为激活函数没有坚持向量的方向,并且作者想要防止多次迭代拖累运行速度,所以抛弃了聚类中心的了解,挑选将底层到顶层的映射视作为了一种参数化的组合,由此使用了参数矩阵WW作为底层到顶层的路由。直觉上而言,这其实有点背离了hinton的初衷,hinton是以为部件聚合在一起才有或许成为一个更高的实体,而不是组合,失去了这种“附近”的概念,是否符合胶囊设计的初衷,有待商讨。
模型架构
模型架构就和原始胶囊网络类似,相同是包括了初始的卷积层,过渡的PriamaryCap层,中心的ConvCap层,终究分类的Fully ConvCap层。丢失函数相同是分类Margin loss和L2重构误差作为正则。
成果展现
首要是AR CapsNet在参数更少的情况下与MINIST和CIFA-10分类使命上都取得了比CapSNet更好的成果,一起发现跟着Cap层数和维度的增加,网络表现也得到了提高。
胶囊网络声称的相关于CNN最明显的改动是在等变性方面,本文相同在这方面进行了验证。
- 首要是对终究分类Cap的某个元素进行一定程度的扰动(增加或削减),发现重构出的图画跟着扰动的逐步改变也在有规律的改变,某些元素的改变会使得重构出数字的视点、粗细等等方面产生改变,阐明cap的确可以表征图中实体的某些特征。
- 然后是对输入的图画进行了某些仿射改换后再提取终究的胶囊特征,然后对进行相同改换图片得到的特征进行SVD分化得到第一右奇特向量,再核算每个特征和该奇特向量的相关比。发现执行相同改换的图片核算得到的均匀相关比呈现出一个较大值,即大家愈加的类似,随机改换后图片核算得到的均匀相关比则会较小,并且不管模型是在包括或许你不包括autgumention的训练,测验时的均匀相关比都很大,然后证明AR capent的确可以将图画的改换体现在终究得到的特征当中。这一定论明显适当的令人振奋,它告知咱们胶囊网路的确满足了它最初的想象。但有个点值得一提,AR capnet好像并不能分辨出正负改换(指想做或许向右平移这种正负),因为终究相关比的散布显现和奇特向量同方向的特征明显要剩余反方向的,见下图,但为什么会这样作者也没有给出解说。
总结
感觉作者对激活函数或许是注意力路由的理论基础没有过多的解说,很多部分都要自己去了解为何要如此设计,并且感觉解说性相较于原始的CapsuleNet要差一些,少了些灵气,有些细节也不了解,但终究验证等变性的试验很有意思。