Вот он я — студент-химик в 1990 году, сижу вооружившись линейкой и трафаретом. Провёл линию чуть криво — и вся формула насмарку. Рисование химических структур было настоящим искусством художника, только вместо Моны Лизы химик изображал полициклический кошмар, да ещё так, чтобы связи не слипались, а углы были ровно 120 градусов. Почему это было искусством? Потому что не существовало единого стандарта. В одной лаборатории рисовали бензольные кольца с чередующимися двойными связями, в другой — с кружочком внутри. И попробуй догадайся, что за вещество изображено в
И вдруг в эту вселенную ручного труда ворвались ChemDraw, ACD/ChemSketch, ChemWindow — программы, которые позволяли рисовать молекулы на компьютере. Мало того, они умели распознавать формулу. Нарисовал ты аспирин — и программа сама выдавала его молекулярную массу, брутто-формулу, даже предсказывала, как примерно будет выглядеть ЯМР- или масс-спектр. Компьютер перестал быть просто печатной машинкой; он стал языком, на котором молекула общается с миром. Рисунок превратился в данные. И химики вздохнули свободнее — по крайней мере, пока дело не доходило до названий.
Как известно, у каждого уважающего себя вещества есть как минимум два имени. Одно — народное: аспирин, парацетамол, тротил. Второе — систематическое, которое звучит как заклинание из учебника по чёрной магии: 2-ацетоксибензойная кислота, N-(4-гидроксифенил)ацетамид, 2-метил-1,3,5-тринитробензол. Когда ты работаешь в лаборатории, ты говоришь: «А где эфир?». Но когда ты ищешь его в Chemical Abstracts, ты обязан ввести точное систематическое название. Малейшая ошибка в индексах или дефисах — и ты ничего не находишь. Или находишь, но совсем не то. Химики тратили часы, чтобы по номенклатуре ИЮПАК правильно «развернуть» сложную молекулу в строку символов. Компьютерные базы данных добавляли масла в огонь: требовали строгого порядка групп, указания стереохимии, регистрозависимости. Чуть напутал — и всё, ты призрак, тебя нет в научном мире, как ни старайся, тебя никто не услышит.
Первые химические редакторы частично сняли эту боль. В ChemDraw ты рисовал структуру, а программа генерировала систематическое название (пусть и не всегда идеальное — но всё равно, и на том спасибо). Появилась возможность искать вещество не по названию, а по части структуры. Это был прорыв: ты просто рисовал часть молекулы, и машина искала её в базе. Но чтобы этот прорыв оценить, надо было сначала найти саму базу. И вот тут мы подходим к самому страшному — бумажным архивам.
Сегодня ты вводишь в поисковике «синтез аспирина» и за секунды получаешь сотни результатов. А ведь так недавно нужно было идти в библиотеку, этот огромный зал, заставленный стеллажами до потолка. А на них Chemical Abstracts — главный реферативный журнал химиков с 1907 года, где можно было отыскать краткие описания научных статей: кто сделал, что смешал, что получилось. Чтобы найти, как синтезировать новое вещество, надо было сначала по указателю формул найти его номер, потом по номеру — реферат, а затем идти в библиотеку и заказывать оригинал статьи, который могли прислать по почте через три недели. Химики старой закалки знали номера томов наизусть, как номера автобусных маршрутов: «Реакция Дильса – Альдера с алюминиевыми катализаторами? Это том 117, страницы 450–500». Сегодня это звучит как легенда. Но именно этот опыт научил нас главному: информация — это не просто слова, это структура. И как только компьютер научился её хранить и сортировать, химия перестала быть ремеслом, основанным на личной памяти «жрецов науки».
Помнится, я радовался как ребёнок, когда на смену бумажным томам пришли CD-ROM с базой Current Contents и рефератами. Один CD вмещал 650 мегабайт — сегодня это несколько не очень удачных фотографий с телефона, а тогда — целый шкаф рефератов. По тем временам это была фантастика, а ведь на самом деле скорость поиска по сравнению с современным интернетом всё равно была черепашьей. Потом в обиход начали входить DVD-диски, один такой диск мог вместить уже несколько гигабайт — целую энциклопедию. Казалось, что мы покорили информационное пространство. Если бы нам тогда сказали, что через пару десятилетий мы будем носить в кармане доступ ко всем этим базам, да ещё и с возможностью мгновенно перевести статью с немецкого, мы бы просто не поверили.
Существовали и специализированные базы данных. Protein Data Bank (PDB) — хранилище трёхмерных структур белков, Cambridge Structural Database (CSD) — структур органических и металлорганических соединений. Спектральные базы ЯМР, масс-спектров, ИК-спектров — всё это начинало переезжать с бумажных носителей в цифровые хранилища. Химик получал возможность сравнить свой свежеснятый спектр с библиотекой и воскликнуть: «О, это точно 2-метилбутанол-2!» — не листая атласы вручную и не ругаясь на плохое качество печати.
Ещё была платформа ChemWeb — нечто вроде интернет-портала для химиков. Там публиковались электронные версии журналов, там можно было обсудить статью, там даже выходил онлайн-журнал Alchemist. Сегодня это кажется архаикой, но на заре нулевых ChemWeb был предтечей ResearchGate и научных Slack-каналов. Мы только начинали понимать, что компьютер — это не просто калькулятор и пишущая машинка, а ещё и почтовый голубь.
Электронная почта уже была, но далеко не у всех. Зато существовали списки рассылки — прообразы тематических форумов. Ты подписывался на рассылку по органическому синтезу, и тебе на ящик периодически падало письмо с вопросами коллег со всего мира: «Кто-нибудь пробовал восстанавливать этот кетон боргидридом натрия?», «Где купить дешёвый палладиевый катализатор?». Ты читал, ухмылялся и чувствовал себя частью огромного невидимого братства. Это был медленный, асинхронный, но очень живой диалог. Прямой предок сегодняшних лабораторных чатов, где обсуждение идёт непрерывно, а мемы про хроматографию рождаются быстрее, чем ты успеваешь сказать «элюент».
А ещё компьютер начал командовать приборами. Хроматографы, спектрометры, многие другие приборы — вся эта братия обзавелась интерфейсами, позволявшими скидывать данные прямиком на жёсткий диск. Если раньше ты сидел с ручкой и переписывал цифры с индикаторов на приборах, то теперь ты получал файл, например, с временами удерживания и площадями пиков.
И, наконец, позволь представить тебе главного героя тогдашней вычислительной химии — DFT, теорию функционала плотности. Идея была благородная: не решать сложное уравнение Шрёдингера для каждого электрона в отдельности, а работать сразу с электронной плотностью. На бумаге — прорыв. На практике — бесконечная возня с выбором базисного набора и функционала, потому что каждый базис давал свои результаты, и ни один не был идеален.
Рисование формул, расшифровка названий, поиск литературы — эти ежедневные пытки химика XX века к 2000 году компьютер уже взял на себя, хоть и очень робко. Он рисовал лучше большинства химиков, искал быстрее их ног и рук, перебиравших пыльные тома, и лучше переводил с языка ИЮПАК на человеческий. Однако он всё ещё был инструментом, не предлагал гипотез, не говорил: «Эй, а попробуй-ка этот растворитель». Он был просто секретарём при господине-химике.
Попробуй сам
Теперь давай немного поиграем в машину времени. Первое задание — найди в интернете фотографию старой бумажной карточки Chemical Abstracts или реферативного журнала «Химия» (РЖХим). Например, набери в поиске «Chemical Abstracts printed index». Посмотри на эти мелкие строчки, пугающие сокращения, полное отсутствие картинок. А теперь представь, что тебе нужно найти в этом море бумаги одну-единственную реакцию — скажем, модификацию синтеза 2-аминопиридина, опубликованную в 1985 году. Ты идёшь в библиотеку, выписываешь номер тома и страницы, ждёшь, пока принесут подшивку, открываешь — а статья на немецком. Ты берёшь словарь и переводишь методику. Сколько времени у тебя ушло бы? День? Два? А теперь открой чат-бот с доступом в интернет и напиши: «Найди мне методику синтеза 2-аминопиридина по Чичибабину и переведи на русский». Через десять секунд у тебя будет не только реферат, но и полный текст с комментариями и, возможно, парой советов, как улучшить выход. Сравни ощущения.
Теперь давай нарисуем молекулу так, как это делает химик сегодня. Открой любой бесплатный редактор в браузере, например, Ketcher или MarvinSketch. Нарисуй аспирин — чтобы вспомнить одного из героев этой книжки, и кофеин — чтобы уважить всех, кто не может проснуться без чашки кофе. Теперь сохрани каждую структуру как SMILES-строку. Открой этот файл в блокноте и посмотри на строчку символов: что-то вроде CC(=O)OC1=CC=CC=C1C(=O)O для аспирина. Вот это — тот самый язык, на котором с молекулой будут общаться многие нейросети, роботы и базы данных из следующих глав.
Пока у нас нет собственного робота-синтетика, давай проведём эксперимент в виртуальной лаборатории. Зайди на сайт PhET Interactive Simulations и выбери любую химическую симуляцию — например, кислотно-основное титрование. Капай основание в кислоту и смотри, как ползёт pH, как меняется молекулярная картина на экране. Попробуй другие симуляции — растворимость солей, поведение газов. Что ты видишь на экране такого, чего никогда не покажет живой опыт? Симуляция не пахнет аммиаком и не взрывается, но она позволяет увидеть невидимое — например, анимацию того, как ионы перескакивают в раствор. Именно так, через числа и векторы, «видят» молекулы нейросети, о которых мы будем говорить совсем скоро.
Глава 2. Нейросеть — наша новая знакомая
До сих пор мы говорили о компьютере, который просто выполнял приказы. Он рисовал формулы, потому что мы ему сказали: «Вот бензольное кольцо, отобрази». Он искал статьи, потому что мы задали ключевые слова. Но во всех этих случаях компьютер оставался исполнительным, но глухим секретарём: делал то, что велели, и ни шагу в сторону. А теперь давай познакомимся с той, которая не получает жестких инструкций, а учится на примерах, в том числе и как «химически думать».
В обычном программировании ты пишешь инструкцию: «1. Поставить сковороду на плиту. 2. Налить масло. 3. Разбить яйцо. 4. Ждать 3 минуты». Машина выполнит всё буквально. Если ты забудешь пункт «отделить скорлупу», она разобьёт яйцо вместе со скорлупой. Если масло окажется сливочным, а ты написал «растительное», машина встанет в тупик. Такая программа — это жёсткий свод правил: «если А, то Б». Раньше экспертные системы работали именно так. Но оказалось, чтобы охватить все тонкости химии, правил требуется слишком много. А что если ты не даёшь машине инструкций, а вместо этого показываешь ей сто фотографий яичницы: правильной, подгоревшей, жидкой, с помидорами, без помидоров? И говоришь: «Вот это — хорошая яичница. А вот это — плохая». Программа смотрит, сравнивает и сама находит закономерности. Что общего у всех хороших яичниц? Белок схватился, желток целый, масло было горячим. Через сто примеров она уже неплохо отличает удачную яичницу от неудачной. А через тысячу — может даже сама её приготовить, пусть и не идеально. Именно так работает нейросеть.
Другой пример: нейросеть учат отличать кошек от собак. Ей показывают 10 000 фотографий: вот пушистый кот, вот лохматый пёс. Никто не говорит сети: «У кошек треугольные уши, а у собак овальные морды». Она сама выискивает признаки, которые чаще встречаются у одних и реже у других. Постепенно внутри неё формируется сложная структура связей, которая на новом снимке выдаёт: «85% вероятности — кошка». В химии то же самое, только вместо кошек и собак — молекулы и реакции. Нейросети «скармливают» базу данных из тысяч химических превращений. Каждую реакцию записывают как пару «реагенты → продукты». И сеть начинает искать закономерности. У каких молекул аминогруппа легко превращается в нитрогруппу? В каких условиях бензольное кольцо сульфируется, а в каких — хлорируется? Машина не знает правил Марковникова или ориентантов Зайцева, но после просмотра ста тысяч примеров она статистически усваивает, что гидробромирование алкенов идёт против правила Марковникова в присутствии пероксидов, потому что именно такие случаи попадались ей в обучающей выборке с меткой «успех». Она не «понимает» радикальный механизм — она «оценивает», что сочетание реагента А с условием Б даёт продукт В с высокой вероятностью. Это и есть ключевое отличие: программа-инструкция следует правилам, нейросеть ищет взаимосвязи. Первая ломается, столкнувшись с исключением. Вторая — просто говорит: «В этом странном случае я не уверена, но, кажется, получится вот это».
Допустим, ты хочешь найти лучшие условия для синтеза, но понятия не имеешь о теории. У тебя есть 20 растворителей, 10 температур и 5 катализаторов. Ты можешь ставить опыты вслепую, перебирая комбинации. Сколько вариантов? 20 × 10 × 5 = 1000. Если каждый эксперимент занимает час, ты провозишься полгода. Это и есть классический «метод тыка». А теперь представь нейросеть, которая «ставит» такие эксперименты «мысленно». Она не смешивает реальные реактивы, а обсчитывает математическую модель, обученную на предыдущих реальных опытах. За одну секунду она может оценить миллионы комбинаций и сказать: «С вероятностью 93% наилучший выход даст ацетонитрил при 80°C с палладиевым катализатором». Это не магия — это ускоренный в миллион раз перебор вариантов с умным фильтром. Сеть не пробует всё подряд, она ищет скрытые корреляции и отсекает потенциально провальные зоны. Фактически, нейросеть делает то же самое, что делал бы хороший химик-синтетик. Она помнит опубликованные реакции, ошибки, удачи. И когда ты даёшь ей новую задачу, она не изобретает правила, а спрашивает свой «опыт»: «На что это похоже? Что срабатывало раньше в похожих случаях?». Именно так работают современные предсказатели реакций вроде IBM RXN.
По сути, нейросеть — это множество слоёв узлов-«нейронов», связанных «весами». Каждый вес — это число, которое показывает, насколько важен тот или иной признак. В начале обучения веса случайны, и сеть гадает наобум. Ей показывают, например, формулу молекулы и её экспериментальную растворимость. Сеть предсказывает что-то, сравнивает с правильным ответом и чуть-чуть «подкручивает веса», чтобы в следующий раз ошибиться меньше. После миллионов таких корректировок «веса» настраиваются так, что сеть начинает предсказывать правильно даже для тех молекул, которых она никогда не видела. Это и есть «обучение». Химия даёт нейросетям много пищи для обучения: у нас, химиков, накоплены гигантские базы данных. Миллионы веществ, тысячи реакций при разных условиях, миллионы спектров и других физико-химических характеристик. Всё, что было опубликовано за последние двести лет, постепенно оцифровывается. И нейросети «читают» эту библиотеку и формируют своё собственное, статистическое «понимание» химии.