The Daily Newsstand · Free, Always
Tuesday, September 15, 2026

Как методичка из 1990-х объясняет устройство современных нейросетей

Translate

Разбирал старые методички по линейной алгебре (да, у меня правда есть такая привычка, не спрашивайте) и наткнулся на отрывок про химию. Автор пишет: «Молекула воды — это вектор (2, 0, 1). Молекула метана — вектор (4, 1, 0)». И дальше без смущения переходит к линейной зависимости векторов, как будто написанное выше — самая естественная вещь на свете.

Сначала я подумал, что это методическая вольность ради упражнения. Потом посидел с этим с полчаса и понял, что автор-то прав, а заодно и случайно объяснил, почему вообще из любой предметной области можно слепить нейросеть. Просто в 1990-х это называлось линейной алгеброй, а не representation learning.

Химия для тех, кто не любит химию

Идея простая. Берем набор из n атомов (водород, углерод, кислород, и т. д). Каждому атому сопоставляем вектор, у которого на своем месте единица, а на остальных — нули:

  • b1 = (1, 0, ..., 0)   — водород,

  • b2 = (0, 1, ..., 0)   — углерод,

  • b3 = (0, 0, 1, ..., 0) — кислород.

Если этот набор координат вам знаком, поздравляю, вы только что вспомнили one-hot encoding. Тот самый, которым кодируют категориальные признаки перед тем, как отправить их в модель. Автор методички 1990-х годов, конечно, не использовал этот термин, но по факту описал именно его, только вместо токенов взял атомы.

Идем дальше. Молекула — это просто линейная комбинация этих базисных векторов с целыми неотрицательными коэффициентами. Сколько атомов каждого сорта содержится в веществе, столько векторов и берем.

Вот вектор молекулы воды в базисе (H, C, O): H2O = 2·b1 + 0·b2 + 1·b3 = (2, 0, 1). А вот вектор молекулы углекислого газа: CO2 = 0·b1 + 1·b2 + 2·b3 = (0, 1, 2).

Вектор молекулы — координаты в базисе атомов.

Вектор молекулы — координаты в базисе атомов.

Формально это называется «bag of atoms» (по аналогии с «bag of words»). Порядок атомов теряется, и остается только их количество. Собственно, брутто-формула в химии — это и есть такой «bag» с самого начала, структурную формулу с этой информацией не спутаешь, но об этом чуть ниже.

Молекула воды предсказывает саму себя

Вот тут я решил не верить на слово и все перепроверить. Если молекула — это вектор, а атомная масса — это просто число, то молярная масса вещества — это линейная функция от вектора молекулы. Обычное скалярное произведение.

Берем веса: масса водорода 1.008, углерода 12.011, кислорода 15.999 (в атомных единицах массы). И считаем молярную массу, как взвешенную сумму:

  • m(H2O) = 2·1.008 + 0·12.011 + 1·15.999 = 18.015,

  • m(CO2) = 0·1.008 + 1·12.011 + 2·15.999 = 44.009,

  • m(C2H2) = 2·1.008 + 2·12.011 + 0·15.999 = 26.038,

  • m(CH4) = 4·1.008 + 1·12.011 + 0·15.999 = 16.043.

Теперь сверяемся. У воды — 18.015, у углекислого газа — 44.01, у ацетилена — 26.04, у метана 16.04. Совпадение верное с точностью до округления справочных констант.

Что мы только что получили? По сути, простейшую нейросеть без скрытых слоев, без функции активации и с одним нейроном на выходе. На входе у нас вектор молекулы, а весами служат атомные массы. Обучать такую сеть не требуется, так как оптимальные веса нам уже известны из таблицы Менделеева. Однако, если бы мы не знали атомные массы, а только располагали бы парами «вектор молекулы — молярная масса» для сотни соединений, обычная линейная регрессия восстановила бы эти веса сама (и это без единой строчки химических формул). Именно так, к слову, работают современные модели для предсказания свойств материалов: они не знают законов физики, но отлично находят статистические закономерности в векторах состава.

ИИ‑роутер — доступ к 300+ моделям из одной панели

Подключите OpenAI‑совместимый шлюз по единому API‑ключу. Настраивайте сквозную аналитику, отслеживайте лимиты и квотируйте ресурсы.

Запустить ИИ‑роутер →

Почему это работает вообще для чего угодно

Предлагаю сформулировать из вышесказанного общий принцип.

Нейросеть в базовом виде — это последовательность операций вида: вектор умножить на матрицу, прибавить вектор, пропустить через нелинейность, повторить. Единственное жесткое требование ко входу заключается в том, что он должен быть вектором, то есть элементом векторного пространства, где определены сложение и умножение на число.

И как только вы придумали способ превратить объекты своей области в векторы, да так, чтобы сложение и умножение на число имели смысл, то вся машинерия линейной алгебры немедленно становится применимой. Дальше не важно, векторизуете вы слова (word2vec, эмбеддинги токенов), пиксели (каждая картинка — это вектор из значений яркости), пользователей интернет-магазина (вектор из истории покупок) или атомы. Сетке совершенно все равно, откуда взялся вектор. Она видит числа и матрицы.

Собственно, в этом и заключается главный козырь современного AI: 90% работы в любой задаче машинного обучения — это создание качественного отображения предметной области в векторное пространство. А сам процесс обучения библиотека потом выполнит автоматически.

Где мешок с атомами ломается

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

Возьмем, к примеру, этанол C2H6O и диметиловый эфир C2H6O. Это два разных вещества с разной температурой кипения, разной токсичностью и вообще разным поведением. Тем не менее они имеют абсолютно одинаковый вектор состава (2, 6, 1) в любом стандартном базисе атомов. Bag of atoms не различает изомеры, потому что полностью игнорирует единственную и самую важную вещь, которая делает их разными — порядок связей между атомами.

Разные молекулы, но один и тот же вектор состава.

Разные молекулы, но один и тот же вектор состава.

Это та же проблема, с которой сталкивался подход «мешка слов» в обработке естественного языка (NLP) до эпохи трансформеров: фразы «собака укусила почтальона» и «почтальон укусил собаку» для него были неотличимы, так как порядок слов не сохранялся. 

Тут все лечится похожим образом. Если в NLP проблему решили с помощью позиционных эмбеддингов и механизмов внимания (attention), то в химии для этого используют графовые нейронные сети (GNN). В таком подходе молекула представляется не плоским вектором количества атомов, а графом со связями, и сеть учится агрегировать информацию о топологии этого графа.

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

На датасете QM9, который содержит более 100 000 небольших органических молекул с рассчитанными квантовыми свойствами, такая сеть предсказывает 11 из 13 целевых величин с точностью на уровне дорогих квантовохимических расчетов. Разница с брутто-формулой только в том, что граф не выбрасывает связи, поэтому этанол и диметиловый эфир для него — два совершенно разных объекта.

От трех атомов к двадцати аминокислотам

Та же самая идея, только с несравнимо большим бюджетом, работает в моделях предсказания структуры белков. Разница с методичкой, конечно, есть: вместо трех типов атомов здесь фигурируют 20 аминокислот, а вместо одной короткой молекулы — цепочка из сотен звеньев.

Белок — это последовательность аминокислот из своего алфавита: к 20 основным прибавляем редкий селеноцистеин, итого у нас получается, условно, 21 буква. Самый простой способ закодировать одну аминокислоту почти дословно повторяет b_k из методического пособия: вектор длиной 21, единица на своем месте, нули на остальных. Именно one-hot encoding до сих пор используют как основу в статьях про белковые эмбеддинги — тот самый простейший ориентир, с которым сравнивают все новые модели, и он неизменно проигрывает.

Проигрывает, кстати, по той же причине, что и брутто-формула проигрывает графу. One-hot не знает, что лейцин и изолейцин близнецы (ну почти) по физическим и химическим свойствам. Для вектора это два разных индекса, одинаково далеких друг от друга, как и от всех остальных восемнадцати. Поэтому здесь снова делают то же самое, что с word2vec: вместо жесткого one-hot аминокислоте сопоставляют обучаемый эмбеддинг. Он сам подстраивается таким образом, чтобы похожие по свойствам аминокислоты оказались рядом в векторном пространстве, а не были разбросаны как попало.

One-hot не знает про сходство, зато обучаемый эмбеддинг знает.

One-hot не знает про сходство, зато обучаемый эмбеддинг знает.

Модели вроде ESM устроены буквально по этому принципу. Белок — это предложение, аминокислота — токен, а сама сеть — это трансформер, который обучен решать ту же задачу, что и модель BERT в NLP: предсказывать замаскированный токен по контексту. Только вместо «он пошел в [MASK]» модель угадывает пропущенную аминокислоту, опираясь на эволюционный контекст миллионов реальных белковых последовательностей. На выходе каждая аминокислота внутри конкретного белка получает свой контекстный вектор. Он в разы информативнее исходного вектора one-hot, потому что в него неявно зашита эволюционная и структурная логика, которую сеть выучила сама, без жестко заданных вручную правил.

AlphaFold2 идет еще на шаг дальше. Модель «держит в голове» не один вектор на аминокислоту, а сразу два слоя представления одновременно: множественное выравнивание последовательностей (MSA, Multiple Sequence Alignment), где строки отражают схожие последовательности одного белка у разных видов, и парное представление (pair) — вектор для каждой пары аминокислот в цепочке (грубо говоря, «насколько вероятно, что эти двое физически соприкасаются в свернутом белке»). 

Ядро сети (Evoformer, несколько десятков повторяющихся блоков) распределяет внимание по строкам и столбцам этой MSA-матрицы и обновляет парное представление до тех пор, пока из статистики совместной эволюции белков не проступит пространственная структура. Финальный структурный модуль просто-напросто преобразует эти векторы в пространственные XYZ-координаты атомов.

Важно, что в основе всего этого чуда лежит абсолютно тот же примитив, что в методичке: аминокислота — это координата в векторном пространстве. Только пространство теперь включает не три измерения (H, C, O), а более тысячи обучаемых параметров, а правила сложения этих координат выводятся в процессе обучения модели на миллионах белков с помощью методов маскированного языкового моделирования (MLM).

Более поздняя модель ESMFold вообще полностью отказалась от использования MSA. Оказалось, что если языковая модель достаточно большая, она самостоятельно усваивает нужную эволюционную статистику по сырым последовательностям, и структуру можно предсказывать прямо из ее эмбеддингов, без поиска гомологичных последовательностей. Это происходит в разы быстрее, чем в AlphaFold 2, хотя и ценой незначительного снижения точности.

Возвращаясь к методичке

Конечно, автор той методички в 1990-е годы не совершал революционных открытий — линейная алгебра к тому моменту существовала уже многие десятилетия. Однако он наглядно продемонстрировал ключевой принцип: как только объект преобразуется в вектор, к нему становится применим весь мощный математический аппарат абстрактных векторных пространств. И здесь совершенно не важно, что скрывается за координатами — атом водорода, аминокислота в белковой цепи или эмбеддинг токена в большой языковой модели.

Путь от трех типов атомов в старой методичке до 20 аминокислот в моделях ESMFold или AlphaFold 2 на самом деле короче, чем кажется. Разница кроется лишь в размерности векторного пространства и в том, кто именно вычисляет коэффициенты — студент с тетрадкой или кластер высокопроизводительных видеокарт, выполняющий расчеты неделями.

Нейронные сети просто выполняют то же самое скалярное произведение, но с большими вычислительными затратами, в пространствах сверхвысокой размерности и с добавлением нелинейных функций активации между слоями. Где-то на пожелтевшей странице старой методички полвека назад уже были описаны принципы, которые сегодня объясняют, почему AlphaFold 2 предсказывает структуру белка, а модели GPT понимают человеческий текст. Все дело в векторах, остальное — дело техники.

P.S.: сама методичка автора Р. А. Симоненко, «Методическая разработка для студентов химического факультета. Часть 1. Векторы, матрицы и определители». Она досталась мне от знакомого в виде ксерокопий, в открытом доступе в сети, к сожалению, не видел.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.