Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
Хотя проект AlphaZero и стал серьёзным прорывом в области создания систем ИИ для настольных игр, в отношении результата для шахмат, описанного в препринте статьи, возник ряд критических замечаний. Если посмотреть на графики обучения, видно, что разница в силе игры между AlphaZero и Stockfish (даже несмотря на разгромный счёт матча из 100 партий, приведённый в статье: 28 побед, 72 ничейных результата и ни одного поражения AlphaZero) — не так уж велика. В матче Stockfish играл без дебютной библиотеки. В демонстрационном матче программы играли на несопоставимом оборудовании: Stockfish работал на обычном CPU, правда на 64-ядерном (32 физических ядра, соответствующие 64 виртуальным), а AlphaZero — на 4 TPU первой версии (неясно, идёт ли речь о четырёх чипах, ядрах или картах, в зависимости от интерпретации суммарная производительность TPU составляла от 92 до 368 Тфлопс [1962] ). Сравнить производительность CPU и TPU напрямую достаточно сложно из-за разницы их архитектур. Если взять формальную производительность во флопсах (количество операций с плавающей запятой в секунду), то оборудование AlphaZero (4 TPU) оказывается примерно на два порядка более мощным, чем 64-ядерный CPU Stockfish: 92/184/368 Тфлопс против 3 Тфлопс. Правда, если сравнивать энергопотребление этих систем, разница не будет столь огромной: TPU первой версии потребляет [1963] порядка 40 Вт, в то время как энергопотребление CPU, по всей видимости, составляло около 100 Вт (точная марка использованного CPU неизвестна).
1962
Sapunov G. (2021). Hardware for Deep Learning. Part 4: ASIC // https://blog.inten.to/hardware-for-deep-learning-part-4-asic-96a542fe6a81
1963
Sapunov G. (2021). Hardware for Deep Learning. Part 4: ASIC // https://blog.inten.to/hardware-for-deep-learning-part-4-asic-96a542fe6a81
Заявленная скорость перебора у AlphaZero была существенно ниже, чем у Stockfish. AlphaZero просматривала порядка 80 000 позиций в секунду (node per second, NPS; формально говоря, речь идёт об узлах переборного дерева в секунду, но каждый узел такого дерева — это шахматная позиция), а Stockfish — 70 млн позиций. Однако такое сравнение нельзя признать в полной мере корректным, поскольку шахматные программы по-разному учитывают просмотренные позиции. При генерации возможных ходов в шахматной программе в некоторых узлах дерева может осуществляться сокращённая генерация — например только ходов со взятием фигур или с шахами. Далее, некоторые сгенерированные ходы могут быть отсеяны и без просмотра получаемой позиции — в результате действия различных эвристик. Включать или не включать отсеянные узлы в подсчёт количества узлов? Общей практики в этом вопросе не существует. Но даже если некий ход и не был отсеян сразу, то для позиции, получившейся на доске после этого хода, не всегда может быть вызвана функция оценки. Если же оценочная функция всё-таки вызвана, то может произойти ускоренная оценка [lazy evaluation]. То есть у современных шахматных программ есть множество нюансов, влияющих на подсчёт количества просматриваемых позиций. Даже программы, у которых алгоритмы перебора очень похожи, могут в качестве выходных данных выводить сильно отличающиеся по количеству просмотренных позиций показатели. Например, программа Rybka показывает значения NPS на порядок ниже, чем Stockfish, хотя архитектурно эти программы очень похожи. В целом и среди «классических» шахматных программ распространён подход, когда скорость перебора приносится в жертву более осмысленной стратегии перебора, при которой программы компенсируют потерю скорости за счёт отсечения большего количества ненужных для анализа позиций. Но, конечно, это целесообразно только тогда, когда приводит в итоге к росту силы игры программы.
Конечно, при сравнении оценочных функций AlphaZero и классической версии Stockfish бросается в глаза то, что вычисление оценки при помощи нейронной сети требует выполнения примерно полутора миллиардов операций с плавающей запятой, что явно больше, чем для функции, основанной на наборе правил. Но дело в том, что нейронная сеть в некотором смысле берёт на себя часть функций, которые в Stockfish выполняют алгоритмы перебора. Например, нейронная сеть в состоянии произвести подсчёт атак на различные фигуры и получить хорошую оценку взятий и разменов без рассмотрения конкретных вариантов. Таким образом, оценочные функции AlphaZero и Stockfish не совпадают в полной мере по набору решаемых ими задач.
В общем, сравнивать две программы по этой метрике — плохо. Учитывая не такую большую разницу в силе игры, а также большую мощность оборудования AlphaZero, сказать однозначно, что AlphaZero именно как программа сильнее Stockfish, пока сложно.
Критические замечания высказывались также в отношении настроек Stockfish при игре с AlphaZero (маленький размер хеш-таблицы при большом числе потоков приводил к большому числу блокировок, что замедляло процесс перебора). Контроль времени (одна минута на ход) также трудно признать оптимальным для Stockfish, поскольку таким образом «выбывают из игры» сложные эвристики Stockfish, позволяющие ему рационально распределять время на обдумывание ходов в партии. Критика проекта AlphaZero со стороны сообщества разработчиков шахматных программ была подогрета тем фактом, что «победа» AlphaZero над Stockfish была подана как свершившийся факт. AlphaZero не участвовала в публичных турнирах шахматных программ, не было организовано матча со Stockfish с независимыми судьями, а исходные коды AlphaZero не были опубликованы.
Тем не менее появление AlphaZero стало важным шагом вперёд в области компьютерных шахмат. Программ, эффективно использующих GPU или TPU для шахматных вычислений, до сих пор не существовало, как и сильных программ, использующих нейронные сети. Весьма вероятно, что AlphaZero стала сильнейшей в мире шахматной машиной (при этом не факт, что AlphaZero является сильнейшей в мире программой). Большой шаг вперёд — это переход от перебора, управляемого множеством эвристик, придуманных людьми, к перебору, который управляется моделью машинного обучения. Весьма вероятно, что эвристики, придуманные людьми, содержат в себе те или иные дефекты, являющиеся плодами предвзятости экспертов.
Критика препринта статьи создателей AlphaZero была частично учтена в публикации в Science. Число партий в тестовом матче было увеличено до тысячи, для тестов была взята наиболее актуальная версия Stockfish, были проведены тесты с использованием в качестве стартовых позиций из дебютного набора, применявшегося на чемпионате Top Chess Engine Championship (чемпионат сильнейших шахматных движков) 2016 г., что уравнивало шансы сторон в дебюте. Был использован классический контроль времени: 3 часа на партию с добавлением 15 секунд на ход. В тестах Stockfish использовал 44 ядра CPU (два 2,2 ГГц процессора Intel Xeon Broadwell) при размере хеш-таблицы 32 Гб. Матч завершился победой AlphaZero со счётом 574 1/2 : 425 1/2 (155 побед, 6 поражений, 839 ничьих). Заодно авторы статьи провели между программами игры, отведя им разное время на обдумывание ходов. И хотя это не уравнивало производительность аппаратных платформ во флопсах, но как минимум по энергопотреблению достигался приблизительный паритет. Однако, даже используя 1/10 времени, отведённого оппоненту, AlphaZero смогла одержать победу над Stockfish.
6.2.3.5 Последние достижения нейросетей в го и шахматах
В ноябре 2019 г. специалисты DeepMind опубликовали препринт [1964] статьи с описанием новой игровой системы ИИ, получившей название MuZero. Вторая, дополненная версия препринта была опубликована в 2020 г. MuZero не только превосходит по силе игры своих предшественников, но и способна обучиться играть в игру без предварительного знания её правил. К числу игр, на которых была опробована новая система, добавились классические игры для игровой приставки Atari 2600 (такие как Q*bert, Tennis, Video Pinball, Ms Pacman, Breakout, Pong и др., всего 57 игр).
1964
Schrittwieser J., Antonoglou I., Hubert T., Simonyan K., Sifre L., Schmitt S., Guez A., Lockhart E., Hassabis D., Graepel T., Lillicrap T., Silver D. (2020). Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model // https://arxiv.org/abs/1911.08265
В 2021 г. увидела свет наследница MuZero — система под названием EfficientZero с гораздо большей скоростью обучения: для достижения сверхчеловеческого уровня во многих играх для Atari ей достаточно всего пары часов игрового времени [1965] .
Матч Ли Седоля и AlphaGo, а также последующие успехи DeepMind в области го не только подняли уровень игры на невиданную доселе высоту, но и послужили источником сильных переживаний для многих профессиональных игроков. В 2019 г. 36-летний Ли Седоль заявил о завершении своей игровой карьеры. «Даже если я стану номером один, есть сущность, которую нельзя победить», — сказал он в интервью агентству Yonhap News. Конечно, эта позиция напоминает позицию тяжелоатлета, покинувшего тяжёлую атлетику по той причине, что подъёмный кран способен поднять груз, который никогда не сможет поднять человек. Впрочем, нам трудно сейчас установить наверняка, была ли чья-то психика всерьёз травмирована в результате появления подъёмных кранов.
1965
Ye W., Liu S., Kurutach T., Abbeel P., Gao Y. (2021). Mastering Atari Games with Limited Data // https://arxiv.org/abs/2111.00210
AlphaGo не была единственной программой для игры в го, использовавшей методы глубокого обучения. Параллельно с DeepMind разработки в этой области вели исследователи из компании Facebook. Первым их детищем стала программа Darkforest, названная так в честь одноимённого романа китайского писателя-фантаста Лю Цысиня. Первая версия Darkforest была основана на свёрточной нейронной сети, обученной на датасете, включавшем 250 000 партий игроков-людей. Начиная со второй версии разработчики использовали комбинацию MCTS и свёрточной сети. После выхода первой статьи от DeepMind, сообщившей миру о победе AlphaGo в матче с Фань Хуэем, Facebook выложила исходные коды Darkforest в открытый доступ. Сила игры Darkforest примерно соответствовала силе игры лучших программ того времени, таких как Zen, DolBaram и Crazy Stone, но заметно уступала силе игры AlphaGo. Позже усовершенствованная версия Darkforest стала [1966] частью платформы ELF под названием ELF OpenGo. В 2018 г. OpenGo сыграла 14 партий с четырьмя профессиональными игроками в го из числа топ-30, одержав победу во всех играх. Во время игры OpenGo использовала один GPU и тратила 50 секунд на выбор каждого хода, а её противники не были ограничены во времени.
1966
Tian Y., Zitnick L. (2018). Facebook Open Sources ELF OpenGo / facebook research // https://research.fb.com/blog/2018/05/facebook-open-sources-elf-opengo/
В 2019 г. свет увидела программа KataGo, воплощающая в себе воспроизведение и развитие методов, использованных создателями AlphaGo. Благодаря усилиям её создателя, Дэвида Ву, KataGo демонстрирует значительно более высокую вычислительную эффективность, чем её предшественники, что позволяет успешно обучать программу с использованием сравнительно недорогого оборудования [1967] , [1968] . На сентябрь 2023 г. KataGo занимает [1969] уверенное первое место в рейтингах публичных программ для игры в го.
1967
Wu D. (2019). Accelerating Self-Play Learning in Go / Jane Street Tech Blog, Feb 28, 2019 // https://blog.janestreet.com/accelerating-self-play-learning-in-go/
1968
Wu D. J. (2019). Accelerating Self-Play Learning in Go // https://arxiv.org/abs/1902.10565
1969
Boardsize 19x19 - 15 minutes per side (2021) / Computer Go ServerH, Last Update: 2021-03-14 14:43:24 UTC // http://www.yss-aya.com/cgos/19x19/standings.html
25 октября 2017 г. состоялся первый релиз проекта Leela Zero — программы для игры в го с открытым исходным кодом, созданной бельгийским программистом Джаном-Карло Паскутто, автором шахматного движка Sjeng и движка для игры в го под названием Leela. Автор Leela Zero поставил перед собой задачу воспроизвести алгоритм, описанный в статье, посвящённой AlphaGo Zero.
В начале 2018 г. было создано ответвление проекта Leela Zero под названием Leela Chess Zero (LC0). Его создатели поставили перед собой цель воспроизвести публикацию, посвящённую AlphaZero, применительно к игре в шахматы. Альтернативой использованию гигантских вычислительных мощностей Google стало создание инфраструктуры для краудсорсинга, но даже совместными усилиями участникам проекта необходимы месяцы расчётов на то, на что у DeepMind ушли всего лишь часы. Матчи, проведённые весной 2020 г., показывали несущественную разницу в силе игры Stockfish и LC0. На 15 марта 2020 г. на сайте CCRL (Computer Chess Rating Lists, популярный сайт с таблицей рейтингов шахматных программ) версия Leela Chess Zero 0.22.0 T40B.4-160, использующая для игры одну видеокарту GTX1050, уступала Stockfish 11 только 31 пункт Эло (3464 против 3495), что соответствует разнице 54 : 46 по набираемым очкам (при ограничении времени, эквивалентном 15 минутам на каждые 40 ходов на CPU i7-4770k, т. е. при использовании других процессоров ограничение времени изменяется пропорционально производительности). Поскольку GTX1050 заметно уступает в производительности лучшим GPU, не говоря уже о TPU, то при использовании более производительного оборудования LC0, вероятно, не уступала Stockfish. Среди турниров TCEC и CCCC в числе победителей попеременно оказывались Leela Chess Zero (или ответвления от этого проекта) и Stockfish. В последние годы число нейросетевых шахматных движков постоянно росло — Leelenstein, Allie+Stein, Scorpio NN, Antifish, — и шахматное сообщество ожидало, что по мере роста доступности NPU они вытеснят «классические» программы с компьютерно-шахматного олимпа.