RFdiffusion: как генерировать белки, которых нет в природе
Небольшой обзор статьи группы Дэвида Бэйкера, Нобелевского лауреата по химии 2024 года. С основным текстом статьи можно ознакомиться здесь.

Сначала разберёмся, зачем нужен проект RFdiffusion. Вопрос дизайна белковых структур под те или иные цели (в основном для нужд фармакологии) стоит довольно давно. Раньше такая задача решалась методом проб и ошибок в эксперименте, что довольно долго, дорого и имеет крайне низкий процент успеха. Сейчас появляется всё больше возможностей пробовать решить эту задачу быстрее и эффективнее: сгенерировать нейросетью огромное количесво белков и отобрать из них несколько наиболее удачных с её точки зрения (или с точки зрения других предикторов) вариантов, и уже их тестировать в реальном эксперименте. Цель создания такой нейросети и преследовала группа Бэйкера.
В своём алгоритме генерации белков группа Дэвида Бейкера соединила два наиболее прорывных подхода последних лет: диффузионные и графовые нейросети, и эта комбинация выстрелила. Давайте попробуем понять, как же работает RFdiffusion. Посмотрим на работу нейросети в режиме генерации белка без каких-либо условий, то есть задачу, когда нужно "просто" сгенерировать белок, который мог бы существовать в природе. Процесс генерации пройдёт в два этапа: сначала будет сгенерирована пространственная структура белка, потом по пространственной структуре будет определена последовательность аминокислот в нём.

Итак, сначала нейросеть сгенерирует "скелет" нового белка, расположение в пространстве атомов углерода. Подчёркнём, что на этом этапе нейросеть ничего не будет знать, про то, какие именно амнокислоты соответсвуют структуре, которую она создаст. Для генерации скелета будет использована диффузионная нейросеть. Этот тип нейросетей сейчас наиболее известен за создание красочных картинок. В случае картинок это алгоритм, который стартует с белого шума и поэтапно уточняет детали. В случае белковых структур нейросеть учится из случайного расположения точек постепенно воссоздавать реальную структуру. Обучение, например, последнего шага восстановления происходит примерно следующим образом: берут реальную структуру белка (X0 на рисунке 2) и случайным образом её немного меняют, то есть зашумляют (на рисунке 2 это была бы структура X1), нейросеть при этом должна научиться по изменённой структуре предсказывать исходную. Схожим образом происходит обучение восстановления структуры и на других шагах (от структуры Xt к Xt-1). В итоге в нейросети обучается цепочка действий, которая из абсолютно случаного расположения точек (шума XT) позволяет получить расположение точек (Х0). Таким образом, появляется возможность, сгенерировав в пространстве новое случайное расположение точек, восстановить его обученной нейросетью в структуру, которая могла бы соответствовать какому-нибудь новому белку.

После этого происходит второй шаг генерации нового белка. По расположению точек, полученному из дифузионной нейросети, определяется, какие аминокислоты могли бы соотвествовать этим положениям в реальном белке, то есть его последовательность. Для этого используется другая разработка лаборатории Бейкера: ProteinMPNN, она имеет графовую архитектуру. Графовые нейросети вошли в нашу жизнь, например, в виде рекомендательных систем. Оказалось, что графы являются достаточно естественным способом работы с химическими (или биологическими) объектами: малыми молекулами, структурами ДНК и белков. Так, вершинам графа обычно соответствуют атомы, а его рёбра хранят информацию о расстоянии между ними или какие-либо своиства взаимодействий, например, тип связи. Такое представление оказалось полезным и в этой задаче. Обучение ProteinMPNN было следующим: были взяты структуры белков, для них строился граф. Нейросеть, работала с этим графом, строила для каждой вершины своё внутреннее представление, понятное только ей. По этому представлению нейросеть выдавала вероятность для каждой из 20 аминокислот быть в конкретной вершине и выбирала наиболее вероятную, получая последовательность. Эта последовательность сверялась с реально известной. Таким же образом ProteinMPNN работает и в составе RFdiffusion для сгенерированной структуры. На выходе получается пара структура-последовательность, которая однозначно определяет белок.
Далее группа Бейкера валидировала полученные белки с помощью предиктора структуры. Полученная последовательность белка отправлялась в нейросеть AlphaFold2 (создатели которой, кстати, разделили с Бэйкером премию по химии). В случае если структура, которую генерировал AlphaFold2, совпадает со структурой, полученой в диффузионной нейросети, считается, что успешно сгенерирован новый белок и он может существовать в природе. Предположение об успешности генерации делается потому что круг "генерация структуры->генерация последовательности->генерация структуры" как бы замыкается, и схожесть сгенерированных структур между незавимыми алгоритмами даёт шанс на то, что она реально может существовать. Конечно есть и примеры, когда предсказания разных алгоритмов не совпадали, но наличие положительных примеров прекрасно и удивительно.

В итоге на выходе алгоритма получается новый белок, которого не было в природе (или во всяком случае его пока не нашли). Алгоритм потенциально имеет большое количество применений в случае модификации процедур генерации и добавлении условий в них. Так, например, показано, что можно генерировать белки, эффективно связывающие, например, атомы металлов. Или достраивать цепи по уже известным кусочкам белков, что полезно при разрешении структур в рентгене. Поэтому мы будем с интересом наблюдать за развитием дизайна белков и стараться держать вас в курсе!)