Перейти к содержанию

Многоклассовый режим из десяти бинарных задач (скрипты 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).
python scripts/ablation/13_merge_ova_multiclass_seed.py

Скрипты 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-флаги.

python scripts/ablation/16_mnist_multiclass_from_ova.py --generations 100 --resume

Выход: seeds/<id>/, evolve/<id>/, pipeline_status.json под --output-root.

Инфографика: scripts/analysis/export_script13_14_infographic.py. Результаты и графики: Результаты multiclass.