AutoML進化的NAS(オートエムエルシンカテキエヌエーエス)
進化的アルゴリズム(遺伝的アルゴリズム・進化戦略)を用いてニューラルネットワーク構造を探索するNAS手法。個体群の突然変異・交叉・選択を繰り返し、世代を重ねて最適なアーキテクチャを進化させる。
AutoML進化的NASとは
AutoML進化的NAS(Evolutionary Neural Architecture Search)は、生物の進化を模倣した最適化アルゴリズムでニューラルネットワークの構造を自動設計する手法だ。各アーキテクチャを「個体」、その精度を「適応度」とみなし、突然変異・交叉・選択を繰り返してより良い構造へと進化させる。
進化的NASの歴史
ニューラルネットワークの構造を進化させるアイデアは1990年代のNeuroEvolution(NEAT, 2002年)に遡る。しかし深層学習の大規模化に伴い計算コストが障壁となり、2019年のAmoebaNet(Google Brain)で初めてImageNetレベルの規模で実用的な結果が示された。
| 時期 | 手法 | 規模 | 成果 |
|---|---|---|---|
| 2002 | NEAT | 小規模タスク | トポロジーと重みの同時進化 |
| 2017 | Large-Scale Evolution | CIFAR-10 | 250 GPU-days, 94.6% |
| 2019 | AmoebaNet | ImageNet | 83.1% Top-1, 強化学習NASを凌駕 |
| 2020 | EcoNAS | CIFAR/ImageNet | コスト効率的な進化探索 |
| 2023 | EvoPrompting | LLM | LLMを突然変異オペレータとして活用 |
進化的探索の基本フロー
1. 初期集団の生成
ランダムまたは既知の良構造をベースに、N個のアーキテクチャ(個体)からなる初期集団を生成する。Nは通常20〜100程度。
2. 適応度の評価
各個体を学習・評価し、精度(+ハードウェア効率)を適応度として算出する。ここが最もコストがかかるステップで、Weight SharingやProxy Taskで高速化する。
3. 選択(Selection)
| 選択方式 | 説明 | 特徴 |
|---|---|---|
| トーナメント選択 | ランダムにk個体を選び最良を親に | AmoebaNetで採用、シンプルで堅牢 |
| ルーレット選択 | 適応度に比例した確率で選択 | 多様性を維持しやすい |
| エリート選択 | 上位n個体を必ず次世代に残す | 最良解の保存を保証 |
| NSGA-II | Pareto支配関係で多目的選択 | 精度+レイテンシの同時最適化 |
4. 突然変異(Mutation)
親アーキテクチャの一部をランダムに変更する。典型的な突然変異操作:
- 演算の変更: Conv 3x3 → Conv 5x5
- 接続の追加/削除: Skip Connection の挿入
- 層の追加/削除: ブロック数の増減
- ハイパーパラメータの変更: チャネル数の変更
5. 交叉(Crossover)
2つの親アーキテクチャの構造要素を組み合わせて子個体を生成する。ただしNAS文献では交叉よりも突然変異主体の探索が多い。構造の互換性が保証しにくいためだ。
進化的NAS vs 勾配ベースNAS
| 特性 | 進化的NAS | 勾配ベース(DARTS) |
|---|---|---|
| 探索空間の制約 | 離散・任意の空間に対応 | 連続緩和が必要 |
| 探索コスト | やや高い(集団維持) | 低い(単一SuperNet) |
| 多目的最適化 | 自然に対応(NSGA-II等) | 重み付きスカラー化が必要 |
| Performance Collapse | 起きにくい | 起きやすい |
| 並列化 | 容易(個体ごと独立) | 困難(共有重み) |
| 実装の複雑さ | 低い | 中〜高い |
LLMとの融合: EvoPrompting
2023年にはLLMを突然変異オペレータとして活用するEvoPromptingが登場した。アーキテクチャをコードとして記述し、LLMに「このコードを変異させてより良い構造にして」と指示する。人間の設計知識がLLMを介して進化探索に注入される画期的なアプローチだ。
実装ツール
- DEAP(Python): 汎用進化的アルゴリズムライブラリ。NASの個体表現をカスタム定義可能
- NNI(Microsoft): RegularizedEvolution戦略を標準搭載
- pymoo: NSGA-II/NSGA-III等の多目的最適化に特化
- OpenELM(Google): 進化的にコード・モデルを最適化するフレームワーク
FAQ
Q: 進化的NASは強化学習ベースNASより優れていますか?
A: AmoebaNetの結果ではImageNetで進化的手法が強化学習(NASNet)を僅差で上回った。一般に進化的手法は実装がシンプルで並列化しやすく、多目的最適化に自然に対応できる利点がある。一方で集団サイズ分の評価コストがかかる欠点もある。
Q: 進化的NASの計算コストを削減する方法は?
A: Weight Sharing(SuperNetの共有重み利用)、Early Stopping(低精度な個体の学習を打ち切り)、Proxy Task(小規模データセットでの評価)の3つが主要な高速化テクニックだ。組み合わせることで数十GPU-hoursまで削減できる。
Q: 遺伝的プログラミング(GP)とNASの違いは何ですか?
A: GPはプログラムの木構造を進化させる汎用手法で、NASはニューラルネットワーク構造に特化した応用だ。NASでは探索空間がニューラルネットの層・演算・接続に限定されるため、GP よりも効率的な探索が可能になる。