компьютеры и го
Feb. 29th, 2012 09:48 pmПридется, кажется, расстаться еще с одним привычным и уютным знанием о мире: что компьютеры, хоть в шахматы уже давно всех побеждают, очень плохо играют в Го. Оказывается, именно в этой области в последние несколько лет случился рывок вверх (англ.)
Новая программа Zen19 играет на уровне 5-го любительского дана; статья объясняет, что это примерно 100-е место среди всех игроков в Америке. И это во много раз лучше того, как программы играли еще лет 5 назад.
Конечно, еще есть профессиональные даны, и в Японии, Корее и Китае живут, я думаю, много тысяч игроков, играющих лучше этой программы - но огромный прогресс налицо. При этом обидно, что этот прогресс достигнут по сути дела тем же путем, каким компьютеры победили в шахматах - путем слепого бездумного перебора. Только в Го это перебор вероятностный, методом Монте-Карло (в статье это подробнее объясняется).
Было бы намного интереснее, если бы компьютеры учились лучше играть в Го путем "понимания" хотя бы в некотором смысле, путем, похожим на человеческое мышление об этой игре. К сожалению, не похоже, чтобы нынешний чемпион Zen19 включал в себя "глубокие" знания об игре (его исходники недоступны, так что в точности неизвестно). Более того, подход Монте-Карло очень удобно разбивать на параллельные потоки. Это значит, что с ростом вычислительной мощности сила Zen19 скорее всего будет еще расти и расти. И возможно, именно такой подход в итоге победит всех игроков-людей, как это уже произошло в шахматах.
Новая программа Zen19 играет на уровне 5-го любительского дана; статья объясняет, что это примерно 100-е место среди всех игроков в Америке. И это во много раз лучше того, как программы играли еще лет 5 назад.
Конечно, еще есть профессиональные даны, и в Японии, Корее и Китае живут, я думаю, много тысяч игроков, играющих лучше этой программы - но огромный прогресс налицо. При этом обидно, что этот прогресс достигнут по сути дела тем же путем, каким компьютеры победили в шахматах - путем слепого бездумного перебора. Только в Го это перебор вероятностный, методом Монте-Карло (в статье это подробнее объясняется).
Было бы намного интереснее, если бы компьютеры учились лучше играть в Го путем "понимания" хотя бы в некотором смысле, путем, похожим на человеческое мышление об этой игре. К сожалению, не похоже, чтобы нынешний чемпион Zen19 включал в себя "глубокие" знания об игре (его исходники недоступны, так что в точности неизвестно). Более того, подход Монте-Карло очень удобно разбивать на параллельные потоки. Это значит, что с ростом вычислительной мощности сила Zen19 скорее всего будет еще расти и расти. И возможно, именно такой подход в итоге победит всех игроков-людей, как это уже произошло в шахматах.
no subject
Date: 2012-02-29 10:40 pm (UTC)> путем, каким компьютеры победили в шахматах - путем слепого
> бездумного перебора.
Это всё заблуждения :) Скажу, как ведущий российский шахматный программист :)
Шахматы, с т.з. вульгарного перебора — задача чрезвычайно неудачная.
Количество позиций с ростом глубины поиска растёт экспоненциально.
Скажем, если мы возьмём стартовую позицию, то картина получится такая
(первый столбец — глубина перебора, второй — количество позиций):
1 20
2 400
3 8902
4 197281
5 4865609
6 119060324
7 3195901860
8 84998978956
9 2439530234167
10 69352859712417
11 2097651003696806
Современная типовая персоналка в состоянии просматривать примерно 1
миллион позиций в секунду. Значит, для перебора на 11 полуходов из
стартовой позиции потребуется 2097651004 секунды. То есть почти 67
лет. И это стартовая позиция, в которой ветвление сравнительно
небольшое.
Программа, думающая над ходом по 2 минуты, сможет в практической игре
просматривать варианты всего на 5—6 полуходов. Много это или мало? Это
значит, что такая программа сможет решить не любую задачку-трёходовку,
что под силу почти любому рядовому шахматисту. Гроссмейстер же в
практической игре просматривает некоторые варианты на 12—16 полуходов,
что абсолютно недостижимо путём перебора «в лоб».
По этой же причине, увеличение скорости компьютеров не приводит к
существенному выигрышу. Задача полного перебора на 16 полуходов как
была возможной 20 лет назад, так и останется ей очень и очень надолго,
если не навсегда.
Поэтому точка зрения, что компьютер обыгрывает человека за счёт того,
что может быстро перебрать все варианты — ошибочная.
Скажем так, если программу чемпиона мира 15-летней давности запустить
на современном «железе», то её рейтинг вряд ли превысит 2400 пунктов.
То есть прогресс в почти 1000 пунктов произошёл отнюдь не за счёт
ускорения железа, но за счёт совершенствования алгоритмов.
В типичной современной шахматной программе есть:
1. Переборный механизм — но это не тупой перебор в лоб, а довольно
сложная процедура, варьирующая глубину просмотра разных вариантов в
зависимости от самых различных факторов. Скажем, моя программа в
типичном миттельшпиле просматривает варианты на глубину от 5—6 до 50
полуходов. То есть есть варианты, которые будут брошены за
бесперспективностью очень рано, а есть варианты — которые будут
просчитаны чуть ли не до конца игры.
2. Оценочная функция — тоже очень сложный механизм, построенный на
основе статистического анализа. Это функция, которая позволяет оценить
позицию без просмотра вариантов, на основе различных компонентов
позиции и их сочетания. Такая функция учитывает огромное количество
самых разных вещей — соотношение материала, пешечную структуру,
мобильность фигур, атаку на короля и т.д. и т.п. Причём отдельные
позиционные компоненты могут легко перевешивать соотношение материала.
Фактически программа руководствуется оценочной функцией не только для
оценки просматриваемых вариантов, но и для управления самим перебором,
то есть разделение на эти два основных компонента довольно условны.
no subject
Date: 2012-02-29 10:44 pm (UTC)no subject
Date: 2012-02-29 10:59 pm (UTC)Проблема в том, что современные оценочные функции шахматных программ содержат очень много параметров, что затрудняет эффективную подстройку — у функции очень много локальных максимумов, а такой критерий как % выигранных партий против какого-то набора оппонентов (пусть даже в «молниеносные» шахматы) имеет очень и очень плохую сходимость. То есть подстроить параметры «грубо» таким образом можно, но такие оценки оказываются не особо лучше выставленных экспертом.
Тем не менее со второй половины 2000-х наметились явные успехи в этом направлении, связанные с применением генетических алгоритмов (подборка публикаций: http://chessprogramming.wikispaces.com/Automated+Tuning). Большим прорывом стало параллельное создание несколькими разработчиками статистически обоснованных моделей дисбаланса материала на доске (прежде всего, речь идет о программе Rybka Васика Райлиха).
no subject
Date: 2012-02-29 11:02 pm (UTC)http://remi.coulom.free.fr/CLOP/
И моя косноязычная болтовня на тему: http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=431783&t=40964
no subject
Date: 2012-02-29 11:08 pm (UTC)Так уж повелось, что оценку позиции дают в 1/100 долях условной пешки. Через логистическую функцию эта величина связана с вероятностью победы.
Оценочная функция по своей структуре представляет собой полином, грубо говоря. Только если в первых шахматных программах это была просто сумма независимых факторов, то в современной программе учитывается множество взаимных зависимостей параметров.
Ну, скажем, факт наличия проходная белой пешки на e7 в начале игры стоит 0.9 пешки, а в глубоком эндшпиле, ну, скажем, 2.7 пешки. Есть оценка «стадии» игры (от 0 — начало игры до 256 — конец игры).
eval += ((passed_pawn_value_endgame[square] * stage) + (passed_pawn_value_opening[square] * (255 - stage))) / 256;
И т.п.
no subject
Date: 2012-02-29 11:11 pm (UTC)no subject
Date: 2012-02-29 11:15 pm (UTC)Подождём автора журнала.
no subject
Date: 2012-03-01 08:33 am (UTC)no subject
Date: 2012-03-01 02:06 pm (UTC)Зато скоро выйдет версия под Windows Phone :)
no subject
Date: 2012-03-01 04:44 am (UTC)Это, кстати, всё равно приходится дополнять полным перебором мелкой тактики, если я правильно понимаю, но "стратегический перебор" давно известно как вести, да.
no subject
Date: 2012-03-01 04:49 am (UTC)no subject
Date: 2012-03-01 08:14 am (UTC)no subject
Date: 2012-03-01 02:03 pm (UTC)Что интересно, если P != NP, идеальный упорядочиватель для альфа-беты, работающий за полиномиальное время, невозможен :)
no subject
Date: 2012-03-01 08:34 pm (UTC)no subject
Date: 2012-03-01 08:54 pm (UTC)Часть позиций можно оценить с очень высокой степенью достоверности, хотя и не точно. Например, если у одной стороны подавляющее материальное преимущество и неглубокий перебор не находит компенсации у другой стороны, позиция с очень большой степенью вероятности будет оценена верно. Современные движки используют подобные эвристики для управления глубиной перебора в отдельных узлах.
С многопешечными окончаниями проблема такая, что действительно, есть позиции, где любое взятие или движение пешки приводит к позициям с весьма определённой оценкой, но основные линии перебора достаточно длинные и включают в себя длительное маневрирование королями. В современных программах нет специальных алгоритмов для таких ситуаций (хотя я какое-то время довольно много экспериментировал с пешечными эндшпилями и до сих пор в SmarThink очень много оригинальных эвристик для пешечных окончаний и ладейников), т.к. во многом спасает хэш-таблица (transposition/refutation table), в которой хранятся результаты перебора для просмотренных ранее позиций. В эндшпилях одни и те же позиции чаще возникают в результате перестановок ходов, поэтому хэш-таблица в определённой мере эмулирует поведение ретроаналитических алгоритмов.
no subject
Date: 2012-03-01 09:11 pm (UTC)Мы когда-то полностью просчитали 4-фигурные окончания в русских шашках и поддавках, и это казалось невероятно крутым. А теперь вот до чего наука дошла.
Про Шеффера я слышал, но там история такая, что полностью просчитаны не шашки, а draughts (слово ошибочно переводимое в словарях как "шашки"). Фишки те же, доска та же, правила ходов другие.
Про пешечные окончания я имел в виду, что их (предполагаю) проще перебирать не прямым перебором, а обратным и заранее. Т.е. раз все 7-фигурные окончания перебрали от обратного, то с одними пешками, вероятно, можно и 10-пешечные перебрать полностью (кроме случаев, когда пешки одновременно в ферзи проходят).
no subject
Date: 2012-03-01 09:28 pm (UTC)> просчитаны, надо же! А как это устроено -- есть
> какая-то программа, которой можно задать позицию
> и она показывает кто выигрывает и во сколько ходов?
Семифигурных нет в онлайне, есть несколько интерфейсов для шестифигурных. Например: http://www.shredderchess.com/online-chess/online-databases/endgame-database.html (вот тут больше ссылок про эндшпильные ретроаналитические таблицы: http://kirill-kryukov.com/chess/tablebases-online/)
> Про Шеффера я слышал, но там история такая,
> что полностью просчитаны не шашки, а draughts
> (слово ошибочно переводимое в словарях как
> "шашки"). Фишки те же, доска та же, правила
> ходов другие.
Не совсем так. Шеффер решил как раз Checkers (English draughts), которые распространены во всем мире.
В России же обычно играют в русские шашки, которые Шеффер не решал, ясное дело :) С точки зрения комбинаторной сложности они не отличаются. В русских шашках дамки ходят на любое число полей + обычным шашкам можно бить назад.
> можно и 10-пешечные перебрать полностью (кроме
> случаев, когда пешки одновременно в ферзи проходят).
Вот именно поэтому и нельзя. Когда пару пешек превратятся в ферзей вы получите окончание, которое не считается.
А вам для ретроанализа надо, чтобы все терминальные позиции были посчитаны.