Residual Neural Networks(ResNet): 残差ブロックを利用した深いCNN

1. Residual Neural Networks(ResNet)とは [概要]

Residual Neural Networks(ResNet)とは,CNNバックボーンとして広く用いられる構造であり,残差接続を使用した「残差ブロック」を直列に多数つなげることで,劣化問題を回避して,高精度の大規模CNNを学習できるようにした設計である [He et al., 2016a].

また,同じ著者らグループは,残差ブロックをInceptionブロック的にワイド化して性能強化した ResNeXt [Xie et al., 2017] も提案した.ResNet と ResNextは,共に画像認識や動画認識で,広く活用されている.

この記事では,ResNetの紹介を主に行う.ResNextについても少し触れる.

1.1 ResNet 登場当時の背景

当時state-of-the-artなCNNであったVGGNetInceptionNetなどでは,CNNをそれら以上の「20層程度以上」もっと深くた状態で学習してみても,期待したレベルまでの認識性能に達しないで精度が落ちる「劣化(degradation)問題」が発生していた (2.1節).本当は更に深くすると精度が上がるはずであがるが,その想定どおりいかなかったわけである.勾配消失問題などで,それ以上のレベルの深さでは,奥の序盤層まで勾配が行き渡っていなかったので,それを解決する必要があった.

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

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

1.2 ResNetの概要(全体像)

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

ResNet は,残差接続(=スキップ接続)と加算演算子(+)ので2つで構成された残差ブロック(Residual Block)を基本構成ブロックとし,その残差ブロックを直列に多数接続しただけのシンプルな設計のディープニューラルネットワークである(図1).

この残差接続の連続をうまく活用した残差学習(residual learning)がResNet論文では提案されたともいえる.残差学習のおかげで,ResNetでは,残差ブロックの各残差層へ,微分を分配して奥の方の序盤の層へも誤差を逆伝搬できる.これにより,勾配消失を防いで序盤の層まで奥の損失をうまく行き渡らせることができる.

毎回の残差ブロック(2.2節)では,以下の2通りのパスの伝搬経路がある(2.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節)について詳細に紹介する.また,ResNetの著者らによる改善版である ResNeXt (3節)についても概要だけ紹介する:

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

2. ResNet の詳細

2.1 CNNを20層以上以上深くできなかった2つの問題

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

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

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

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

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

ResNet(Residual Neural Networks)の残差ブロック
図2-a ResNet (Residual Neural Networks) の残差ブロック
プレーンなCNN畳み込みブロック
図2-b プレーンなCNN畳み込みブロック

2.1節の動機のもとで, (1) 「残差接続」と「畳み込み層 + ReLU + 畳み込み層 」の2経路をブロックとしてまとめた残差ブロック(Residual Block)を提案した(図2-a).

ResNetは,この残差ブロックを基本部品として,畳み込み層の総数が50~150層の構成にまで直列に深くしたCNNを構成する.そのシンプルな拡張で,残差接続を積極活用した残差学習(residual learning)が可能となる.残差学習を行うことで,ResNetは,初期表現・勾配を,遠くの奥の層までの(スキップ接続の連続による)長期伝搬することを可能にした.これにより,小パーツ群の問題に分解でき,学習収束性も高めた.

以上より,2.1節の2つの課題を克服し,「劣化問題なしの高精度なモデルの学習」と「最適化の簡易化・収束性向上」を同時に達成したのResNetである.

ResNetは,「スキップ接続でつないで数層ごとにブロック化する」だけという,極めて簡単な手段で実現したところに,提案のすごみがある.シンプルすぎるがゆえ,応用性も高い.よって,その後,残差ブロックを応用したネットワークも多数提案されていくことにもなった.たとえば,近年で特に重要なモデルである 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)と呼ぶ.

  • スキップ接続側(図2-a 青色領域側):入力表現$\bm{x}$を,元の表現のまま(= 恒等写像, Identity Mapping),別ブランチに分岐させる.
  • 残差写像側(図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節)では標準的である.

PreActivation 残差ブロックの提案

また,この恒等写像実験の研究 [He et al., 2016b]では,残差ブロック内では,畳み込み層より先にReLUを用いる「バッチ正規化ReLU畳み込み層」のPreActivationの順番が性能を向上させ,学習効率も良くすることを発見した.この「PreActivation構成の残差ブロック」は,その後,DenseNetでも使用されることになる.

そしてこの研究では,PreActivationを用いることで学習効率化が進んだので,「ResNet-1001層」という超巨大な深いResNetの実験も行われた.

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 本番向け:ボトルネック化された残差ブロック

残差ブロックのボトルネック化 (Residual Neural Networks)
図3 残差ブロックのボトルネック化 (Residual Neural Networks)

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層よりもかなり精度が高く,しかも層数を増やすごとにどんどん精度が良くなるという,ディープラーニングの導入で期待する「深くするほど精度が良い」という振る舞いを,50層以上に層数が多くなっても,初めて達成できた.

3. ResNext : 残差ブロックのワイド化による改善版

ResNext [Xie et al., 2017] は,ResNetの著者グループ自らによるResNetの改善版である.残差ブロックのボトルネックの等価表現として,32グループに分割したグループ化畳み込み(Grouped convolution) [Krizhevsky et al,. 2012] を代わりに使用することで,深さを増やさずに,ワイド化(複数経路化)によりResNetからの精度向上を達成した.つまりは,全体の深さや全体の幅を増やさずに,ブロック単位でグループ分割数を増やすだけで,計算効率性をモデル精度を向上したResNetの発展版である.

当時流行していた「CNNのワイド化」の1提案であるが,それらと異なるのは,「ブロック内で32経路にワイド化した上,それらをグループ化畳み込みに等価変換し,1経路にまとめた」という点である.

4. ResNet のまとめ

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

また,ResNet の改善版であるResNeXtについても紹介した.これは Inceptionブロックの「分岐-変換-結合」のアイデアにならって,「残差パス内のワイド化 => そのグループ化畳み込みへの変形」を,残差ブロック内に追加した.ReNetに対して,たったこれだけの変更を加えただけであるが,更に高い物体認識精度を達成することに成功し,その後ResNextも幅広く画像認識・映像認識系の各タスクで活用されることとなる.

4.1 ResNetの良いところと,その後への功績.

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

この時期(2015年ごろ)は,Highway Networkや U-Netなどの「スキップ接続」路線は,よく研究されはじめていた.ただ,その中でもResNetは,複雑な分岐をおこなわずに,VGGNet 的な直列構造をそのまま保てるのが良い点である.複数回の分岐で木構造化することはなく,2分岐の連続で直線構造は保たれる点が,「ResNetの設計の容易さ・拡張性の高さ」の視点で優れている.つまり,複雑なローカルネットワーク構造は学習の収束性の悪さも生むことがあるが,ブロック構造の直列接続のシンプル設計を保てるので,残差接続の提案はビッグアイデアであった (※ 例えばNLP業界では,RNN言語モデルの時代(2014~2017ごろ)に,LSTMの「セル内の構造の複雑さ」に起因する,学習速度の遅さに苦しんだ).

その後の残差接続の代表的な応用をあげておきたい.例えば,系列対系列変換向けのTransformerでは,残差接続による多層化可能性が貢献する.また,その後のCNNバックボーンでも,DenseNetや,Stacked Hourglass Networks(人物姿勢推定むけ)の登場にもつながる.

関連記事

関連書籍

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.

参照外部リンク