Skip to content

Уместна ли алгоритмика в интеллект-стеке?

Кому нужно знать про универсальные аппроксиматоры и алгоритмы, их реализующие? Нужно ли людям сегодня понимание того, как и зачем используются алгоритмы, какие они бывают, где используются вычисления по самым разным алгоритмам? Грубо говоря: нужно ли учение об алгоритмике в интеллект-стеке, нужна ли такая трансдисциплина?

Да, она нужна. Ибо мы не только запоминаем-вспоминаем информацию (это, кстати, тоже можно делать более и менее эффективно, это тоже предмет алгоритмики!), но и как-то над ней задумываемся, погружаемся в размышления/вычисления, которые требуют ресурсов. По большому счёту, вычисления нужны для:

  • познания/исследований: создание объяснительных моделей на основе восприятия окружающего мира и учёта уже имеющихся объяснений
  • деятельности на нескольких системных уровнях: в цикле/динамике вычисление/inference/вывод/update предсказаний по имеющимся моделям на основе восприятия/внешних данных, планирование действий, которые приведут предсказания к нас устраивающим, и действия/выполнение плана/актуация. Это всё на нескольких системных уровнях и с использованием заранее вычисленных объяснений.

Познание как построение всё более и более мощных объяснений/описаний/моделей мира, дающих всё более и более точные предсказания и деятельность по изменению мира в сторону благоприятных для нас предсказаний по имеющимся объяснениям — это и есть жизнь. В этом плане живым является вообще всё, идёт гигантское вселенское «вычисление» (такой подход развивает всё большее и большее число научных команд, это потихоньку становится мейнстримом).

Такой подход к алгоритмике как задаче получения наиболее эффективного и одновременно наиболее универсального алгоритма, который был бы ещё и самообучаемым, не отличается от классических задач той области computer science, которая называлась artificial intelligence и занималась поиском решения отдельных проблем, имеющих большую вычислительную сложность, и поэтому не подвластную старым компьютерам: это как раз задачи представления знаний (моделирования/познания мира, и тут мы опять попадаем в семантику и логику), а также задачи планирования. Про человеческий «интеллект» в алгоритмике говорили, но это всегда казалось далёкой целью (да и сегодня многим учёным это кажется довольно далёкой целью, хотя не меньшее количество учёных говорит, что эта цель достигнута на текущей архитектуре Transformer и не надо ждать быстрых изменений в этом классе алгоритмов. Есть даже пари на эту тему изменения основного алгоритма универсального интеллекта, можно делать ставки[1]).

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

Классическая алгоритмика — это по факту чуть больше сотни важных алгоритмов, которые встречаются в книжках по алгоритмике, и прогресс в которых приводит к увеличению скорости вычислений даже быстрее, чем прогресс в компьютерном железе, хотя прогресс в компьютерном железе постоянен, а прогресс в алгоритмах идёт скачками. Последнее исследование 113 алгоритмических семей в 2021 году показало[2], что в 43% случаев алгоритмика в плане улучшения использования компьютерных ресурсов имеет примерно такой же потенциал, как и улучшение «железа», но в 14% случаев нахождение новых алгоритмов существенно опережало темп ускорения вычислений за счёт новых компьютерных разработок, хотя речь в этом исследовании не шла о переходе к другому типу физики вычислителя: оптике, квантовой физике.

Прежде всего это относится к таким расчётам, которые делаются для предобучения глубоких нейронных сетей, это лучшие универсальные аппроксиматоры (напомним, что речь идёт о свойстве с какой-то заданной точностью аппроксимировать любую функцию как преобразования из входных данных в выходные, под это можно подогнать практически любую задачу). Алгоритмы глубокого обучения — это первый обнаруженный людьми класс алгоритмов, который показал удивительную особенность: качество полученных моделей растёт при добавлении вычислительных ресурсов. Уточнение решений для этих алгоритмов заканчивается не потому, что уже ничего там улучшить не удастся, сколько ни вычисляй, а просто потому, что слишком дорого вычислять. Было бы дешевле, получили бы решение получше! Это очень, очень дорогие на сегодняшний день расчёты, их цена падает с годами экспоненциально, но и потребность в них растёт экспоненциально, потому как если потратить столько же денег завтра, сколько тратим сегодня, закупив на эту же сумму побольше вычислений, то получим результаты лучше! Этот класс алгоритмов был придуман в 1987 году, но другие алгоритмы этот класс алгоритмов смог обогнать только тогда, когда было использовано компьютерное «железо», особо подходящее под эти алгоритмы (GPU[3]), на обычных компьютерах эти алгоритмы не работают, ибо не хватает вычислительной мощности.

Отвлекаясь от конкретных алгоритмов решения вычислительных задач, где сегодня используется компьютерная мощь, именно вычисления, где можно подглядеть то будущее, которое нас ждёт при реализации тренда экспоненциального падения стоимости вычислительных ресурсов?

Получается такой разрыв: понимание, почему вычисления такие дорогие, и как их сделать дешевле — это предмет алгоритмики, которая находится довольно низко по интеллект-стеку. А использование этого понимания должно быть в бизнесе. Вот идём в бизнес: квантовые компьютеры обещают дать нам невиданную вычислительную мощность, которая явно избыточна для тех, кому компьютеры нужны как ручка-бумажка-на-стероидах. Кто уже сегодня интересуется квантовыми компьютерами, для каких расчётов будут использовать их головокружительные вычислительные возможности? Если посмотрим на разные предложения по использованию[4], то заметим там примеры того, о чём мы тут писали, наши догадки верны:

  • создание объяснительных теорий в естественных науках (физика, метеорология, химия, биология и медицина, криптография)
  • предсказания и обновления предсказаний (инженерия, медицина, трейдинг, компьютерная безопасность — смотри все те прикладные практики, которые задействуют объяснительные теории из естественных наук)
  • планирование (всё те же прикладные практики, которые задействуют предсказания из предыдущего пункта)

И первое же применение, в котором квантовые компьютеры показали практическое (а не теоретическое) превосходство над традиционными компьютерами  — это расчёты по естественным наукам, магнетизация двумерного твёрдого тела[5]. До этого момента они показывали превосходство только на никому не нужных расчётах, «теоретическое преимущество». А нужно преимущество практическое. Оно обеспечивается в том числе программным обеспечением, имеющимися алгоритмами для этого типа вычислений.

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

Как отследить тренд на вычислительные модели, в которых существенно задействована алгоритмика, а не просто использование компьютеров для накопления данных и их красивого показа? Понятие цифрового двойника/digital twin сегодня быстро размывается в значении, но всё-таки его создание подразумевает создание какой-то модели физического двойника не столько на стадиях проектирования и изготовления, но также и на стадии эксплуатации/использования целевой системы, чтобы иметь предсказания и предупреждения (вот тут вычисления!) состояния физического двойника на основе вычисленных состояний модели (цифрового двойника)[6]. На сегодняшний день в инженерии принимаются решения на основе традиционных алгоритмов физического моделирования, базирующихся на вручную составляемых людьми системах дифференциальных уравнений, которые потом решает компьютер[7]. Но и тут работает тот же тренд: физическое моделирование на универсальных аппроксиматорах оказывается надёжней, цифровые двойники тоже переходят на использование универсальных алгоритмов моделирования, сегодня это прежде всего алгоритмы на глубоких нейронных сетях.

А пока квантовых и иных с «новой физикой» дешёвых и мощных компьютеров нет, новые универсальные алгоритмы вычисляются на «обычных» компьютерах с кремниевыми чипами как центральных процессоров (CPU), так и ускорителей вычислений на базе GPU и поддерживающих их DPU (data processing unit  — чипов, которые отвечают за обмен данными в большой вычислительной сети компьютеров с CUP и GPU в датацентре).

Как и где эти алгоритмы применяются? Как и естественный интеллект: везде, в самых неожиданных местах, которые только можно придумать!

Например, алгоритм NVIDIA на основе глубоких нейронных сетей сокращает требуемый для видеоконференций трафик вдесятеро[8]. Если вы занимаетесь видеоконференциями, и не знаете об этом прогрессе в алгоритмике, то вы покинете рынок. Главная тут мысль — такое происходит сегодня повсеместно, универсальные алгоритмы появляются в самых неожиданных местах и дают самые неожиданные результаты. Если вы не знаете, как про эти алгоритмы говорить, сколько они стоят, как и кто их разрабатывает, отслеживают ли их появление айтишники вашей фирмы — вашей фирме не жить. Алгоритмика важна. Первая волна компьютеризации «управления коллективным вниманием» в фирмах быстро переходит во вторую волну, где компьютер берёт на себя часть мышления/вычислений в двух ситуациях:

  • слишком дорого заказывать эти вычисления людям. Так, миллиарды переводов с самых разных одних естественных языков на самые разные другие, которые делают за сутки автоматические переводчики Google, Bing, Яндекса и других технических гигантов, просто не были бы выполнены. Да, они пока ужасного качества, на уровне студента вуза, незнакомого обычно со специальной лексикой какой-то предметной области, но они есть — и не были бы выполнены, если бы нужно было обращаться к людям. Переводчики не потеряли работу, но часть работы взяли на себя алгоритмы
  • алгоритмы выполняют работу, которая раньше людям была недоступна. Законы Кеплера компьютер уже может переоткрыть из данных наблюдения за планетой[9]. А фирма Sony не стесняясь говорит о создании компьютера-учёного, которому выдадут Нобелевскую премию, что ожидается к 2050 году[10]. Это всё алгоритмика, эти алгоритмы нужно создать, и эти алгоритмы нужно использовать.
  • В том числе алгоритмы открывают алгоритмы: AlphaDev открыло новые алгоритмы сортировки и сделало компиляторы быстрее[11].

В этой универсальности нейросетей не хватает сегодня:

  • Объяснений результатов вычислений универсальных алгоритмов (сегодня  — объяснение результатов работы нейронной сети), explainable AI[12]. Сегодня объяснений нет, «интуиция машинного интеллекта говорит вот так», а почему так  — неизвестно, можно верить, можно не верить. Этой проблемой занимаются, какие-то успехи тут уже есть. Нам нужно не просто аппроксимирование какой-то функции, нам нужно ещё и объяснение ситуации в терминах причин и следствий, объяснение решения!
  • выход из чисто вычислительной работы в реальность, то есть восприятие и актуация (extended/embodied cognition). Можно ожидать, что следующий инвестиционный пузырь будет с роботами, а пока основной массив работ идёт с «мозгом» без «тела». По большому счёту, вопрос сейчас начинает ставиться так (это говорит Kenneth Stanley), что прогресс в области обучаемых алгоритмов больше зависит от того, насколько мы можем сделать богатым не сам алгоритм, а ту среду, в которой он обучается. Одно дело, вы выпускаете робота в пустыне и говорите «учись!», другое дело  — выпускаете в центре какого-нибудь Нью-Йорка или Пекина и говорите  — «учись!». Генерировать нужно не только алгоритмы, но и среды для этих алгоритмов[13]!
  • осознанности, которую связывают в том числе и с возможностью строить длинные цепочки рассуждений по поводу рассуждений (алгоритм выбора алгоритма, алгоритм управления вниманием как выделением ресурсов для вычислений)

Есть много разных подклассов универсальных алгоритмов. Об этой погоне за универсальностью/Master Algorithm рассказывает книжка Pedro Domingos, но она выпущена аж в 2015 году, это уже только хорошее историческое введение, ибо за прошедшие годы в алгоритмике много чего произошло нового (и продолжает происходить со скоростью два прорыва в неделю[14]). Сейчас нужно было бы писать абсолютно новую книгу, примерно той же направленности, но дополненную новыми знаниями.

Например, учёные из DeepMind заявили[15], что настоящую универсальность дают алгоритмы reinforcement learning, в которых алгоритм «дрессируется» как животное: за достижение цели (или хотя бы приближение к цели) выдаётся награда. Тут же развязалась широкая дискуссия о том, что никакой особо универсальности от этих алгоритмов ждать не приходится, ибо типичная ситуация в том, что мы избегаем неприятностей/выживаем, при этом понятия не имеем, что такое «награда» или даже какого сорта могут встретиться «неприятности». Интеллект сам выбирает, что у него награда, ибо осознанность включает в себя и свободу выбора! Эволюционные алгоритмы — с ними всё в порядке насчёт универсальности (человека-то они сделали!), но для них никогда не хватит вычислительных ресурсов. Чтобы сделать человека, вся Земля несколько миллиардов лет была эдаким вычислителем!

Ещё одна заявка на «безнаградные» алгоритмы — это отсылка к понятиям predictive coding, active inference/деятельное обновление, а вместо «награды» агенты с такими алгоритмами стремятся к минимизации свободной энергии/free energy principle (помним, что «энергия» эта не из физики, а из математики для физики, как и «энтропия» в теории информации). Алгоритмы этого подхода (чаще всего его называют active inference, больше информации можно найти в общественной организации, координирующей самых разных исследователей этого класса алгоритма, Active Inference Institute[16]), крайне элегантны (кратки и универсальны), но пока не продемонстрировали каких-то впечатляющих практических результатов по сравнению с другими видами универсальных алгоритмов.

Алгоритмы формального логического вывода (раньше это называли «экспертные системы», потом «системы представления знаний», теперь самый распространённый термин — knowledge graphs) показали, что они сами по себе работают плохо, их неудача повлекла так называемую «зиму искусственного интеллекта», когда науку универсальных алгоритмов практически перестали финансировать, вплоть до 2012 года, когда обратили внимание на глубокое обучение. И так далее, по многим и многим классам претендующих на универсальность алгоритмов. И при этом работает теорема бесплатного обеда: что эффективно для какого-то класса задач, будет ужасно для другого. Хотите решения для многих разных классов проблем — имейте много разных алгоритмов, да ещё и выполняйте их на вычислителях с разной физикой! Так что «самый универсальный алгоритм» будет, скорее всего, каким-то сочетанием идей изо всех этих подходов.


  1. http://www.isattentionallyouneed.com/, но есть и разные другие варианты оценок, например, https://www.metaculus.com/questions/4892/transformers-as-lm-sota-in-2025/ ↩︎

  2. https://ieeexplore.ieee.org/document/9540991 ↩︎

  3. https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-718b9597aa0d ↩︎

  4. https://www.idquantique.com/quantum-safe-security/quantum-computing/real-world-applications/, https://hbr.org/2021/07/quantum-computing-is-coming-what-can-it-do, https://builtin.com/hardware/quantum-computing-applications ↩︎

  5. https://www.nature.com/articles/d41586-023-01965-3 ↩︎

  6. https://ailev.livejournal.com/1546514.html, https://ailev.livejournal.com/1570630.html ↩︎

  7. https://ailev.livejournal.com/1549559.html ↩︎

  8. https://syncedreview.com/2020/12/02/nvidia-neural-talking-head-synthesis-makes-video-conferencing-10x-more-bandwidth-efficient/ ↩︎

  9. https://arxiv.org/abs/2011.11981 ↩︎

  10. https://www.engadget.com/sonys-head-of-ai-research-wants-to-build-robots-that-can-win-a-nobel-prize-180059012.html ↩︎

  11. https://www.deepmind.com/blog/alphadev-discovers-faster-sorting-algorithms ↩︎

  12. https://en.wikipedia.org/wiki/Explainable_artificial_intelligence ↩︎

  13. https://arxiv.org/abs/2003.08536 ↩︎

  14. См. ленту новостей по алгоритмике для универсальных алгоритмов (алгоритмов AI), https://syncedreview.com/ ↩︎

  15. https://www.sciencedirect.com/science/article/pii/S0004370221000862 ↩︎

  16. https://www.activeinference.org/ ↩︎