5-6-2 代表的なスキップ結合のモデル

前の節では、スキップ結合が、深いネットワークの中で、情報や勾配を伝えやすくする近道であることを見てきました。
では、このスキップ結合は、実際にはどのようなモデルで使われているのでしょうか。

ここでは代表的な例として、

・ResNet
・DenseNet
・U-Net

を見ていきます。
どれもスキップ結合を活かしたモデルですが、その使い方には少しずつ違いがあります。

ResNet

スキップ結合の代表例として、いちばんよく知られているのがResNet(Residual Network)です。
ResNetは、ディープラーニングをさらに深くしていくうえで、とても大きな役割を果たしたモデルです。

深いネットワークは、層を重ねることで複雑な特徴を学べるようになります。
でも単純に層を増やしていくだけでは、

・情報が伝わりにくくなる
・勾配が戻りにくくなる
・学習が不安定になる

という問題が起こりやすくなります。

長い廊下をずっと歩いていくうちに、入口で持っていた大事な荷物が少しずつ薄れていくようなものです。

ここで、文章の推敲を思い浮かべてみてください。
ある原稿が、すでにかなりよく書けているとします。
そのとき編集者が毎回、最初から全部を書き直します……となったら、どうでしょう。
必要以上にいじってしまって、かえって文章が崩れることもありそうです。

本当は、
・この語尾だけ直す
・ここに一文だけ足す
・この段落はそのままでよい
くらいで十分なことも多いですよね。

ResNetの発想は、これに少し似ています。
数式っぽく言わずに言うと、普通の層は、「新しい答えを一から作る」感じ。
ResNetは、「今ある答えに、修正メモをつけ足す」感じです。

ResNetの大きな特徴は、スキップ結合を使って、元の情報をそのまま先へ流しながら、必要な変化だけを学ぶという考え方を取り入れたことです。
ここで出てくるのが、残差(residual) という発想です。
「残差」と聞くと少し難しく感じるかもしれませんが、ここでは、元の情報に対して、あとどれだけ直せばよいか、くらいに考えるとわかりやすいです。
つまり ResNetは、毎回すべてを作り直すのではなく、

・ここは少しだけ直す
・ここはそのままでよい
・ここだけ補足する

といった 修正分 を学びやすくしたモデルなのです。
この考え方の良いところは、あまり変えないほうがよい場面にも対応しやすいことです。

文章の推敲でも、すでに十分きれいな一文なら、無理に書き換えずそのまま残したほうがよいことがありますよね。
ResNetでも同じで、大きく変える必要があるなら変える、ほとんど変えなくてよいなら、そのままに近づけることがしやすくなります。
だから ResNetは、深いネットワークでも無理なく学びやすいのです。

DenseNet

次にDenseNet(Dense Convolutional Network)です。
ResNetが「少し飛ばして先へ届ける」スキップ結合だったとすれば、DenseNetは、もっとたくさんの層どうしを、密につなぐという発想を持っています。
名前の “Dense” は、「密な」「ぎっしりした」という意味です。

DenseNetでは、ある層の出力が、その次の層だけでなく、さらにその先の層たちにもどんどん渡されていきます
つまり、1つ前だけにつながるのではなく、もっと先のいろいろな層にも届くような構造になっています。

建物のたとえで言えば、ただ一本の近道があるのではなく、あちこちに細かな連絡通路がたくさんある感じです。

DenseNetのよさは、前の層で見つけた特徴を、後ろの層でも活かしやすいことです。
深いネットワークでは、新しい層に進むほど前の情報が見えにくくなることがあります。
でも DenseNetでは、以前の特徴が後ろまで直接届きやすいので、

・特徴の再利用がしやすい
・情報が伝わりやすい
・勾配も流れやすい

といった利点があります。

つまり DenseNetは、ResNetの「近道」の考え方を、さらに密に広げたモデルだと言えます。

U-Net

最後にU-Netです。
U-Netもスキップ結合を使うモデルですが、ResNetやDenseNetとは少し役割が違います。
U-Netは特に、画像の中で「どこに何があるか」を細かく知りたいときに使われることが多いモデルです。

たとえば、

・医療画像の中で病変の位置を見つける
・写真の中の人や道路の領域を塗り分ける

といった、画像セグメンテーションのようなタスクです。

画像認識では、「これは猫です」と分類するだけなら、全体の特徴がわかればよいこともあります。
でもセグメンテーションでは、画像のどの位置に、その特徴があるのかがとても大切になります。
ところが、畳み込みやプーリングを重ねると、特徴は抽象的になりますが、細かな位置情報は失われやすくなります。
そこで、U-Netでは、前半の層で持っていた細かな位置情報を、後半の層へ直接渡すようなスキップ結合を使います。

これは、建物の中で、入口近くにあった詳しい地図を、奥の部屋にまでそのまま届けるようなものです。
あるいは物語で言えば、最初の章で描かれた細かな情景描写を、後半の場面でも参照できるようにしておく感じに近いかもしれません。

こうすることでU-Netは、

・抽象的な特徴
・細かな位置情報

の両方を活かしやすくなります。

まとめ

ResNet
→ スキップ結合の代表例
→ 元の情報をそのまま流しながら、必要な修正だけを学びやすくする

DenseNet
→ スキップ結合をもっと密にしたモデル
→ 前の特徴を後ろの層でもたくさん活かしやすい

U-Net
→ 前半の細かな情報を後半へ渡すモデル
→ 位置情報を大事にしたい画像処理に向いている

この3つを見ると、スキップ結合は単なる「近道」ではなく、いろいろな形に発展してきた考え方だとわかります。

・深い学習をしやすくするための近道
・前の特徴を何度も再利用するための近道
・細かな位置情報を後ろまで届けるための近道

つまりスキップ結合は、深いネットワークの中で、大事なものを失わずに運ぶための工夫として、さまざまなモデルに広がっていったのです。

next ▶ Attentionとは何か