Найти в Дзене
Вперёд к коммунизму!

Когда уместно неуместное: о новых алгоритмах

«Ученые немного шокированы»

У меня есть коллега, отличный журналист, но он одно время очень любил давать научным новостям заголовки типа «ученые шокированы». Как-то я сказал ему, что никогда не читаю новостей с такими заголовками. Он расстроился: «Ну как же быть? С таким загом у новости в 10 раз больше загрузок». И вот я, кажется, впервые в жизни наткнулся на новость, у которой заголовок «Ученые шокированы» — совершенно уместен.

Даниэль Манковиц из DeepMind говорит журналисту Nature: «We were a bit shocked». Манковиц — профессионал высокого уровня. Он-то всякое видел. Так что же они такое накопали? Я еще чуть-чуть потомлю и расскажу, конечно. Потому что я-то ведь тоже «was a bit shocked». Даже, пожалуй, и не «bit».

Представьте, перед вами колода из миллиона карточек, на которых написаны фамилии и имена. И вас спрашивают: «Скажите, а есть среди этого миллиона карточка "Чебышев Пафнутий"». Если карточки расположены в колоде случайным образом, вы за разумное время ответить на этот вопрос не сможете. А вот если они отсортированы по алфавиту — легко.

Сортировка меняет все, но ее надо уметь делать. Поэтому великий Дональд Кнут посвятил 3-й том «Искусства программирования» «Сортировке и поиску». Я уделил чтению этой книги сильно больше времени, чем «Войне и миру», которую читал дважды целиком и много раз фрагментарно.

Все (именно все — я в этом убежден) программисты в разное время своей жизни писали сортировку. Хотя бы «пузырьком». Как пишут Манковиц и его коллеги «каждый день в мире сортировка работает триллионы раз». Это не преувеличение.

Алгортмов сортировки — великое множество. Любое ускорение этого алгоритма, хоть на полпроцента, — это прорыв. И вот в своей статье ребята из DeepMind описали алгоритм, который по их увереньях работает в среднем 3 раза быстрее лучших современных сортировок. И этот алгоритм нашел ИИ.

Как это получилось. У DeepMind есть знаменитая программа (она работает с целым выводком нейросетей), которая всех обыграла в шахматы и в го. Это AlphaZero. Так вот ей предложили сыграть в новую игру. Вместо шахматных ходов и фигур, ей дали команды на ассемблере. Это язык программирования самый близкий к машинному коду. Он замечателен тем, что у него мало разных команд, и они очень простые — типа заслать значение в ячейку, сравнить ячейки, перейти на другую ячейку. И ребята из DeepMind попросили вариацию AlphaZerо — она называется AlphaDev — поиграть с ассемблерными командами так, чтобы на выходе получалась программа сортировки, как можно более быстрая.

AlphaDev стал играть. И доигрался. И получил алгоритм в среднем в 3 раза быстрее всех тех сортировок, которые нашли люди. Сказать, что люди не старались — это обидеть человечество. А вот ИИ их превзошел. Следующий шаг: а почему только сортировка? AlphaDev ведь может «играючи» оптимизировать любой код по любым параметрам, начиная от аппаратного ПО до стандартных библиотек С++. Тут есть от чего быть «шокированным».

Вот развёрнутая статья об этом:

Алгоритм сортировки, созданный ИИ, работает в 3 раза быстрее всех придуманных математиками за столетие

Владимир ГУБАЙЛОВСКИЙ