Биология для инженеров

от автора

Серия статей о том, как устроены живые системы с точки зрения вычислений, управления и проектирования.

Привет, Хабр!

Это моя первая пробная статья. По образованию и опыту я инженер. Занимался всем: от электроники на VHDL, реверс-инжиниринга, до этих ваших хайповых блокчейнов и AI. Последние 7-8 лет всё больше погружаюсь в биологию, машинное обучение и моделирование биологических систем. Случайно окончил магистратуру МФТИ по прикладному анализу данных в медицине.

ДИСКЛЕЙМЕР:

Статья НЕ написана с помощью ИИ, оригинальное авторское скудоумие по многим вопросам полностью сохранено. ИИ применялся только как корректор и исправлятор безграмотности, и немножечко помогал формулировать некоторые мысли. Текст осмыслен автором, логика повествования осмыслена. Поэтому прошу не судить строго, а профессиональных биоинформатиков – делать скидку на некоторые допущения и упрощения.

Статья написана преимущественно для специалистов в сфере ИТ, инженеров и, возможно, для ИИшников.

Зачем вообще всё это?

Провозившись с кучей информации на тему устройства белков, цитологии, внутренних механизмов и устройства клеток, я осознал, что в вузах с самого начала погружают в кучу деталей реализации, а общий смысл приходится додумывать самостоятельно. Я потратил очень много времени, чтобы понять какие-то базовые принципы устройства и работы живых систем, и теперь хочу поделиться ими с вами. Может, вдруг у кого-то появится интерес к этой теме, как он когда-то появился у меня.

Я бы хотел развивать направление «инженерной биологии» и принести в эту сферу процессы и подходы, которые уже много лет применяются в ИТ. Потому что сейчас много разрозненных данных, многое не структурировано. И разработки занимают даже не годы, а десятилетия.

В то же время сейчас появились замечательные биологические foundation модели (Evo 2, ESM 3, Alpha Fold 3, и другие), которые могут кардинально ускорить процессы разработки как каких-то лекарств, так и просто наглядно показать заинтересованным, как живые системы устроены «под капотом».

Что планируется

В серии статей я бы хотел пройти с вами путь от идеи до реализации какой-то простой биологической системы. Сначала ввести в курс дела, показать, как гениально и сложно устроены клетки, на примере клеточных автоматов. Затем более подробно погрузиться в устройство белков с позиции вычислений, реакций, взаимодействий. Рассмотреть живое как набор регуляторных паттернов. Чтобы показать, что в биотех в целом реально вкатиться. И что это очень интересная сфера.

В этой статье я бы хотел начать с базы и аналогий: что такое вообще клетка и как она превращается в организм.

Итак, начнём.

Клетка.

Эукариотическая клетка. Элементарный вычислительный узел живой системы.

Эукариотическая клетка. Элементарный вычислительный узел живой системы.

Вы наверняка знаете, всё живое состоит из элементарных элементов – клеток. В парадигме электронщиков можно представить клетку как живой и крайне продвинутый микроконтроллер, да ещё и способный самовоспроизводиться.

Он, упрощённо, принимает какие-то входящие сигналы, преимущественно реализованные через биоэлектрические механизмы. То есть API клеток практически полностью построен на биоэлектричестве.

Клетка, принимая сигналы, производит десятки, сотни или даже тысячи вычислений. Меняет своё внутреннее состояние, активируя и деактивируя участки ДНК, ответственные за определённые регуляции. После изменения внутреннего состояния выполняет какую-то механическую работу (внутреннюю и/или внешнюю). И отправляет какие-то сигналы наружу, другим клеткам. Те, в свою очередь, их принимают и делают то же самое.

Получается очень сложная и продвинутая распределённая вычислительная система. Ключевое слово тут именно «распределённая».

Под распределённой я здесь понимаю то, что каждая клетка, по сути, выполняет свою строго заданную локальную программу, записанную в ДНК, общается с внешним миром, отправляя и принимая сигналы. Но все вместе клетки выполняют какую-то сложную функцию как эмерджентное состояние системы.

Потерпите, сейчас будет понятно.

ДНК.

Молекула ДНК. Долговременное хранилище генетической информации клетки.

Молекула ДНК. Долговременное хранилище генетической информации клетки.

Все привыкли считать, что в ДНК записана некоторая программа, которая выполняется и работает. По факту это, конечно, близко к правде, но с большим допущением. На самом деле ДНК – это скорее библиотека скомпилированного кода (/var/lib/). И в каждой клетке этот код практически одинаковый (за исключением мутаций). Есть ещё огромные некодирующие участки ДНК, многие из которых выполняют регуляторные функции. Для простоты их можно представить как различные настройки и служебные данные системы (/etc/), хотя аналогия, конечно, условная.

А вся логика работы происходит именно на уровне внутреннего состояния клетки. То есть какие-то участки ДНК активны, какие-то выключены, какие-то более активны, какие-то менее. Именно поэтому нервная клетка, клетка печени и клетка кожи, имея практически одинаковую ДНК, работают совершенно по-разному.

Это на самом деле очень сильно напоминает работу нейросетей. То есть ДНК – это веса сети, а внутреннее состояние клетки – её текущий контекст и активации. Конечно, это лишь инженерная аналогия, а не полное соответствие, но она позволяет довольно интуитивно представить происходящие процессы. Да и вычисления тоже зачастую производятся способами, схожими с теми, что используются в нейросетях.

Причём интересный факт. Нейросети, как вы знаете, обучаются через градиентный спуск или его продвинутые варианты. А в природе используется генетический алгоритм. Но градиентный спуск может подобрать не любую функцию, особенно в шумном ландшафте. А генетический алгоритм может подобрать любую, но он просто очень медленный. Однако у природы вариантов и времени было несколько миллиардов лет, чем она успешно и воспользовалась.

Как природа обучается

Кто прочитал до этого места – поражаюсь вашему терпению. Но наверняка у вас возник вопрос: это, конечно, всё замечательно, но как одна клетка, пользуясь какими-то локальными правилами, может построить и поддерживать целый организм?

Очень здравое замечание, давайте разбираться на примере клеточных автоматов – упрощённой песочницы, показывающей не кучу деталей и механизмов, а общий принцип работы для инженеров.

Для начала сформулируем постановку задачи.

  1. Нам надо вырастить организм, используя клетки, в которых одинаковая ДНК (код/веса – называйте как хотите).

  2. При достижении целевой формы рост должен остановиться.

  3. Мы не должны придумывать правила самостоятельно.

  4. Правила должны придуматься сами.

И тут нам на помощь как раз может прийти наш любимый ИИ и алгоритмы обучения. План такой.

Берём клетку, кодируем её внутреннее состояние как вектор (просто набор чисел). Первые четыре числа отдаём под цвет и прозрачность.

Далее делаем скрытый слой, который условно и будет нашей ДНК.

Организм, состоящий из клеток, за один прогон клеточного автомата стремится достичь целевой формы. Каждая клетка смотрит, что у неё происходит вокруг (имитируем приём сигналов извне), прогоняет это через свои скрытые слои и меняет своё состояние.

Потом, при следующем проходе клеточного автомата, уже другая клетка смотрит на соседей, выполняет те же локальные операции и обновляет своё состояние. И так до тех пор, пока мы не достигнем цели.

Чистой воды распределённая система.

Магия заключается в том, что скрытые параметры после обучения начинают вести себя как регуляторы и синхронизаторы. Там начинают протекать информационные потоки, волны и много чего ещё интересного.

Архитектура Neural Cellular Automata. Каждая клетка получает локальную информацию, обновляет своё состояние и взаимодействует с соседями.

Архитектура Neural Cellular Automata. Каждая клетка получает локальную информацию, обновляет своё состояние и взаимодействует с соседями.

Именно такой алгоритм сделал Александр Мордвинцев и показал принципиальную возможность построения сложной системы по локальным правилам. На анимации вы можете видеть, как из одной клетки с абсолютно одинаковыми внутренними слоями вырастает полноценная ящерка.

Результат обучения: из одной клетки по локальным правилам вырастает целевой организм.

Результат обучения: из одной клетки по локальным правилам вырастает целевой организм.

Грубо говоря, именно так можно представить процесс, которым эволюция подбирает работающие решения. Повторюсь, что это сильное упрощение для инженеров, показывающее общий принцип обучения. И да, в симуляции используется не генетический алгоритм, а градиентный спуск. Иначе мы бы обучали модель очень долго.

В чем отличие эволюционного и градиентного алгоритмов отлично объясняется в видео.

Процесс обучения локальных правил. Модель постепенно находит стратегию построения организма.

Процесс обучения локальных правил. Модель постепенно находит стратегию построения организма.

Потом, при следующем проходе клеточного автомата, уже другая клетка смотрит на соседей, выполняет те же локальные операции и обновляет своё состояние. И так до тех пор, пока мы не достигнем цели.

Подробнее со статьёй можно ознакомиться по ссылке. Ноутбук, конечно, морально и версионно устарел, но с агентами починить его и побаловаться не составит труда.

На разных этапах обучения клетки самостоятельно находят стратегии роста и формирования структуры.

На разных этапах обучения клетки самостоятельно находят стратегии роста и формирования структуры.

После того как модель научилась выращивать организм, исследователи задались следующим вопросом, а сможет ли она его восстановить после повреждений? Ожидаемо, нет.

Модель, не обученная регенерации, не способна стабильно восстанавливать повреждения.

Модель, не обученная регенерации, не способна стабильно восстанавливать повреждения.

Тогда организм во время обучения начали случайным образом «ломать», а затем отбирать модели, которые лучше остальных справлялись с регенерацией.

После обучения регенерации локальные правила позволяют организму восстанавливаться после повреждений.

После обучения регенерации локальные правила позволяют организму восстанавливаться после повреждений.

В результате обучения регенерации удалось получить результат. Модель перестала просто выращивать организм и научилась восстанавливать его после повреждений. Причём никакого «центра управления» по-прежнему нет: каждая клетка действует только на основе локальной информации, а сложное поведение возникает как коллективный эффект.

Итог работы модели после обучения регенерации.

Итог работы модели после обучения регенерации.

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

Латентное морфопространство скрытых состояний Neural Cellular Automata. После обучения в скрытых слоях формируются устойчивые режимы и аттракторы.

Латентное морфопространство скрытых состояний Neural Cellular Automata. После обучения в скрытых слоях формируются устойчивые режимы и аттракторы.

То есть внутри модели не просто возникают случайные числа – формируется внутренняя регуляторная система, которая и позволяет организму расти, поддерживать форму и восстанавливаться после повреждений.

Самое удивительное, что никакой клетки-директора не существует. Нет центрального процессора, который управляет организмом. Вся сложность возникает из взаимодействия огромного количества одинаковых вычислительных узлов.

На этом, пожалуй, остановимся. Если тема окажется интересной, то в следующих статьях попробуем разобраться, как устроены белки, почему они складываются именно так, а не иначе, как выполняют вычисления и механическую работу, и постепенно дойдём до проектирования собственных простых биологических систем.

Биологов заранее прошу сильно не ругаться и не искать в статье академическую точность. Цель этого цикла – не заменить учебник, а дать интуитивное понимание того, как можно смотреть на живые системы. Где-то я сознательно упрощаю и использую аналогии, чтобы сначала объяснить общий принцип, а уже потом разбираться в деталях.

Спасибо всем, кто дочитал до конца. Надеюсь, мне удалось заинтересовать вас этой областью. Буду рад комментариям, замечаниям и конструктивной критике. Если идея серии окажется востребованной – обязательно продолжим.

ссылка на оригинал статьи https://habr.com/ru/articles/1057224/