Занимаясь созданием систем искусственного интеллекта, не перестаешь удивляться, из каких порой «костылей» состоят настоящие чудеса прогресса. Например, знаете ли вы, что даже самые современные нейросети фундаментально не умеют перемножать два числа? Они не считают в привычном нам смысле, а скорее запоминают и аппроксимируют ответы.
Как так вышло, что ИИ пишет код и сочиняет стихи, но буксует на таблице умножения? Давайте разбираться.
Фундаментальная проблема: сложение вместо умножения
Самым распространенным видом искусственного интеллекта сегодня являются нейронные сети. Любую нейронную сеть можно описать схематично:
Входы → Магия (слои нейронной сети) → Выходы
Заявляется, что нейросети — универсальные аппроксиматоры, т.е. способны вычислить ответ для любой задачи. Хорошо, пусть нам надо вычислить стоимость товара, зная цену и количество. Что необходимо сделать? Правильно, умножить цену на количество.
Казалось бы, простейшая задача: два входа (цена и количество) и один выход (стоимость). Нейронная сеть должна справиться. Да? Но если взглянуть на архитектуру базового нейрона (персептрона), мы заметим проблему.Внутри сети входные значения складываются, а не перемножаются.
Даже если мы добавим скрытые слои и сделаем сеть глубокой, принцип не изменится. В каждом нейроне происходит линейная комбинация входов. Цена и количество умножаются на веса (константы), ноникогда не перемножаются друг с другом.
Сеть может «угадать» правильный ответ за счёт глубины и количества нейронов, запомнив паттерны, но математической операции умноженияx1⋅x2 внутри классического персептрона не происходит.
Что происходит внутри нейрона? (Для любопытных)
Давайте заглянем внутрь «чёрного ящика». Ниже я подробно расписал, что происходит с сигналами при прохождении через слои.
Что происходит внутри нейрона?
В нейронеh1(1)происходит сложение Цены и Количества. Повторюсь – именно сложение. Правда, перед этим цена была увеличена (или уменьшена) в некое число раз (на схеме это число обозначено значкомw11(1)), а количество было отмасштабировано вw12(1) раз.
Первый скрытый слой:
Верхний индекс в скобках—это номер скрытого слоя. Веса отмечаются цифрами«куда»«откуда», т.е. w12(1)—это вес, который идет к нейрону1на следующем слое от нейрона2на текущем слое.
Переходя ко второму слою:
Если подставим значения из первого слоя, то получим:
Приведем подобные слагаемые:
Вывод:Перемещаясь вглубь слоёв и к выходу, мы по-прежнему видим сумму взвешенных входов (и).Весаперемножаются между собой, складываются в сложные комбинации, ноЦена и Количество так и остаются разделёнными знаком «плюс». Они никогда не встречаются в виде произведения. Добавление слоёв и нейронов не помогают.
Математическая хитрость: как получить умножение через сложение
Так что нам делать, если нейронная сеть не умеет умножать? Конечно, можно вручную подать на вход уже перемноженные значения. Но это «инженерный костыль»: в реальной задаче много входов и мы заранее не знаем, какие комбинации понадобятся.
Правда такими «костылями» пользуются многие, по сути подгоняя ответ под известное решение. Например, создатели Tensorflow в своей демонстрацииhttps://playground.tensorflow.org/не просто так добавили вход.
Кстати, а почему на скриншоте выше вместо (или кроме) умножения еще предлагается использовать возведение в квадрат? Дело в том, что зная квадраты входов, нейронная сеть сможет сымитировать умножение, используя известную школьную формулу:
(x + y)2=x2+ 2xy+y2
Отсюда выражаем произведение:
x⋅y = 1/2 * ( (x+y)2−x2−y2)
Таким образом, умножение сводится к комбинации трех операций: сложение, вычитание ивозведение в квадрат. Вот как выглядело бы перемножение входов, если в качестве функции активации использовать возведение в квадрат.
Отлично? Нет. Проблема в том, что такую функцию активации как возведение в квадрат никто не использует, а классические функции активации (ReLU, Sigmoid, Tanh и т.д.) даже близко не похожи на функцию f(z) = z2.
Революция Трансформеров и скрытая сила GLU
Перенесемся к Трансформеру — современной архитектуре нейронных сетей, благодаря которой произошла настоящая революция искусственного интеллекта. Именно на Трансформерах работают чаты GPT и другие современные модели.
Долгое время считалось, что и они лишь «угадывают» математику, но на самом деле они могут умножать (если конечно захотят).
Все слышали про статью Google под названиемAttetion is All You Need, вышедшую в 2017 году. Да, это действительно революция. Но эта революция НЕ привела к появлению чатов GPT (в конце 2022 года).
Для создания чата GPT потребовалась еще одна мини-революция, произошедшая в 2020 году. Многие пропустили её, сосредоточившись только на механизме внимания (Attention).
Так что же нового произошло в 2020 году? Речь идёт про статью Ноема Шазира (Noam Shazeer)«GLU Variants Improve Transformer»(https://arxiv.org/pdf/2002.05202). В ней впервые предложено заменить стандартныефункции активации(такие как ReLU) на так называемыевентили (Gates):ReGLU, GEGLU, SwiGLU.
В указанной статье всего 4 страницы. Но обратите внимание на эту таблицу:
Как говорится, вызовем пояснительную бригаду.Верхняя строчка– это использовавшаяся ранее в Трансформерах функция активации ReLU. Да да, если вы её до сих пор используете в 2026 году, то вы проспали последние лет 6. Втрех последних строчкахиспользованы современные вентили (gates) ReGLU, SwiGLU, GEGLU. Цифры справа – это по сути оценки ошибок сети, т.е. чем ниже цифра, тем качество сети лучше. Видно, что все варианты вентилей (GLU), работают лучше, чем ReLU.
В статье жирным шрифтом выделены два наилучших вентиля это GEGLU и SwiGLU, именно они используются в полносвязной части всех современных трансформеров. При этом предпочтение отдается SwiGLU, т.к. она вычислительно работает быстрее, чем GEGLU.
В чем суть вентилей вместо функций активации?
Смысл механизма GLU (Gated Linear Unit) в том, что входной сигнал не просто проходит через функцию активации. Он «размножается», проходит двумя разными путями через линейные проекции и «обычные» функции активации, а затем эти путиперемножаютсядруг с другом.
Формула для SwiGLU выглядит так:
Здесь происходит поэлементное умножение результатов двух линейных преобразований. Это дает сети возможность моделировать квадратичные зависимости (возведение в квадрат) и, следовательно, при необходимости имитировать умножение входов. Именно благодаря архитектуреSwiGLUсовременные модели стали значительно «умнее» и лучше сходятся при обучении.
Это «побочное» открытие осталось мало замеченным широкой публикой, но именно оно позволило трансформерам выйти на новый уровень понимания зависимостей в данных. Это новшество позволяет ввести в нейронные сети понятие умножения, пусть и очень странным способом, настолько странным, что нейронная сеть не всегда его находит при обучении (не выбирает нужные параметры для W, b, V и c).
Реальность: калькулятор в кармане ИИ
Означает ли это, что теперь ChatGPT идеально считает? Не совсем. Несмотря на способность архитектуры моделировать умножение, точность все еще страдает. Нейросеть, особенно генеративная большая языковая модель — это вероятностная, размышляющая, модель. Для неё «2 + 2 = 4» — это как наиболее вероятный токен, но не строгий логический вывод.
Поэтому, когда вы просите современный чат-бот решить сложный пример, он часто поступает как человек: не считает в уме, а берет калькулятор. Точнее говоря, внешний инструмент, выполняющий код на языке Python в отдельной песочнице. Если программа скомпилируется, то нейросеть узнает точный результат. Это долго и требует дополнительных ресурсов и вообще говоря не всегда работает.
Будущее: ИИ как компьютер
Куда мы движемся дальше? В последнее время появились эксперименты по интеграции исполняемых сред прямо в архитектуру модели Трансформера (например, через WebAssembly). Идея в том, чтобы нейросеть могла не просто эмулировать вычисления, а делегировать их нативному коду внутри своего контекста выполнения. Т.е. делать это «родным» образом, а не на дополнительном компьютере. Кто не боится английского языка и вообще не боится трудностей, добро пожаловать в подробности.
https://www.percepta.ai/blog/can-llms-be-computers
За «наводку» на статью спасибо телеграмм каналу:https://t.me/Futuris/4101
Если вы создаёте чат GPT, опираясь на старинные книжки, в которых написано ReLU, поищите более качественную книгу, где используются вентили.
Если вы обучаете ML модель, а она принципиально не хочет «учиться», попробуйте использовать вентили, вместо функций активации.
Подписывайтесь на каналhttps://t.me/nova_cortex, закрытое сообщество ИИ экспертов из Республики Беларусь. Там мы будем делиться другими тайнами.