ResNet (Residual Neural Network) と ResNeXt

1. ResNetの概要

Residual Neural Networks (ResNet) [He et al., 2016a] は,畳み込みニューラルネットワークのバックボーンとして広く用いられる構造であり,通称 ResNetと呼ばれる.また,同じ著者らグループは,グループ化畳み込みによるResNet改善版である ResNeXt [Xie et al., 2017] も提案した.このResNextも画像認識や動画認識で広く活用されている.この記事では,ResNetおよびResNeXtの両方ついて概要紹介を行う.

ResNet のネットワーク構造
図1 ResNet のネットワーク構造.

ResNet は,スキップ接続を用いた残差ブロック(Residual Block)を直列に接続しただけの,シンプルな構造のDeep CNNである(図1).ResNetでは,$i$番目の残差ブロック中の残差写像 $F(\bm{x})_i$ (2~3の畳み込み層を含む)に誤差を分割して少しずつ伝搬し,テスト時には残差写像群の加算モデルとして予測モデルを構成する,残差学習モデルが採用されている.

旧来のCNNでは20層以上深くしようとしても精度が落ちてしまっていた.それに対して,残差学習を採用したResNetでは,かなりの深い層数のCNN (50層~150層程度)でも,大規模画像データから識別CNNを「うまく」これまでより高精度なモデルとして学習できるようになった.

当時の最先端の画像認識CNNであるVGGNetやGoogleNetよりも,ImageNetデータセットの識別精度が大きく向上した.したがってそれ以降,様々な画像認識CNN応用のバックボーンとして,ResNet・ResNeXtが広く用いられている.

1.1 この記事の構成

2節以降では,以下の構成でResNet(2節) とその改善版である ResNeXt (3節) について紹介する:

  • 2. ResNet
    • 2.1 ResNet 以前のCNNの課題:過度に深くすると精度が落ちてしまう.
    • 2.2 ResNetの提案:残差ブロックを用いた,残差的な学習
    • 2.3 ResNetの残差学習モデルの,カスケード学習・アンサンブル学習的な理解
    • 2.4 より深いResNetで用いる残差ブロック:ボトルネックによる計算効率化
  • 3. ResNeXt : ResNetの改善版
    • 3.1 ResNetの残差ブロック:残差経路側の複数経路化

2 ResNet

2.1 ResNet 以前のCNNの課題:過度に深くすると精度が落ちてしまう.

ディープラーニングでは,層を増やしてネットワークを深くすればパラメータ数が増えるので,複雑な予測モデルを学習させることができ精度も向上するはずである.しかし,あまりに深いネットワークを作ると,学習時に勾配消失・爆発問題が起こりやすくなる.とはいえ,当時バッチ正規化が登場したことで,深めの画像認識CNNの学習でも,勾配消失・爆発問題は防ぎやすくなって来ていた.

しかし,画像認識CNNを更に深くして高精度にするには,以下の2点の課題があった:

  1. バッチ正規化を用いたとしても,単純に畳み込み層を増やしてVGGNet(VGG-16層,19層)以上の総数20~50層のCNNを,CIFAR-10 や ImageNet-1000 で学習する実験を試してしてみると,学習誤差が大きく出てしまい精度が大きく落ちてしまっていた [He et al., 2016a].この結果は「今までの仕組みのまま,更に深い単純にAlexNet的なCNNモデルを学習しても,期待通りに認識精度が向上してくれない」ことを実験的に意味していた.従って,より深いCNN構造を提案するには,この課題を解決する必要がある.
  2. 過度に深いモデルを学習しようとすると,パラメータ空間の次元が上がって更に広大なパラメータ空間になるゆえ.最適化時間が長くなる.よって,更に深いCNNから高精度に学習できる仕組みを思いついたとしても,そのせいで指数関数的に学習時間が増加してしまうことは避けたい.よって,ある程度の短い時間で学習が済み,局所解にも陥らない仕掛けも用意する必要がある.

これら2つの課題をいっぺんに克服するために,[He et al., 2016] の著者らはResNetを提案する.

2.2 ResNet の主提案:残差ブロックを用いた,残差的な学習.

残差ブロック
図2-a ResNet の残差ブロック

プレーンなCNN畳み込みブロック
図2-b プレーンなCNN畳み込みブロック

2.1節の動機のもとで,残差ブロック(Residual Block)と呼ばれる構成部品が,ResNetの構成部品として提案された(図2-a).ResNetでは,残差ブロックを基本部品として用いて,CNNを50~150層まで深くことで,初期表現の終盤層への伝達と,最適化の簡易化を共に達成する.

AlexNetやVGGNetのような,残差接続が無い「プレーンなCNN (図2-b)」では,畳み込み層やReLuを,直列に直接つなげていただけであった.それに対して,残差ブロック(図2-a)では,各畳み込み層のまとまり(2~3層ごと)に対して,並列にスキップ接続(skip connection) (図2-a 青色側)を挿入する.このスキップ接続により,入力の表現$\bm{x}$をその表現のまま(= 恒等写像, Identity Mapping)で,別ブランチに分岐させる (図2-a 青色領域).また,残差接続のパスでは(図2-b 赤色側),残差(写像)$F(\bm{x})$の各層を用いて表現を変化させる.そして,残差ブロックの最後では,2ブランチを以下のように足し算で合成する:

\begin{equation} H(\bm{x}) = F(\bm{x}) + \bm{x} \tag{2.1}\end{equation}

この式(2.1)の残差ブロックが,直列に$N$個接続することで,ResNetを構成する.

すなわち,入力表現に残差$F(\bm{x})$を足し合わせる式(2.1)を,$N$回繰り返した加算合成写像が,ResNet全体の予測モデルである (図1).

ResNetを学習する際は,ネットワーク全体の関数を全体最適化するのではなく,全体の誤差が少し小さな残差$F(\bm{x})= H(\bm{x}) – \bm{x}$の経路へ少しずつ逆伝播していく.従って,各残差関数の(小さめの)最適化に分割された ,(アンサンブル学習的な)学習を実施ことができる.これにより,全体の誤差を各$F(\bm{x})_i$に分割して個々に最適化できるネットワーク構造になり,プレーンなCNNと比べて最適化が楽である.従って,(3×3カーネルの)畳み込み層50層以上から構成できる深いモデルを,正しく学習できることとなった.

ちなみにスキップ接続側のブランチは,必ずしも恒等写像ではなくても良く,何らかの層$g$を挿入して$g(\bm{x})$と少し表現を変化させても良い気がする.しかし,著者らによるその後の論文[He et al., 2016b]を通じて,恒等写像のままスキップ接続することがResNetとしては重要なことが,実験的にも示された.以後,何の層も挿入しない恒等写像のスキップ接続を採用した,式(2.1)の残差ブロック(図2-a)を用いることが,ResNet やResNext (3節)では標準的である.

2.3 残差学習モデルの,カスケード学習・アンサンブル学習的な理解

「カスケード学習」モデルや「Boosting」のように,「モデル全体の大関数を,直列につないだ小関数$N$個の加算合成関数であるとする,カスケード学習・アンサンブル学習のような加算的(additive)モデル」とResNetが類似していると考えることで,残差学習モデルの仕組みを理解しやすくなる [He et al., 2016b], [Veit et al,. 2016].

各残差ブロック中には,(1) 恒等写像側の経路をたどる,(2) 残差$F$側の経路をたどる,の2通りの経路がある.よって,N回残差ブロックが連結していると,全経路数は$2^N$になる.例えば,3個の残差ブロックが連結している場合,微分値が伝播する経路の合計数は合計$2^3$個しか存在しない.しかし,N=50層やN=100層もあるResNetの場合では,微分が伝播する経路数が膨大になる.

ここで,ResNetは,全体の誤差が浅い多数のミニネットワーク(= 残差関数$F_i$)から構成されるアンサンブル学習モデルであると捉えてみよう.すると,個々の$F_i$への誤差の伝播量は少なくなることが理解でき,最適化は残差ブロック無しよりも楽に(速く)収束することもわかる [Veit et al,. 2016]

2.4 深いめの ResNet に用いる残差ブロック:ボトルネックによる計算効率化

残差ブロックのボトルネック化
図3 残差ブロックのボトルネック化

ImageNet データセットから,より深いResNetモデルを実際に学習する際には,畳み込み層の総数が50層/101層/152層の3種のResNetが標準的な設計として用意される [He et al., 2016].

[He et al., 2016] の予備実験で用いた ResNet-34層の残差ブロック構造には,3×3を2つ連結した残差が使用された(図3 左側).それに対し,ResNet50層/101層/152層では,ボトルネック(bottleneck) 型の「1×1, 3×3, 1×1」の畳み込み層3つを用いた残差ブロックが採用されている(図3 右側).

元の図3左側(ResNet34層向け)の畳み込み層2つから構成される残差経路は,図3 右側 (ResNet50層/101層/152層向け)のボトルネック型の残差経路と,似たような複雑性・計算時間を持っている.

一方,図3 右側は,畳み込みカーネルのサイズを「1×1 -> 3×3 -> 1×1 (一旦1×1畳み込みで次元削減して計算負荷減少)」と変えながら,チャンネル数については「高次元(256) -> 低次元(64) – >高次元(256)」と変化するボトルネック型を形成している.これにより,Inceptionのように,ボトルネック型の採用による「精度を保持しながら計算効率化もできる」という恩恵をResNetも得ることができる.

このResNet-50層/101層/152層は,ResNet-34層よりもかなり精度が高く,しかも層数を増やすごとにどんどん精度が良くなるという,Deep Learningが期待している「深くするほど精度が良い」という振る舞いを,層数が多くなっても見事に達成できるようになった.

3 ResNext : ResNet の改善版

ResNext [Xie et al., 2017] は,ResNetの著者グループによるResNetの改善版である.残差ブロックのボトルネックの等価表現として32グループに分割したグループ化畳み込み(Grouped convolution) [Krizhevsky et al,. 2012]を代わりに使用することで,ResNetからの精度向上を達成した.

つまり,全体の深さや全体の幅を増やさずに,ブロック単位でグループ分割数を増やすだけで,計算効率性をモデル精度を向上したResNetの発展版である.当時流行していた「CNNのワイド化」の1提案であるが,それらと異なるのは,「ブロック内で32経路にワイド化した上,それらをグループ化畳み込みに等価変換して1経路にまとめた」という点である.

3.1 ResNextの残差ブロック:複数経路化からグループ化へ

ResNext における残差ブロックの基本構造
図3 ResNeXtにおける残差ブロックの基本構造.

Inception [Szegedy et al., 2015] [Szegedy et al., 2016] で提案された分岐-変換-結合(split-transform-merge)が旧来手法として成果が出ているので,その仕組みをResNetの残差ブロックにも導入したいと著者らは考えた.そこでResNetの残差経路側を,まずは32本のボトルネックを並列に並べる構造に変更することから考えた.著者らは,分割する経路数$G = 32$のことを,(数学用語から)濃度(Cardinality)と論文中では呼んでいる.

そこで,「分岐-変換-結合」型の残差ブロックを提案した (図3).元の入力256-64-256チャンネルの出力特徴マップになるボトルネックを,「256-4-256チャンネル出力」の特徴マップ× 32経路 (= 32濃度) 」に分割してワイド化する.そして32経路において同じボトルネック構造で個々に畳み込んだのち(変換),それらから出力された32個の特徴マップを再度結合する設計である.

ResNeXt用残差ブロックへの等価変換
図4 ResNeXt用 残差ブロックへの等価変換. (a) 32経路をチャンネル方向結合した図3の等価表現.(b) ResNeXtで用いられる残差ブロック:図3, 図4(a)の並列32パスで行う演算と等価の演算を,グループ畳み込み層1層のパス1つのみで行う.

この図3の複数経路化(ワイド化)した残差ブロックでも精度は向上するのだが,画像認識精度は保持しながらも,もう少しネットワーク構造の効率化を行いたい.そこで著者らはグループ化畳み込み(Grouped convolution)[Krizhevsky et al,. 2012] を利用して,図3の残差ブロックを効率計算化した等価モジュールに変換することを更に提案した (図4-(b)).

図4(a)は, 図3の残差ブロックを早期結合(32経路 x 4チャンネル = 128チャンネル)に変更した等価残差ブロックである. 図4(b)は,(a)の128チャンネル出力のところを,32グループのグループ化畳み込み(各4チャンネル)へ変更することより等価変換した残差ブロックである.この図4(b)をResNextでは最終的に使用する.これは論文中の ResNext-101層 (32 x 4d) モデルに相当している.

Inceptionの分割した各経路ではバラバラなサイズの畳み込み層を用いていた.それに対してResNeXtでは,32チャンネル全てを,同じボトルネックに統一して畳み込みを行うことにした.これにより,元の32経路に相当する「32グループでのグループ化畳み込み」へ等価変換することが可能となった.

ResNeXtは,インスタンスセグメンテーション向けの Mask R-CNN [He et al., 2017] でもCNNバックボーンとして使用され,高精度を達成することが確認された.

4.まとめ

この記事では,ResNetの基本について紹介した.ResNetは,残差ブロックを直列接続し「スキップ接続を用いた残差関数の合成構造」を採用ことにより,50~150層の畳み込み層から構成される「かなり深いCNN」を,初めてImageNetから高精度に学習できるようになった.そして,その精度は旧来の最先端CNNバックボーンと比べて大幅に向上したことで,以後CNNバックボーンのファーストチョイスの1つなった.

また,ResNetの改善版として提案された「ResNeXt」についても紹介した.「残差パス内のワイド化 => そのグループ化畳み込みへの変形」をResNetに追加しただけで,ResNetの「残差ブロックを直列に並べるだけ」というシンプル構造を保ちつつも,更に高い画像認識精度を達成した.よって,ResNextも,その後は幅広く画像認識・映像認識タスクで活用されることとなった.

References

  • [Diba et al., 2018] Ali Diba, Mohsen Fayyaz, Vivek Sharma, M Mahdi Arzani, Rahman Yousefzadeh, Juergen Gall, and Luc Van Gool. Spatio-temporal channel correlation networks for action classification. In ECCV, 2018.
  • [Hara et al., 2018] Kensho Hara, Hirokatsu Kataoka, and Yutaka Satoh. Can spatiotemporal 3d cnns retrace the history of 2d cnns and imagenet. In CVPR, 2018.
  • [He et al., 2016a] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016
  • [He et al., 2016b] K. He, X. Zhang, S. Ren, and J. Sun. Identity mappings in deep residual networks. In ECCV, 2016
  • [He et al., 2017] K. He, G. Gkioxari, P. Doll ́ar, R. B. Girshick, Mask r-cnn, In ICCV, 2017.
  • [Krizhevsky et al,. 2012] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012.
  • [Szegedy et al., 2015] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabi- novich. Going deeper with convolutions. In CVPR, 2015.
  • [Szegedy et al., 2016] C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z.Wojna. Rethinking the inception architecture for computer vision. In CVPR, 2016.
  • [Veit et al,. 2016] Veit, Andreas, Michael J. Wilber, and Serge Belongie. “Residual networks behave like ensembles of relatively shallow networks.” In NIPS, 2016.
  • [Xie et al., 2017] Xie,S., Girshick, R., Dollar,P. , Tu,Z., He,K. :Aggregated residual transformations for deep neural networks. In: CVPR. (2017)

参照外部リンク

関連記事