Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
TopoCompile научили генерировать молекулы, которые точно совпадают с заданием по размеру, составу и числу колец, не фиксируя каркас заранее. В нерецензированном препринте числа получили сами авторы: на редких сочетаниях четырёх ограничений система выдала 100% химически корректных молекул с точными значениями, тогда как лучший соперник достиг не более 44,9%. Для команд, которые строят генераторы молекул, это предлагает альтернативу переобучению и отбраковке готовых результатов — проверять достижимость цели после каждого шага.
Как проверка будущих шагов обеспечивает точный результат
Обычная модель может получить целевой состав на входе, но это лишь направляет генерацию. Локально допустимый шаг способен сделать итоговую цель недостижимой: например, оставить слишком мало мест, чтобы добавить нужные атомы и закрыть все связи.
TopoCompile разделяет молекулу по связям, разрыв которых разъединяет её граф. Целые кольцевые системы и отдельные атомы вне колец становятся компонентами, а связи между ними образуют дерево. Каждый компонент берут из конечного словаря шаблонов; шаблон хранит внутреннюю структуру, типы доступных связей и вклад в глобальные показатели.
Последовательный Transformer оценивает, какой компонент и куда добавить. Он отвечает за то, чтобы результат напоминал молекулы из обучающих данных. Отдельный компилятор на основе динамического программирования проверяет, существует ли после предлагаемого действия хотя бы одно продолжение, которое даст нужные значения.
Для проверки не нужно перебирать готовые молекулы. Состояние описывают три величины: сколько компонентов осталось добавить, какие порты для связей ещё открыты и какой вклад нужен по каждому ограничению. Если продолжения нет, действие исключают, а вероятности остальных действий пересчитывают.
Такая проверка должна быть совместной. Недостаточно отдельно убедиться, что будущие компоненты могут закрыть связи и набрать нужный состав: два теста могут опираться на разные, несовместимые продолжения. Компилятор ищет один путь, который одновременно выполнит все требования.
Гарантия относится к значениям ограничений, а не к точному воспроизведению условного распределения исходной модели. Transformer сохраняет относительные предпочтения среди разрешённых действий, но компилятор проверяет только существование подходящего продолжения, а не его суммарную вероятность.
Точные ограничения не ухудшили генератор до простого фильтра
Метод проверили на GuacaMol, MOSES, NPGen и ZINC250K. Цель одновременно задавала число тяжёлых атомов, атомов кислорода, кольцевых систем и ранг циклов — количество независимых циклов в молекулярном графе. Частые и редкие цели определяли по тому, как часто соответствующие сочетания встречались в обучающем наборе.
Основная метрика — доля попыток, которые одновременно дали химически допустимую молекулу и точно выполнили все заданные значения. TopoCompile сохранял максимальный результат во всех группах, включая редкие цели. В абляции совместная проверка также всегда приводила к точному результату, раздельная проверка достигала 67,1–86,2%, а проверка только ближайшего шага — 12,4–56,2%.
На генерации без ограничений компонентная модель показала лучший выход валидных, уникальных и новых молекул либо лучшую валидность на каждом из четырёх наборов. При этом совпадение распределения с эталонными данными оказалось смешанным: на части наборов лучше был FragFM. Компилятор обеспечивает точность требований, но не заменяет настройку модели на нужное химическое пространство.
Когда TopoCompile меняет архитектурный план
Подход подходит для требований, которые складываются из вкладов компонентов и выражаются неотрицательными целыми числами. К ним относятся элементный состав, число тяжёлых атомов, кольцевых систем и независимых циклов. Один обученный генератор можно применять к новым значениям и сочетаниям таких ограничений без дополнительного обучения.
Это не внешний модуль, который получится подключить к любому генератору. Точная проверка опирается на представление молекулы в виде дерева, конечный словарь компонентов и заранее заданные правила соединения портов. Модель рекомбинирует известные кольцевые системы, а не создаёт новые внутренние структуры колец.
Текущий вид компилятора не охватывает непрерывные свойства, неравенства, цели оптимизации и признаки, которые зависят от соединений между компонентами. Для них пришлось бы расширять состояние динамической программы или проверять готовые результаты другим способом. Гарантия также действует внутри словаря компонентов и правил связей, а представление не хранит стереохимические и изотопные аннотации.
Практический архитектурный вывод — разделить правдоподобие и выполнимость. Нейросеть ранжирует допустимые действия, а детерминированный слой не позволяет нарушить формальные требования. Такой слой особенно полезен, если одна и та же цель используется многократно: вычисленные состояния можно кешировать, и стоимость компиляции распределяется между запросами. Для одиночной цели приходится оплачивать весь расчёт, хотя группировка действий с одинаковым влиянием ускорила его в 12,2–13,9 раза в сопоставимых условиях.
Источники
Иллюстрация: рисунок из статьи «TopoCompile: Molecular Generation with Exact Global Count Constraints», Xiang Wu, Rong-Hua Li, Quanqing Xu и др., CC BY 4.0
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



