画像認識モデルResNetとは?名前の由来と残差接続の仕組みを初心者向けに解説

こんにちは。ゆうせいです。

画像認識の分野で広く使われているディープラーニング(深層学習)のモデルに、ResNet(レズネット)と呼ばれるネットワークがあります。ResNetは、登場以来多くの画像認識タスクにおいて高い性能を示し続けている重要な技術です。

新人エンジニアの皆様に向けて、ResNetの名前の由来や仕組み、メリットとデメリットについて、専門用語を交えながら分かりやすく解説します。

ResNetの名前の由来と基本概念

ResNetの正式名称は、Residual Network(レジデュアル・ネットワーク)です。

Residualという英単語は、日本語で「残差(ざんさ)」を意味します。残差とは、予測した値と実際の値との間に生じる「ズレ」や「差分」を指す言葉です。

この残差の考え方を高校生の学習に例えてみましょう。すでに模擬試験で80点を取れる実力がある生徒が、100点満点を目指して勉強するとします。このとき、教科書の1ページ目からすべてを復習し直すのは非効率的です。効率よく点数を伸ばすためには、間違えてしまった20点分の苦手分野、つまり「解けなかった差分(残差)」だけに集中して対策を行う必要があります。

ResNetも同様の考え方を取り入れています。入力された情報をすべてゼロから学習し直すのではなく、入力情報と目標とする出力情報の「差分(残差)」だけを学習するように設計されています。残差を学習するネットワークという性質を反映して、Residual Networkという名前が付けられました。

従来のディープラーニングが抱えていた課題

ResNetが登場する前、ディープラーニングではネットワークの層(レイヤー)を増やして深くする手法が主流でした。層を増やすことで、画像の中からより細かな特徴を抽出できるようになると考えられていたためです。

しかし、層を単純に深くしていくと、学習がうまく進まなくなる問題が発生しました。この現象を勾配消失問題(こうばいしょうしつもんだい)と呼びます。

勾配消失問題とは、出力側から入力側に向かって学習のための情報(勾配)を伝達する過程で、情報が掛け合わされるうちにゼロに近づいて消えてしまう現象です。層が深くなればなるほど、最初の方の層に学習のヒントが届かなくなり、結果として画像認識の精度が著しく低下してしまいました。

課題を解決するスキップ接続の仕組み

ResNetは、勾配消失問題を解決するために、スキップ接続(Skip Connection)という独自の構造を導入しました。

通常のネットワークでは、入力されたデータはすべての層を順番に通過しながら変化していきます。一方、スキップ接続では、入力データをいくつかの層を飛び越えて、先の層に直接足し合わせます。

数式で表すと、ある層の入力を x とし、その層を通過した変化量を F(x) としたとき、次の層へ渡される最終的な出力は F(x) + x となります。

この F(x) + x という構造が、ResNetの最大の特徴です。層を飛び越えるバイパス(近道)が存在することで、学習時の情報(勾配)が途絶えることなく、入力側まで直接届くようになります。スキップ接続の導入によって、ネットワークの層を非常に深くしても、勾配消失問題を防ぐことが可能になりました。

ResNetのメリットとデメリット

ResNetを実務で採用するにあたり、把握しておくべき具体的なメリットとデメリットを示します。

メリット

  • 100層を超える極めて深いネットワークを構築しても、学習を安定して進めることができます。
  • 画像認識タスクにおいて、従来の浅いネットワークに比べて大幅に高い精度を達成できます。
  • スキップ接続の追加自体には新しいパラメータの学習が不要なため、計算の複雑さを抑えることができます。

デメリット

  • 層を深く設定するほど、モデルが保持するパラメータ数が増え、必要となるコンピュータのメモリ容量が増加します。
  • 処理能力が限られているスマートフォンやIoTデバイスなどの環境では、処理速度が低下し、リアルタイムでの動作が難しくなる場合があります。

まとめと次の学習ステップ

ResNetは、残差を学習するというアイデアとスキップ接続の導入によって、ディープラーニングの多層化に伴う勾配消失問題を解決した画期的なモデルです。画像認識モデルを理解する上での強固な土台となります。

この技術をさらに深く理解するために、次のステップに沿って学習を深めていくことをお勧めします。

  1. PyTorchやTensorFlowといったディープラーニングのフレームワークを用いて、ResNetの既存モデルをコード上で呼び出してみる。
  2. 自身で用意した任意の画像データを用いて、ResNetによる画像分類を実際に実行し、動作を確認する。
  3. すでに学習が完了しているResNetのパラメータを再利用して、別のタスクに適用する「転移学習」の実装に挑戦する。

まずはフレームワークに触れ、実際に動かしてみることから始めてみてください。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。