1. 定義と概要
EfficientNetとは、CNN(畳み込みニューラルネットワーク。画像を細かい部分から段階的に特徴づけていく代表的なディープラーニングのモデル)の一種です。CNNの性能は、深さ(ネットワークの層の数)・幅(各層のチャンネル数)・解像度(モデルに入力する画像の縦横のピクセル数)という3つの要素に左右されます。
これら3要素を複合係数φ(深さ・幅・解像度をまとめて拡大する度合いを決める1つの数値)でバランスよく同時に拡大する手法が複合スケーリングです。EfficientNetは、この複合スケーリングを用いて設計された、2019年にGoogleの研究者であるTan氏・Le氏が発表したCNNモデル群です。
ベースラインとなるEfficientNet-B0にこの複合スケーリングを適用し、B1からB7まで段階的に規模を大きくしたファミリーを構成します。
従来、CNNの性能向上には、層を増やして深さを増すResNet(層をまたいで情報を直接伝える経路を持ち、深い層でも学習が安定するCNN)のような手法がありました。あるいは、チャンネル数を増やして幅を広げるWide ResNet(ResNetの層の深さではなくチャンネル数、すなわち幅を広げることを重視したモデル)のような手法や、入力画像の解像度を上げる手法も用いられてきています。
これらは個別に、また経験則に頼って選ばれるのが一般的です。しかし1つの次元だけを際限なく拡大しても精度向上は頭打ちになりやすく、計算コストに対して見合わない結果になりやすいという課題があります。
EfficientNetの研究では、深さ・幅・解像度の3要素には相互に関係があり、これらを一定の比率を保ちながら同時に拡大するとバランスよく精度が向上することを示し、複合スケーリングという設計方針を確立しました。
2. 試験対策ポイント
まず整理したいのは複合スケーリングの考え方です。深さ・幅・解像度をそれぞれ個別に増やすのではなく、あらかじめ求めた一定の比率を保ったまま、複合係数φという1つの値を変えるだけで3要素を連動して拡大します。φを大きくするほどモデルは大規模・高精度になりますが、その分計算量(モデルが1回の推論や学習で行う計算の多さ)とメモリ消費も増えるという関係にあります。
EfficientNet-B0は、EfficientNetのベースラインとなるモデルです。ニューラルアーキテクチャサーチ(NAS。モデルの構造そのものを自動的に探索して見つける手法。探索アルゴリズムの詳細は姉妹記事に譲ります)によって得られており、精度と計算量のバランスが良いという特徴があります。この基準となるアーキテクチャの名称が、ベースラインモデル(スケーリングの元になる基準のアーキテクチャ)です。
B0に複合スケーリングを適用してB1からB7まで段階的に拡大したものがEfficientNetファミリーで、番号が大きいほど精度は高くなりますが、その分計算コストも増える対応関係にあります。パラメータ数が少なくシンプルな構成でありながら高い精度を達成した画像認識モデルの代表例として挙げられます。
あわせて、転移学習(学習済みモデルの知識を別のタスクに応用する仕組み)でも複数のデータセットで高い精度が得られた点も、ディープラーニングの応用例として整理しておきたいところです。
内部の構成要素は、MBConv(少ない計算量で特徴を抽出できる、モバイル向けに設計された畳み込みブロック)とSEブロック(特徴マップのチャンネルごとの重要度を調整する仕組み。詳細は姉妹記事「SENet」に譲ります)です。これらも、少ないパラメータ数で高精度を実現する要因としてあわせて整理しておきたいところです。
効果を示す数値としては、ファミリー中で最大のEfficientNet-B7がImageNet(画像認識モデルの評価によく使われる大規模な画像データセット)でトップ1精度84.3%を達成しています。トップ1精度とは、モデルの最も確信度の高い予測が正解と一致した割合を示す指標です。
原論文では、当時の代表的な最高性能モデルと比べてパラメータ数が8.4分の1、推論(学習済みモデルを使って答えを出す処理)速度が6.1倍高速だったとも報告されています。数値そのものを覚えるというより、少ないパラメータ数で高い精度を達成したという設計思想の裏付けとして押さえておきたいところです。
3. 関連概念との比較・相違点
従来の単一次元スケーリング、たとえば深さを重視するResNetや幅を重視するWide ResNetとの最大の違いは、深さ・幅・解像度のうち1つの次元だけを個別に拡大するか、3つの次元を一定の比率で同時に拡大するかという点にあります。
1次元だけの拡大は計算コストに対して精度向上が頭打ちになりやすいのに対し、EfficientNetの複合スケーリングはバランスの取れた拡大により、少ない計算コストで高い精度を達成しやすいという関係です。
学習済みモデルの軽量化手法である量子化(重みや活性値をより少ないビット数で表現しモデルを軽くする手法)とは、適用するタイミングと目的が異なります。同じく軽量化手法のプルーニング(重要度の低い重みや接続を削除する手法)や、蒸留(大きな教師モデルの出力を小さな生徒モデルに学習させる手法)とも、この点は同様です。
両者がモデルのどの段階に働きかけるのかを並べると、次のように整理できます。
| 手法 | 働きかける段階 | 何を調整するか |
|---|---|---|
| 複合スケーリング | モデルを設計・学習する段階 | アーキテクチャの規模を調整し、精度と計算量のバランスを最適化する |
| 量子化・プルーニング・蒸留 | 学習を終えたモデルへの後処理 | 重みや構造を事後的に削減し、モデルを軽量化する |
同じ効率化の工夫でも、設計の段階で規模そのものを決めるのか、出来上がったモデルを後から削るのかという違いがあります(各手法の詳細は姉妹記事に譲ります)。
4. ビジネス・実務での活用シナリオ
画像認識アプリ全般では、少ないパラメータ数で高精度を実現するEfficientNet-B0からB3程度の比較的軽量なモデルを、スマートフォンアプリの画像分類・物体認識機能に組み込む例が見られます。端末の計算資源が限られていても、実用的な速度と精度を両立させられる点が実務上の利点です。
小売・農業などの画像分類タスクでは、ImageNetで事前学習済みのEfficientNetを転移学習のベースモデルとして使う例があります。商品棚の画像分類や農作物の病害診断など独自の少量データセットに対しても、比較的短い学習時間で高い精度のモデルを構築できる点が、現場で評価されている理由です。
クラウド上の大規模画像解析では、精度を優先する場面ではEfficientNet-B7のようなファミリー内の大規模モデルを、コストや速度を優先する場面では小規模なB0系のモデルを選ぶといった使い分けがなされています。深さ・幅・解像度を同じ比率で拡大するという1つの設計思想の中から用途に応じてモデルサイズを選べる点が、EfficientNetファミリーならではの強みです。
5. 要点まとめ
- EfficientNetは、ネットワークの深さ・幅・解像度を一定の比率で同時に拡大する複合スケーリングによって設計された、Google発のCNNモデル群です。
- ベースラインのEfficientNet-B0はNASによって得られたアーキテクチャで、これに複合スケーリングを適用してB1からB7まで段階的に拡大したファミリーを構成します。
- 複合スケーリングはモデル設計・学習段階でのアーキテクチャ調整であり、量子化・プルーニング・蒸留のような学習済みモデルへの事後的な軽量化とは適用タイミングが異なります。
6. 確認問題
問1EfficientNetの複合スケーリングは、ネットワークの深さ・幅・解像度を個別にではなく、一定の比率を保ちながら複合係数φという1つの値で同時に拡大する手法である。
解答・解説をみる
○ 正しい
複合スケーリングの定義そのものであり、深さ・幅・解像度の3要素をバランスよく同時に拡大する点がEfficientNetの中心的な工夫です。φを大きくするほど精度は高まりますが、計算量とメモリ消費も増える関係にあります。
問2EfficientNetのB0からB7への拡張は、学習済みモデルの重みのビット数を減らす量子化や、不要な接続を取り除くプルーニングによって実現されている。
解答・解説をみる
× 誤り
正しくは、B0からB7への拡張は複合スケーリングによってネットワークの深さ・幅・解像度を同時に拡大するアーキテクチャ設計の手法です。量子化やプルーニングのように学習済みモデルを事後的に軽くする手法とは異なります。
問3EfficientNetのベースラインであるEfficientNet-B0は、ニューラルアーキテクチャサーチによって精度と計算量のバランスが良いアーキテクチャとして得られたものである。
解答・解説をみる
○ 正しい
EfficientNet-B0はニューラルアーキテクチャサーチによって得られたベースラインであり、これに複合スケーリングを適用することでB1からB7のファミリーが構成されます。

