Выбрать главу

 

 

Глава 2. Нейросеть — наша новая знакомая

До сих пор мы говорили о компьютере, который просто выполнял приказы. Он рисовал формулы, потому что мы ему сказали: «Вот бензольное кольцо, отобрази». Он искал статьи, потому что мы задали ключевые слова. Но во всех этих случаях компьютер оставался исполнительным, но глухим секретарём: делал то, что велели, и ни шагу в сторону. А теперь давай познакомимся с той, которая не получает жестких инструкций, а учится на примерах, в том числе и как «химически думать».

В обычном программировании ты пишешь инструкцию: «1. Поставить сковороду на плиту. 2. Налить масло. 3. Разбить яйцо. 4. Ждать 3 минуты». Машина выполнит всё буквально. Если ты забудешь пункт «отделить скорлупу», она разобьёт яйцо вместе со скорлупой. Если масло окажется сливочным, а ты написал «растительное», машина встанет в тупик. Такая программа — это жёсткий свод правил: «если А, то Б». Раньше экспертные системы работали именно так. Но оказалось, чтобы охватить все тонкости химии, правил требуется слишком много. А что если ты не даёшь машине инструкций, а вместо этого показываешь ей сто фотографий яичницы: правильной, подгоревшей, жидкой, с помидорами, без помидоров? И говоришь: «Вот это — хорошая яичница. А вот это — плохая». Программа смотрит, сравнивает и сама находит закономерности. Что общего у всех хороших яичниц? Белок схватился, желток целый, масло было горячим. Через сто примеров она уже неплохо отличает удачную яичницу от неудачной. А через тысячу — может даже сама её приготовить, пусть и не идеально. Именно так работает нейросеть.

Другой пример: нейросеть учат отличать кошек от собак. Ей показывают 10 000 фотографий: вот пушистый кот, вот лохматый пёс. Никто не говорит сети: «У кошек треугольные уши, а у собак овальные морды». Она сама выискивает признаки, которые чаще встречаются у одних и реже у других. Постепенно внутри неё формируется сложная структура связей, которая на новом снимке выдаёт: «85% вероятности — кошка». В химии то же самое, только вместо кошек и собак — молекулы и реакции. Нейросети «скармливают» базу данных из тысяч химических превращений. Каждую реакцию записывают как пару «реагенты → продукты». И сеть начинает искать закономерности. У каких молекул аминогруппа легко превращается в нитрогруппу? В каких условиях бензольное кольцо сульфируется, а в каких — хлорируется? Машина не знает правил Марковникова или ориентантов Зайцева, но после просмотра ста тысяч примеров она статистически усваивает, что гидробромирование алкенов идёт против правила Марковникова в присутствии пероксидов, потому что именно такие случаи попадались ей в обучающей выборке с меткой «успех». Она не «понимает» радикальный механизм — она «оценивает», что сочетание реагента А с условием Б даёт продукт В с высокой вероятностью. Это и есть ключевое отличие: программа-инструкция следует правилам, нейросеть ищет взаимосвязи. Первая ломается, столкнувшись с исключением. Вторая — просто говорит: «В этом странном случае я не уверена, но, кажется, получится вот это».

Допустим, ты хочешь найти лучшие условия для синтеза, но понятия не имеешь о теории. У тебя есть 20 растворителей, 10 температур и 5 катализаторов. Ты можешь ставить опыты вслепую, перебирая комбинации. Сколько вариантов? 20 × 10 × 5 = 1000. Если каждый эксперимент занимает час, ты провозишься полгода. Это и есть классический «метод тыка». А теперь представь нейросеть, которая «ставит» такие эксперименты «мысленно». Она не смешивает реальные реактивы, а обсчитывает математическую модель, обученную на предыдущих реальных опытах. За одну секунду она может оценить миллионы комбинаций и сказать: «С вероятностью 93% наилучший выход даст ацетонитрил при 80°C с палладиевым катализатором». Это не магия — это ускоренный в миллион раз перебор вариантов с умным фильтром. Сеть не пробует всё подряд, она ищет скрытые корреляции и отсекает потенциально провальные зоны. Фактически, нейросеть делает то же самое, что делал бы хороший химик-синтетик. Она помнит опубликованные реакции, ошибки, удачи. И когда ты даёшь ей новую задачу, она не изобретает правила, а спрашивает свой «опыт»: «На что это похоже? Что срабатывало раньше в похожих случаях?». Именно так работают современные предсказатели реакций вроде IBM RXN.

По сути, нейросеть — это множество слоёв узлов-«нейронов», связанных «весами». Каждый вес — это число, которое показывает, насколько важен тот или иной признак. В начале обучения веса случайны, и сеть гадает наобум. Ей показывают, например, формулу молекулы и её экспериментальную растворимость. Сеть предсказывает что-то, сравнивает с правильным ответом и чуть-чуть «подкручивает веса», чтобы в следующий раз ошибиться меньше. После миллионов таких корректировок «веса» настраиваются так, что сеть начинает предсказывать правильно даже для тех молекул, которых она никогда не видела. Это и есть «обучение». Химия даёт нейросетям много пищи для обучения: у нас, химиков, накоплены гигантские базы данных. Миллионы веществ, тысячи реакций при разных условиях, миллионы спектров и других физико-химических характеристик. Всё, что было опубликовано за последние двести лет, постепенно оцифровывается. И нейросети «читают» эту библиотеку и формируют своё собственное, статистическое «понимание» химии.