Совсем другой подход — диффузионные модели. Ты, наверное, видел, как Midjourney или DALL-E генерируют изображения по текстовому описанию. Ты пишешь «кот в скафандре на Марсе», и программа из случайного цифрового «шума» шаг за шагом проявляет картинку. Оказывается, ровно то же можно делать с молекулами и кристаллическими решётками: берётся реальная трёхмерная структура молекулы и постепенно добавляются в неё лёгкие случайные смещения атомов — шум. Через много шагов молекула превращается в бесформенное облако, где уже непонятно, где какой атом. А теперь мы учим нейросеть обратному процессу: из шума восстанавливать исходную структуру. Когда обучение закончено, мы можем подать сети случайный набор координат и сказать: «А теперь сделай из этого молекулу, похожую на лекарство от головной боли». И сеть шаг за шагом, слой за слоем «очищает» шум, расставляя атомы углерода, азота, кислорода в нужные позиции и создавая связи. Так работают современные генераторы новых материалов: они не перебирают триллионы вариантов, а лепят молекулу из тумана вероятностей, словно гончар из глины.
Третий способ увидеть молекулу — посмотреть на неё как на граф. В математике граф — это набор точек (вершин), соединённых линиями (рёбрами). В химии вершины — атомы, рёбра — связи. Графовые нейросети (GNN) работают так: каждый атом «рассылает» сообщения своим соседям о том, какой он (углерод, азот), с кем связан и в каком окружении находится. Соседи получают сообщения, обновляют своё представление о себе и снова рассылают. Через несколько раундов каждый атом «знает» не только о ближайших соседях, но и о том, что где-то на другом конце молекулы есть, скажем, гидроксильная группа. Это похоже на обмен сообщениями в групповом чате: через некоторое время ты уже в курсе, кто с кем встречается и где отдыхает, даже если этих людей и не знаешь лично. Схожим образом в GNN каждый атом становится носителем богатой информации о всей молекуле, и эту информацию можно потом использовать, чтобы предсказать растворимость, токсичность или энергию связывания с мишенью. Графовые сети особенно хороши для кристаллов и материалов — там, где важна
Итак, мы видим, что химики больше не привязаны к карандашу и бумаге. Молекула стала текучей: она может быть строкой символов для трансформера, облаком вероятностей для диффузионной модели или графом для GNN. Это и есть та самая смена языка, о которой мы говорили во введении: от дискретных палочек Кекуле мы перешли к непрерывным векторам, тензорам, скрытым пространствам. Так что в тот момент, когда ты нарисовал молекулу в ChemDraw и нажал «Copy as SMILES», ты уже превратил химию в текст, который понимает нейросеть.
Попробуй сам
Зайди на сайт Molecule of the Month или просто открой Википедию со статьёй про кофеин. Найди строчку SMILES — для кофеина это CN1C=NC2=C1C(=O)N(C(=O)N2C)C. Скопируй её. А теперь представь, что это не просто символы, а координаты молекулы в особом пространстве, где каждая буква и скобка имеют свой числовой код. Ты можешь прямо сейчас вставить этот SMILES в онлайн-конвертер вроде Chemicalize (он бесплатный для небольших молекул) и увидеть, как машина мгновенно вычисляет свойства, даже не «глядя» на формулу. Попробуй мысленно проделать обратный путь: глядя на длинный вектор чисел, восстанови структуру. Именно это делают диффузионные модели — но, конечно, с нечеловеческой скоростью. Если хочешь прикоснуться к идее графов, скачай бесплатную программу Cytoscape и построй простейший граф метана — четыре водорода вокруг углерода. А потом вообрази, что по этим рёбрам бегают сообщения от атома к атому, и каждый атом постепенно узнаёт, что он — часть тетраэдра. Вот так графовые нейросети и улавливают стереохимию.
Ну а для тех, кто уже не боится Python: найди в открытом доступе датасет растворимости ESOL, с помощью библиотеки RDKit переведи молекулы в молекулярные фингерпринты и обучи простенький Random Forest предсказывать растворимость в воде. Ты в миниатюре повторишь ровно то, о чём мы говорили: модель превращает молекулы в векторы и учится на готовых экспериментальных данных, предсказывая свойство за секунды — без всяких квантовых расчётов.
Глава 7. Некоторые модели: от GNoME до MatterGen
В прошлой главе мы научились превращать молекулы в векторы, графы и даже в облака вероятностей. Но всё это были одиночные молекулы, а что если тебе нужно спроектировать материал-кристалл, в котором миллиарды атомов выстроены в строгом порядке и от которого зависит, будет ли твой телефон работать сутки без подзарядки, а электромобиль проезжать тысячу километров? Раньше поиск такого материала был сродни прочёсыванию миллионов стогов сена в поисках одной иголки. Но сегодня у нас есть такие помощники, как графовые пророки вроде GNoME и диффузионные творцы вроде MatterGen.