DenseNet

DenseNetの基本概念と特徴

DenseNet(Dense Convolutional Network)は、2017年にGao Huang氏らによって提案された畳み込みニューラルネットワーク(CNN)のアーキテクチャです。その名前が示すように、このネットワークは「密接に」接続された層構造を持っています。

DenseNetの最も特徴的な点は、各層が後続のすべての層と直接接続されていることです。これは、従来のCNNアーキテクチャとは大きく異なる approach です。例えば、L層からなるDenseNetでは、L(L+1)/2個の直接接続が存在することになります。

この密接な接続構造により、DenseNetは以下のような利点を持ちます:

  1. 特徴の再利用: 各層で学習された特徴が、後続のすべての層で直接利用可能になります。
  2. 勾配の効率的な伝播: 短いパスを通じて勾配が直接伝わるため、勾配消失問題が緩和されます。
  3. パラメータ効率: 特徴の再利用により、少ないパラメータ数で高い表現力を実現します。

DenseNetの構造と動作原理

DenseNetの基本的な構成要素は「Dense Block」と呼ばれるものです。Dense Block内では、各層の出力が後続のすべての層に入力として提供されます。具体的には、l番目の層は、0からl-1番目までのすべての先行層の特徴マップを入力として受け取ります。

Dense Block内の各層の出力チャンネル数は比較的少なく設定されており、これを「成長率(growth rate)」と呼びます。例えば、成長率が32の場合、各層は32チャンネルの新しい特徴マップを生成します。

Dense Block間には「Transition Layer」が配置されます。Transition Layerは、特徴マップのサイズを削減し、計算効率を向上させる役割を果たします。一般的に、バッチ正規化、1×1の畳み込み、平均プーリングで構成されます。

DenseNetの全体構造は以下のようになります:

  1. 初期の畳み込み層
  2. 複数のDense Blockと Transition Layer の繰り返し
  3. 全結合層
  4. Softmax層

DenseNetの進化と他のアーキテクチャとの比較

DenseNetは、CNNアーキテクチャの進化の中で重要な位置を占めています。AlexNet以降、VGGやGoogLeNetなど、より深いネットワークが登場しました。しかし、ネットワークが深くなるにつれて、勾配消失問題や過学習などの課題が顕在化しました。

ResNetは、スキップ接続(残差接続)を導入することでこれらの問題に対処しましたが、DenseNetはこのアイデアをさらに推し進め、すべての層間に直接接続を設けました。

DenseNetの特徴マップ連結方式は、GoogLeNetのInceptionモジュールとも類似点があります。両者とも、異なる抽象度の特徴を組み合わせることで、豊かな表現を獲得しています。

DenseNetは、ResNetと比較して同等以上の精度を達成しつつ、パラメータ数を大幅に削減することに成功しました。また、特徴の再利用により、学習の効率性も向上しています。

DenseNetの登場以降、Wide ResNetやSENet(Squeeze-and-Excitation Networks)など、さまざまな派生モデルや新しいアイデアが提案されています。例えば、SENetは Attention 機構を導入し、特徴マップに重み付けを行うことで、さらなる性能向上を実現しました。