深度模型(三):Capsule

胶囊网络

胶囊与传统神经元比较:

胶囊 传统神经元
输入类型 向量 u i , i [ 1 , m ] \mathbf{u}_i,i\in[1,m] m m 表示底层胶囊数量 标量 x i , i [ 1 , m ] x_i,i\in[1,m] ,m表示底层神经元数量
仿射变换 u ^ j i = W i j u i \mathbf{\widehat u}_{j\lvert i}=\mathbf{W}_{ij}\mathbf{u}_i 不支持
加权求和 s j = i = 1 m c i j u ^ j i \mathbf{s}_j=\sum_{i=1}^mc_{ij}\mathbf{\widehat u}_{j\lvert i} a j = i = 1 m w i x i + b a_j=\sum_{i=1}^mw_ix_i+b
激活函数 v j = s j 2 1 + s j 2 s j s j \mathbf{v}_j=\frac{\lvert\lvert\mathbf{s}_j\rvert\rvert^2}{1+\lvert\lvert\mathbf{s}_j\rvert\rvert^2}\frac{\mathbf{s}_j}{\lvert\lvert\mathbf{s}_j\rvert\rvert} h j = s i g m o i d ( a j ) h_j=sigmoid(a_j)
输出 向量 v j \mathbf{v}_j 标量 h j h_j
训练算法 动态路由 梯度下降

动态路由算法

原论文中对动态路由算法的描述如下:
在这里插入图片描述

  • 算法的输入为输入网络层 l l 以及它的所有输出 u ^ j i \mathbf{\widehat u}_{j\lvert i} ,以及算法迭代次数 r r
  • 第2行,初始化参数 b i j = 0 b_{ij}=0
  • 第3,5,6行,前向计算胶囊输出 v j \mathbf{v}_{j}
  • 第7行,更新参数 b i j b i j + u ^ j i v j b_{ij}\leftarrow b_{ij}+\mathbf{\widehat u}_{j\lvert i}\cdot \mathbf{v}_j
  • 迭代 r r 次以后,算法完成
发布了52 篇原创文章 · 获赞 105 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/gaofeipaopaotang/article/details/97615736