グループ化畳み込み(Grouped Convolution)

1. グループ化畳み込み(Grouped Convolution) とは [概要]

グループ化畳み込み層(Grouped Convolution Layer)とは,全チャンネル一気に畳み込まず,分割した各グループ内のチャンネル内でのみ,それぞれ畳み込みを並列に行う層である.畳み込みの処理をグループに分解することで,計算速度向上およびワイド化による表現力向上が狙える.

ResNetの改善提案「ResNeXt」[Xie et al., 2017] において「残差ブロックを効率的にワイド化する目的」で使用されたことで,グループ化畳み込みの活用が始まった (AlexNetで既に提案はされていたが,メジャーではなかった).軽量CNN路線の ShuffleNet [Zhang et al., 2017]でも,グループ化畳み込み層が用いられた.

2. グループ化畳み込み(Grouped Convolution Layer)の処理

グループ化畳み込み(Grouped Convolution)
図1 グループ化畳み込み(Grouped Convolution)

グループ化畳み込み(図1)では,入力特徴マップの$C_{in}$チャンネルを,G個のサブグループに分割してグループ化する(図1).そして,$C_{in}/G$チャンネルだけに対して,そのグループだけの畳み込みを担当するカーネル$K_g$ ($C_{in}/G$ )をG個用いて,畳み込み層の基本型(リンク先 2節)と同じ処理を,並行にGグループ独立して行う(図1は,G=4の例).

畳み込み層の基本型(リンク先 2節)の処理では,$C_{in}$とカーネル$C_{in}$枚の全組み合わせに対して空間フィルタリングをする必要があった.それが,グループ畳み込みだと,入力画像[$C_{in}/G$チャンネルとカーネル$C_{in}/G$枚の組み合わせ] ×$G$グループの計算に分解されるので,$(1/G) \times (1/G) \times G = G$倍だけ計算量を削減することができる利点が得られる.また,異なるGグループのカーネルを学習できるので,並列化による計算コストの低下も得られる上に,ワイド表現化による表現力向上も期待できる.

3. ResNextブロックでの使用

ResNeXtブロックで,グループ化畳み込みによる効率的ワイド化
図2 ResNextブロックでの,グループ化畳み込みによる効率的ワイド化
(a)グループ化畳み込み前の設計 (b) 最終的に使用されるResNextブロック

ResNeXt ブロックでは,チャンネル方向にボトルネック構造をつくりたいので,全チャンネルを$G=32$のグループに分割して,32グループ内でそれぞれ[256 – 4 – 128 ->(結合) 256] というチャンネル数の変化で,畳み込みとチャンネル方向結合(4 x 32 = 128) を行いたい (図2-a). ただ,このナイーヴな32経路並列の設計のままでは,各経路で個別に1 x 1 畳み込み層によりボトルネック化しており,計算コストもまだ微妙である.

そこで,最終的なResNextブロックでは,グループ化畳み込み層の活用により,1 x 1 畳み込み層も1経路にまとめたものを使う (図2-b) .1 x 1 畳み込み層 を1つにまとめた上で,次の層の「[3 x 3] 畳み込み x 32経路 + 結果を結合」の部分を1つのグループ畳み込み層 (G=32)にまとめることで,[256-128-256] の,チャンネル方向ボトルネック1つに集約したものである.これにより,元のResNetのボトルネック化された残差ブロックを,ワイドに集約化して改善することに成功した.

4. 他のグループ化・ワイド化戦略との比較

グループ化畳み込み層の目的が「並列分解化(=ワイド化)」である意味では,(ResNeXtのインスパイア元である) Inceptionの「ブロック内のワイド並列化」や,Transformerの「マルチヘッドアテンション」のワイド並列化などと,方向性やゴールが同じである (※ マルチヘッドアテンションでも,入力ベクトルをGグループに分解する).つまり,近年Transformerを通してよく用いるマルチヘッドアテンションは,この記事のグループ化畳み込みと,行っていることや狙いが近いわけである.

ただ,狙いが近い一方で,グループ化畳み込みとマルチヘッドアテンションの両者は,各部分処理は対照的もしくは対照的に異なる.グループ化畳み込みは「ローカルな空間ごとの畳み込み」のチャンネル方向への分解であるのに対して,マルチヘッドアテンションは「グローバルなアテンション(ベクトル重みづけ和)」の,ベクトル方向での分解である.つまりは,(1)ローカル or グローバル (2)チャンネル分解・ベクトル分解(※画像向け空間アテンションであれば) という点で両者が異なる.

5. まとめ

グループ化畳み込み層は,入力CチャンネルをG個のサブグループに分割し,C/Gチャンネルだけに対して,畳み込みを(並行に)行う層である.ResNeXt での再発見以降,軽量ネットワークの路線で使用されるようになった.

畳み込み層の記事で分類している,「分解可能な畳み込み層(3.2)」のなかにおいて,グループ化畳み込みは「中程度のチャンネルグループへの分解」であると考えると,使い分けしやすくなる.

関連記事

関連書籍

References

  • [Xie et al., 2017] Xie,S., Girshick, R., Dollar,P. , Tu,Z., He,K. Aggregated residual transformations for deep neural networks. In CVPR, 2017.
  • [Zhang et al., 2017] Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, and Jian Sun. Shufflenet: An extremely efficient convolutional neural network for mobile devices. CoRR, abs/1707.01083, 2017.