ResNetは残差接続によって非常に深いネットワークの学習を可能にし、画像認識を飛躍させたモデルです。その構成要素であるResidual Blockとボトルネック構造、派生形のWideResNetを解説します。
📖 概要
CNNは層を深くするほど高い表現力が期待できますが、実際に層を単純に積み重ねると、勾配消失などにより最適化が難しくなり、深いモデルのほうが訓練誤差すら悪化する「劣化(degradation)問題」が観察されました。ResNet(Residual Network)は2015年に提案され、この問題を残差接続(skip-connection)というシンプルな仕組みで解決しました。層に「出力そのもの」ではなく「入力からの差分(残差)」を学習させることで、100層を超える非常に深いネットワークの学習を可能にし、ILSVRC 2015の画像分類で優勝しました。
ResNetは残差接続を含む小さな単位であるResidual Blockを積み重ねて構成されます。深いモデルでは計算量を抑えるためにボトルネック構造のブロックが使われます。また、深さを追求する代わりにブロック内のチャネル数(幅)を増やす方向で改良したのがWideResNetです。残差接続は現在ではTransformerを含むほぼすべての深層モデルで使われる基本部品となっています。
🔍 キーワード解説
残差接続(skip-connection)
残差接続(skip-connection)は、ブロックへの入力xを、畳み込み層などの変換F(x)の出力に足し合わせて y = F(x) + x とする接続です。ブロックは目標の写像H(x)を直接学ぶのではなく、残差 F(x) = H(x) − x を学べばよいことになります。恒等写像が最適に近い場合はF(x)を0に近づけるだけでよく、深い層でも学習が容易になります。また逆伝播の観点では、加算のノードを通じて勾配がスキップ経路をそのまま流れるため、勾配消失が起きにくく、深いネットワークでも誤差信号が下層まで届きやすくなります。
Residual Block
Residual Block(残差ブロック)は、残差接続を持つResNetの基本単位です。基本形(Basic Block)は3x3畳み込みを2回重ねた変換F(x)にスキップ経路を足し合わせ、畳み込みの後にはBatch Normalizationと活性化関数ReLUが配置されます。入力と出力でチャネル数や空間サイズが異なる場合は、スキップ経路側に1x1畳み込みなどを入れて形状を合わせてから加算します。ResNetはこのブロックを多数直列に積んで全体を構成します。
ボトルネック構造
ボトルネック構造は、深いResNet(50層以上の構成など)で使われるResidual Blockの形式です。1x1畳み込みでチャネル数をいったん削減し、次に3x3畳み込みを少ないチャネル数のまま適用し、最後に1x1畳み込みでチャネル数を元に戻す、という3層構成をとります。計算コストの大きい3x3畳み込みを「細くした」状態で行うため、表現力を保ちながらパラメータ数と計算量を大幅に抑えられます。砂時計のように中間が細いことからボトルネックと呼ばれます。
WideResNet
WideResNetは、ResNetの「深さ」ではなく「幅」を増やす方向の改良版です。層数を減らす代わりに各ブロックの畳み込みのチャネル数を数倍に広げた構成で、同等の精度をより浅いネットワークで達成できることが示されました。深すぎるネットワークでは一部のブロックしか有効に働かないという問題意識が背景にあり、幅を広げることでGPUの並列計算を活かしやすく、学習時間の面で有利になり得ます。また、ブロック内にドロップアウトを入れる工夫も特徴として知られています。
📝 試験でのポイント
- 残差接続の式
y = F(x) + xと、「残差F(x) = H(x) − xを学習する」という定式化は最頻出 - 残差接続の効果を2つの観点(恒等写像の学習が容易になる/勾配がスキップ経路を通って消失しにくい)で説明できるようにする
- ボトルネック構造の並び(1x1で削減→3x3→1x1で復元)と目的(計算量・パラメータ削減)を問う問題に注意
- WideResNetは「深さより幅(チャネル数)を増やす」改良である点をResNetとの対比で押さえる
- 入出力の形状が異なるブロックではスキップ経路に1x1畳み込みで形状を合わせる、という細部も選択肢に出やすい
📚 まとめ
ResNetは残差接続により深層化の壁だった劣化問題と勾配消失を克服し、超深層CNNを実現しました。基本単位はResidual Blockで、深い構成では1x1→3x3→1x1のボトルネック構造が計算量を抑えます。WideResNetは深さの代わりに幅を広げる派生形です。残差学習の考え方は現代のあらゆるモデルの基礎になっています。
