Skip to content

Sett11/TSRO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

TSRO — прототип «мицелиального» агента Lesik

TSRO расшифровывается как Technotropic self-replicating organism - технотропный самореплицирующийся организм. TSRO - это определение самого архитектурного принципа технотропных моделей. Проект по разработке подобной модели я назвал Shoggoth (по аналогии с Лавкрафтовским шогготом), а первую такую модель - Lesik

Репозиторий содержит исполняемый набросок идеи жизнеспособности техники через минимальное семя и последующее развёртывание: не бенчмарк на «решение задачи X», а демонстрация того, как из одной активной клетки и общего «генома» вырастает связанная популяция узлов, переживает голод, переносится в новую среду с другой «пищей», получает модельный «системный удар» и продолжает существование в фазе регенерации при наличии данных.

Связь с более широким контекстом (технотропность, вектор жизнеспособности, акцент на автономии и регенерации, а не на табличном лидерборде) здесь не формализована численно как готовый критерий — это именно рабочий конструктор в коде, который можно менять, ломать и измерять самостоятельно.

Основной артефакт

Весь сценарий описан и реализован в одном Jupyter-ноутбуке: shoggoth-lesik.ipynb. Запускайте ячейки сверху вниз в среде с установленными зависимостями (удобнее всего Google Colab с GPU).

Зависимости и среда выполнения

Ноутбук рассчитан на стек JAX, Flax, Optax, Matplotlib, а также на загрузку датасетов через TensorFlow Keras (keras.datasets): при первом обращении к данным скачиваются обучающие выборки MNIST и Fashion-MNIST. Убедитесь, что в среде есть сеть для первичной загрузки (или заранее положите кэш в ожидаемое место для вашей установки TensorFlow).

Рекомендации по железу: фаза обучения генома (EPOCHS порядка тысяч, размер инкубатора 128 узлов) заметно быстрее на GPU; на CPU прогон возможен, но займёт больше времени.

Модель Lesik: состояние и ДНК

Каждый узел среды несёт три сущности:

  • H — матрица состояний размерности «узлы × D» (в ноутбуке D = 32): локальное «содержание» клетки после контакта с данными.
  • A — матрица внимания «узел × узел», нормализованная через softmax; задаёт, кого клетка «слушает» на такте.
  • M — вектор биомассы по узлам (ограничение сверху единицей в реализации метаболизма).

ДНК в этом прототипе — не отдельный файл весов на диске, а обучаемый модуль LesikGenome (гиперсеть во Flax): на вход подаётся компактный хэш пищи (проекция 784-мерного куска данных через фиксированную случайную матрицу LSH размерности HASH_DIM = 32), на выходе — набор матриц и смещений, которые на один такт задают правила LTC-подобного обновления H, пересчёта A и приращения M. Все клетки делят одни и те же параметры гиперсети; различие клеток идёт от локального состояния и от того, какой хэш пищи сгенерировал веса на данном такте.

LSH-матрица задаётся один раз и не учится; в коде она масштабируется как 1/sqrt(input_dim), чтобы дисперсия хэша не раздувала вход гиперсети и не провоцировал численный разгон.

Физика такта: питание и голод

Функция life_step связывает пищу, активацию пустых узлов и cell_metabolism:

  • При питании (ненулевой вектор пищи по порогу энергии) узлы обновляют H и топологию A в «режиме еды», биомасса может расти согласно витальности из генома.
  • При голоде (нулевая пища в эпизоде) H продолжает эволюционировать, A смешивается из базовой топологии и «голодной» ветки с матрицей W_hunger, M медленно убывает с коэффициентом HUNGER_DECAY — это задумано как учебная самооптимизация связей без внешнего сигнала данных.

Новые узлы «открываются» по правилу первой пустой клетки в порядке индексов при поступлении пищи; в начале эпизода жива одна стартовая клетка с M = 1.

Обучение генома (фаза 1, инкубатор)

calculate_fitness прогоняет один эпизод: T_FEAST тактов с пищей (для обучения каждый эпизод берётся случайный набор изображений MNIST размера T_FEAST как отдельные такты), затем T_FAMINE тактов с нулевой пищей. Траектория считается через jax.lax.scan.

Целевая функция комбинирует:

  • квадратичный штраф за отклонение суммарной массы от 90% от числа узлов инкубатора;
  • поощрение скорости наполнения (нормализованная сумма масс по времени, вес ABSORPTION_WEIGHT);
  • поощрение когерентности H между живыми узлами (взвешенное косинусное сходство, вес COHERENCE_WEIGHT);
  • небольшую L1-регуляризацию по листьям дерева параметров.

Оптимизатор — Adam с фиксированным LEARNING_RATE из конфигурационной ячейки.

Когерентность в дифференцируемой части считается через нормировку строк H как H / sqrt(sum_sq + eps), а не через linalg.norm, чтобы избежать неопределённых производных при нулевой норме.

train_step дополнительно проверяет конечность лосса и всех листьев градиента; при нарушении обновление весов пропускается, в логе накапливается счётчик skip, в конце эпохи печатается суммарное число пропущенных шагов — так защищается состояние оптимизатора от заражения NaN и Inf.

После обучения: запись инкубатора и визуализации

Ноутбук записывает покадровую симуляцию инкубатора на одном проходе с теми же правилами, строит графики истории обучения, снапшоты сетки биомассы и PCA по H, анимацию роста. Ожидаемые имена файлов в рабочей директории (без ссылок в этом документе): lesik_training_history.png, lesik_incubator_snapshots.png, lesik_incubator.gif, lesik_topology.png.

Фаза 2: среда X, семя, удар, регенерация с пищей

После инкубатора выбирается семя: среди клеток с M > 0.5 берётся та, у которой максимальна евклидова норма вектора H (как эвристика «наиболее насыщенной информацией» клетки). Вектор H этой клетки переносится в первый узел новой среды размера N_ENV_X (по умолчанию 300), остальные узлы пусты, связи — единичная матрица.

Пища в среде X целиком берётся из Fashion-MNIST (другой визуальный домен, 784 признака после нормализации), чтобы отделить «привычную» среду обучения от «чужой» среды переноса.

Таймлайн симуляции:

  1. Пиршество — T_X_FEAST тактов с реальными изображениями одежды.
  2. Голод — T_X_FAMINE тактов без пищи (самооптимизация связей при затухании M).
  3. Системный удар — на границе фаз для каждого узла независимо берётся bernoulli с вероятностью выживания 0.6: выжившие сохраняют M и H, остальные обнуляются; матрица A на этом шаге не пересобирается под удар (это осознанное упрощение сценария).
  4. Регенерация — T_X_REGEN тактов с снова включённой пищей (новые случайные образцы Fashion-MNIST), то есть восстановление биомассы возможно не только за счёт перестройки связей, но и за счёт потока данных.

Далее строятся сводная картинка по среде X, GIF и текстовый итоговый отчёт с пиковой и финальной массой, сравнением когерентности на пике питания и после голода и эвристикой «масса после удара не просела относительно ближайшего пост-ударного замера». Ожидаемые файлы: lesik_env_x.png, lesik_env_x.gif.

Параметры, которые чаще всего трогают первыми

В конфигурационной ячейке ноутбука сосредоточены: N_INCUBATOR, N_ENV_X, EPOCHS, LEARNING_RATE, длительности фаз T_FEAST / T_FAMINE и T_X_FEAST / T_X_FAMINE / T_X_REGEN, веса COHERENCE_WEIGHT и ABSORPTION_WEIGHT, HUNGER_DECAY. Комментарии в той же ячейке поясняют типичные диапазоны. Важное ограничение по смыслу кода: при росте N_INCUBATOR имеет смысл не делать T_FEAST сильно меньше числа узлов — иначе физически не хватит тактов на последовательное заполнение по текущему правилу «первая пустая клетка».

Git и объём репозитория

В корне проекта лежит файл .gitignore, который отражает намерение держать репозиторий лёгким и безопасным: не коммитить каталоги чекпоинтов Jupyter, виртуальные окружения Python, кэши и служебные файлы IDE и ОС, журналы, секреты вроде .env и ключей, тяжёлые веса и сериализованные артефакты моделей с расширениями вроде pth, pt, ckpt, h5, pkl (с узкими исключениями для тестовых pkl), крупные табличные дампы и каталоги data, datasets, а также заранее выделенные места под тяжёлый вывод и черновики теории — result и concept. Воспроизводимость демонстрации обеспечивается самим ноутбуком и автозагрузкой публичных датасетов, а не хранением больших бинарников в git.

Дисклеймер

Это исследовательский и педагогический прототип: метафоры «клетка», «ДНК», «удар антивируса» не следует буквально отождествлять с биологией или ИБ-продуктами. Числа в отчёте и на графиках будут зависеть от случайных ключей, железа и версий библиотек.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors