KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Базы данных » Охота на электроовец. Большая книга искусственного интеллекта - Марков Сергей Николаевич

Охота на электроовец. Большая книга искусственного интеллекта - Марков Сергей Николаевич

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Марков Сергей Николаевич, "Охота на электроовец. Большая книга искусственного интеллекта" бесплатно, без регистрации.
Перейти на страницу:

AlphaGo Zero также содержала ряд упрощений по сравнению с предыдущими версиями AlphaGo. Например, вместо раздельных «сети политики» и «сети оценки» для обеих задач использовалась одна и та же нейронная сеть. Упрощению подвергся и переборный алгоритм.

Следующим шагом развития AlphaGo Zero стало создание системы AlphaZero, способной играть не только в го, но также и в шахматы и сёги (японские шахматы). Препринт статьи, описывающей AlphaZero, был опубликован [1952] на ArXiv 5 декабря 2017 г., а спустя год отчёт об экспериментах с AlphaZero появился и в академической прессе, а именно в журнале Science [1953]. Благодаря использованию в процессе обучения 5000 TPU первой версии для моделирования игр и 16 TPU второй версии для обучения нейронной сети, AlphaZero потребовалось чуть больше 30 часов обучения для того, чтобы превзойти AlphaGo Zero, около двух часов для того, чтобы превзойти уровень самой сильной на тот момент программы для игры в сёги (Elmo), и около четырёх часов для того, чтобы обойти самую сильную программу в шахматах — Stockfish. Последний результат (особенно приведённый в статье итог матча AlphaZero и Stockfish — 64 : 36) вызвал ряд споров в сообществе компьютерных шахмат.

6.2.3.4 Кто же сильнее в шахматах?

Активные разговоры о применении глубоких нейронных сетей в шахматных движках начались в 2015 г., когда канадский исследователь Мэтью Лай создал программу Giraffe [1954], роль оценочной функции которой выполняла свёрточная нейронная сеть, обучавшаяся при помощи метода обучения с подкреплением. Тогда научно-популярная пресса разразилась рядом крайне сомнительных материалов, пестревших громкими заявлениями [1955].

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

Строго говоря, Giraffe не была первой шахматной программой, использующей нейронные сети, как и не была первой шахматной программой, использующей обучение с подкреплением (в качестве предшественников Giraffe можно упомянуть такие проекты, как KnightCap [1956], Chessterfield [1957] и Stoofvlees [1958]). В шашках подобная Giraffe-модель была реализована командой американского исследователя Дэвида Фогеля, разработавшей программу Blondie24 [1959], [1960], [1961]. Однако впервые для шахмат были получены весьма обнадёживающие результаты: Giraffe достигла уровня международного мастера (что, в общем-то, не было слишком внушительным результатом для шахматных программ в те годы, но стало очень серьёзным успехом для «неклассической» системы).

Результат, полученный Лаем, был оценён по достоинству, и его пригласили работать в DeepMind, где он стал участником команды, работавшей над AlphaGo Zero, а затем над AlphaZero, по сути занимаясь развитием подхода, который изначально был предложен в Giraffe. Важное отличие AlphaZero от Giraffe заключается в том, что Giraffe в качестве переборного алгоритма использовала не MCTS, а классический для шахмат метод — поиск c основным вариантом (Principal variation search, PVS) (современная разновидность перебора с альфа-бета-отсечением).

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

Хотя проект 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 неизвестна).

Заявленная скорость перебора у AlphaZero была существенно ниже, чем у Stockfish. AlphaZero просматривала порядка 80 000 позиций в секунду (node per second, NPS; формально говоря, речь идёт об узлах переборного дерева в секунду, но каждый узел такого дерева — это шахматная позиция), а Stockfish — 70 млн позиций. Однако такое сравнение нельзя признать в полной мере корректным, поскольку шахматные программы по-разному учитывают просмотренные позиции. При генерации возможных ходов в шахматной программе в некоторых узлах дерева может осуществляться сокращённая генерация — например только ходов со взятием фигур или с шахами. Далее, некоторые сгенерированные ходы могут быть отсеяны и без просмотра получаемой позиции — в результате действия различных эвристик. Включать или не включать отсеянные узлы в подсчёт количества узлов? Общей практики в этом вопросе не существует. Но даже если некий ход и не был отсеян сразу, то для позиции, получившейся на доске после этого хода, не всегда может быть вызвана функция оценки. Если же оценочная функция всё-таки вызвана, то может произойти ускоренная оценка [lazy evaluation]. То есть у современных шахматных программ есть множество нюансов, влияющих на подсчёт количества просматриваемых позиций. Даже программы, у которых алгоритмы перебора очень похожи, могут в качестве выходных данных выводить сильно отличающиеся по количеству просмотренных позиций показатели. Например, программа Rybka показывает значения NPS на порядок ниже, чем Stockfish, хотя архитектурно эти программы очень похожи. В целом и среди «классических» шахматных программ распространён подход, когда скорость перебора приносится в жертву более осмысленной стратегии перебора, при которой программы компенсируют потерю скорости за счёт отсечения большего количества ненужных для анализа позиций. Но, конечно, это целесообразно только тогда, когда приводит в итоге к росту силы игры программы.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*