AIの「限界」を突破した革命児!ResNetのショートカット構造をプロが解説
こんにちは。ゆうせいです。
前回の記事では、効率性を極めたGoogLeNetについてお話ししました。しかし、AIの世界は止まることを知りません。GoogleNetが登場した翌年の2015年、さらに驚くべき進化を遂げたモデルが現れました。それが、今回ご紹介する ResNet (レズネット)です。
皆さんは「層を深くすればするほど、AIは賢くなる」と思いますか?実は、ある時期までAI研究者たちは、層を深くしすぎるとかえってバカになってしまうという奇妙な現象に頭を悩ませていたのです。その絶望的な壁を「たった一本の線」で解決してしまったのがResNetです。
ResNetが解決した「深層化の壁」
かつてのAI界には、ある深刻な問題がありました。それは「劣化問題(Degradation Problem)」と呼ばれるものです。
普通に考えれば、脳の層を10層から100層に増やせば、より複雑なことを覚えられるはずですよね。しかし、実際にやってみると、なぜか学習が全く進まなくなり、精度もガタ落ちしてしまったのです。
ここで、AI学習の鍵を握る「勾配(こうばい)」という専門用語を解説しましょう。
勾配とは
勾配とは、AIが学習する際に出る「答え合わせのヒント」のことです。
例えるなら、山頂にあるゴール(正解)を目指して下っているときに、どちらの方向に進めばより低く(誤差を小さく)なれるかを示すコンパスのようなものです。
これまでのAIは、層が深すぎると、このコンパスの針が途中で動かなくなってしまいました。これを「勾配消失(こうばいしょうしつ)」と言います。山の麓までヒントが届かないので、初期の層は何を学習すればいいか分からなくなってしまうのです。
逆転の発想!スキップ接続の正体
ResNetが発明した解決策は、驚くほどシンプルでした。それが スキップ接続 (またはショートカット接続)です。
従来のAIは、全ての層を順番に通過しなければなりませんでした。しかしResNetは「前の層の情報を、次の層を飛び越えてそのまま後ろに足し算する」というバイパス道路を作ったのです。
数式で表すと、従来の層の出力を 、入力を
とした場合、ResNetの出力は以下のようになります。
出力
この という部分が魔法の正体です。なぜこれが凄いのか、皆さんは分かりますか?
もし (新しく学習する部分)が全くダメな内容だったとしても、元の情報
がそのまま後ろに伝わるため、少なくとも「前の層より悪くなること」を防げるのです。
残差学習:引き算で考える賢さ
ResNetのResは「Residual(残差)」の略です。ここには「残差学習」という非常に賢い考え方が詰まっています。
残差学習とは
残差学習とは「ゼロから完璧な答えを作る」のではなく、「今の答えと理想の答えの『差』だけを学習する」方法のことです。
例えるなら、彫刻を作るときに毎回新しい石を削り出すのではなく、すでに形ができている像に対して「あとどこを数ミリ削ればいいか」という微調整だけを行うようなものです。
理想の形を とすると、AIは
という「差(残差)」だけを必死に探せば良くなりました。何も変化させる必要がないときは、AIはただ「ゼロ」を返せばいいだけ。これなら、100層を超えても学習がスムーズに進むのも納得ですよね!
ResNetのメリットとデメリット
この技術によって、AIは一気に152層という、当時としては未知の領域まで深くすることに成功しました。
メリット
- 圧倒的な深さを実現できる:勾配がバイパスを通って最後まで届くため、1000層を超えるような超深層ネットワークも構築可能です。
- 精度が非常に高い:深い分だけ、画像の非常に細かく複雑な特徴まで捉えることができます。
- 転移学習に強い:汎用性が高いため、一度学習したResNetを別のタスク(医療診断や工場検品など)に再利用するのが非常に簡単です。
デメリット
- メモリを大量に消費する:層が多いため、動作させるには高性能なGPU(計算用チップ)が必要になります。
- 過学習のリスク:層が深すぎると、訓練データにだけ完璧に適合してしまい、未知のデータに弱くなることがあります。
皆さんの身近にある画像認識AIも、実はこのResNetをベースにしているものが非常に多いんですよ。
知識を整理しよう
ResNetの特徴を、他のモデルと比較しながら表にまとめました。
| 比較項目 | 従来のCNN | GoogLeNet | ResNet |
| 主な工夫 | 層を重ねる | 横に並べる | 飛び越しさせる |
| 解決したこと | 基本的な認識 | 計算の効率化 | 深層化の限界 |
| 構造のキモ | 一本道 | インセプション | スキップ接続 |
| 層の深さ | 浅〜中程度 | 中程度(22層) | 非常に深い(152層〜) |
今後の学習の指針
ResNetは現代のディープラーニングにおける「標準(スタンダード)」となりました。ここを理解した皆さんは、もう初心者卒業です!
さらにステップアップしたい方は、以下の指針を参考にしてください。
- DenseNetを調べる:ResNetの「足し算」を「連結(合体)」に変えた、さらに情報の結びつきが強いモデルです。
- Attention(アテンション)を学ぶ:最近の生成AI(ChatGPTなど)の核となる技術で、ResNetの考え方がどう進化していったかが見えてきます。
import torchvision.models as models
# 最も有名な「ResNet50」をロード
resnet50 = models.resnet50(pretrained=True)
# このモデルには、50層分の「バイパス道路」が詰まっています
バイパス一本で世界を変えたResNet。その「シンプルだけど強力なアイデア」の美しさを感じていただけたでしょうか。