Научпоп, с цветными картинками: https://www.deepmind.com/blog/alphadev-discovers-faster-sorting-algorithms
В нашей статье, опубликованной 7 июня в журнале Nature, мы представляем AlphaDev, систему искусственного интеллекта (ИИ), которая использует обучение с подкреплением для открытия усовершенствованных алгоритмов информатики, превосходящих те, которые ученые и инженеры оттачивали десятилетиями.
Благодаря открытому исходному коду наших новых алгоритмов сортировки в основной библиотеке C++ миллионы разработчиков и компаний по всему миру теперь используют его в приложениях ИИ в различных отраслях, от облачных вычислений и онлайн-покупок до управления цепочками поставок. Это первое изменение в этой части библиотеки сортировки более чем за десятилетие, и впервые в эту библиотеку был добавлен алгоритм, разработанный с помощью обучения с подкреплением. Мы рассматриваем это как важный шаг к использованию ИИ для оптимизации мирового кода, по одному алгоритму за раз.
AlphaDev основан на AlphaZero , нашей модели обучения с подкреплением, которая побеждала чемпионов мира в таких играх, как го, шахматы и сёги. С помощью AlphaDev мы показываем, как эта модель может быть преобразована из игр в научные задачи и из симуляций в приложения реального мира.
Чтобы обучить AlphaDev открывать новые алгоритмы, мы превратили сортировку в «игру по сборке» для одного игрока. На каждом шагу AlphaDev наблюдает за сгенерированным алгоритмом и информацией, содержащейся в центральном процессоре (ЦП). Затем он выполняет ход, выбирая инструкцию для добавления к алгоритму. Игра на ассемблере невероятно сложна, потому что AlphaDev приходится эффективно перебирать огромное количество возможных комбинаций инструкций, чтобы найти алгоритм, способный сортировать и работающий быстрее, чем текущий лучший из них. Количество возможных комбинаций инструкций аналогично количеству частиц во вселенной или количеству возможных комбинаций ходов в играх в шахматы (10 120 игр) и го (10 700 игр). И одно неверное движение может свести на нет весь алгоритм.
AlphaDev обнаружила новые алгоритмы сортировки, которые привели к улучшениям в библиотеке сортировки LLVM libc++, которая стала на 70 % быстрее для более коротких последовательностей и примерно на 1,7 % быстрее для последовательностей, превышающих 250 000 элементов. Мы сосредоточились на улучшении алгоритмов сортировки более коротких последовательностей из трех-пяти элементов. Эти алгоритмы являются одними из наиболее широко используемых, потому что они часто вызываются много раз как часть более крупных функций сортировки. Улучшение этих алгоритмов может привести к общему ускорению сортировки любого количества элементов.
Суровый не научпоп: https://www.nature.com/articles/s41586-023-06004-9
Коммит: https://reviews.llvm.org/D118029