アーキテクチャの離散的な選択を連続値に緩和し、勾配降下法で効率的に探索するNAS手法。従来の強化学習ベースNASに比べ探索コストを300倍以上削減し、単一GPUでの探索を現実的にした。
DARTS(Differentiable Architecture Search)は2019年にカーネギーメロン大学(CMU)のHanxiao Liu らが提案したNeural Architecture Search手法だ。従来のNASが強化学習や進化的アルゴリズムで離散的にアーキテクチャを探索していたのに対し、DARTSは候補演算の選択を連続値のパラメータとして扱い、通常のニューラルネットワーク学習と同じ勾配降下法で最適化する。
DARTSの核心は「候補演算の混合」にある。各エッジ(ノード間の接続)に対して全候補演算の出力を重み付き和で表現する。
あるエッジの出力は次のように表される:
この連続緩和により、α とネットワーク重み w を交互に勾配降下で最適化するBi-Level最適化問題として解ける。
| ステップ | 操作 | 更新対象 |
|---|---|---|
| 1 | SuperNetの構築(全候補演算を含む) | 初期化 |
| 2 | 学習データで重み w を更新 | w |
| 3 | 検証データでアーキテクチャパラメータ α を更新 | α |
| 4 | Step 2-3 を交互に繰り返す | w, α |
| 5 | 各エッジで最大 α の演算を選択(離散化) | 最終構造 |
| 手法 | 探索コスト | CIFAR-10 Error | パラメータ数 |
|---|---|---|---|
| NASNet-A | 500 GPU-days | 2.65% | 3.3M |
| AmoebaNet-A | 3,150 GPU-hours | 3.34% | 3.2M |
| ENAS | 0.5 GPU-days | 2.89% | 4.6M |
| DARTS (1st order) | 0.5 GPU-days | 3.00% | 3.3M |
| DARTS (2nd order) | 1.5 GPU-days | 2.76% | 3.3M |
| P-DARTS | 0.3 GPU-days |
DARTSはNASNetの300倍以上高速でありながら、同等以上の精度を達成している。
DARTSは探索が進むとSkip Connection(パラメータなしの演算)ばかりが選択される「性能崩壊」を起こすことがある。Skip Connectionは勾配の流れが良いため α が不当に大きくなる傾向があるためだ。
| 手法 | 発表年 | 改良点 |
|---|---|---|
| P-DARTS | 2019 | 段階的に探索空間を縮小 |
| PC-DARTS | 2020 | 部分チャネル接続で計算コスト削減 |
| FairDARTS | 2020 | Sigmoid選択で公平な演算競合 |
| DARTS- | 2021 | 補助的なSkip Connection制限 |
| β-DARTS | 2022 | Beta-Decayで崩壊を抑制 |
| GAEA | 2022 | 幾何学的アニーリング |
DARTSはPyTorchでの再現実装が多く公開されている。
nni.nas.strategy.DARTS として標準搭載A: 物体検出(Auto-FPN)、セマンティックセグメンテーション(Auto-DeepLab)、自然言語処理(Evolved Transformer)など多タスクに適用されている。探索空間をタスクに合わせて再設計する必要がある。
A: DARTSはWeight Sharingの一種だ。全候補演算を含むSuperNetの重みを共有しつつ、連続緩和された選択パラメータαを勾配法で最適化する点が特徴。ENASなどもWeight Sharingだが、選択は強化学習で行う。
A: 2nd orderの方が精度は高いがメモリ消費が大きい。GPU メモリ16GB以下なら1st order、24GB以上あれば2nd orderを推奨する。P-DARTSなどの改良手法を使えば1st orderでも十分な精度が得られる。
| 2.50% |
| 3.4M |