DenseNet 構造と特徴
記事のまとめ
- DenseNetはDenseBlockとTransition Layerからなる
- DenseBlockはスキップ接続を多用するCNNである
- Transition Layerは情報を圧縮するCNNである
DenseNetとは?
DenseNetは2016年に発表された論文"Densely Connected Convolutional Networks"に掲載されたCNNアーキテクチャの一種です。
DenceNetはResNetのような残差接続ではなくスキップ接続を多用することで少ないパラメータ数で高い性能を実現することを可能にしています。
本記事では、DenseNetの構造と特徴を論文内容に沿って解説していきます。
CNNやResNetについての基本的な知識は以下の記事を参考にしていただければ幸いです。DenseNetの構造
DenseNetはDenseBlockとその間のTransition Layerを複数重ねた構造を持っています。DenseBlockの内部構造と役割
DenseBlockは全ての層でスキップ接続を行うCNNで構成されます。スキップ接続とは、特徴マップをチャンネル次元に関して繋げることを指します。CNNの各入出力を図のようにスキップ接続します。
DenseBlock内の各CNNでは入出力のデータサイズは同じであり、DenseBlock内では複数の接続を行うためチャンネル数が増加していきます。
DenseBlockの役割は特徴を再利用しながら効率的な学習を進めることです。Transition Layerの内部構造
Transition Layerは畳み込み層とプーリング層からなるシンプルな層です。Transition Layerの役割は情報を圧縮することです。 具体的には以下の2つを行います。- DenseBlockで増加したチャンネル数を削減
- 特徴マップのサイズを削減
これらを行うことで、情報を維持したまま計算量を削減することが出来ます。DenseNetの特徴
深層学習では、層が深くなるにつれ、勾配が減衰し、学習が滞りやすくなります。
DenseNetは特徴量を何度も再利用することで、勾配消失問題を防ぎ、効率よく学習を進めることが出来ます。
また、Transition Layerを導入することで、計算量が膨大になる問題点を緩和しています。
しかし、DenseNetは非常にモデルの表現力が高いため、出力がトレーニングデータの内容に偏ってしまう過学習が起きる可能性も高くなります。まとめ
実験ではCIFAR-100データの分類タスクでは1.7MパラメータのResNetのミス率が約45%であるのに対し、1.0MのDenseNetはミス率が約28%であるという検証結果が提示されています。
DenseNetはDense Blockでスキップ接続を多用しつつ、Transition Layerで情報を圧縮することでパラメータ効率が高く、表現力がとても高いモデルとなりました。現在でも多くのタスクで活用されています。
ご愛読ありがとうございます。