分類AIの進化史⑥AlexNet
前回は、ImageNetについての話をしました。今回は、2012年のImageNetコンペの画像分類の部門で優勝したAlexNetを紹介します。
AlexNetの登場は革命的な出来事でした。それまでは、人間が頭で考えた特徴量を使う伝統的な画像処理の技術で争われていたところに、AlexNetはディープラーニングによる自動的な特徴量の抽出を利用し画像分類において当時最も良い精度を叩き出しました。
このモデルを開発したチームは、AI研究の世界では、それぞれ名のしれた人物たちが含まれています。
Geoffrey Hinton
2012年にImageNetで優勝したAlexNetを開発したのは、Geoffrey Hinton(ジェフリー・ヒントン)が率いるトロント大学の研究チーム(SuperVision)で、Alex Krizhevsky(アレックス・クリジェフスキー)とIlya Sutskever(イリヤ・サツケヴァー)の名がその論文に含まれています。この二人は当時大学院生でした。
2013年には、Geoffrey Hintonが始めた会社DNNresearchがGoogleに買収されます。そのまま、彼はGoogleの社員となります。
しかし、2023年になって、AIの危険性についてより自由に議論できる立場になりたいという理由からGoogleを去っています。つまり、彼はAIの進化については慎重派です。
Ilya Sutskever
Ilya Sutskeverといえば、最近話題になったSam Altman(サム・アルトマン)のOpenAI CEOの解任と再任のドラマでも登場しました。
おそらくGeoffrey Hintonの影響を強く受けているIlya Sutskeverは、AIの危険性に対して慎重であると言われています。Sam Altmanの解任に当初は賛成していたのもそういった背景があるのでしょう。
最終的には、後悔の意を表し理事会の立場から退いています。
しかしながら、彼の優秀さには目を見張るものがあります。OpenAIのこれまでの成功にも大きく貢献したことは間違いありません。
OpenAI以前に遡ると、彼はGeoffrey Hintonが始めた会社DNNresearchに参加していたため、Googleの買収により、Googleの研究者となります。
2016年に発表されたDeepMindのAlphaGoの論文の著者のリストにも彼の名前が載っています。
DeepMindは強化学習でアタリのゲームを学習し高得点を出した論文でDQNの発表した後、2014年にこれまたGoogleに買収されました。よって、DeepMindとGoogleはある意味同じ会社なのですが、組織としては区別があり、Ilya SutskeverはGoogle側から参加したようです。論文には、これらの著者たちは同じように貢献していると注意書きがあります。ただし、AlphaGoのどの部分に貢献したのかは定かではありません。
そのほかにも彼はTensorFlowのライブラリの開発に関わったり、機械翻訳のモデルである Sequence-to-sequence の論文を著名な研究者である Quoc Le と発表したりしました。
Googleでの約3年間を経て、Ilya SutskeverはOpenAIの創設者の一人となります。そのほかにも有名な研究者が名を連ねています。例えば、
Andrej Karpathy(アンドレイ・カルパシー):その後テスラに移籍し、2023年にまたOpenAIに戻りました。
Durk Kingma(ダルク・キングマ):VAE(変分オートエンコーダ)で有名。
John Schulman(ジョン・シュルマン):強化学習モデルPPOが有名。
Wojciech Zaremba(ヴォイチェフ・ザレンバ):GitHub Copilotの元になったCodexの研究。
Ilya Sutskeverに話を戻すと、彼の今後がどうなるのかは定かではありませんが、おそらくOpenAIで研究者としての活動に専念すると思われます。
Alex Krizhevsky
Alex KrizhevskyもDNN Researchの買収と同時にGoogleに参加します。Google Photoなどのプロジェクトに参加しました。
2017年にGoogleを去り、Dessaという名のスタートアップに参加しました。しかし、その会社はもう存在しないようです。現在の彼は、ベンチャーキャピタルのTwo Bear Capitalに属しているので、今は投資家となっているようです。
Alex Krizhevskyというと、小型データセットのCIFAR10でも有名です。32x32のカラー画像を6万枚集めたもので、以下のサンプルにあるように10のクラスが含まれています。これもImageNetやMNISTと同様によく使われたデータセットです。
AlexNetが生まれる前のAlex Krizhevskyに話を戻します。Geoffrey Hintonの指導を受けていたAlex Krizhevskyは、CPUの代わりにGPUを使ってモデルの訓練を行うことを思い付きます。そこに、Ilya Sutskeverが注目してImageNetに挑戦することになったとのことです。
要するにGPUにおけるニューラルネットワークの訓練の高速化などについて、同時は誰も気づいていなかったということです。
以前は、何ヶ月もかかるような学習をGPUを使うことで5、6日で終えることができるようになりました。そして約1年の努力を費やした後にImageNetに参加し優勝しました。そのあとは、DNNresearchはたくさんの買収のオファーがあったそうです。最終的にはGoogleの買収されました。
AlexNetという名前に関して面白いこぼれ話があります。
つまり、Googleが他社の論文を真似してモデルを制作していたところ、その会社ごと買収したので AlexNet という名前を正式に使うようになったということです。なお、ここで登場したWojciech Zarembaは上述したOpenAI創業からのメンバーでもあります。
AlexNetの構造
AlexNetは畳み込みニューラルネットワーク(CNN)です。GPUを使ってニューラルネットワークの訓練を行ったことで有名ですが、そのほかにも当時は目新しい手法が使われました。
ReLUの採用
例えば、活性化関数です。当時は、tanh などが使われることが多かったのですが、勾配消失の問題がありました。
$$
\text{tanh}(x) = \dfrac{e^x - e^{-x}}{e^x + e^{-x}}
$$
tanhは次のような形を持ちますが、横軸上のxが0からちょっと離れるとカーブがほぼ平坦になります。つまり、勾配が0に近くなるので学習が進まなくなります。
これに対して、AlexNetではReLU(Rectified Linear Units)を採用しました。
$$
\text{ReLU}(x) = \max(0, x)
$$
上図から見てわかるようにReLUは非線形ですがその関数がとてもシンプルです。0以下の数値は0になり、0より上の値はそのままです。よって、入力値xが0より大きい時の微分値は常に1です。
これによってAlexNetの学習スピードが何倍にも速くなりました。
なお、その他の活性化関数に関してはこちらで解説しています。
そのほかにも、AlexNetは、ドロップアウトやMaxプーリングなども採用しています。
2重のCNN
AlexNetは畳み込みニューラルネットワークであり、まず畳み込みによって画像からの特徴量を抽出したのちに、最後の方の複数の線形層を使って画像のクラスを予測するという現在では標準的な手法を使っています。
ただし、AlexNetでは、CNNが2重になっています。2つの並行したCNNの流れに分かれています。
当時彼らが使っていたNVIDIAのGPU(GTX 580)は、3GBのメモリしありませんでした。よって、AlexNetを訓練するためには、1 枚の画像を上下半分に分けて2つのGPUを使う必要があったために上記のような構成となっています。
ZFNetとの関連
2013年(AlexNetが優勝した翌年)には、ZFNet(Zeiler and Fergus Net)が優勝します。
ZFNetは、AlexNetの改良版で、AlexNetが11×11のカーネル幅を最初の層で使っていたのに対し、ZFNetでは7×7のカーネル幅を使っています。また、ストライドをAlexNetの4から2にしました。また、AlexNetが1 枚の画像を上下半分に分けて学習をするのに対して、ZFNet は 1 枚の画像で学習をするようになっています。
論文の著者は、Matthew ZeilerとRob Fergusで、モデルの名前の由来でもあります。彼らは、米国のNew York大学の研究者です。Matthew ZeilerはRob Fergus(教授)の生徒(博士課程)です。Matthew Zeilerは後に、Clarifai(クラリファイ)というAIスタートアップを立ち上げます。
こうしてみるとImageNetで優勝してAIスタートアップを立ち上げるのが当時の王道だったようですね。(個人の感想です)
次回予告
次回は、2014年にImageNetの画像分類部門で優勝したGoogLeNetを解説します。
GoogLeNetの核心は、Inceptionモジュールと呼ばれる構造です。このモジュールは、異なるサイズの畳み込みを同時に実行し、その結果を組み合わせることで、スケールごとの特徴を効率的に抽出します。
お楽しみに!
この記事が気に入ったらサポートをしてみませんか?