Естественно, вычислительные подходы были разработаны на протяжении многих лет, чтобы предсказать эти интересующие свойства. Совсем недавно для этой цели успешно применялись методы машинного обучения, такие как графовые нейронные сети. Одним из ярких примеров является их использование при открытии нового антибиотика, позже названного галицином. Используя Graph Neural Networks, ученые Массачусетского технологического института смогли определить, что уже существующее соединение эффективно против бактерий, в том числе E. Coli, A. baumannii и C. difficile, эффективно «открывая» новый антибиотик [1].

Графовые нейронные сети (GNN) — это нейронные сети, которые работают с данными, структурированными в виде графов. Поскольку молекулы естественным образом могут быть представлены в виде графов, GNN были распространенным подходом к обучению прогнозированию молекулярных свойств на основе молекулярной структуры. Эти свойства могут включать аффинность связывания, токсичность или противовирусную активность, как в случае галицина (см. ADME).

Однако для того, чтобы обучить модель с хорошей производительностью при прогнозировании этих свойств, необходимо иметь достаточно размеченных данных, на которых модель может учиться. Это представляет собой проблему для новых заболеваний, таких как COVID-19, для которых данных, связывающих существующие лекарства и их взаимодействие с вирусом, может не быть.

Внедрение биологических знаний в модель

Wengong Jin и др. из Массачусетского технологического института разработали творческое решение этой проблемы. Они нашли способ использовать вспомогательные наборы данных, содержащие данные о взаимодействии лекарство-мишень (DTI) между различными молекулами и биологическими мишенями, которые они могут ингибировать. Другими словами, они включили информацию о препаратах, противовирусную активность которых они хотели предсказать, и известную информацию о том, ингибируют ли эти препараты определенные белковые мишени. Эта биологическая информация доступна из наборов данных, таких как наборы данных NCATS и ChemBL, предоставленные Национальным институтом здравоохранения и Европейским институтом биоинформатики соответственно.

Используя эти дополнительные наборы данных, они смогли включить биологические данные поверх молекулярной (химической) структуры, которая обычно используется для обучения GNN. Это позволило им обучить модель на ограниченном количестве данных и добиться более высокой производительности по сравнению с моделями, обученными исключительно на молекулярной структуре.

Технические детали

Объединение данных NCATS и ChemBL приводит к разреженной матрице, которую нельзя использовать для обучения эффективной модели, поскольку большинство записей отсутствует. Таким образом, прежде чем обучать модель предсказанию противовирусной активности, они научили модель учиться предсказывать отсутствующие взаимодействия лекарства с мишенью. Вместо того, чтобы разрабатывать две отдельные модели, они смогли обучить одну модель GNN, чтобы изучить как отсутствующие функции DTI, так и антивирусную активность, что и было конечной целью. Обучение происходит сквозное, т.е. нет необходимости разбивать процесс обучения на отдельные этапы.

Ключ, который позволяет модели научиться предсказывать взаимодействие лекарственного средства с мишенью (т. е. заполнить приведенную выше матрицу), заключается в следующих строках кода (комментарии ниже являются моими собственными, их полную реализацию можно найти на Github). Кодировщик модели представляет собой GNN, который преобразует молекулу, представленную ее строкой SMILES (см. Упрощенная система ввода молекулярного ввода), в плотный вектор. Затем закодированный вектор разбивается на две части: первая часть содержит столько элементов, сколько столбцов (целей) в наборе данных DTI.

# Encode the smiles representation using the GNN, and use the first N positions of the vector as DTI predictions, where N is equal to the number of columns in the matrix of interactions.
# Note we are only calling the encoder and not the entire network (encoder + fully-connected network)

preds = model.encoder(smiles)[:, :targets.size(1)]

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

Выделяя первые targets.size(1) элемента вектора, закодированного GNN, и вычисляя потери только для этих элементов, они заставляют сеть изучать признаки, которые соответствуют предсказаниям целевого ингибирования каждой из молекул, т. е.: столбцы в матрица взаимодействия лекарство-мишень!

# We then compute the loss between these encoded representations and the targets vector, thus
# encouraging the network to learn to predict each one of the drug-target interactions in the DTI dataset.
# These representations will be used when running the forward pass for the antiviral activity prediction (out main objective).

dti_loss = loss_func(preds, targets)
dti_loss = (dti_loss * mask).sum() / mask.sum()

Затем они выполняют еще один прямой проход модели. На этот раз они запускают всю модель, включая кодировщик (GNN) и полносвязную сеть, которая сопоставляет изученное представление вектора с оценкой, представляющей антивирусную активность. Потери вычисляются между прогнозами (баллами) и целями covid (двоичная переменная, представляющая противовирусную активность для каждого препарата).

# We now run the entire model on the batch. The output vector contains both the DTI features, as well as the chemical features.
preds = model(smiles, mode=0)
# We compute a different loss on the antiviral activity predictions.

covid_loss = loss_func(preds, targets)

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

# We combine the dti_loss and the covid_loss (full vector) before we run backpropagation
loss = args.dti_lambda * dti_loss + … + args.single_lambda * (src_loss + covid_loss)
loss.backward()

Используя этот умный подход, команда Массачусетского технологического института смогла использовать как молекулярные, так и биологические данные о молекулах и изучить их связь с противовирусной активностью. В своей статье, опубликованной в публикации Proceedings of the National Academy of Sciences (PNAS), они демонстрируют превосходную производительность по сравнению с методами, которые не могут использовать оба типа данных. Их подход также позволяет обучать одну модель от начала до конца, что выгодно в режиме ограниченных данных, где в противном случае может быть сложно обучить две отдельные модели.

Вся лекция Венгонга Джина, прочитанная студентам Массачусетского технологического института, представляет собой отличное и очень доступное введение в область ИИ при открытии лекарств. Часть 1 знакомит с основными подходами к открытию лекарств: виртуальный скрининг и разработка лекарств De Novo. Во второй части лекции Венгон обсуждает описанный мной подход с биологическими добавками и далее объясняет, как описанная выше модель была расширена для прогнозирования противовирусного синергизма, или является ли комбинация препаратов более эффективной, чем сумма ее частей. В части 3 он рассказывает о дизайне лекарств De Novo.

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

Рекомендации

[1] Мощный антибиотик впервые обнаружен с использованием машинного обучения [The Guardian, февраль 2020 г.]

[2] Джин, В.; Стоукс, Дж. М.; Истман, Р. Т.; Иткин, З .; Захаров, А.В.; Коллинз, Дж. Дж.; Яаккола, Т.С.; Барзилай, Р. Глубокое обучение выявляет синергетические комбинации лекарств для лечения COVID-19. Процесс. Натл. акад. науч. США 2021, 118, e2105070118.

[3] ИИ для разработки лекарств — Лекция 16 — Глубокое обучение в науках о жизни (весна 2021 г.)

[4] Реализация ComboNet на Github.