Omega-Model RL Prototype

Вычислительный прототип 5D-циклической Omega-модели — игрушечной математической формализации метафоры Omega-точки Тейяра де Шардена и Типлера.

Важно: это игрушечная модель, не физическая теория. «5D» — пространство состояния, «кваанты сознания» — математические сущности, а не частицы.

Что это

Модель описывает циклическую вселенную:

  1. Big Bang — из сингулярности разворачивается 5D-сфера.
  2. Expansion — генерируется дерево ветвей (все возможные миры).
  3. Experience — в каждой ветке симулируются «кваанты сознания».
  4. Omega Check — проверяется глобальная когерентность.
  5. Collapse — если когерентность выше порога, идеальная ветка сжимается в новую сингулярность.

Когерентность C = |Σψ|² / Σ|ψ|² — основная метрика.

История версий

Версия Файл Что нового mC
v3 code/omega_unified.py PPO baseline 0.012
v4 code/omega_recurrent.py + LSTM 0.026
v6 code/omega_branch_action.py + векторное действие 0.026
v9 v9-reward/omega_unified.py + reward, fix OMEGA_THRESHOLD 0.356
v10.5 v9-reward/omega_vector_v10_5.py + вектор (3,) + TRAIN_STEPS=100000 0.389
v11 v9-reward/omega_evolution_v11.py + эволюция (рождение/смерть ветвей) 18.07 🚀
v11.1 v9-reward/omega_evolution_v11_1.py + 10 сидов + MCTS baseline 18.32 🚀

v11: эволюция ветвей

Идея: ветви рождаются и умирают динамически:

  • energy — растёт от когерентности, падает со временем.
  • prune_branches — удаляет мёртвые ветви.
  • spawn_branches — создаёт новые от root.
  • Reward — популяционный (alive / initial + C - S/12).

Результаты v11 (5 сидов, 4 условия):

Условие R mC
random_evolution 300 11.27
trained_evolution 495 18.07
shuffled_evolution 50 12.74
constant_reward 0 0.09

t-тесты:

  • trained vs random: t = +4.10, p = 0.0011 ✅
  • trained vs shuffled: t = +10.33, p < 0.0001 ✅
  • trained vs constant: t = +11.40, p < 0.0001 ✅

v11.1: 10 сидов + MCTS

Добавлено:

  • 10 сидов (было 5) — надёжная статистика.
  • MCTS (Monte-Carlo Tree Search, 3 симуляции) — классический baseline.
  • TRAIN_STEPS = 30000 — компромисс.

Результаты v11.1 (10 сидов, 5 условий):

Условие R mC
constant_reward 0 0.085
random_evolution 300.5 10.63
shuffled_evolution 51.4 5.31
trained_evolution (PPO) 452.1 16.30
mcts_evolution 495.3 18.32 🚀

t-тесты:

  • trained vs random: t = +2.22, p = 0.0534 (тренд)
  • trained vs shuffled: t = +6.69, p = 0.0001 ✅
  • trained vs constant: t = +7.59, p < 0.0001 ✅

PPO vs MCTS

MCTS (18.32) > PPO (16.30) на 12%.

Интерпретация:

  • MCTS — классический поиск, не требует обучения.
  • PPO — нейросеть, требует 30000 шагов обучения.
  • MCTS лучше в маленькой среде (40 ветвей).
  • PPO в 100 раз быстрее на инференсе (MCTS требует deepcopy).
  • PPO масштабируется на большие среды, MCTS — нет.

Вывод: в малых средах классический поиск конкурентен; для больших сред нужны нейросети.

Структура репозитория

v12.1: bugfix + complexity presets

Файл: v12.1/omega_v12_1.py

Что нового:

  • Валидация конфига (max_branches >= initial_branches, death_threshold < spawn_threshold).
  • Флаг extinct — отслеживание вымирания популяции.
  • Кэш mean_state — ускорение O(N²) → O(N).
  • Сохранение PPO-модели — v12_results/ppo_*.zip.
  • Пресеты сложности — --complexity {baseline,a,b,c}.
  • Флаг extinct_steps в evaluate_policy.

Результаты v12.1 (5 сидов, N=40, preset c, combined reward):

Алгоритм C (mean) ±std R
random 0.213 0.043 434
ppo 0.272 0.037 818
mcts 0.544 0.044 1016

Разрыв: PPO − random = +0.059 (+27.6%); MCTS − PPO = +0.273 (+100.4%).

v12.2: coherence reward + scaling

Файл: v12.2/omega_v12_2.py

Что нового:

  • --reward coherence — чистый reward только по C (без штрафов).
  • Визуализация в cmd — ASCII bar chart, per-seed разброс, разрывы.
  • ProgressCallback — прогресс-бар PPO каждые 2000 шагов.
  • --mode scaling — scaling по N.
  • --mode show — просмотр CSV без перезапуска.
  • Исправлен save_path — модели не перезаписываются.

Ключевой результат: reward ablation

Combined reward (провал):

N random ppo mcts
40 0.213 0.230 0.544

Coherence reward (прорыв):

N random ppo mcts
40 0.213 0.536 0.544

PPO C вырос с 0.230 до 0.536 (+135%) при смене reward. PPO почти догнал MCTS (+1.6%).

Scaling N=10..160 (coherence reward, 50k шагов)

N random ppo mcts Победитель
10 0.226 0.546 0.651 MCTS (+19%)
20 0.242 0.577 0.575 PPO (+0.5%)
40 0.233 0.570 0.565 PPO (+1.0%)
80 0.192 0.519 0.525 MCTS (+1.1%)
160 0.169 0.461 0.485 MCTS (+5.3%)

Ключевые выводы:

  • Crossover при N=20: PPO обгоняет MCTS.
  • MCTS выигрывает при N=10 и N≥80.
  • PPO в 30× быстрее на инференсе (0.8с vs 24с).
  • PPO стабильнее по std между сидами.

Установка

pip install numpy gymnasium stable-baselines3 pandas matplotlib