Серия статей о том, как устроены живые системы с точки зрения вычислений, управления и проектирования.
Привет, Хабр!
Это моя первая пробная статья. По образованию и опыту я инженер. Занимался всем: от электроники на VHDL, реверс-инжиниринга, до этих ваших хайповых блокчейнов и AI. Последние 7-8 лет всё больше погружаюсь в биологию, машинное обучение и моделирование биологических систем. Случайно окончил магистратуру МФТИ по прикладному анализу данных в медицине.
ДИСКЛЕЙМЕР:
Статья НЕ написана с помощью ИИ, оригинальное авторское скудоумие по многим вопросам полностью сохранено. ИИ применялся только как корректор и исправлятор безграмотности, и немножечко помогал формулировать некоторые мысли. Текст осмыслен автором, логика повествования осмыслена. Поэтому прошу не судить строго, а профессиональных биоинформатиков – делать скидку на некоторые допущения и упрощения.
Статья написана преимущественно для специалистов в сфере ИТ, инженеров и, возможно, для ИИшников.
Зачем вообще всё это?
Провозившись с кучей информации на тему устройства белков, цитологии, внутренних механизмов и устройства клеток, я осознал, что в вузах с самого начала погружают в кучу деталей реализации, а общий смысл приходится додумывать самостоятельно. Я потратил очень много времени, чтобы понять какие-то базовые принципы устройства и работы живых систем, и теперь хочу поделиться ими с вами. Может, вдруг у кого-то появится интерес к этой теме, как он когда-то появился у меня.
Я бы хотел развивать направление «инженерной биологии» и принести в эту сферу процессы и подходы, которые уже много лет применяются в ИТ. Потому что сейчас много разрозненных данных, многое не структурировано. И разработки занимают даже не годы, а десятилетия.
В то же время сейчас появились замечательные биологические foundation модели (Evo 2, ESM 3, Alpha Fold 3, и другие), которые могут кардинально ускорить процессы разработки как каких-то лекарств, так и просто наглядно показать заинтересованным, как живые системы устроены «под капотом».
Что планируется
В серии статей я бы хотел пройти с вами путь от идеи до реализации какой-то простой биологической системы. Сначала ввести в курс дела, показать, как гениально и сложно устроены клетки, на примере клеточных автоматов. Затем более подробно погрузиться в устройство белков с позиции вычислений, реакций, взаимодействий. Рассмотреть живое как набор регуляторных паттернов. Чтобы показать, что в биотех в целом реально вкатиться. И что это очень интересная сфера.
В этой статье я бы хотел начать с базы и аналогий: что такое вообще клетка и как она превращается в организм.
Итак, начнём.
Клетка.
Вы наверняка знаете, всё живое состоит из элементарных элементов – клеток. В парадигме электронщиков можно представить клетку как живой и крайне продвинутый микроконтроллер, да ещё и способный самовоспроизводиться.
Он, упрощённо, принимает какие-то входящие сигналы, преимущественно реализованные через биоэлектрические механизмы. То есть API клеток практически полностью построен на биоэлектричестве.
Клетка, принимая сигналы, производит десятки, сотни или даже тысячи вычислений. Меняет своё внутреннее состояние, активируя и деактивируя участки ДНК, ответственные за определённые регуляции. После изменения внутреннего состояния выполняет какую-то механическую работу (внутреннюю и/или внешнюю). И отправляет какие-то сигналы наружу, другим клеткам. Те, в свою очередь, их принимают и делают то же самое.
Получается очень сложная и продвинутая распределённая вычислительная система. Ключевое слово тут именно «распределённая».
Под распределённой я здесь понимаю то, что каждая клетка, по сути, выполняет свою строго заданную локальную программу, записанную в ДНК, общается с внешним миром, отправляя и принимая сигналы. Но все вместе клетки выполняют какую-то сложную функцию как эмерджентное состояние системы.
Потерпите, сейчас будет понятно.
ДНК.
Все привыкли считать, что в ДНК записана некоторая программа, которая выполняется и работает. По факту это, конечно, близко к правде, но с большим допущением. На самом деле ДНК – это скорее библиотека скомпилированного кода (/var/lib/). И в каждой клетке этот код практически одинаковый (за исключением мутаций). Есть ещё огромные некодирующие участки ДНК, многие из которых выполняют регуляторные функции. Для простоты их можно представить как различные настройки и служебные данные системы (/etc/), хотя аналогия, конечно, условная.
А вся логика работы происходит именно на уровне внутреннего состояния клетки. То есть какие-то участки ДНК активны, какие-то выключены, какие-то более активны, какие-то менее. Именно поэтому нервная клетка, клетка печени и клетка кожи, имея практически одинаковую ДНК, работают совершенно по-разному.
Это на самом деле очень сильно напоминает работу нейросетей. То есть ДНК – это веса сети, а внутреннее состояние клетки – её текущий контекст и активации. Конечно, это лишь инженерная аналогия, а не полное соответствие, но она позволяет довольно интуитивно представить происходящие процессы. Да и вычисления тоже зачастую производятся способами, схожими с теми, что используются в нейросетях.
Причём интересный факт. Нейросети, как вы знаете, обучаются через градиентный спуск или его продвинутые варианты. А в природе используется генетический алгоритм. Но градиентный спуск может подобрать не любую функцию, особенно в шумном ландшафте. А генетический алгоритм может подобрать любую, но он просто очень медленный. Однако у природы вариантов и времени было несколько миллиардов лет, чем она успешно и воспользовалась.
Как природа обучается
Кто прочитал до этого места – поражаюсь вашему терпению. Но наверняка у вас возник вопрос: это, конечно, всё замечательно, но как одна клетка, пользуясь какими-то локальными правилами, может построить и поддерживать целый организм?
Очень здравое замечание, давайте разбираться на примере клеточных автоматов – упрощённой песочницы, показывающей не кучу деталей и механизмов, а общий принцип работы для инженеров.
Для начала сформулируем постановку задачи.
-
Нам надо вырастить организм, используя клетки, в которых одинаковая ДНК (код/веса – называйте как хотите).
-
При достижении целевой формы рост должен остановиться.
-
Мы не должны придумывать правила самостоятельно.
-
Правила должны придуматься сами.
И тут нам на помощь как раз может прийти наш любимый ИИ и алгоритмы обучения. План такой.
Берём клетку, кодируем её внутреннее состояние как вектор (просто набор чисел). Первые четыре числа отдаём под цвет и прозрачность.
Далее делаем скрытый слой, который условно и будет нашей ДНК.
Организм, состоящий из клеток, за один прогон клеточного автомата стремится достичь целевой формы. Каждая клетка смотрит, что у неё происходит вокруг (имитируем приём сигналов извне), прогоняет это через свои скрытые слои и меняет своё состояние.
Потом, при следующем проходе клеточного автомата, уже другая клетка смотрит на соседей, выполняет те же локальные операции и обновляет своё состояние. И так до тех пор, пока мы не достигнем цели.
Чистой воды распределённая система.
Магия заключается в том, что скрытые параметры после обучения начинают вести себя как регуляторы и синхронизаторы. Там начинают протекать информационные потоки, волны и много чего ещё интересного.
Именно такой алгоритм сделал Александр Мордвинцев и показал принципиальную возможность построения сложной системы по локальным правилам. На анимации вы можете видеть, как из одной клетки с абсолютно одинаковыми внутренними слоями вырастает полноценная ящерка.
Грубо говоря, именно так можно представить процесс, которым эволюция подбирает работающие решения. Повторюсь, что это сильное упрощение для инженеров, показывающее общий принцип обучения. И да, в симуляции используется не генетический алгоритм, а градиентный спуск. Иначе мы бы обучали модель очень долго.
В чем отличие эволюционного и градиентного алгоритмов отлично объясняется в видео.
Потом, при следующем проходе клеточного автомата, уже другая клетка смотрит на соседей, выполняет те же локальные операции и обновляет своё состояние. И так до тех пор, пока мы не достигнем цели.
Подробнее со статьёй можно ознакомиться по ссылке. Ноутбук, конечно, морально и версионно устарел, но с агентами починить его и побаловаться не составит труда.
После того как модель научилась выращивать организм, исследователи задались следующим вопросом, а сможет ли она его восстановить после повреждений? Ожидаемо, нет.
Тогда организм во время обучения начали случайным образом «ломать», а затем отбирать модели, которые лучше остальных справлялись с регенерацией.
В результате обучения регенерации удалось получить результат. Модель перестала просто выращивать организм и научилась восстанавливать его после повреждений. Причём никакого «центра управления» по-прежнему нет: каждая клетка действует только на основе локальной информации, а сложное поведение возникает как коллективный эффект.
Если тема показалась интересной и хочется копнуть глубже, то рекомендую посмотреть работы, посвящённые анализу скрытых слоёв клеточных автоматов. Исследователи обнаружили, что после обучения скрытые состояния начинают выполнять вполне осмысленные функции: появляются информационные потоки, пространственная память, синхронизация и другие механизмы самоорганизации.
То есть внутри модели не просто возникают случайные числа – формируется внутренняя регуляторная система, которая и позволяет организму расти, поддерживать форму и восстанавливаться после повреждений.
-
Visualising the Attractor Landscape of Neural Cellular Automata (2026)
-
Investigating dynamics of Neural Cellular Automata applied to image data in diverse complex systems
Самое удивительное, что никакой клетки-директора не существует. Нет центрального процессора, который управляет организмом. Вся сложность возникает из взаимодействия огромного количества одинаковых вычислительных узлов.
На этом, пожалуй, остановимся. Если тема окажется интересной, то в следующих статьях попробуем разобраться, как устроены белки, почему они складываются именно так, а не иначе, как выполняют вычисления и механическую работу, и постепенно дойдём до проектирования собственных простых биологических систем.
Биологов заранее прошу сильно не ругаться и не искать в статье академическую точность. Цель этого цикла – не заменить учебник, а дать интуитивное понимание того, как можно смотреть на живые системы. Где-то я сознательно упрощаю и использую аналогии, чтобы сначала объяснить общий принцип, а уже потом разбираться в деталях.
Спасибо всем, кто дочитал до конца. Надеюсь, мне удалось заинтересовать вас этой областью. Буду рад комментариям, замечаниям и конструктивной критике. Если идея серии окажется востребованной – обязательно продолжим.
ссылка на оригинал статьи https://habr.com/ru/articles/1057224/