XLogo

Research

Articles

ResNet 構造と特徴

ResNet_Top

記事のまとめ

  1. ResNetはCNNに残差接続を用いたアーキテクチャである。
  2. 勾配消失問題を解消するために作られたアーキテクチャである。
  3. 深層学習に強いアーキテクチャである。

ResNetとは

ResNetは2015年にMicrosoftによって発表された論文"Deep Residual Learning for Image Recognition"に掲載された、CNNに残差接続の概念を取り入れたアーキテクチャです。 ResNetの特徴は以前開設したU-Netと同様に残差接続を使用する点にありますが、 ResNetは勾配消失問題の解消を主な目的として、残差接続を導入しています。 本記事ではResNetの残差接続が深層学習にどのような恩恵をもたらしているのか理論的に解説します。

前提知識:勾配消失問題とは?

勾配消失問題とは深層ニューラルネットワークの誤差逆伝播法(バックプロパゲーション)に 見られる問題です。ニューラルネットワークは各ニューラルネットワークの重みを勾配によって 改善します。勾配とは相関関係のようなもので、一方が変化するともう一方がどれくらい変化するのかを示します。

簡単なモデルを例にすると、内部にnn層の"単一"ニューロンをもつニューラルネットワークについて 出力と正解の誤差をCCとします。 入力と入力に最も近い1層目a1a_1ニューロンとの間の重みW1W_1の誤差CCに対する勾配を出力ana_nを使って簡潔な式で表すと、
Cw1=Cananan1an1an2...a3a2a2a1a1w1\frac{\partial C}{\partial w_1} =\frac{\partial C}{\partial a_n}\frac{\partial a_n}{\partial a_{n-1}} \frac{\partial a_{n-1}}{\partial a_{n-2}}...\frac {\partial a_3}{\partial a_2}\frac {\partial a_2}{\partial a_1} \frac {\partial a_1}{\partial w_1}
となります。(この式はバイアスと活性化関数を無視しているため厳密ではありません。)

上式のように、入力付近の勾配を求めるには、各層間の勾配を順に掛け合わせていく必要があります。 非常に深いネットワークで全ての勾配の絶対値が1未満の場合、入力付近の勾配はほとんど0に近くなります。 この問題を"勾配消失"といいます。

逆に、全ての勾配の絶対値が大きい場合、入力付近の勾配の絶対値は非常に大きくなります。 このような問題を"勾配爆発"といいます。

残差接続とは

引用:https://arxiv.org/abs/1512.03385

残差接続はニューラルネットワークの入出力を足し合わせる操作のことを指します。
図のようなFFで表されるニューラルネットワークを考えます。残差接続の出力GGは以下の式で表されます。
G(x)=F(x)+xG(x)=F(x)+x
基本的に畳み込み操作について残差接続を行う際はF(x)とxのサイズを等しくするために、パディングを設定して 畳み込み操作を行います。パディングとは、畳み込み操作前後で 行列サイズが変わらないように、入力データの外側に0を付加することをいいます。 畳み込み操作についての基本操作は以下の記事の前提知識をご参考ください。
U-Netの構造と特徴top

U-Netの構造と特徴

論文のモデルではFFを畳み込み演算→ReLU活性化関数→畳み込み演算の順で演算を行うニューラルネットワークと定義しています。

残差接続の特徴

残差接続の特徴として、ニューラルネットワークの勾配消失問題の対策になる点が挙げられます。 数学的に考えてみましょう。前提知識で登場した式をもう一度示します。
Cw1=Cananan1an1an2...a3a2a2a1a1w1\frac{\partial C}{\partial w_1} =\frac{\partial C}{\partial a_n}\frac{\partial a_n}{\partial a_{n-1}} \frac{\partial a_{n-1}}{\partial a_{n-2}}...\frac {\partial a_3}{\partial a_2}\frac {\partial a_2}{\partial a_1} \frac {\partial a_1}{\partial w_1}
残差接続を行わない場合、an=wnan1a_n=w_na_{n-1}となることから、anan1=wn\frac{\partial a_n}{\partial a_{n-1}}=w_nであり、
Cw1=Canwnwn1...w3w2a1w1\frac{\partial C}{\partial w_1} =\frac{\partial C}{\partial a_n}w_{n} w_{n-1}...w_3 w_2 \frac {\partial a_1}{\partial w_1}
残差接続を行う場合、an=wnan1+an1a_n=w_na_{n-1}+a_{n-1}となることから、anan1=wn+1\frac{\partial a_n}{\partial a_{n-1}}=w_n+1であり、
Cw1=Can(wn+1)(wn1+1)...(w3+1)(w2+1)a1w1\frac{\partial C}{\partial w_1} =\frac{\partial C}{\partial a_n}(w_{n}+1)(w_{n-1}+1)...(w_3+1)(w_2+1)\frac {\partial a_1}{\partial w_1}
このように残差接続を持つアーキテクチャでは、入力に近い重みを効率的に出力に近いニューラルネットワークに伝播することが出来ます。 これにより、勾配消失問題を対策することが出来、更に効率的に学習を行うことが出来ます

上の例では勾配爆発が起きてしまうことが考えられますが、実際にはここにバイアスや活性化関数を使用するので 勾配爆発は勾配消失よりも起きにくい問題です。

ResNetの特徴

ResNetの構造から示される特徴を以下にまとめます。ResNetは重みを入力に与えるべき変化量とあらわすことが出来ます。先ほどのan=wnan1+an1a_n=w_na_{n-1}+a_{n-1}という式から、
anan1=wnan1a_n-a_{n-1}=w_na_{n-1}
と表現することが出来、これは付加した重みがそのまま入出力の"変化量"として表すことが出来ます。 これにより、深層学習でも効率よく計算することが出来ます。

U-Netとの違い

U-NetもCNNをベースにしたアーキテクチャですがステップ接続の方法に違いがあります。 この接続方法の違いと、U-Netは転置畳み込み層を持つことから、U-Netは画像セグメンテーションタスクで使用され、 ResNetは畳み込みと残差接続を繰り返し行うので、次元を圧縮しやすく、画像分類タスクに使われます。 画像セグメンテーションとは、画像の全てのピクセルに"対象"か"対象でない"かのラベルを定義する操作で、 画像分類とは、画像に何が写っているのか出力する操作になります。
U-Netの構造と特徴top

U-Netの構造と特徴

まとめ

現在では、ResNeXtやDenseNet, WRNなどの拡張型アーキテクチャが登場し、多くのタスクで ResNetのアーキテクチャが使用されています。ResNetは残差接続を用いたステップ接続機構を持つことで、 従来のCNNよりも効率的な学習が可能となり、深層学習が発展する礎となりました。

今回は詳細なコーディングや訓練方法については触れていませんが、機会があれば解説します。



ご愛読ありがとうございます。