ディープラーニング分野において、Convolutional Neural Networks(CNN)は画像認識タスクで広く使用されています。その中でも、ResNet(Residual Networks)は、深いネットワークで発生する問題を解決し、現在のCNN技術の中でも標準的な技術となっています。本記事では、ResNetの基本的な仕組みとその革新的な技術について紹介します。
1. ILSVRC-2015とResNetの登場
ResNetは、2015年のILSVRC(ImageNet Large Scale Visual Recognition Challenge)で登場し、大きな注目を集めました。ResNetは152層という非常に深いネットワークにもかかわらず、**3.57%**という低いエラー率を達成しました。
- 入力画像: 256x256ピクセルのカラー画像
- 分類クラス: 1,000クラス
ILSVRCでのResNetの登場は、ディープラーニングの発展において重要なターニングポイントとなりました。
2. Degradation問題と残差学習
Degradation問題とは?
ディープラーニングのネットワークは、層が深くなるほど性能が向上するはずですが、実際には深いネットワークが浅いネットワークより性能が劣るという現象が起こります。この問題を**degradation(劣化)**と呼びます。
残差学習(Residual Learning)
ResNetは、このdegradation問題を解決するために、**残差学習(Residual Learning)**を導入しました。
- 従来のネットワーク: ( y = H(x) )
- 残差学習: ( y = F(x) + x )
ショートカット接続により、入力 ( x ) を出力に直接加え、情報の伝達を補助します。これにより、深いネットワークでも学習が安定します。
# 残差ブロックの構造(簡易)
def residual_block(x):
F_x = conv3x3(x)
return F_x + x # ショートカット接続
3. ResNetの構造
ResNetは、「残差ブロック(Residual Block)」で構成され、これがネットワークの深さを支えます。各ブロックは次のような構造です。
- ショートカット接続: 入力データを次の層にそのまま渡す。
- 畳み込み層: 特徴を抽出する役割を果たす。
残差ブロックの例
層 | フィルタサイズ | チャンネル数 |
---|---|---|
Conv1 | 7x7 | 64 |
Conv2 | 3x3 | 64 |
Conv3 | 3x3 | 256 |
4. ResNet-152の実装
ResNet-152は、非常に深い構造を持つネットワークであり、以下のような構造になっています。
- 入力サイズ: 224x224x3
- 畳み込み層: 7x7, 64フィルタ
-
残差ブロック:
- Res-A: 3ブロック
- Res-B: 8ブロック
- Res-C: 36ブロック
- Res-D: 3ブロック
- プーリング: グローバル平均プーリング
- 出力: Dense層 + Softmax
残差ブロックのフィルタ数
ブロック | フィルタ数(Conv1) | フィルタ数(Conv2) | フィルタ数(Conv3) |
---|---|---|---|
Res-A | 64 | 64 | 256 |
Res-B | 128 | 128 | 512 |
Res-C | 256 | 256 | 1024 |
Res-D | 512 | 512 | 2048 |
5. 技術的なディスカッション
ResNetは、多くの技術的進歩に基づいて構築されています。ここでは、特に重要な2つの技術を紹介します。
-
バッチ正規化(Batch Normalization):
- 各畳み込み層の後に適用され、学習の安定性が向上。
-
He初期化(He Initialization):
- 重みの初期化方法で、深いネットワークでも効果的に学習が進むように設計。
結論
ResNetは、深いネットワークでも性能を維持し、勾配消失問題を解決する革新的な技術です。現在の多くのCNNモデルは、このResNetのアーキテクチャを基盤としており、画像認識やその他のタスクで広く利用されています。ResNetは、ディープラーニングにおけるスタンダードとして、今後も重要な役割を果たすでしょう。