Closed msrks closed 1 year ago
Capsule単位の特徴を抽出するPrimary Capsと、そのCapsule特徴からDynamic Routingでさらに上位の特徴を取ってくるDigit Capsからなる
Conv + Activation からなる。Convした結果を、Capsuleごとに区切って、Capsule単位でActivationする。Capuleに対するActivationは(各要素にReluではなく)Capsuleベクトルの方向を維持して 絶対値だけを変化させる。ベクトルのノルムに存在確率の意味を持たせるために、値域を[0,1]にSquashする。
Activation:
Conv + N*(Weighted Sum of Vector + Routing + Weight Update) からなる。
Capuleに対するPoolingの代替がDynamic Routing。N回のRouting+Weight Updateモジュールでは、それぞれの特徴量の出力capsuleの特徴方向への寄与を予測し、予測出力ベクトルに対して内積の大きな特徴方向への寄与を生み出すと予測されるcapsule特徴からの入力への重みを大きくするようにWeight Updateする。
Digit Caps特徴(各カプセルの絶対値が予測ラベルに対応する)からReconstructionするモジュール。学習では Reconstruction Lossを減らす項を損失関数に追加し、regularizationとして使っている。学習後は、こいつを使って、各capsuleのelementが意味のある特徴を抽出していることが可視化できる。
(Routing 3, Reconstruction Lossあり) が一番つよい
Hinton大先生の論文。neuron集団のcapsuleをつくりcapsule単位での意味合い(絶対値が存在確率、各要素がfeature)を持たせることで、CNNよりもロバストに入力変化に対応できる(詳細後述)。activationやpoolingもcapsule単位の処理に対応したものに置き換え(それぞれ、sigmoid/relu ->squash / max pool -> dynamic routing)。MNISTでSOTA。
https://arxiv.org/abs/1710.09829