AlexNet: 大規模画像認識CNNの元祖

1. AlexNet の概要

AlexNet [Krizhevsky et al., 2012] は,Geoffrey Hinton 研究室の学生であった Alex Krizhevsky と,その指導役であった Ilya Sutskeverの3人により提案された,大規模画像クラス識別向けCNNである.

AlexNetは,ImageNetの画像識別精度を競う「ISLVRC 2012」のコンテストにおいて,2位よりも10%以上低い値のエラー率15.3%で優勝した.ImageNetは1000クラスから構成される物体画像データセットである.その際に,次点以下の全てのチームが「手作り(Hand-crafted)画像特徴の最先端手法」を用いていた中で,一位のAlexNetだけはCNNベースの手法を突如採用し,ダントツの優勝を果たした.これにより,CNNを使うとImageNetの規模のデータセットに対しても,複数解像度の階層的な畳み込みカーネル層群として自動的に特徴抽出でき,その上で従来の画像認識より精度がかなり高くなることが示されたと言える.

AlexNetの研究は,我々が近年当たり前に行う「GPUを使用して,大規模データセットから多数クラス識別用の大規模ネットワークをうまく学習する」ためのCNNの学習フレームワークを,初めて確立した.この意味でAlexNetは,近年のモダンな画像認識CNNの元祖のネットワーク構造である (※ AlexNet はコミュニティが名付けた通称であり,著者らはSuperVisionと名付けていた).

AlexNetの高精度達成の1番の鍵は,ディープCNNの過学習の抑制にあった(3.2節).言い換えると,大規模画像データセット向けCNNモデルを,なるべく過学習しないよううまく学習できる基本的なTips集が,AlexNetの研究で初めて構築されたと言える.また,ReLuの導入や,複数GPU並列化により,大規模CNNの高速学習が達成された.

こうして,AlexNetの登場は,コンピュータビジョン業界に大きなインパクトを与え,CNNベースの画像認識手法へコンピュータビジョン業界が一気に移行していくパラダイムシフトを起こした.

1.1 この記事の構成

以降では,以下の構成で,AlexNetの構造(2節)と特徴(3節)について整理する:

  • 2節 AlexNet の構造
  • 3節 AlexNet の特徴・工夫
    • 3.1節 ReLUの導入
    • 3.2節 過学習の削減
    • 3.3節 重なりあり最大プーリング
    • 3.4節 複数GPUを使用した学習
  • 4節 まとめ

2. AlexNet の構造

AlexNetは以下の図1のようなネットワーク構造である:

AlexNetの構造
図1: AlexNet の構造.

AlexNetは,以下の順で直列に各層を接続した構造の,クラス識別CNNである :

  • 入力:224 x 224の3チャンネルカラー画像 (カラー白色化済み: 3.2.1節)
  • Conv1:畳み込み層 – [11 x 11]カーネル x 96チャンネル, stride = 4, padding = 2
  • 活性化関数: ReLU + 局所応答正規化
  • P1:プーリング層 – 重なりあり最大値プーリング, [3 x 3]カーネル, stride = 2
  • Conv2:畳み込み層 – [5 x 5]カーネル x 256チャンネル, stride = 1, padding = 2
  • 活性化関数: ReLU + 局所応答正規化
  • P2:プーリング層 – 重なりあり最大値プーリング, [3 x 3]カーネル, stride = 2
  • Conv3:畳み込み層 – [3 x 3]カーネル x 96チャンネル, stride = 1, padding = 1
  • Conv4:畳み込み層 – [3 x 3]カーネル x 96チャンネル, stride = 1, padding = 1
  • Conv5:畳み込み層 – [3 x 3]カーネル x 96チャンネル, stride = 1, padding = 1
  • P3:プーリング層 – 重なりあり最大値プーリング, [3 x 3]カーネル, stride = 2
  • (学習時のみ:Dropout)
  • FC6:全結合層 – 9216 (=256 x 6 x 6) v.s. 4096
  • 活性化関数: ReLU
  • (学習時のみ:Dropout)
  • FC7:全結合層 – 4096 v.s. 4096
  • 活性化関数: ReLU
  • FC8:全結合層 – 4096 v.s. 1000
  • 出力:softmax関数で確率化した1000次元ベクトル (各次元の出力確率).

LeNetは学習パラメータ数は60K (6万)であったのに対し,AlexNetはパラメータが60 Million (6000万)個も存在する.LeNetとの比較に限らず,それまでの機械学習と比べるとAlexNetは相当巨大なモデルであった.

3. AlexNet の特徴・工夫

AlexNetでは,ImageNetでの画像認識精度を確保するために,それまでのCNNの代表であるLeNetと比べると,パラメータ数が膨大なネットワークであるため,過学習も抑制しながらうまく学習する必要があった.そこで,論文[Krizhevsky et al,. 2012] では様々な工夫がCNNへ新たに導入された.

3節では,各節にて,それらのAlexNetの特徴(貢献)を見ていきたい.

3.1 ReLU の導入

AlexNetでは活性化関数として,ReLU (Rectified Linear Unit) [Nair et al., 2010] が使用された:

\begin{equation} f(x) = \max (0,x) \end{equation}

旧来のニューラルネットでの活性化関数には,シグモイド関数や,(LeNetでも用いられた) tanh などが使用されていた.しかし,これらの飽和型の関数は,挿入数を増やすごとに微分値が小さくなっていくので,CNNの層を深くするほど勾配消失を招きやすかった.

そこで,AlexNetでは非飽和型のReLuのみを非活性化関数に用いることにした.これにより,勾配消失の回避と,(勾配値増加による)学習高速化を達成した.ReLuへの差し替えにより,sigmoid関数やtanh関数などの他の活性化関数より,各層で約5倍の高速化を達成しながら,精度を保つことができている.

以後,CNNではReLU系の活性化関数を用いるのが標準的となった.

3.2 過学習の削減

冒頭の1節でも述べたが,過剰パラメータ(Overparametrised)なモデルであるAlexNetに対して,過学習をいかに抑えて減らすかが,Deep CNNをスケールしてImageNet学習に対応させるためのポイントであった.

そこで,AlexNetでは以下の3つの過学習対策が採用された:

  1. データ拡張 (3.2.1節)
  2. 局所応答正規化(LRN) (3.2.2節)
  3. DropOut (3.2.3節)

以下の各節で,これら3つについて順に見ていきたい.

3.2.1 データ拡張の使用

現在のCNNでも非常に重要であるデータ拡張 (Data Augmentation) [Simard et al. 2003]が,過学習削減目的で使用されている.

学習に用いるImageNetは画像識別問題向けの大規模クラス識別データセットである. ImageNetの画像データは,中心的な物体が1つだけ写っている画像 (256 x 256)に対して,その写っている物体に対応するクラスラベル(1000クラスのうちどれか1つ)がアノテーションされている.ImageNetでは,クラスごとの画像数がそれほど多くない(多くとも500画像/クラス程度).よって,できれば人工的に画像数を増やしておいて,学習の汎化性能を高めたい.一番楽にデータを増やして汎化性能を高める方法として,ラベル値は固定したまま,任意のアフィン変換などで画像を少しだけ編集させたり,カラー値を変化させたりするなどする「データ拡張」を使用することが思いつく.

そこでAlexNetでは,先に元画像を以下の2つのデータ拡張を行い,その結果としてサンプル総数が増えたデータ拡張後のImageNetデータセットからAlexNetの学習を行う:

(1) 幾何的な拡張
  1. 画像(256 x 256)にから,左右反転させたフリップ画像を作成.
  2. 平行移動による物体位置の拡張:元画像とフリップ画像から,224 x 224の領域をランダムにクロップし,それらをデータ拡張した入力画像とする.

この 1, 2の手順により,データセットのサイズが2048倍になる.

(2) PCAによる色拡張

また,入力画像に対しては,カラー値,照明変化のデータ拡張であるPCAによる色拡張も行う:

  • ImageNet全画像のRGB各チャンネルの値から,PCA(主成分分析)を実施する(3×3の共分散行列で実施).
  • 主成分ベクトルの固有値の$\alpha_R,\alpha_G,\alpha_B$倍だけ,RGB値をランダムな値に変化させる.

3.2.2 局所応答正規化 (LRN)

他の正則化として,特徴マップの画素値に対して,近傍$n$チャンネル(デフォルトでは前後5チャンネル)の特徴マップでの同じ空間位置$(x,y)$における輝度値群から正規化を行うという,局所応答正規化(Local response normalization; LRN) [Krizhevsky et al,. 2012] が提案された.

ReLUがアンバウンドな関数であることから, ReLu後の出力に対して正規化を行い調整するために使用されたトリックである.

AlexNetでは,各ReLU層の後に局所応答正規化が行われた.

3.2.3 Dropout による正則化 (過学習の抑制)

当時のディープニューラルネットワーク正則化の標準的手段であったドロップアウトが,AlexNetでも用いられた.

AlexNetでは,終盤の全結合層2つ(FC6層とFC7層)のニューロンに対し,ドロップ確率0.5でドロップアウトを用いることにより,過学習を大幅に削減した.

3.3 重なりあり最大値プーリング

LeNetなどAlexNetより前のCNNで標準的に使用されていた平均値プーリングは,平均フィルタのように作用するので,プーリング後の特徴マップの像がぼやける問題があった.そこで,AlexNet では最大値プーリング(Max Pooling)がプーリング層として採用された.

またAlexNetでは,カーネルサイズ 3 x 3で,ストライドサイズを2に設定したした,重なりあり(overlapped)最大値プーリングが用いられた.LeNetなど,以前のCNNでは,例えばカーネルサイズ2 x 2 でストライドサイズも2にするなど,プーリング領域同士が重なり合わないようなタイル型の演算が普通であった.

3.4 複数GPUを使用した学習

今では標準的に行われている「GPUでの大規模パラメータのCNN学習」や,「CNN学習の,複数GPUを用いた並列化」であるが,その一般化のきっかけは,このAlexNetでの2台のGPUによる実験であった.

各畳み込み層をチャンネル方向に2分割し,それぞれ別のGPUで学習を行うことで演算のGPU間並列化が行われた.当時のGPUがメモリが3GBであったということもあり,各特徴マップをチャンネル方向に2分割して並列計算し,最後に全結合層で合体するという,GPU並列計算設計による学習が提案された.学習はSDG(stochastic gradient descent)により,バッチサイズ128, モーメンタム0.9,重み減衰0.0005で行われた.

4 まとめ

この記事ではAlexNetについて紹介した.AlexNetは2012年に登場し,大規模画像認識CNNモデルの有用性とポテンシャルを示し,業界にパラダイムシフトを起こした.

AlexNetの肝は,大規模モデル画像認識CNNの学習において過学習対策が初めて成功したことにあった.AlexNetがブームの火付け役になり,トップ研究者が画像認識CNNの研究に参戦したこともあり,後継のVGGNet(2014)やInception(2014),ResNet(2015)などに,すぐその座を取って代わられた.そのため,AlexNet自体が使われる期間はあまり長くは続かなかった.ただ,AlexNetがそれら後継CNNバックボーンの基礎を成しているので,その面で重要な手法である.

References

  • [Krizhevsky et al,. 2012] Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. NeurIPS. 2012
  • [Nair et al., 2010] Nair, V., Hinton, G.E. Rectified linear units improve restricted Boltzmann machines. In ICML 2010.
  • [Simard et al., 2003] Simard, Patrice Y., David Steinkraus, and John C. Platt. “Best practices for convolutional neural networks applied to visual document analysis.” Icdar. Vol. 3. No. 2003. 2003.

外部参照リンク

関連記事