Многоклассовый режим из десяти бинарных задач (скрипты 13, 14, 14b, 16)¶
После того как OVA-исследование (скрипт 11 для CIFAR-10, скрипт 15 для MNIST) находит лучшего бинарного чемпиона на каждый класс, эти чемпионы сливаются в один с несколькими выходами геном и дообучаются эволюцией. Гипотеза: качество OVA-фаз (A/B против C/D, ±GD) влияет на итоговую multiclass-точность.
flowchart LR
s11["11 / 15 OVA A-D"] --> s13["13 merge seed"]
s13 --> s14["14 evolve (no GD)"]
s13 --> s14b["14b evolve (+ periodic GD)"]
s15b["15 OVA MNIST"] --> s16["16 MNIST multiclass queue"]
Скрипт 13 — начальное решение слияния¶
scripts/ablation/13_merge_ova_multiclass_seed.py — CLI-обёртка над
ova_merge.merge_ova_champions.
- Вход:
ova_results.jsonисследования (по умолчаниюruns/ablation/ova_gpu_only), выборbest-per-class,run_archive.json+ веса каждого класса. - Выход:
seed_genome.json,seed_weights.pt,seed_meta.jsonв--output-dir(по умолчаниюruns/ablation/ova_multiclass_seed). - Опции:
--phases(фильтр фаз),--max-hidden-layers/--max-neurons-per-layer(64).
Скрипты 14 и 14b — эволюция многоклассового начального решения¶
Общая библиотека — scripts/ablation/multiclass_evolve_lib.py
(run_multiclass_evolution, build_multiclass_cfg, seed_population).
14 (14_multiclass_evolve.py) |
14b (14b_multiclass_evolve_gd.py) |
|
|---|---|---|
| Периодическое градиентное дообучение | нет (with_gd=False) |
да (with_gd=True, gd_every=5, gd_epochs=2) |
| Лосс GD | — | cross-entropy по tip-логитам |
| Output dir | ova_multiclass_evolve |
ova_multiclass_evolve_gd |
Общие дефолты: population_size=128, num_generations=500, fitness_val_size=2048,
task_mode="multiclass", breeding_cone_enabled=True, edge_weights=True,
fitness_resample_each_generation=True, считывание (readout) mean_minus_median (CIFAR) / mean (MNIST).
seed_population клонирует seed в N особей (индексы 1..N-1 — с лёгким шумом весов).
python scripts/ablation/14_multiclass_evolve.py --seed-dir runs/ablation/ova_multiclass_seed
python scripts/ablation/14b_multiclass_evolve_gd.py --seed-dir runs/ablation/ova_multiclass_seed
Артефакты: run_archive.json + study_status.json / study_results.json для Studio.
Скрипт 16 — очередь многоклассовых прогонов MNIST¶
scripts/ablation/16_mnist_multiclass_from_ova.py (+ mnist_multiclass_from_ova_lib.py)
оркестрирует очередь из 11 экспериментов «merge + evolve» из чемпионов скрипта 15,
с гейтингом по готовности фаз, дедупликацией одинаковых наборов чемпионов и resume:
a_no_gd,b_no_gd,ab_no_gd;c_no_gd,d_no_gd,cd_no_gd(требуют фазы C/D);c_gd,d_gd,cd_gd(те же с периодическое градиентное дообучение (periodic GD));legacy_all_no_gd,legacy_all_gd(best-per-class по всем фазам; пропуск при дублировании).
CLI: --study-dir (по умолчанию ova_mnist_gpu_only), --output-root
(ova_mnist_multiclass), --only, --n-classes, --generations (100),
--val-size (10000), --dry-run, --resume, GD-флаги.
Выход: seeds/<id>/, evolve/<id>/, pipeline_status.json под --output-root.
Инфографика: scripts/analysis/export_script13_14_infographic.py.
Результаты и графики: Результаты multiclass.