ResNet: 残差ブロックを利用した深いCNN

1. はじめに

Residual Neural Networks (ResNet) [He et al., 2016a] は,畳み込みニューラルネットワーク(CNN)のバックボーンとして広く用いられる構造であり,通称 ResNetと呼ばれる.また,同じ著者らグループは,グループ化畳み込みの導入によって,残差ブロックをInceptionブロック的に改善することで,ResNetの改善版 ResNeXt [Xie et al., 2017] も提案した.ResNetやResNextは,画像認識や動画認識で広く活用されている.

この記事では,ResNetの紹介を行い,その発展型のResNeXtについても少し触れる.

1.1 ResNet 登場の背景

当時の最先端CNNであったVGGNetInceptionNetなどでは,CNNをそれら以上の「20層程度以上」もっと深くして実験してみても,勾配損失・勾配爆発の問題から,奥の方の層まではうまく誤差が伝搬ができず,一見うまく学習できているのに精度が落ちてしまって深さどおりの実力までは発揮できないという「劣化(degradation)問題」が発生していた (2.1節).本当は更に深くすると精度が上がるはずであがるが,その想定どおりいかなかったわけである.

そこで,ResNetでは,残差ブロックの導入による残差学習を導入した.この仕組みにより,かなりの深い層数(50層~150層)でも,大規模画像データセットから,識別CNNを,劣化問題無しに高精度なモデルとして学習できるようになった(1.2節で概要を述べる).

しかも,分散して各残差に微分が逆伝搬で配られるので,(残差接続なしの場合よりも)学習も高速になり収束性もよくなったので,大規模な50層以上の更に深いモデルでも,スキップ無しのネットワークのように勾配消失・爆発で学習に苦戦することがなくなった(※ ただし,スキップ接続が無いネットワークでも,ResNetと同時期に登場したバッチ正規化を各中間層に配置すると,おなじく収束性向上の役割を果たしてくれる時代にはなる)

1.2 ResNetの概要(全体像)

ResNet のネットワーク構造
図1 ResNet のネットワーク構造.
青色の経路は残差(スキップ)接続であり,毎回の残差ブロックの終わりには,加算演算を配置する.

ResNet は,残差接続(スキップ接続)と加算演算子で囲われた残差ブロック(Residual Block)を基本構成ブロックし,シンプルに残差ブロックを直列に多数接続しただけの設計である(図1).この残差構造の連続をうまく利用した残差学習(residual learning)ResNet論文で提案されたともいえる.残差ブロックの各残差層へ,微分を分配して奥の方の序盤の層へも誤差を逆伝搬できるのが,残差学習である.

毎回の残差ブロックでは,以下の2通りのパスの伝搬経路がある:

  1. 残差関数側.
  2. 残差(スキップ)接続側.

残差ブロック$n$個が,ResNet全体を構成するが,学習時の逆伝搬時には,この2分岐がn回あるので,合計$2^n$個の伝搬経路が存在する.よって,逆伝搬時にスキップ接続側ばかり通ることで,奥の方の序盤の層の残差関数$F_i$へも,大きな微分値を個別に分散的に伝播しやすくなる.この残差学習による「分散的でアンサンブル学習的な」トリックのおかげで,深いResNetでも,各残差ブロックがうまく学習されやすくなり,劣化問題なしに収束性もよい学習ができるようになった(詳しくは2.2節).

ISLVRC 2014年の1位のInceptionNetと,2位のVGGNetは,それぞれImageNetの誤差率6%と7%台であったのが,ResNetは3%台まで向上した.これは,深さによるモデルの表現力向上と,劣化問題回避の実現によるものである.以降,ResNet・ResNeXt は,様々な画像認識CNNの応用におけるバックボーンの設計として広く用いられることとなる.

1.3 記事の構成

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

  • 2. ResNet
    • 2.1 CNNを深くできない課題:劣化問題と学習時間増大
    • 2.2 ResNetの提案:「残差ブロック」を多層化する「残差学習」
    • 2.3 ResNetの残差学習モデルの,カスケード学習・アンサンブル学習的な理解
    • 2.4 本番向け:ボトルネック化された残差ブロック
  • 3. ResNeXt : ResNetの改善版
    • 3.1 ResNetの残差ブロック:残差経路側の複数経路化

2 ResNet

2.1 CNNをそれ以上深くできない問題: 劣化問題と学習時間増大

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

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

  1. 劣化問題
    • [He et al., 2016a] の予備実験では,単純に畳み込み層を増やしてVGGNet(VGG-16層,19層)以上の層数が20~50層のCNNを,CIFAR-10 や ImageNet-1000 で学習する実験を試してみた.すると,バッチ正規化を用いたとしても,層を増やしてモデルを大きくしただけでは学習誤差が大きく出てしまい,精度が大きく落ちてしまう劣化(degradation)問題をひきおこした .従って,より深いCNN構造を提案するには,この劣化課題も解決する必要がある.
  2. 学習時間の増大
    • VGGやInceptionNetより深い50層以上のモデルを学習したいが,更に巨大なモデルになるゆえ,パラメータも多く最適化にかかる時間も長くなってしまう.
    • よって,ある程度の短い時間で学習が済んで収束し,局所解にも陥らない仕掛けを用意する必要があった.

これら2つの課題を克服する目的で,[He et al., 2016] の著者らはResNetの「残差ブロック」のアイデアを提案する.

2.2 ResNet の主提案: 「残差ブロック」の直列接続.

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

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

2.1節の動機のもとで,ResNet の構成部品として残差接続(スキップ接続)で畳込み層を数層にブロック化してまとめる残差ブロック(Residual Block)を提案した(図2-a).

ResNetでは,この残差ブロックを基本部品として,50~150層の構成にまで直列に深くしたCNNやDNNを構成する.そのシンプルな拡張で,残差接続を積極活用した残差学習(residual learning)が可能となる.

ResNetは残差学習を行うことで,初期表現・勾配を遠くの層まで(スキップによる)伝搬を可能にし,これによって小パーツ群の問題に分解でき収束性も高めた.これにより2.1節の2つの課題を克服し,「劣化問題なしの高精度なモデルの学習」と「最適化の簡易化・収束性向上」を同時に達成した.

しかも,「スキップ接続でつないで数層ごとにブロック化する」だけという,極めて簡単な手段で実現したところにすごみがある.シンプルすぎるがゆえ,応用性も高くその後,スキップ接続による残差ブロック化を応用したネットワークも多数提案されてていく.たとえば近年で特に重要なモデルである Transformer も,残差接続を使用しているおかげで大規模モデル化に成功している.

この2.2節では,残差ブロックの詳細(2.2.1節)とその効果(2.2.2節)について述べたい.

2.2.1 残差ブロックの詳細

AlexNetVGGNetのような,残差接続が無い「プレーンな直列CNN (図2-b)」では,畳み込み層やReLuを,直列にとにかくつなげただけの,直線的でシンプルなネットワーク構造であった.InceptionNetのように分岐・並列化はないわけである.

それに対して,残差ブロック(図2-a)では,各畳み込み層のまとまり(2~3層ごと)に対して,並列にスキップ接続(skip connection) (図2-a 青色側)も挿入する.ResNet式の,残差ブロック構成のスキップ接続のことを,とりわけ残差接続(residual connection)と呼ぶ.

残差ブロックでは,スキップ接続側では,入力の表現$\bm{x}$を,元の表現のまま(= 恒等写像, Identity Mapping)別ブランチに分岐させる (図2-a 青色領域側).一方,残差写像側の,畳み込み層などがある側では(図2-b 赤色側),残差写像$F(\bm{x})$であるブロック化されてた数層(2~3層でまとめる)を用いて,表現を変化させる.そして,残差ブロックの最後では,2ブランチを以下のように足し算で合成する

\[
H(\bm{x}) = F(\bm{x}) + \bm{x} \tag{2.1}
\]

要するに「スキップ接続+加算」によって,数層をグループ化すると残差ブロックと呼ぶわけである.

この式(2.1)の,残差ブロックが,直列に$N$個だけ連結することで,ResNet全体を構成する.つまり,式(2.1)を,$N$回,直列に連結で繰り返した結果が,ResNet全体の予測モデルである (図1).

2.2.2 残差ブロックの多層化による効果

これにより,順伝搬でも逆伝搬でも,2分岐のどちらかを選んだ多様な経路を信号・誤差が伝搬するモデルになった.よって,ResNetの学習時は,ネットワーク全体の関数を全体最適化するのではなく,全体の誤差が少し小さな残差$F(\bm{x})= H(\bm{x}) – \bm{x}$の経路へ少しずつ逆伝播していくことができる.従って,各残差関数の(小さめのサイズの)最適化に分割された ,アンサンブル学習的になる.

こうしてResNetは,出力の損失全体を,多数のパスに分割して,個々のパスから受け取った小さな誤差から$F(\bm{x})$を少しずつ最適化できる.プレーンなCNNで,全体を一気に最適化するのと比べて,ResNet・残差ブロックを用いると,最適化の収束性が向上する.従って,3×3カーネルの畳み込み層50層以上から構成された深いモデルでも,初めて劣化(degration)無しに,正しく学習できるようになった.

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

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

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

各残差ブロック中には,以下の2通りの経路がある.

  1. 恒等写像側の経路をたどる
  2. 残差$F$側の経路をたどる

よって,N回残差ブロックが連結していると,全経路数は$2^N$になる.例えば,3個の残差ブロックが連結している場合,微分値が伝播する経路の合計数は合計$2^3$個しか存在しない.しかし,50層や100層もあるResNetの場合では,伝播する経路数が膨大になる.

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

2.4 本番向け:ボトルネック化された残差ブロック

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

ImageNet データセットから,より深いResNetモデルを実際に学習する際には,畳み込み層の総数が50層,101層,152層の3種のResNetが,標準的な設計として用意される [He et al., 2016].その予備実験でまず用いられた ResNet-34層では「3 × 3畳み込みを2層連結した残差ブロック」が使用された(図3-左側).

それに対し,実践で用いるResNetの50層,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)」と変化するボトルネック型を形成している.これにより,InceptionNet のように,ボトルネック型の採用による「精度を保持しながら計算効率化もできる」という恩恵を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における,残差ブロックの基本構造.

InceptionNet [Szegedy et al., 2015] [Szegedy et al., 2016] のInceptionブロックにて実績が出来ていた「分岐-変換-結合(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](ResNetと同じくFacebookラボの成果)のバックボーン設計に使用した実験が行われ,高精度を達成できることが確認された.

4. ResNet のまとめ

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

複数層を「スキップ接続と加算演算子を追加してブロック化」するだけで,深いネットワークを劣化問題無しで構成できるようになるという,ありえないくらいシンプルな拡張機構の提案である.

この時期(2015年ごろ)は,HighwayNetworkやU-Netなど,「スキップ接続 + スキップ前の特徴マップとスキップ後のマップを合成」という路線はよく研究されてはじめていた.ただ,その中でも,ResNetは,複雑な分岐をおこなわずに,(VGG-likeな)直列構造を保てるのが良い点である.そのおかげで,(分岐による経路の増加による)学習時の複雑性の増加は起こさないゆえ,残差接続・残差ブロック化というアイデアの優れている点である.複雑なローカルネットワーク構造は学習の収束性の悪さを生むことがあるので,残差ブロックはシンプルであるのに,ビッグアイデアであった. (※ 例えばNLP業界では,RNN言語モデルの時代(2014~2017ごろ)に,LSTMの「セル内の構造の複雑さ」に起因する学習の遅さに苦しんだ.)

ResNetは,そのシンプルアイデアで深いネットワーク化を実現できるゆえに応用性も物凄く高い.たとえば,残差接続を用いたseq2seqである,Transformerの登場にも貢献する.SE-Netや,Stacked Hourglass に DenseNetなどの,「その後のスキップ接続,残差接続の応用」にも,「シンプル2分岐ブロックを構成するのが理想的」として模範となっていった意味でも,.

また,ResNet の改善版「ResNeXt」についても紹介した.Inceptionブロックの「分岐-変換-結合」のアイデアにならって,「残差パス内のワイド化 => そのグループ化畳み込みへの変形」を,残差ブロック内に追加した.たったこれだけの変更ではあるが,更に高い画像認識精度を達成することに成功し.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.

参照外部リンク

関連記事

↓ ためになった方は,記事をSNSでシェアをしてくださると,管理人の記事執筆モチベーションが上がります