Хемоинформатический кентавр: объединение методов машинного обучения и химических уравнений

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

Итак, начнем издалека. Когда нужно использовать машинное обучение? Когда у вас явление сложное и вы не знаете уравнения, которое определяет зависимость зависимой переменной (интересующего свойства) от независимых переменных (дескрипторов структуры). Если это уравнение вам известно, то вам, конечно, и не придет на ум считать ее через использование машинного обучения (например, молекулярный вес является таким примером - его легко посчитать из состава молекулы и машинное обучение тут ни к чему). Но это бывает чрезвычайно редко. Поэтому так часто прибегают к помощи квантовой химии или машинного обучения. Квантовая химия - яркий пример области, которая основана на уравнении - уравнении Шредингера. Оно настолько универсально, что решая его можно предсказать очень много характеристик молекул и реакций. Но решать его сложно, долго и можно это сделать только приблизительно (а значит с потерей точности). Машинное обучение быстрое, но не дает универсального решения - полученные модели справедливы только для данного набора данных.

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

Проблема которую мы решали в этой статье: это предсказании константы таутомерного равновесия и кислотсности. Логарифм константы таутомерного равновесия можно рассчитать как разницу кислотности таутомеров (так называемое уравнение Кабачника). То есть хотите ее найти - посчитайте (предскажите) кислотность таутомерных форм, вычтите из одной другую и вот вам искомая величина! Вот только в чем загвоздка: построить модель на кислотность не сложно, есть много данных, но напрямую если вы попробуете использовать эту зависимость для расчета константы таутомерии - у вас ничего не выйдет! Ошибка предсказания будет чудовищной. Константа равновесия будет предсказываться с настолько большой ошибкой, что случайное предсказание будет точнее. Причины этому две. Первая - кислотность, как бы вы ни старались, предсказывается с некоторой ошибкой (около 1.5 единиц pKa). Теперь представьте, что для одного таутомера кислотность предсказалась на 1.5 единицы больше, чем нужно, а для другого - на 1.5 меньше. Значение логарифма константы таутомерии будет завышена на 3 лог единицы. То есть в 1000 раз! Вторая причина - кислотность мерят для "нормальных" соединений. Никто не делает прямых измерений кислотности нестабильных таутомеров (енолов, например - ее можно оценить только опосредованно для таких случаев). Понятно, что таких соединений в выборке по кислотности нет - и как ваше машинное обучение может выучить, какая у них должна быть кислотность? Никак... Вот и получается, что нередко, если вы предскажете константу таутомерии через разницу кислотности, ошибка может легко достигать 10 порядков!

Ну и ответ на главный вопрос - "что делать?" - мы предложили в обсуждаемой статье. Идея простая. Нужно строить модели так, чтобы она умела хорошо предсказывать данные по кислотности и, одновременно с этим, чтобы разность кислотностей таутомерных форм равнялась логарифму константы таутомерного равновесия. Тогда первая проблема будет решаться за счет того, что модель будет стараться завышать/занижать значения по возможности синхронно (появляется как бы дополнительная регуляризация модели), а вторая проблема будет решаться за счет того, что она будет учиться предсказывать кислотность тех форм, которых не было в данных по кислотности. В статье мы предложили два способа решить эту проблему.

Первый - мы строим множественную линейную регрессию, которая предсказывает кислотность молекул, задаваемой дескрипторами Х. Для этого нам надо найти веса этой линейной регрессии. Делается это по принципу наименьших квадратов - минимизируя квадрат ошибки предсказания данных по кислотности Eк. Но мы можем взять эту же линейную модель (эти же веса) и с их помощью предсказать кислотность двух таутомерных форм, связанных одним равновесием. Разница этих кислотностей даст нам логарифм константы таутомерного равновесия. И мы, естественно, хотим, чтобы и ошибка его предсказания Ет тоже была минимальной. Ну дальше все просто - мы даём и данные по кислотности и по таутомерии и просим чтобы модель хорошо предсказывала обе характеристики минимизируя взвешенную сумму ошибок а*Ек+(1-а)Ет. Более того, мы нашли, что оптимальные веса линейной регрессии можно найти с помощью аналитического уравнения - подставляете выборку, делаете всякие матричные операции и получаете веса линейной регрессии. Очень быстро.

Второй подход, если мы хотим использовать нелинейные модели для предсказания кислотности - это нейронные сети. Мы строим одну нейронную сеть, которая предсказывает кислотность молекулы. Теперь тренируем ее так, чтобы она хорошо предсказывала кислотность и одновременно разность кислотностей таутомеров равнялась константе таутомерии. То есть одна и та же нейронная сеть предсказывает обе характеристики зная уравнение. В PyTоrch это оказалось весьма несложно. Это очень важно, ибо эту идею я вынашивал почти 3 года, но не знал как имплементировать - а когда узнал PyTоrch мы без всяких ухищрений (которые в Keras бы пришлось сделать) смогли имплементировать.

И теперь результаты. Мы построили модели только на данных по таутомерии и только на кислотности. Оценили точность - все было неплохо Q2 около 0.7 (таутомеры) и 0.9 (кислотность) - на уровне наших предыдущих статей, и других опубликованных в литературе подходов, то есть мы все сделали правильно. Теперь мы взяли полученную модель по кислотности и предсказали таутомерию. Ожидаемо получилось плохо, точнее неожиданно насколько плохо: Q2 = -8 (для линейной регрессии) и -20 (для нейронных сетей)! Теперь мы строим нашу сопряженную модель и качество ее точно такое как у индивидуальных моделей. То есть эта наша сопряженная модель предсказывает кислотность на уровне Q2 = 0.9 и при этом ее разность для таутомеров соотвествует истинным с Q2 = 0.7. То есть когда мы тренируем модель так чтобы соблюдать экспериментальное уравнение получается гораздо лучше! На внешнем тесте также работает хорошо.

Ну и дальше много всяких забавных наблюдений. Например, мы нашли некоторые примеры, где были известны данные по кислотности отдельных таутомеров и известна константа таутомерии с их участием. Мы показали, что обычные (индивидуальные) модели по кислотности нормально предсказывают pKa самых стабильных таутомеров, но при этом близко даже не попадают для минорных форм. А наша нормально, одинаково точно предсказывает оба случая - и именно в этом кроется секрет успеха сопряженных моделей. То есть вы можете сопряженную модель использовать для предсказания кислотности нестабильных таутомерных форм, а обычные модели - не можете. Ну и наша модель не может не соблюдать уравнение Кабачника. То есть если вы предскажете константу любого таутомерного равновесия - она точно будет равна разности кислотностей. А если вы используете обычный QSAR и построите две независимые модели (одну на таутомерию и одну на кислотность), то разница между предсказанными кислотностями таутомерных форм может отличаться от предсказанной таутомерии в отдельных случаях на 15 порядков!

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

П.С. Идею эту вскользь предложил в одном из разговоров давным-давно И. Баскин в ответ на мою постановку проблемы, с ним мы и вывели уравнение, имплементировал эту идею в рамках своего диплома наш студент . Ну и спасибо всем остальным, кто принимал участие, помогал в подготовке данных и статьи - , , Асима Рахимбекова, Марина Казымова и, конечно, Александр Варнек.

https://pubs.acs.org/doi/10.1021/acs.jcim.9b00722


Источник: vk.com

Комментарии: