この記事は Mingxing Tan と Quoc V. Le による Google AI Blog の記事 "EfficientNet: Improving Accuracy and Efficiency through AutoML and Model Scaling" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。



畳み込みニューラル ネットワーク(CNN)の開発では、まずは一定のリソースコストを投入し、その後さらに多くのリソースが利用可能になった段階でスケールアップし精度を上げていく方法が一般的です。例えば ResNet では、レイヤー数を増やすことで ResNet-18 から ResNet-200 までスケールアップできます。また最近発表された GPipe では、ベースライン CNN を 4 倍スケールアップすることで ImageNet top-1 精度 84.3% を達成しています。こうしたモデルのスケールアップでは、CNN の深さや幅を適当に増やしたり、学習や評価時の画像解像度を大きくしたり、といったやり方が行われます。確かにこうした方法でも精度は向上しますが、手作業による面倒なチューニングが必要なうえ、その性能がベストであるとは言いにくいです。もし、CNN の精度と効率をより改善するための「スケールアップの原則」があればどうでしょうか。

私たちが ICML2019 で発表した論文「EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(EfficientNet: 畳み込みニューラル ネットワーク モデルのスケーリングを再考する)」では、モデルの新たなスケーリング手法を提案しています。具体的には、シンプルかつとても効率的な複合係数(compound coefficient)を使い、より統制された手法で CNN をスケールアップします。

従来のアプローチでは、幅、深さ、解像度などのネットワークの次元を任意の大きさにスケールアップしていました。一方、私たちの手法では一定のスケーリング係数を使ってそれぞれの次元を均一にスケールアップしていきます。この新たなスケーリング手法と、最近の AutoML の進展を活用し、EfficientNet と呼ばれるモデル群を開発しました。このモデルは現在の最高水準の精度を上回り、効率も最大で 10 倍向上しています(小型化と高速化)。

複合モデル スケーリング:CNN をスケールアップする優れた手法
今回の研究では、ネットワークのスケーリングによる効果を理解するため、モデルの各次元を変化させた場合の影響を系統的に調査しました。その結果、個々の次元をスケーリングするとモデル性能は向上しますが、モデル全体として改善の効果が最も大きくなるのは、利用可能なリソースをネットワークのすべての次元(幅、深さ、イメージの解像度)に均等に割り当てた場合であることがわかりました。

複合スケーリング手法ではまず、ある一定のリソース制約(例: FLOPS を 2 倍に設定する)のもとでグリッドサーチを行い、ベースラインとなるネットワークの個々の次元間の関係を見つけます。これにより、各次元に対する適切なスケーリング係数が決まります。その後この係数を適用し、希望のモデルサイズまたは計算リソースに合わせてベースライン ネットワークをスケールアップします。

さまざまなスケーリング手法の比較。ネットワークの個々の次元を任意にスケーリングする従来型のスケーリング手法(b)~(d)とは異なり、複合スケーリング手法ではすべての次元を均一的かつ一定の原則に基づいてスケールアップする
この複合スケーリング手法では、従来のスケーリング手法に比べて、モデルの精度と効率がコンスタントに改善していきます。たとえば MobileNet では ImageNet 精度が 1.4% 向上、 ResNet では 0.7% 向上しました。

EfficientNet のアーキテクチャ
モデルのスケーリングの効率性は、ベースライン ネットワークの設計にも大きく依存します。そこで、性能をさらに改善すべく新しいベースライン ネットワークも開発しました。精度と効率(FLOPS)の両方を最適化する AutoML MNAS フレームワークによりニューラル アーキテクチャ検索を行うことで実現しています。その結果として得られたアーキテクチャは、MobileNetV2MnasNet と同じように Mobile Inverted Bottleneck Convolution(MBConv)を使っていますが、利用する計算リソースの増加にともないわずかに大きなものになっています。その後、このベースライン ネットワークをスケールアップすると、EfficientNet と呼ばれるモデル群が得られます。
ベースライン ネットワークである EfficientNet-B0 用のアーキテクチャは、シンプルでクリーンな設計です。
スケーリングや汎用化も容易です。
EfficientNet のパフォーマンス
ImageNet を対象に、EfficientNet をいくつかの既存 CNN と比較しました。EfficientNet モデルは、既存の CNN よりも高い精度と優れた効率の両方を実現しており、パラメータのサイズと計算量が 1 桁少なくなっています。たとえば高精度版の EfficientNet-B7 は、ImageNet の top-1 で 84.4%、top-5 で 97.1% という最高レベルの精度を実現しています。また、CPU による推論で比較すると、それまでの Gpipe と比べてサイズが 8.4 分の 1、速度は 6.1 倍。また、一般的な ResNet-50 と EfficientNet-B4 を比べると、計算量はほぼ同じですが top-1 精度は ResNet-50 の 76.3% から 82.6%(6.3% 向上)に増加しています。
モデルのサイズと精度の比較。EfficientNet-B0 は、AutoML MNAS が作成したベースライン ネットワーク。一方の Efficient-B1 から B7 は、ベースライン ネットワークをスケールアップしたもの。特に、EfficientNet-B7 は、トップ 1 で 84.4%、トップ 5 で 97.1% という最高レベルの精度を実現。同時に、既存の最高の CNN と比べてサイズが 8.4 分の 1 になっている。
EfficientNet は ImageNet で高い性能を発揮しますが、使いやすさを考えると、他のデータセットで転移学習した場合の性能も重要です。この点を評価するため、広く使われている 8 つの転移学習データセットで EfficientNet をテストしました。EfficientNet は、CIFAR-100(91.7%)、Flowers(98.8%)など、8 つのうち 5 つのデータセットで最高レベルの精度を実現しました。中にはパラメータ数がひと桁少なくなくなった例もありました(最大で 21 分の 1)。これにより、EfficientNet は転移学習でも性能を発揮できることがわかります。

今回の研究によりモデルの効率を大幅に改善できたことから、今後のコンピュータ ビジョン関連のタスクにおいて、EfficientNet が新しい基盤として活用される可能性も考えられます。そこで、すべての EfficientNet モデルをオープンソース化しました。これによって機械学習コミュニティが広く恩恵を受けられることを願っています。EfficientNet のソースコードと TPU 用の学習コードは、こちらから確認できます。


謝辞:
Hongkun Yu、Ruoming Pang、Vijay Vasudevan、Alok Aggarwal、Barret Zoph、Xianzhi Du、Xiaodan Song、Samy Bengio、Jeff Dean、と Google Brain チームに格別の感謝を捧げます。

Reviewed by Kaz Sato - Staff Developer Advocate, Google Cloud