Как стать автором
Обновить
21
0

Пользователь

Отправить сообщение

Можно ли выложить диссертацию Арлазарова целиком?

Null-move pruning - нулевой ход. Авторы Каиссы не использовали ее рекурсивно, так что скорее всего она дала очень мало. Как использовать null-move рекурсивно придумал только в конце 80х автор Fritz, тогда это и стало его киллер-фичей.

Авторы программы ИТЭФ (Каиссы) придумали и реализовали принцип нулевого хода в 1964-65 годах. Но в тот момент сам принцип понимался иначе и его реализация была далека от той, что сложилась в 90-е годы, когда он начал приносить несомненную пользу.

В первую очередь, изначально принцип нулевого хода был как бы инвертирован относительно нынешней реализации и предполагал не отсечение заведомо худших ходов, как сейчас, а наоборот занимался отбором перспективных ходов, то есть тех ходов, которые требуют обязательного рассмотрения. В настоящее время такая реализация принципа нулевого хода похожа на так называемый "Детектор угроз". Логика следующая:

"Если мы пропустили ход противника и таким образом сделали за себя два хода подряд, и при этом что-либо материально выиграли, то значит нам не хватает всего одного темпа для материальных приобретений. Значит ход перспективный и его следует включить в основное дерево перебора." Программу с таким принципом авторы называли "активной" и она запускалась отдельно.

С возобновлением работ над Каиссой в 1971 году, авторы стали использовать и инвертированный подход, то есть тот же, что используют и сейчас - отсечение заведомо бесперспективных ходов. Логика следующая - "Право хода обычно заметное преимущество в шахматах, а если бы можно было сделать два хода подряд, то мы бы получили огромное преимущество. Но если попробовать действительно сделать за себя два хода подряд, а оценка позиции после этого всё равно останется низкой, значит вариант откровенно плох и его можно отсечь.

Тем не менее авторами Каиссы так и не было найдено, в каком месте программы использовать нулевой ход. Они его ограниченно использовали при сортировке, в Futility и Razoring, в методе аналогий, но не перед основным перебором, где метод так эффективно используется в настоящее время. То есть метод использовался, но место в программе, где его наиболее эффективно применить, ещё было неизвестно.

На протяжении 70-80-х годов метод был как минимум не безвестен, но никому не удавалось так приладить его к существующему коду, чтобы его эффективность стала очевидной.

В конце 80-х нужное место было наконец найдено и получены достоверные тестовые результаты о полезности данного подхода. Об этом в частности писал в своей статье Мюррей Кемпбелл (один из будущих авторов Дип Блю), где приводил конкретные результаты. Упоминал о том же Роберт Хьятт, один из авторов программы Крей Блитц.

Но в то время методу нулевого хода было ещё далеко до той эффективности, которую он имеет сейчас. Сокращение перебора выполнялось только на один ход, а сам метод не был рекурсивным.

На протяжении 90-х информация о новом подходе постепенно распространялась все больше, а реализация метода становилось все лучше, и с середины 90-х нулевой ход вошел в "джентельменский набор" методов всех лучших программ того времени. Теперь сокращение (reduction) глубины выполнялось на три хода (ply), метод стал рекурсивным, появилась верификация, а так же некоторые другие оптимизации.

Именно появление нулевого хода по большей части ответственно за то, что программы на персональных компьютерах смогли сравниться в силе с вычислительными монстрами "старой школы", вроде Дип Блю, у которого не было нулевого хода, а так же с лучшими людьми. С нулевым ходом дерево перебора стало более узким и глубоким, что позволило без больших потерь смотреть позицию гораздо глубже и соответственно играть сильнее.

Quiescence Search - форсированный поиск. А вот это вроде бы придумали именно в Каиссе, и именно эта вундервафля гарантировала им победу.

Quiescence Search предложили ещё Тьюринг и Шеннон. В процессе разработки Каиссы это уже было стандартной техникой.

Killer moves - "служба лучших ходов". Тоже вроде бы фишка авторов Каиссы, хотя могла быть и в других программах.

Да. В 1965 году авторы Каиссы впервые использовали то, что позже они назовут "Службой лучших ходов." С начала 70-х, это в своем роде стал гибрид Killer moves и появившейся много лет спустя History Heuristic.

На западе начало Killer moves традиционно соотносят с работой Барбары Хаберман в конце 60-х и кое-кого ещё (об этом есть в книге Белла, но я уже подзабыл о ком там написано). Ввел в широкий оборот и "монетизировал" название "Киллеры" кажется Джим Джиллогли, со своей программой Tech в 1971 году.

Null-move pruning - нулевой ход. Авторы Каиссы не использовали ее рекурсивно, так что скорее всего она дала очень мало.

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

Пожалуй, история нулевого хода требует отдельного сообщения. Напишу об этом позже.

Opening books - скорее всего было у всех программ, хотя шахматная квалификация советских авторов, возможно, позволила создать книгу лучше по качеству ( но на этом уровне это, пожалуй, лишь косметическая прибавка в силе).

Каиссе, к сожалению, дебютная книга бывало что и мешала. Например, как отмечали авторы программы, на чемпионате мира 1974 года Каисса часто выходила из дебютной книги на позиции, идеи которых не понимала, и почти всегда через несколько ходов оказывалась в неприятном положении. Например в дебютных ходах отдавалась пешка за инициативу, но когда Каисса приступала к игре, она не понимала, что владеет инициативой, но зато хорошо видела, что пешки у неё не хватает ).

«Каисса» — одна из первых прикладных программ, которая показала результат лучше 99,9 % людей-профессионалов в мире.

Что значит эта фраза? Если про силу игры, то играя на уровне 2-го спортивного разряда, Каисса уступала абсолютно всем шахматным профессионалам.

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

Если ход игрока, то почему его должен (не)делать оппонент? Не могу понять такое выражение.

На самом деле принцип нулевого хода заключается в следующем:

Если сделать два хода подряд за себя, пропустив ход противника, и после этого выяснится, что позиция все равно плоха, то первый из ходов можно не рассматривать в нормальном режиме.

Пользуясь этими знаниями, своего рода коллективным опытом поколений живых шахматистов, компьютер избегал серьёзных ошибок на старте.

На чемпионате мира 1974 года Каисса поимела немало проблем в дебюте, отчасти из-за дебютной книги.

Программа провела два матча с читателями газет: сначала — с «Уральским рабочим», а затем — с «Комсомольской правдой».

С читателями газеты Уральский рабочий играла программа ИТЭФ в 1968 году. Впрочем, не суть важно, это все равно Каисса.

Столкновение с человечеством на тот момент закончилось вничью: если у читателей «Уральского рабочего» программа выиграла, то более широкой аудитории «Комсомолки» проиграла.

Читателям газеты Уральский рабочий программа ИТЭФ проиграла.

Причин у этого было две, и первая понятна: ICL 4-70 к тому времени устарел, а оппоненты переходили на более современные и мощные компьютеры.

В чемпионатах 1977 и 1980 годов Каисса играла на IBM 370/168, которая в 3-4 раза быстрее ICL, но впрочем тоже устарела.

козыри «Каиссы», такие, как альфа-бета-отсечение, эвристические механизмы выбора наиболее удачного хода, представление доски в виде числа быстро пошли в народ.

Альфа-бета отсечения к тому времени являлись общеизвестным методом.

В чемпионате мира 1974 года было выделено некоторое время на решение технических проблем (в последующих чемпионатах отменено). Сверх этого лимита всё решалось "за свой счет", то есть за время на обдумывание в партии. На перезагрузку программы часто требовалось разрешение соперника.

Вообще, Каисса в 1974 году прошла буквально по лезвию ножа, поскольку во всех четырех партиях чемпионата мира возникли технические проблемы.

В первой партии время Каиссы отсчитывалось по внутренним часам машины, по московскому времени. Когда наступила полночь и таймер обнулился, Каисса решила что ей добавили 24 часа и стала слишком долго думать. Но к счастью успела поставить мат в отведенное время.

Во второй партии соперник перепутал ходы. Авторы Каиссы согласились вернуть позицию до ошибки, для чего потребовалось вернуться на пару ходов назад. При откате ходов в Каиссе обнаружился баг, но к счастью соперник разрешил перезапустить программу.

В третьей партии соперники опять напутали ходы, но поскольку это выяснилось уже после игры, когда телефонное соединение было разорвано, а машина остановлена, то партия доигрывалась на следующий день. Если бы на следующее утро у Каиссы случился глюк, то ей бы засчитали поражение. Таково было решение судьи.

В четвертой партии Каисса зевнула вилку конем и в какие-то моменты соперник мог поставить мат в несколько ходов. По утверждению автора соперничающей программы, чтобы увидеть мат, той не хватило всего одного хода глубины.

Ботвинник не принимал участия в разработке Каиссы. Кроме того, статья слишком маленькая, чтобы упоминать об альтернативных попытках.

Рейтинги вычисляются на базе результатов тестовых партий в стандартизованных условиях, заданных авторами рейтинга. Для этого им как минимум нужна копия программы. Поскольку АльфаЗеро недоступна, то и в рейтинг-листах её нет. Да и не запустится она на указанных CPU, так как плюсом нужны ещё TPU.

Можно конечно прикинуть рейтинг "на пальцах", с соответствующей для такой операции точностью. Но давайте попробуем. АльфаЗеро набрала примерно 60 % очков против Stockfish 8. Это около 70 пунктов рейтинга. У восьмого Стокфиша рейтинг 3371, значит у Альфы будет около 3440. Но это плюс-минус лапоть, поскольку ещё очень много факторов нужно учесть.

Не программист, но статью просмотрел с интересом. Как я понимаю, программа сейчас находится в положении state of art по состоянию примерно на середину 1970-х. Значит можно начинать улучшать:)

Для сортировки тихих ходов стандартными методами являются "киллеры" и сортировка по истории.

Основным источником силы подобных программ является отсечение 99% заведомо не лучших ходов. Для этого существует множество эффективных методов. В первую очередь нужно пробовать "нулевой ход", "LMR", различные отсечения на предельных глубинах (например Futility, Razoring).

Но лучше, наверное, посмотреть как реализованы эти методы в коде Стокфиша. По сути, бОльшая часть силы этой программы проистекает из небольшого участка кода (шаги с 7 по 18):

https://github.com/official-stockfish/Stockfish/blob/master/src/search.cpp#L776-L1230

По автомату Кемпелена есть ещё книга - Tom Standage "The Turk" (2002).

Может быть вы слышали про Micro-Max? Он, правда, написан под несколько иную задачу — программа должна быть сильнее в пунктах рейтинга, чем число символов в этой программе.
Не вопрос.

1. Выше уже писали про ассемблерную версию Стокфиша размером 120 Кб. Если выкинуть из него код поддержки эндшпильных баз (все равно нет места под сами базы), поддержку UCI-протокола (всё равно не будет универсальной графической оболочки), bench (тестировать будем по-другому), а также возможно кое-что ещё, то размер наверняка можно будет сократить.

2. Стокфишу можно дать в тысячу раз меньше времени, чем топовым движкам середины нулевых, обыгрывавшим тогда супергроссмейстеров, и он не уступит. Так что с силой игры тоже всё будет в порядке.
P.S. Говоря о 100Kb, мы, скорее всего, не учитываем объём библиотек дебютов и эндшпилей.

В принципе они не так уж и важны. В сумме дают около 100 пунктов рейтинга. Что составляет примерно половину разницы в один спортивный разряд. Ощутимо, но не определяюще.
Для сравнения, результаты последней версии Стокфиша против Стокфиша 8, контроль примерно 5 минут на партию:
tests.stockfishchess.org
А вот и для шахмат свежие результаты подоспели — arxiv.org/pdf/1712.01815.pdf
Альфа Зеро против прошлогоднего Стокфиш 8 — 28 побед, 72 ничьи, 0 поражений. Играли по минутке на ход. Железо — 4 TPU против 64-х ядер (хэш 1 Гб).
Совсем не факт. По крайней мере не так-то просто этого добиться.
Хотя у новой технологии не просматривается каких-то принципиальных ограничений сверху, тем не менее современные шахматные программы очень высоко подняли планку уровня игры, которую не так-то просто преодолеть. В первую очередь, обратите внимание на то, что шахматные программы, пользуясь специальными правилами, в среднем рассматривают всего 1,5 вариантов на позицию, из 30-40 возможных. Можно ли превзойти такую высокую эффективность, используя policy? Не факт. Во вторых, value оценивает позицию в тысячи раз медленнее, чем линейная оценочная функция шахматных программ. Миллисекунды вместо долей микросекунд. И хотя value по-видимому будет оценивать качественнее, но зато и пропорционально медленнее. Так что, выигрыш у Стокфиша или Комодо, всё ещё большой вопрос. Хотя, конечно, очень интересно было бы понаблюдать за такими попытками.
Вышеупомянутые источники (в основном второй), это информация непосредственно от авторов АльфаГо. По второй ссылке — выступление Айя Хуанга на недавней конференции на Тайване. Снимки с его слайдов. Информация самая свежая, в то время как публикация в Nature реально написана в марте-апреле. В публикации Nature вы не найдёте информации о количестве блоков у Мастера и число TPU для формирования тренировочного набора позиций Зеро. В вашей цитате приведено число TPU для контрольных игр, а не для тренировки. Информация о количестве блоков в Зеро (20 или 40), тоже опущена. Так и получается, что 20-блочный Мастер сравнивается с 40-блочным Зеро, тогда как Мастера надо сравнивать с графиком на рисунке 3а публикации, а не на рисунке 6.

Выше уже указали как можно оценить число TPU для тренировки. Сам я тоже недавно писал, что статья в Nature содержит немало «замыленных» мест:
kasparovchess.crestbook.com
В этом свете интересно отметить, что у Master и Zero идентичный алгоритм тренировки, идентичная архитектура, а все отличия заключаются в фичах, подаваемых на вход, и том, что Zero не тренируется на играх людей. И выигрывает.

Присутствует ещё одно отличие. Точнее важный нюанс. У Мастера по-видимому было 20 блоков, а значит и сравнивать его нужно с 20-блочным Зеро. Источники:
bestchinanews.com
sports.sina.com.cn

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

Ещё один важный момент. При тренировке, а если конкретно — самоигре, использовалось 2000 TPU (источник см. выше). То есть ресурс для тренировки требуется всё же очень и очень приличный. Но, конечно, если высококачественные партии уже есть (например человеческие), то для оптимизации параметров много ресурсов не надо.
Самое интересное, что когда Гугл опубликовал свою прошлую статью об АльфаГо, и другие ведущие программы тоже перешли на использование policy (но пока без value), то структура Го-программ стала несколько парадоксальной. За оценку позиции в них отвечал перебор (rollout'ы), в то время как ходы рекомендовала оценка (policy). Хотя, казалось бы, логичнее наоборот. Например, как в шахматных программах — отбор перспективных вариантов реализуется средствами поиска, то есть направленного перебора, а оценкой позиции занимается оценочная функция.
Вспомнил, что уже читал что-то подобное. Снял книгу с полки. Да!
Новиков. «Эволюция вселенной». 1990 г. Издательство «Наука». Издание третье, переработанное и дополненное. Страницы 56-65. Параграф 11. «Гравитирует ли вакуум?»
Ну, если сравнить авторов статей, то видно что это совсем другие люди. Совпадает только пара фамилий. Насчет вычислительных мощностей, не знаю, как они их перераспределяют, но проект АльфаГо закрыт ещё в мае. Допускаю, конечно, что может они и не особо торопятся или проект Старкрафт у них далеко не на первом плане. Возможно и какие-то трудности. Разбаловали нас гугловцы.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность