ResNet徹底解剖:深層学習を変えた“残差学習”!50 層・100 層・1000 層を駆け抜ける最適化技術

こんにちは、ゆずかきです。
ここからは、「ResNet(Residual Network)」 と呼ばれるディープラーニングの一手法について、一つの技術ブログ記事としてまとめてみたいと思います。

本記事では、Kaiming He らが 2015 年の論文

Deep Residual Learning for Image Recognition (arXiv:1512.03385)
にて提案した「ResNet」の全貌を、可能なかぎり丁寧かつ網羅的に解説していきます。

ResNet は、深いニューラルネットワークを効率的に学習するための“残差学習”というフレームワークが提案されたことで大きなインパクトを与え、現在でも画像認識物体検出などを中心に数多くの応用例があります。たとえば ImageNet における画像分類では、ResNet-152 層モデルで当時世界最高峰の結果を打ち立てましたし、物体検出(Faster R-CNN など)に ResNet を組み込むことで、COCO や PASCAL VOC などのタスクでも大きな精度向上が報告されています。

以下では、論文をベースに、なぜ深いモデルの学習が難しいのか残差学習(Residual Learning)とは何なのか具体的なアーキテクチャ構成(ResNet-50, 101, 152…)ImageNet/CIFAR-10/COCO/PASCAL VOC などで得られた実験結果、そして実運用面への応用まで、しっかりと押さえていきます。中級者~上級者の方へ向けて、なるべくコアな技術的ポイントを網羅していきたいと思いますので、どうぞ最後までお付き合いください。


§本記事の構成

  • はじめに: ResNetとは?
  • 従来の課題:ネットワークの深さと学習の難しさ
  • Residual Learning(残差学習)の基本アイデア
  • アーキテクチャ詳細: ResNet-18/34 から ResNet-50/101/152 へ
  • 主な実験結果と考察:ImageNet, CIFAR-10, COCO, PASCAL VOC
  • さらなる拡張・応用例
  • 課題と今後の展望
  • まとめ

深いネットワークを積んでいくと、通常は勾配消失 (vanishing gradients)勾配爆発 (exploding gradients)、そしてデグレ(degradation)問題に悩まされがちです。このあたりをどうクリアしたのが ResNet なのか、順を追って見ていきましょう。


§はじめに: ResNetとは?

ResNet (Residual Network) は、Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun ら (Microsoft Research) のチームが提案した、深層学習のための画期的アーキテクチャです。論文の正式名称は、

Deep Residual Learning for Image Recognition
で、arXiv への最初のバージョンが 2015 年 12 月に投稿されました (arXiv:1512.03385)。

この論文の背景としては、より深いネットワークを積んだほうが表現力が高くなる という事実がありながら、実際に 50 層、100 層を超えるようなネットワークを素直に学習しようとすると、訓練誤差が下がりにくくなる(最適化が難しくなる) という問題点が見えてきた、という状況がありました。

ResNet の一番のポイントは「残差学習 (residual learning)」という考え方です。ネットワークを層の積み重ねと見るのではなく、各ブロックを「入力信号 x に対して、残差 F(x) を学習し、出力が F(x) + x になる仕組み」を導入するというアイデア。これにより学習がはるかに安定し、50 層や 100 層、はたまた 1000 層超えのネットワークですら最適化が可能になることが示されました。

論文の結論としては、

  1. CIFAR-10 (比較的軽量な画像分類タスク) では 100 層、1000 層の学習も可能になる
  2. ImageNet (大規模な画像分類タスク) では 152 層のネットワークを学習し、従来よりもパラメータ数を抑えながら高精度化
  3. 物体検出 (COCO, PASCAL VOC) など、ほかの視覚タスクにも転用可能
  4. 実際に ILSVRC 2015 (ImageNet 大会) で分類や検出、さらに COCO のセグメンテーションなど複数部門で 1 位を獲得

と、深層学習の歴史を塗り替えた ほどの成果です。


§従来の課題:ネットワークの深さと学習の難しさ

深いネットワークを積む上で、古くから知られている問題は 勾配消失/爆発 でした。初期の研究では、何十層も積むと学習が進まない(あるいは発散する)という課題が常にありましたが、適切な初期化 (例えば XavierKaiming 初期化) や Batch Normalization (BN) などである程度は解決されてきました。

しかし、He らの論文では、それらを使ってもまだ「深くすると学習がうまくいかない」場面があった、と指摘しています。具体的には、20 層のネットワークと 56 層のネットワークを“同じ構造”で組んで学習した場合、56 層のほうが明らかに学習誤差が大きい という現象が観測されました。

実験をさらに見ていくと「過学習 ではなく、そもそも訓練誤差 が下がらない (Degradation problem)」という状態になります。深さを増せば少なくとも表現力としては強いはずなのに、浅いネットワークより訓練誤差が高いというのはおかしい……ということで、そもそも最適解へ到達しにくくなっている(ソルバがうまく機能していない)可能性が強いわけです。

そこで、「各ブロックが恒等写像(identity mapping)を実現できるようにすれば、深くしても悪化しない」のではないか、という発想に至ります。もし深いブロックが単に何もしない(x をそのまま x に写す)という最適解が存在するなら、少なくともそれで浅いネットワークと同等の性能が出せるはず。それを実現するための方策こそが、Residual Learning という設計になっています。


§Residual Learning(残差学習)の基本アイデア

論文のコアアイデアは以下の式に尽きます:

ここで、H(x) は学習したい本来のマッピングで、F(x) := H(x) – x を学習すればよいのでは? というのが残差学習の発想です。

すなわち、「層が直接 y = H(x) を学習するのでなく、層が y – x = F(x) を学習する」 ということ。論文ではこれを「residual function」と呼んでいます。

このとき、もし最適な解が「恒等写像 x → x」に近いものであった場合、ネットワークは「F(x) = 0 に近づければよい」だけになります。つまりアイデンティティに近いマッピングを学習するのが簡単になるというわけです。


Shortcut Connection (ショートカット接続)

では、どうやって y = F(x) + x を実装するか? 論文では Shortcut Connection という仕組みを導入します。

具体的には、1 ブロックが以下のようになっており、

  • (weight layer) は普通の畳み込み (Conv) や活性化 (ReLU) を含むブロック
  • shortcut は同次元なら単なる恒等写像(x をそのまま流す)
  • 出力側で「 x + F(x) 」を加算して次の段へ
   x ------ (shortcut) ------+
    |                        |
    |  (weight layer)        v
    |       + ReLU         F(x)
    |  (weight layer)        |
    +------------------------+
                  add -----> y (= x + F(x))
                  ReLU

次元が異なる場合は、1×1 のプロジェクションを挟んだり、ストライドを変えたりする方法もあるのですが、重要なのは「ショートカットが恒等写像になっている」という点です(これを identity shortcut と言います)。
これにより、各ブロックがもし恒等写像が最適解ならば、shortcut 経由で x がそのまま次段に伝わるという仕組みになり、深くしても学習が悪化しないという狙いが実現されました。


§アーキテクチャ詳細: ResNet-18/34 から ResNet-50/101/152 へ

論文では、ImageNet 向けに18層, 34層, 50層, 101層, 152層というバリエーションの ResNet が提示されています。ここでは、その詳細を順に眺めてみましょう。

ResNet-18 / 34: Basic block

まず、ResNet-18 と ResNet-34 は、Basic Block と呼ばれる比較的シンプルなブロック構造を持ちます。具体的には、

  1. 3×3 の Conv + BN + ReLU
  2. 3×3 の Conv + BN
  3. shortcut で x を加算
  4. (ReLU)

という 2層畳み込みが1ブロックになっています。

ResNet-18 は、2層のブロック × (2 + 2 + 2 + 2) = 16層 + 最初の 7×7 Conv と最後の全結合などを合わせて 18 層となります。
ResNet-34 はブロックをより増やして(2, 3, 4, 3 のように積み増し)、計 34 層構造にしたものです。

ResNet-50 / 101 / 152: Bottleneck block

一方、ResNet-50 や 101, 152 になると、1 ブロックあたり 3層 の畳み込み(1×1 + 3×3 + 1×1)で構成される Bottleneck Block が採用されます。

  • 1×1 Conv(次元削減
  • 3×3 Conv
  • 1×1 Conv(次元拡張
  • shortcut による加算

という構造で、パラメータ数と計算量を抑えつつ深いネットワークを積むことが可能になっています。

152層モデルでも VGG-19 より軽い?

面白いのは、152 層の ResNet でさえ FLOPs は VGG-19 を下回る、という点です。つまり、「層数が多い=計算量がとてつもなく増える」わけではなく、ボトルネック構造の巧妙な設計により、深くしても計算負荷やパラメータを爆増させずに済むよう工夫されています。


§主な実験結果と考察:ImageNet, CIFAR-10, COCO, PASCAL VOC

論文では、多種多様なデータセットで ResNet の有効性を実証しています。ここでは代表的な例だけを取り上げましょう。

1. ImageNet (ILSVRC) 分類

  • 18層 vs. 34層 (Plain vs. Residual)
  • “Plain Net” (ショートカットなし) の 34層は 18層より訓練誤差が悪化
  • しかし “ResNet” の 34層は逆に精度が向上 → 残差学習が効いている
  • より深いモデル (50, 101, 152 層)
  • 50層 → 101層 → 152層 と深くするほど精度向上
  • 当時トップクラスだった VGG-16/19 を超え、ImageNet テストセットでトップ-5 エラー率 3.57% を記録 (アンサンブル利用)
  • ILSVRC 2015 の分類タスクにて 1 位を獲得

大規模画像認識の競技会を制し、まさに「深い方が強い」を実証してみせた形ですね。

2. CIFAR-10

より小規模な CIFAR-10 でも、20層, 32層, 44層, 56層, 110層, 1202層 (!) といった実験が行われました。

  • Plain Net は 56層を超えるあたりから訓練誤差が上がり続ける
  • ResNet は 110層や 1202層でも訓練誤差を下げることが可能
  • ただし 1202層はパラメータ数が多く過学習気味で 110層の方がテスト精度としては高い

興味深い点は、残差学習により最適解にたどり着く困難さを回避しつつも、あまりにも巨大なモデルは過学習など別の問題が出る可能性がある、ということですね。

3. COCO, PASCAL VOC などの物体検出

ResNet は、単なる画像分類だけでなく、Faster R-CNN のような物体検出手法にも容易に転用できます。

  • COCO データセットで VGG-16 から ResNet-101 に置き換えると、mAP@[.5:.95] で +6% 程度向上(相対 28% 改善)
  • PASCAL VOC でも +3% 以上の大幅向上

さらに、Box RefinementGlobal Context、マルチスケールテストなどを組み合わせることで、COCO の検出競技・PASCAL VOC の検出でいずれも当時最先端の結果を達成しています。
また ImageNet の検出タスク (DET) や Localization (LOC)、COCO のセグメンテーションに至るまで、ResNet ベースが圧倒的な強さを見せ、ILSVRC & COCO 2015 で総合的に 1 位をさらいました。


§さらなる拡張・応用例

1. “Identity Shortcut” の重要性

  • ResNet 論文中では、ショートカットで「恒等写像 (identity)」を保つほうがより有効かつパラメータを増やさずに済むと報告しています。
  • プロジェクション (1×1 Conv) を挟む場合もありますが、基本的にはチャンネル数が変わらないブロックなら identity shortcut のほうが軽量。

2. 1000 層超えの極深ネット

  • CIFAR-10 では 1202 層を実験的に報告
  • 高精度化だけでなく、今後は大幅な正則化効果(学習の安定化)などが期待される可能性も示唆

3. 適用範囲

  • 論文でも言及されているように、画像分類だけでなく、オブジェクト検出セグメンテーション画像生成、さらには動画解析などでも採用例が増えました。
  • 実際に ResNet の残差構造は、言語処理分野など他分野のニューラルネットにも影響を与え、「Residual っぽい構造」を入れる手法は幅広く使われています。

§課題と今後の展望

  1. 超深層ネットワークのオーバーフィット
  • CIFAR-10 の例でも 1202 層で過学習が見られたように、「最適化はクリアできるが過学習する」場合もある。タスク規模に見合ったモデルサイズをどう選択するか、引き続き検討の余地あり。
  1. モデルサイズ・計算コスト
  • VGG に比べると FLOPs は削減されているとはいえ、152 層ともなると依然として大きい。実アプリケーションでの推論速度やメモリ使用量、最適化など実装的なトレードオフも意識する必要がある。
  1. 残差ブロック以外の拡張
  • Highway Networks (Srivastava et al.) など、ゲーティング (gating) を用いる類似の研究もあるが、そちらはさほどブレイクしなかった。一方、ResNet 以後はたとえば “DenseNet” (Huang et al.) のように、特徴マップを再利用する発想へと発展していった。今後もさらなる改良案が出てくるだろう。
  1. さらなる発展 (Vision Transformer など)
  • 近年では Transformer 系 (ViT, Swin Transformer など) が CNN と肩を並べる、もしくは超える性能を示してきている。しかし、現在でもバックボーンに ResNet を使う手法が多く、ResNet 的な発想が廃れる気配はない。
  • 既存の CNN との組み合わせ手法やハイブリッドモデルなど、依然として「残差構造」の考え方が活かせる場面は多い。

§まとめ

ResNet は、ディープラーニングの歴史における一大ブレイクスルーであり、「深さ」 がもたらす最適化の難しさを、「残差学習 (residual learning)」 というシンプルかつパワフルなアイデアで突破した点が大きな功績です。

  • Plain Net で深くした場合に生じていた Degradation Problem(深くなるほど訓練誤差が下がらない)
  • これを Shortcut (Identity mapping) を導入して「F(x) + x」という形で学習する仕組みに改革
  • VGG-19 などを超える性能を獲得し、ImageNet (ILSVRC 2015) で多数のタスクを制覇
  • CIFAR-10 や COCO、PASCAL VOC などさまざまなタスクで汎用性を示す

特に実運用面では、ResNet-50 のようにバランスの良いモデルが広く使われており、近年でも多くの研究で “Backbone” として採用されています。今後も、より効率的で高精度なアーキテクチャが登場する可能性は大いにありますが、「深いモデルを安定的に学習する」 という観点で ResNet の残差学習がもたらした影響は計り知れません。

最後までお読みいただき、ありがとうございました!


🔑この記事のポイントまとめ

  • ResNet(残差学習): ネットワークを直接学習するのではなく「F(x) + x」の形にして最適化を容易化
  • Shortcut Connection によって、深くしても劣化しにくい → 50 層, 101 層, 152 層へ
  • ImageNet で当時の SOTA を塗り替え、COCO や PASCAL VOC の検出タスクでも大幅性能アップ
  • Bottleneck 構造 により、層数を増やしても計算量を大きく増やさずにすむ設計
  • 過学習とのバランス計算コストとのトレードオフ など、実運用では適切な深さを選択する必要あり

§参考文献(論文リンク)


画像解析

Posted by yuzukaki-dialog