AI・機械学習
上級

DARTS(Differentiable Architecture Search)(ダーツ)

アーキテクチャの離散的な選択を連続値に緩和し、勾配降下法で効率的に探索するNAS手法。従来の強化学習ベースNASに比べ探索コストを300倍以上削減し、単一GPUでの探索を現実的にした。

0 回閲覧
0 いいね

DARTS(Differentiable Architecture Search)とは

DARTS(Differentiable Architecture Search)は2019年にカーネギーメロン大学(CMU)のHanxiao Liu らが提案したNeural Architecture Search手法だ。従来のNASが強化学習や進化的アルゴリズムで離散的にアーキテクチャを探索していたのに対し、DARTSは候補演算の選択を連続値のパラメータとして扱い、通常のニューラルネットワーク学習と同じ勾配降下法で最適化する。

連続緩和のメカニズム

DARTSの核心は「候補演算の混合」にある。各エッジ(ノード間の接続)に対して全候補演算の出力を重み付き和で表現する。

あるエッジの出力は次のように表される:

  • 各候補演算 o に対する重み α を softmax で正規化
  • 全候補演算の出力を重み付き加算
  • 探索後、各エッジで最大重みの演算を選択して離散化

この連続緩和により、α とネットワーク重み w を交互に勾配降下で最適化するBi-Level最適化問題として解ける。

DARTSの探索アルゴリズム

ステップ操作更新対象
1SuperNetの構築(全候補演算を含む)初期化
2学習データで重み w を更新w
3検証データでアーキテクチャパラメータ α を更新α
4Step 2-3 を交互に繰り返すw, α
5各エッジで最大 α の演算を選択(離散化)最終構造

性能比較

手法探索コストCIFAR-10 Errorパラメータ数
NASNet-A500 GPU-days2.65%3.3M
AmoebaNet-A3,150 GPU-hours3.34%3.2M
ENAS0.5 GPU-days2.89%4.6M
DARTS (1st order)0.5 GPU-days3.00%3.3M
DARTS (2nd order)1.5 GPU-days2.76%3.3M
P-DARTS0.3 GPU-days2.50%3.4M

DARTSはNASNetの300倍以上高速でありながら、同等以上の精度を達成している。

DARTSの問題点と改良手法

Performance Collapse問題

DARTSは探索が進むとSkip Connection(パラメータなしの演算)ばかりが選択される「性能崩壊」を起こすことがある。Skip Connectionは勾配の流れが良いため α が不当に大きくなる傾向があるためだ。

主な改良手法

手法発表年改良点
P-DARTS2019段階的に探索空間を縮小
PC-DARTS2020部分チャネル接続で計算コスト削減
FairDARTS2020Sigmoid選択で公平な演算競合
DARTS-2021補助的なSkip Connection制限
β-DARTS2022Beta-Decayで崩壊を抑制
GAEA2022幾何学的アニーリング

実装フレームワーク

DARTSはPyTorchでの再現実装が多く公開されている。

  • NNI(Microsoft): nni.nas.strategy.DARTS として標準搭載
  • AutoGluon(Amazon): DARTSバックエンドをサポート
  • NAS-Bench-201: DARTS系手法のベンチマーク用データセット
  • naszilla: 各種NAS手法の統一比較ライブラリ

FAQ

Q: DARTSは画像認識以外のタスクにも使えますか?

A: 物体検出(Auto-FPN)、セマンティックセグメンテーション(Auto-DeepLab)、自然言語処理(Evolved Transformer)など多タスクに適用されている。探索空間をタスクに合わせて再設計する必要がある。

Q: DARTSとWeight Sharingの違いは何ですか?

A: DARTSはWeight Sharingの一種だ。全候補演算を含むSuperNetの重みを共有しつつ、連続緩和された選択パラメータαを勾配法で最適化する点が特徴。ENASなどもWeight Sharingだが、選択は強化学習で行う。

Q: 1st orderと2nd orderどちらを使うべきですか?

A: 2nd orderの方が精度は高いがメモリ消費が大きい。GPU メモリ16GB以下なら1st order、24GB以上あれば2nd orderを推奨する。P-DARTSなどの改良手法を使えば1st orderでも十分な精度が得られる。