GoogleAI 最適化された方法でCNNをスケーリングする手法を発表
論文: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
通常、畳込みニューラルネットワーク(CNN)は利用可能なリソースを固定にして開発され、より多くのリソースが利用可能になったときにスケールアップされ、より良い精度を達成します。
例えば、ResNetはレイヤ数を増やすことでResNet-18からResNet-200にスケールアップすることができ、最近の、GPipe(機械学習ライブラリ)はベースラインのCNNを4倍にスケールアップすることで、ImageNet(データセット)において最先端の精度を達成しています。
モデルのスケーリングのための従来の方法としては、CNNの深さや幅を任意に増大させるか、あるいはより大きな解像度の画像を使用することです。これらの方法は精度を向上させますが、面倒な手動チューニングを必要とし、さらに得られる精度も最適解とは言えない時もあります。新しくGoogleAIが発表した論文では、正確さと効率性を向上させるためにCNNをスケーリングする原理的な方法が提案されています。
論文では、単純かつ非常に有効な複合係数を使用する新しいスケーリング法が提案されています。幅、深さ、解像度のようなネットワーク次元を任意にスケールする従来のアプローチとは異なり、各次元を一定のスケーリング係数でスケール化します。この最適化された新しいスケーリング法とAutoMLを組み合わせることにより、効率性(小型化・高速化)が最大10倍にもなる”EfficientNets”と呼ばれるモデルを開発しています。
CNNをスケールアップするためのより良い方法
ネットワークをスケーリングする効果を確かめるため、体系的にモデルの異なる次元(幅、深さ、解像度など)をスケーリングすることの影響を調べることから始めました。個々の次元をスケールするとモデルのパフォーマンスが向上する一方で、ネットワークのすべての次元(幅、奥行き、および画像の解像度)を利用可能なリソースとのバランスをとると、全体的なパフォーマンスが最も向上することがわかりました。
最初のステップとして、グリッド検索を実行して、固定リソース制約の下でベースラインネットワークの様々なスケーリング次元間の関係を見つけます。 これにより、上記の各次元に適したスケーリング係数が決まります。次に、これらの係数を適用して、ベースラインネットワークを所望の目標モデルサイズ/計算予算にスケーリングします。
モデルスケーリングの有効性は、ベースラインネットワークにも大きく依存します。パフォーマンスをさらに向上させるためにAutoMLを使用してアーキテクチャ検索を行うことによって、新しいベースラインネットワークであるmobile inverted bottleneck convolution(MBConv)を得ています。このベースラインネットワークをスケーリングして、より効率的なネットワーク(EfficientNets)を取得します。
EfficientNetのパフォーマンス
ImageNet上でEfficientNetと他の既存のCNNを比較しました。全体的に、EfficientNetは既存のCNNよりも高い精度と高い効率の両方を達成し、さらに、パラメータサイズとFLOPS(コンピュータの性能指標の一つ)を1桁削減します。
他のデータセットでも有効かどうか、8つの広く使用されている転送学習データセット上でEfficientNetsを試しています。EfficientNetsは、一桁少ないパラメータ(最大21倍のパラメータ削減)で8つのデータセットのうち5つで最先端の精度を達成しています。
モデルの効率性を大幅に向上させるこのアプローチは将来のコンピュータビジョンにおける新たな基盤となる可能性を秘めているのではないでしょうか。
この記事に関するカテゴリー