G検定の出る各種CNNモデルの特徴を覚えるためには、各々が開発された背景を理解する事が重要となります。
CNNモデルの多くは、高い性能を達成するためにニューラルネットワークの層をますます深くしようとしています。その代表がResNetです。しかし、層を増やすことで、次のようなコストが伴います。
・勾配消失問題が起きやすくなる
・モデルのパラメータと計算量が増大し、計算リソースの不足が問題となる
深いネットワークの代表はResNetです。ResNetは勾配消失をなるべく抑えるためにスキップ接続を採用しています。後続で開発されたCNNモデル(Wide ResNetやDenseNet、EfficientNetなど)の設計は、ResNet以上の性能を維持しながら、勾配消失を更に抑え、同時にパラメータの数を減らすことを目指しています。
Wide ResNetやDenseNetについては、こちらの記事で解説しています。
【G検定知識】ResNetの改良版・Wide ResNetとDenseNet
今回は、軽量CNNのMobileNetを紹介し、特にその特徴であるDepthwise Separable Convolution を少しだけ数学を使って理解していこうと思います。
MobileNetの特徴
MobileNet とは軽量CNNの代表例であり、従来の CNN モデルをスマホなどの小型な端末に使用できるように工夫が施されたモデルです。
ネットワークの層が深くなると性能が向上します。ただし、モデルのパラメータが増えるため、より多くの計算量やCPU などのリソースを必要とします。CNNを小型端末のようにリソースが少ない環境においても使用できるためには、性能を大きく落とさずにモデルの計算量を削減する工夫が求められています。
MobileNet における計算量を減らすための工夫はDepthwise Separable Covolution(深さ方向分離畳み込み)と呼ばれる畳み込み計算の一種です。簡単に言えば、従来の畳み込み演算では「空間方向とチャネル方向を同時に処理する」のに対し、Depthwise Separable Convolution では畳み込み演算を空間方向(Depthwise)と チャネル方向(Pointwise)に分割して行います。最初に「空間方向のみ処理」を行い、続いてその結果としての「チャネル情報の統合」を分離して行うことで効率化しています。
これによりパラメータ数および計算量を大幅に削減しています。
ただし、軽量化が達成される一方、若干精度が犠牲になることも報告されています。
■Depthwise Separable Convolutionではなぜパラメータ数を削減できるのか
①通常の畳み込み演算の場合
通常の畳み込み演算では、入力の全チャネルを同時に扱いながら空間方向のフィルタを適用します。ここで、CNNの1つの層への入力チャネル数が M、出力チャネル数が N、カーネルサイズが k×k とします(*)。このとき、必要なパラメータ数は次のように計算されます。
k× k × M × N 式1
この数はチャネル数M、Nが増えると急激に計算量が増大する。
(*)補足:入力特徴マップのサイズがW×H×M(Mは特徴マップのチャネル数)で、これにk×kのフィルターをN個適用した所、出力される特徴マップのサイズがW’×H’×Nとなります。
式1の考え方は次のとおりです。まず
各入力チャネルに対してk×k のフィルタが必要であり、全部でMチャネル分があるので、パラメータ数がk× k × M 出力チャネルはN個あり、出力チャネルごとにそれ独立したフィルタk× k × M個を持つため、パラメータ数はk× k × M ×N
② Depthwise Separable Convolution の場合
Depthwise Separable Convolutionでは処理を2段階に分けて、それぞれ独立に行います。
第一段階(Depthwise Convolution)では、M個の入力チャネル間を混ぜずに、各入力チャネルごとに独立した k×k の畳み込みを行い、空間方向の特徴のみ抽出します。この段階のパラメータ数はk× k × Mです。
第二段階(Pointwise Convolution)では、第1段階で得られたチャネル情報を統合するために、1×1 畳み込みを用いてチャネル間の線形結合を行います。この段階のパラメータ数はM × N となります。
1×1の畳み込みとは、空間方向(高さ・幅)は見ずに、「同じ画素位置にあるチャネル同士」だけを線形結合する操作を指しています。
各出力チャネルごとにM 個の重みが必要なので、パラメータ数はM×Nであり、
したがって、全体のパラメータ数は第一弾と第2弾を加算したもので、次の通りになります。
k× k × M + M × N ….式2
通常畳み込みの場合(式1)に比べると、式2はパラメータを大幅に削減できていることがわかります。
例えば、MとNが大きい数字で、カーネルサイズがk = 3 の場合、式1は9MN、式2は9M + NM = (9+N)M〜MNとなるため、理論上およそ1/9 程度までパラメータ数を削減可能です。



