技術解説

ILSVRC を振り返り CNN を deep に理解する③

技術解説

はじめに

本記事は連載物の第三弾です。前回の記事を読んでいない方は以下からご参照ください。

ILSVRC 2015

2015 年の優勝モデルは ResNet です。

また、2015 年は CNN のエラー率が人間のエラー率(5%)を下回る精度を達成した年でもあります。

それでは ResNet について見ていきます。

ResNet

論文リンクはこちら
https://arxiv.org/pdf/1512.03385.pdf

タイトルは『Deep Residual Learning for Image Recognition』です。

ResNet のアーキテクチャ

上図は 34 層のResNet です。 VGG に比べてもかなり層が増加していることが見てわかります。なお、 ResNet には種類がいくつかあり、この論文で提案された最大層数の ResNet は 152 層です。

ResNet における貢献は以下の 2 つが代表的です。

  • Residual Module
  • Batch Normalization

それぞれについて、見ていきます。

Residual Module

Residual Module は以下の構成のモジュールです。

Residual Module

2 層、あるいは 3 層の畳み込みを行った後に、畳み込み前の特徴を足しています。

VGG や GoogLeNet が提案されて以降、層を深くすることによって精度が向上することが知られてきました。

一方で、あまりに層を深くすると勾配が消失してしまい、学習に失敗してしまうことが課題となっていました。

Residual Module は、畳み込み層を何度か通った後に前後の要素を足すことによって、勾配消失を防ぐことに成功しています。

この Residual Module を利用することによって、 50 層や 152 層のネットワークでも勾配を消失することなく学習することができるようになりました。

また、 Residual Module にはいくつかパターンがあり、 2 層の畳み込み層を持つタイプを plain アーキテクチャ、 3 層の畳み込み層を持つタイプを Bottleneck アーキテクチャと呼びます。

3 層の畳み込み層を持つ Bottleneck アーキテクチャは、まず 1×1 の畳み込みを行うことによってチャネル数を削減した後に、 3×3 の畳み込み層を行い、再度 1×1 の畳み込みを行うことによって次元を復元します。

計算量の多い 3×3 畳み込みの計算コスト改善を図っています。
(3×3 が計算上のボトルネックとなっているためこう呼ばれています。)

Batch Normalization

ResNet のように深いネットワークでは、ある層のパラメータの更新によって、次の層への入力分布がバッチ毎に大きく変化してまう内部共変量シフト (internal covariate shift) が発生し、学習が効率的に進まないことが問題となっていました。

Batch Normalizationは、この内部共変量シフトを正規化し、バッチ毎に入力分布が大きく変動しないような状況で学習が行えるようにすることで、学習を安定化・高速化する手法です。

ResNet ではこの Batch NormalizationをResidual Module に組み込むことで深いネットワークの効率的な学習を実現しています。

この Batch Normalization は非常に汎用的な処理であるため、ResNet 以降のモデルでは標準的に用いられるになりました。

ILSVRC 2016

2016年は既存の手法を組み合わせたアンサンブルの手法が優勝しました。

革新的な技術が出現したというよりは、既存技術の組み合わせでの精度向上になりますので、説明は省略します。

ILSVRC 2017

2017 年は SENet と呼ばれるネットワークが優勝しました。

なお、 2017 年が ILSVRC 最後の開催となります。

SENet

論文リンクはこちら
https://arxiv.org/pdf/1709.01507.pdf

タイトルは『Squeeze-and-Excitation Networks』です。

Squeeze and Excitation Module と呼ばれる機構を提案しており、既存のネットワークアーキテクチャに挿入することによって精度が向上すると報告されています。

SE Inception Module

上図が squeeze and excitation Module のアーキテクチャです。

まず、 Global Average Pooling によって高さ 1、 幅 1、 チャネル数 C の画像全体の特徴を平均した特徴マップを作成します。

この処理によってチャネル毎のグローバルな特徴を表現します。

それを 1 度全結合層、ReLU を通した後に再度全結合層を通して Sigmoid 関数で活性化しています。

ReLUではなく、 Sigmoid 関数を活性化に利用することで、各チャネルの数値が 0 〜 1 に正規化されます。これにより、チャネル毎の重みが表現できるようになります。

最後に、計算された重みを入力層に掛け合わせます。これによってチャネル毎の重みを考慮した出力を得ることができます。

終わりに

以上です。

ILSVRC の歴史に沿って、 CNN について解説してみましたが、いかがだったでしょうか。

皆様のお役に立てれば幸いです。
ここまでご覧いただき、ありがとうございました。

コメント

タイトルとURLをコピーしました