Dense Connection(DenseNet)

Dense Connection / DenseNet

Dense Connectionとは

Dense Connection(密結合接続)は、2017年にHuangらが提案したDenseNet(Densely Connected Convolutional Network)の核心技術です。各層の出力をそれ以降のすべての層の入力として結合する構造で、ネットワーク内の特徴の再利用を最大限に促進します。ResNetのSkip Connectionをさらに発展させた概念と言えます。

表:Dense Connection(DenseNet)の要点まとめ
ひとことで言うと各層が、それまでのすべての層の出力を受け取る密なつなぎ方。
何がうれしいか特徴を使い回すのでパラメータが少なくて済み、勾配も伝わりやすい。
注意点つなぎ合わせる分メモリを多く使う。実装によっては学習が重くなる。

DenseNetの構造

DenseNetでは、あるブロック内の各層が先行するすべての層からの特徴マップをチャネル方向に連結して入力として受け取ります。L層のDenseBlockには、L(L+1)/2個の接続が存在します。各層の出力チャネル数(成長率、Growth Rate kで制御)は比較的小さく設定され、チャネルの連結により情報が蓄積されていきます。

図:DenseNetのつなぎ方
11層目の出力以降の全層へ配る
▶
22層目入力+1層目を受け取る
▶
33層目入力+1・2層目を受取る
▶
4特徴を再利用少ない重みで高精度

DenseNetの利点

Dense Connectionにより、勾配がすべての先行層に直接伝播するため、深いネットワークでも効率的な学習が可能です。また、特徴の再利用によりパラメータ効率が高く、ResNetと同等の性能をより少ないパラメータで達成できます。各層が独自の新しい特徴を少量ずつ追加する「集合知」的なアプローチが特徴です。

DenseNetの課題と発展

Dense Connectionの課題はメモリ使用量の増大です。すべての先行層の特徴マップを保持する必要があるため、GPUメモリの消費が大きくなります。メモリ効率を改善したMemory-Efficient DenseNetや、CSPNet(Cross Stage Partial Network)などの発展形が提案されています。YOLOv4などの物体検出モデルでもDense Connection的な設計が採用されています。