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

1 AlexNet の概要

AlexNet は,Geoffrey Hinton 研究室の Alex Krizhevsky と,その指導役であった Ilya Sutskever (Wikipedia)の3人により提案された,大規模な物体画像クラス識別向けの畳込みニューラルネットワーク(CNN)である [Krizhevsky et al., 2012].コンピュータビジョン業界の研究者たちが,旧画像認識技術から,GPU上でのディープラーニングへと一気に鞍替えするきっかけとなった意味で,パラダイムシフトを起こした非常に重要な研究である.

この記事では,AlexNetについて,当時の時代的背景を1節でおさえたのち,そのネットワーク構造の解説と,その歴史的意義について紹介していく.

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

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

AlexNetの高精度達成の1番の鍵は,ディープCNNの過学習の抑制にあった(3.2節).データ拡張と,ドロップアウトの使用,ReLU,と局所応答正規化の導入,複数GPU並列化などの使用により,それ以降は当たり前となった大規模CNNのGPU高速学習が初めて達成され,雛形化された.言い換えると,「大規模画像データセット向けのCNNモデルを,なるべく過学習しないようにうまく学習できるTips集」が初めて構築された.よって,AlexNetをベースラインにしてフォローすることで,他の研究者が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 + 局所応答正規化(3.2.2節)
  • P1:プーリング層 – 重なりあり最大値プーリング, [3 x 3]カーネル, stride = 2
  • Conv2:畳み込み層 – [5 x 5]カーネル x 256チャンネル, stride = 1, padding = 2
  • 活性化関数: ReLU + 局所応答正規化(3.2.2節)
  • 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は学習パラメータ数は60 Kilo(6万個)であったのに対し,AlexNetはパラメータが60 Million (6000万)個も所持している.これは,LeNetとの比較に限らず,それまでの機械学習と比べるとAlexNetは相当巨大なモデルであった.

3. AlexNet の特徴・工夫

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

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 AlexNet での,過学習の削減

過剰パラメータ(Overparameterized)である AlexNet に対して,過学習をいかに抑えて減らすかどうかが,ImageNetの学習に,ディープなCNNを初めて対応できるようにするための鍵であった.

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

  1. データ拡張(3.2.1節)
  2. 局所応答正規化(Local Response Normalization)(3.2.2節)
  3. ドロップアウト (3.2.3節)

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

3.2.1 データ拡張の使用

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

学習に用いる ImageNetデータセットは,画像識別問題向けの大規模クラス識別データセットである. ImageNetの画像データは,中心的な物体が1つだけ写っている画像 (256 x 256 RGB画像)に対して,画像に写っているのクラスラベル(1000クラスのうちどれか1つ)がアノテーションされている.ImageNetでは,クラスごとの画像数がそれほど多くない(多くとも「500画像/クラス」程度).よって,できれば人工的に画像数を増やしておいて,学習の汎化性能を高めたい.

そこで,一番楽にデータを増やして汎化性能を高める方法として「データ拡張」を使用することが思いつく.データ拡張により,画像に対する物体クラスラベルは固定したまま,任意のアフィン変換を数回実行して,画像を少しだけ編集させたり,カラー値を変化させたりすることで,データ拡張をおこなう.

AlexNetでは,元画像に対して,以下の2つのデータ拡張(1),(2)を行い,その結果サンプル総数が増えた「データ拡張済みのImageNetデータセット」をもちいて,CNNの学習を行う:

(1) 幾何的な拡張
  1. フリップによる拡張:元画像(256 x 256)から,左右反転させたフリップ画像を作成.
  2. 平行移動による物体位置の拡張:元画像とフリップ画像から,224 x 224の領域を$N$回だけランダムに切り抜く.

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

(2) PCAによる色拡張

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

  • ImageNet全画像のRGB各チャンネルの値から,主成分分析を実施する(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] が提案された.

よって,AlexNetでは,各ReLU層の後に,局所応答正規化を挿入した(図1).ReLUは,境界がない関数であり,特に正の側は,恒等関数であるゆえ,学習中に中間層の入力が大きくなると,そのまま大きな値で次の層に出力してしまい学習しづらくなる.そこで,毎回のReLU後の出力に対して局所応答正規化をおこなうと,(局所ごとに)出力を調整コントラスト調整(=正規化)することができる.(※ 2015年以降はバッチ正規化系の層が,この「中間層ごとの正規化」を学習中に担当する)

3.2.3 Dropout による正則化

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

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

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

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

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

3.4 複数GPUを使用した学習

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

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

4 AlexNet のまとめ

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

AlexNetは,ReLU,GPU学習化,局所応答正規化などの導入により,画像認識CNNの学習において,過学習対策が初めて成功した研究であった.このAlexNetがブームの火付け役になり,トップ研究者が画像認識CNNの研究に大量に参戦した.よって,後継の代表的CNNである,VGGNet(2014)や,InceptionNet (2014),ResNet(2015)などに,すぐその座を取って代わられてしまっため,AlexNet自体のアーキテクチャが使われる期間はあまり長くなかった.AlexNetの学習は,収束性もわるく,ヒットエンドランの試し試しの神頼みの最適化であるゆえ,実用性も高くはなかった.

しかし,AlexNet がそれら後継の画像認識CNNバックボーンの,基礎となる構造を最初に提示した意味で,これは非常に重要な研究である.同時に,ISLVRCで,旧来手法に対する圧倒的な高精度を示したことで,研究者たちが旧来手法の組み合わせ(Fisher Vectorなどの手作り画像特徴量 + SVMなどの識別モデル)をきっぱりやめて,ディープラーニング・CNNの使用に,パターン認識業界全体が移行するきっかけを与えた.この意味でも,AlexNetは非常に重要な研究であった.Deep Learning自体は,その少し前に先行研究者たちによるブームは始まっていたが,やはりAlextNetの登場は,一番の大きな区切りであると言えよう(特にコンピュータビジョンにおけるパターン認識においては).(※ ちなみに著者が思う,次の大きな区切りは「ResNet」の登場である).

参考書籍

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.

外部参照リンク

↓ ためになった方は,記事をSNSでシェアをしてくださると,管理人の記事執筆モチベーションが上がります