Omega-Model RL Prototype
Вычислительный прототип 5D-циклической Omega-модели — игрушечной математической формализации метафоры Omega-точки Тейяра де Шардена и Типлера.
Важно: это игрушечная модель, не физическая теория. «5D» — пространство состояния, «кваанты сознания» — математические сущности, а не частицы.
Что это
Модель описывает циклическую вселенную:
- Big Bang — из сингулярности разворачивается 5D-сфера.
- Expansion — генерируется дерево ветвей (все возможные миры).
- Experience — в каждой ветке симулируются «кваанты сознания».
- Omega Check — проверяется глобальная когерентность.
- 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