技術解説

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

技術解説

はじめに

CNN とは、主に画像認識で利用されるニューラルネットワークの一種です。

2019年現在、画像認識に関する研究の多くでこの CNN が利用されています。

本日は CNN の進歩を語るにおいて欠かせない、画像認識コンペティションの ILSVRC を振り返りながら CNN に関する理解を深めていこうと思います。

ILSVRC とは

ImageNet Large Scale Visual Recognition Challenge の略です。

ImageNet と呼ばれる大規模な画像データセット(画像数約 1,400 万枚 / 22,000カテゴリ)に対して、画像の分類精度を競うコンペティションです。2010 年から 2017 年まで、毎年開催されていました。

コンペティションでは ImageNet の画像全件を利用しているわけではなく、分類するカテゴリ数に基づいて以下の二つに分けられています。

  • 区分 1
    • 1000 カテゴリ分類
    • 学習データ 120 万枚
    • 検証データ 5万枚
    • テストデータ 10万枚
  • 区分 2
    • 200 カテゴリ分類
    • 学習データ 45 万枚
    • 検証データ 2 万枚
    • テストデータ 4 万枚

以降の説明は全て、上記 区分 1 に関する説明になります。

なお、コンペティションのサマリは以下にまとめられています。
http://image-net.org/challenges/talks_2017/ILSVRC2017_overview.pdf

ILSVRC の要約

ざっくり、押させておくべき点は以下の通りかと思います。

  • 2012 年に大幅に精度が向上(Deep Learning の登場)
  • 2015 年に人間の精度を超える
  • コンペの終了まで毎年精度が向上し続けた
ILSVRC 優勝モデルの認識失敗率

次項より、2012 年以降の ILSVRC の結果を見ていきます。

ILSVRC 2012

CNN を利用した『AlexNet』が、当時のデファクトスタンダードとなっていた『SIFT + Fisher Vector + SVM』に大差を付けて優勝を飾った年です。

昨年度との精度差が実に 10%と非常に大きな値を付けたこと、手法が『人工知能』というキーワードと合うものであったことから大きな注目を浴びました。

以降のILSVRCでは CNN を利用した手法が主流となり、毎年新たな CNN モデルが考案されて精度の向上に寄与し続けることになります。

生物の脳の視覚野に関する神経科学的な知見をもとに考案された手法(Neocognitron)が原型となっています。

AlexNet

論文リンクはこちら
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

2019年12月現在、53000 を超える被引用数を持つ非常に有名な論文です。

AlexNet のアーキテクチャ

上図が AlexNet のアーキテクチャです。

5つの畳み込み層を持ち、間の3つのプーリング層で特徴を圧縮、最後に3つの全結合層を通ることで最終的な出力を得る構成になっています。

CNN の初期重みはガウス分布に従って初期化され、モメンタム付きの確率的勾配降下法(SGD)によって損失を最適化していきます。また、各パラメータはL2正規化による Weight Decay が行われています。なお、ロスの低下が小さくなった際に学習率を低下させる処理も行われています。

これらのテクニックは2019年現在においてもベストプラクティス的に利用されており、原型としての手法はこの段階で確立されていたことがわかります。

以降では AlexNet にて導入され、以降の研究においても利用されている重要な要素技術を紹介します。

ReLU

Rectified Liner Units の略です。

従来のニューラルネットワーク手法では非線形な活性化関数として
f(x) = tanh(x)あるいはf(x) = 1 / (1 + exp(-x))が利用されていました。

これらの活性化関数は 0 や 1 に近付くほど値の差が減るため、深いネットワークを構築すると勾配が消失してしまう問題がありました。(勾配消失問題)

ReLUはf(x) = max(0, x)とすることで深いネットワークに対する勾配消失問題を解決しています。現在ではいくつか発展系の活性化関数も提案されていますが、最新のモデルにおいても広く利用されています。

Dropout

学習時のネットワークに対して、層の一部を一定確率で無効化する手法です。

確率的に層の一部をなくすことで、擬似的に毎回若干異なるネットワークで学習を行うことになり、アンサンブル学習と類似した効果を得ることができるため、より汎化した性能を獲得することができるとされています。

一般には過学習を抑制するために使われることが多く、『AlexNet』ではDropout を利用することで過学習を抑えることができたとの報告があります。

一方で学習にかかる時間も多くなることもまた、報告されています。

終わりに

ILSVRC 2013 以降は次の記事にて記載します。

引き続きよろしくお願いいたします。

コメント

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