最近は,LLM ベースの NAS (LLM-NAS) 研究も出てきている:
「言語を生成するように,アーキテクチャを生成」
「プロンプト を使うことで,評価を不要に」
なぜ LLM か?
- LLMは,複雑な構造をトークン列として自然に扱える
- すでに膨大な知識を持っており,良いアーキテクチャのパターンを学習している可能性がある
- プロンプトによる制御が可能で,柔軟な探索ができる
使用イメージ:
- ユーザプロンプト:
「CNN で画像分類に適したニューラルネットワークの構造を提案してください」
- LLM がアーキテクチャを出力
python
model = Sequential([
Conv2D(32, kernel_size=3, activation='relu'),
MaxPooling2D(pool_size=2),
Conv2D(64, kernel_size=3, activation='relu'),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
- そのアーキテクチャを実際に構築・訓練・評価する
- 良い結果が出た構造をプロンプトに追加して,次の提案に活かす
○ LLM-NASのバリエーション
1. プロンプト工学(Prompt Engineering)型
人間がプロンプトを工夫して,LLMに良いアーキテクチャを出させる
例:「ResNetのような構造で,パラメータ数を減らしたモデルを提案してください」
2. LLM + 強化学習型
LLMをコントローラとして使い,報酬をもとにプロンプトや生成方針を調整
例:LLMが出力したアーキテクチャに対して報酬を返し,次回の出力に反映
3. LLM + 自己改善ループ型(Self-Refinement)
LLMが自分の出力を自己評価・改善する
例:「このアーキテクチャを改善してください」と再プロンプトする
○ LLM-NASの研究の実例
・LLM4NAS(2023)
OpenAI の GPT-3 を使って,アーキテクチャを自然言語で記述
例:「画像分類に適した軽量なCNNを設計してください」
出力されたコードを実際に訓練し,性能を評価
高性能なモデルが得られることを確認
・PromptNAS(2023)
LLMに「過去の良いアーキテクチャの例」を与えて,次の候補を生成させる
プロンプトの工夫によって,探索の方向性を制御
○ LLM-NASのメリットと課題
| メリット |
課題 |
| 人間の言語で柔軟に指示できる
|
出力の一貫性・正確性にばらつきがある
|
事前知識を活かせる
| 評価コストは依然として高い
|
| コード生成と統合しやすい
|
学習済みLLMの微調整が難しいことも
|
|