AlphaZero. Нейронная сеть играет в шахматы

Тема в разделе "Машинное отделение", создана пользователем grizly, 6 дек 2017.

  1. Комсюк
    Оффлайн

    Комсюк народный модератор баннер

    Репутация:
    1.266
    Конечно будет :)
    Но в афишированном матче перевеса нет, я собственно об этом
     
  2. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Если на той-же технике на которой был сыгран обсуждаемый матч - нормально настроить стока, просто дать ему хорошую ДБ, то он матч выиграет. Неужели с этим кто-то спорит?
     
  3. roman57
    Оффлайн

    roman57 Учаcтник

    Репутация:
    1
    Я давно играю с программами , нейросети у меня не сформировалось , но один устрйчивый нейровариант сформировался , то есть - есть дебютная позиция после 12-го хода , именно к этой позиции я стараюсь выйти при игре с программой из разных дебютов , так вот сама позиция позволяет создавать успешные атаки против разных движков , вероятно и в нейросети А0 нечто подобное - формируются определённые плюсовые точки на глубине друг от друга ходов в 20 и система автоматически ведет игру не отклоняясь от этих точек , поэтому ей и не нужно просчитывать каждый ход , например я в своей системе не думаю до 12-го хода а точно знаю что мне нужно , причём много атакующих продолжений и после 12-го хода я хорошо помню , забавная картина случалось с фртц14 - при игре в блиц он после 12-го хода вероятно высчитал неудачи в своей позиции и просто остановил часы и завесил мне планшет или например Арена 3,5,1 под stf8 в блице пошла на ничью после третьего хода , соответственно перед этим проиграв несколько раз именно из подобного дебюта
     
  4. альфазеры
    Оффлайн

    альфазеры Начинающий

    Репутация:
    0
  5. Arseniy.915
    Оффлайн

    Arseniy.915 Новичок

    Репутация:
    4
    Во время обеденного перерыва запускал мини матч, сток8 и новый, вроде тот на что давал ссылку СЮ, 10 партий новый белыми контроль 2+2. Новый со старой NarrowBook восьмой без книги. После е4 он стабильно шел во французскую и как результат +4 =4 в ней в пользу нового. Два раза он начал партию с д4 и там ничьи. Запустил чисто для своего интереса, ни на что не намекаю и не претендую.
     
    Challenger Spy нравится это.
  6. sovaz1997
    Оффлайн

    sovaz1997 Учаcтник

    Репутация:
    3
    Пока запущу 60+0.6 Stockfish - Stockfish с Celebrium 1000 партий (6 партий параллельно).
     
  7. hornet
    Оффлайн

    hornet Учаcтник

    Репутация:
    490
    Возвращаюсь к партии


    Почему все движки (и сток, и комодо, и гудини, и всевозможные фрицы и стрелки и т. д.) считают 18-й ход чёрных сильнейшим (помимо того, что он угрожает фигуре на h6)? Правда на большую глубину (максимум 20 полуходов) не ставил ни один движок... Либо этот ход сильнейший, либо это общий дефект алгоритма всех шахматных прог (до создания А0).:to_become_senile:
     
  8. Комсюк
    Оффлайн

    Комсюк народный модератор баннер

    Репутация:
    1.266
    Можно сделать главный вывод - Сток упорно ползёт на кладбище идёт во французскую
    Это не дебют плохой, а плохой дебют для движковых матчей чёрными с короткой книгой
    Правда, тут один альфафан смеялся над этой заманухой, но он покинул нас... и возразить не сможет :)
     
    sovaz1997 нравится это.
  9. roman57
    Оффлайн

    roman57 Учаcтник

    Репутация:
    1
    Я конечно дилетант в программировании , но у меня есть мнение , например я играю с движком и он совершает ошибку обычно после жертвы - он её просто не видит при прямом просчёте вариантов , но при анализе после игры он отталкиваемся от своего отрицательного варианта и всё прекрасно видит , то есть если написать программу с контрольными точками выигрышных позиций и движок будет просто проводить анализ и искать короткий путь к определённой тактике ( а не высчитывать каждую комбинацию ) то и времени он потратит меньше и результат будет . Именно в этой игре примерно так и было , то есть А0 выбрал конкретную тактику атаки и шел к ней с самого дебюта , даже несмотря на потери , в принципе все так играют ( запоминают тактику и пытаются добраться до неё )
     
  10. sovaz1997
    Оффлайн

    sovaz1997 Учаcтник

    Репутация:
    3
    Alpha Zero мыслит стратегически, в общем)
     
  11. MS
    Оффлайн

    MS Михаил Семионенков

    Репутация:
    175
    По поводу подхода позволю себе немного поспекулировать (сразу оговорюсь, - современное состояние нейронных сетей и конкретно А0 я не знаю, базируюсь на изучении перцептрона лет 40 тому, ещё в студенчестве. Полагаю, что подобно тому. как современные компы не ушли от бородатой концепции фон Неймана, современные нейронные сети достаточно близки к перцептрону).

    Идея нейронной сети довольно своеобразна: это ориентированный граф, где в каждой вершине стоит число, а все пути сходятся в конечную точку.
    Исходные вершины (начало пути) - это "датчики", передающие данные об объекте. Когда данные об объекте поступают на вход (в случае шахмат, это, очевидно, текущая позиция и информация о праве на рокировку и взятие на проходе), то просто начинается тупой счёт: показатель с "датчика" умножается на кэф исходной вершины, результат передаётся по ребру графа, следуюшая вершина суммирует то, что к ней пришло, умножает на свой кэф и передаёт дальше, и так пока вся вычислительная лавина не выльется в конечной точке.
    Результат в конечной точке и есть решение (ответ) задачи.
    Удивительным образом эта схема позволяет решать интересные сложные задачи, например, распознавание образов.
    Чтобы задача решалась хорошо, сеть сначала надо "научить", т.е. подобрать такие числа в вершинах графа, чтобы результат в конечной точке всегда (или достаточно часто) получался правильный.
    Как сеть обучали - достоверно не знаю: было ли это честое самообучение или катализатором процесса были сыгранные партии, консультации спецов - не могу сказать.

    Результатом обучения стал набор чисел в сети, и процедура вычисления по сети суть ОФ.
    Думаю, А0 играет с глубиной перебора 1 полуход, т.е. перебирает все допустимые ходы, и каждому выдаёт оценку, далее выбирает.
    Это эквивалент шахматного идиота-гения, который непостижимым образом правильно (близко к идеалу) оценивает позиции, благодаря чему почти не считает ходы.

    Какой подход выиграл, какой проиграл?
    Если подходить узкоспециально, с шахматной точки зрения, А0 битву, конечно, не выиграл, по крайней мере, не доказал, что выиграл: параметры эксперимента были подкручены так, чтобы подрезать традиционной программе возможности. Думаю, создатели понимали, что в силу господа бога А0 не играет (время обучения роли не играет - обучение с какого-то момента начинает буксовать, и улучшить результат можно только увеличением размера сети). На текущем размере сети щахматы не решены.

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

    На абсолютно тупом калькуляторе, владеющем двумя операциями (сложить и умножить) за очень короткий срок реализована ОФ выдающегося качества.
     
  12. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Нет, в A0 - MCTS - переборные алгоритмы, при которых каждая ветвь перебора идет от текущей позиции до конца партии. И в каждой новой ветви ход который будет сделан в каждом узле выбирается путем анализа статистики собранной предыдущими ветвями, ну и значений выдаваемых ОФ.
    Не на один полуход она считает, а до конца партии. При этом из-за медленной ОФ (из-за нейронной сети) - скорость перебора заметно меньше чем у Стокфиша.
    —- добавлено: 14 дек 2017 —-
    И, кстати, Эндшпильные таблицы она ровно так-же может использовать, как и классические программы на Альфа-бете.
     
    MS нравится это.
  13. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Кстати, в Го существуют нейросетевые программы, "считающие на один полуход". В первой альфагошной статье упоминалась такая версия, только за счёт нейросетевой оценки игравшая на первый дан. В шахматах это соответствует рейтингу 2100, т.е. КМС. Ну что, кто из программистов напишет шахматную прогу, которая при глубине 1 будет давать силу КМС-а? :)
     
    Undying нравится это.
  14. Gridnev
    Оффлайн

    Gridnev Старожил

    Репутация:
    151
    Мне именно так казалось, у нее же нет прописанной ОФ, и она не может изначально считать на ход-два вперед, так как отсутсвует понятие хорошо-плохо. Она доигрывает до конца и оценивает ветку по результату. Далее оценочная функция формируется по статистике. Единственное, не понимаю, как быть с ничьими, похоже ветки с числом ходов больше какого-то порога считаются ничейными. Порог может расти по мере обучения.
     
  15. nn
    Оффлайн

    nn Заблокирован

    Репутация:
    124
    Ананд как раз упоминает этот момент в интервью выше (около 4мин). И он как раз не понимает, что именно AlphaZero видит и почему идет на этот вариант без фигуры: просчитывает ли до конца или из общих соображений.
     
  16. sovaz1997
    Оффлайн

    sovaz1997 Учаcтник

    Репутация:
    3
    Alpha Zero выбирает более перспективные ветки с помощью нейронной сети и проигрывает партии в той ветке, собирая статистику. Алгоритм MCTS, но выбор ветки с помощью нейросеть. Что-то вроде этого.
     
  17. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Есть. Её нейросеть и есть ОФ, которая в том числе выдает оценку позиции. И поэтому как раз очень интересно, в какую силу она будет играть без перебора, или на альфа-бете.
     
  18. zeroalphazero
    Оффлайн

    zeroalphazero Учаcтник

    Репутация:
    4
    В качестве грубого примера: r1bqk1nr/pp4pp/1bn1pP2/3p4/3P4/2P2N2/P4PPP/RNBQKB1R b KQkq - 0 8
    Сколько лет понадобится SF, чтобы оценить эту простенькую позицию и выбрать из всего-то трех разумных ходов-кандидатов лучшее продолжение, если @0 каким-либо образом туда затащит?:dash:
     
  19. hornet
    Оффлайн

    hornet Учаcтник

    Репутация:
    490
    Можете показать позицию на доске?
     
  20. Комсюк
    Оффлайн

    Комсюк народный модератор баннер

    Репутация:
    1.266
  21. ШахматыЭтоДиагноз
    Оффлайн

    ШахматыЭтоДиагноз Учаcтник

    Репутация:
    208
    Я думаю что А0 на входе дали правила игры и прикрутили оценочную функцию, наработанную предыдущими версиями. Тогда это многое объясняет, но обучение получается было никак не с нуля.
     
    Challenger Spy нравится это.
  22. nn
    Оффлайн

    nn Заблокирован

    Репутация:
    124
    Появилась статья, как кажется, пока что единственная в крупном технологическом СМИ The Register (UK), утверждающая, что условия матча были несколько несправедливы. The Guardian и BBC ранее написали о самом матче только через несколько дней после поднятого шума, посмотрим или об этом тоже напишут.

    Checkmate: DeepMind's AlphaZero AI clobbered rival chess app on non-level playing, er, board
    Good effort but the games were seemingly rigged
     
    N1mTzo, Gridnev, MS и ещё 1-му нравится это.
  23. Комсюк
    Оффлайн

    Комсюк народный модератор баннер

    Репутация:
    1.266
    и делаете глубоко идущие выводы на глубине 20?

    это дефект таких тестов :)
    Поставьте комп на полчаса, а потом нам расскажете

    З.Ы. что думает А0 об этом ходе мы не узнаем, этот ход делал Стокфиш
    А вот следующий ход Альфы Ле1, кажущийся рептилоидным откровением, Вяленый тоже найдёт с нулевой оценкой, если ему дать побольше времени
     
  24. Undying
    Оффлайн

    Undying Учаcтник

    Репутация:
    15
    Явно из общих соображений. Альфа Зеро считает всего 80 тысяч позиций в секунду, в минуту это 5 миллионов. Даже если рассматривать всего 2 хода-кандидата на каждом ходу, то это глубина лишь 22 полухода. Стокфиш очевидно намного глубже все просчитал, но это ему не помогло.
     
  25. sovaz1997
    Оффлайн

    sovaz1997 Учаcтник

    Репутация:
    3
    Undying, AZ, возможно, намного глубже считает, т. к. выбирает лучшие из ходов-кандидатов, и эти 22 полухода более реальны, чем в других движках.
     
  26. Комсюк
    Оффлайн

    Комсюк народный модератор баннер

    Репутация:
    1.266
    lav.jpg
     
    N1mTzo и Нестор нравится это.
  27. Baron
    Оффлайн

    Baron Учаcтник

    Репутация:
    11
    Хотелось бы перевод. Хотя бы основные мысли из этой статьи.
     
  28. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Пошли на очередной круг :)
    1. Альфа не факт что меньше (хуже) считает, так как часть расчетов косвенно берет на себя нейронная сеть. В данном случае нельзя так прямо сравнивать. И никто пока не продемонстрировал на конкретных примерах из партий перевес Стока в счете.
    2. Стокфиш не мог в принципе глубже просчитать, так как MCTS в отличии от альфа-беты - продлевает все ветви до конца партии, до результата. То есть MCTS считает так глубоко, что глубже просто невозможно.
     
    Любитель_, Нестор и sovaz1997 нравится это.
  29. ШахматыЭтоДиагноз
    Оффлайн

    ШахматыЭтоДиагноз Учаcтник

    Репутация:
    208
    Я так понимаю, что Стокфиш считает вширь, он по другому просто не может. AZ считает вглубь, сразу отсекая неперспективные варианты, поэтому даже 80 000 поз в секунду ей хватает чтобы досчитать до мата. Типа "туннельный метод".
     
  30. Undying
    Оффлайн

    Undying Учаcтник

    Репутация:
    15
    В чем смысл смешивать счет и нейронную сеть? Чтобы потом понять ничего невозможно было? Нейронная сеть это оценка позиции и выбор ходов кандидатов. Причем здесь счет? Выше в теме был пример из го. Когда счета по сути вообще нет (1 полуход), а силы игры кмс.
    Выше в теме Михаил Семионенков принципиально описал работу нейронной сети. Где вы там видите продление ветки до конца партии? Нейронная сеть оценку выдает, а не конкретные варианты и получающиеся в них позиции.
     
  31. ШахматыЭтоДиагноз
    Оффлайн

    ШахматыЭтоДиагноз Учаcтник

    Репутация:
    208
    А что она тогда считала со скоростью 80 килонодесов?
     
  32. Undying
    Оффлайн

    Undying Учаcтник

    Репутация:
    15
    Считала не нейронная сеть, считал модуль ответственный за счет. Грубо говоря этот модуль брал исходную позицию, загонял ее в нейронную сеть, получал оценку и ходы-кандидаты. Затем делал ход-кандидат и получившуюся позицию снова загонял в нейронную сеть. И так далее. Потом выбирал вариант с лучшей оценкой. Учитывая, что за минуту счетный модуль перебирал всего 5 миллионов позиций, глубина расчета была невелика, полуходов до 15 по идее.

    Сам по себе счетный модуль Альфа Зеро от счетного модуля Стокфиша мало отличается. Ключевое отличие, что у Альфа Зеро позицию оценивает нейронная сеть, а у Стокфиша обычный алгоритм. И оказалось, что нейронная сеть настолько лучше оценивает, что считая на 15 полуходов Альфа Зеро играет сильнее, чем Стокфиш считающий на 30-40 полуходов.
     
    Последнее редактирование: 14 дек 2017
    Любитель_ и Gridnev нравится это.
  33. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Вы сейчас описали нечто похожее на альфа-бету, еще раз повторюсь - MCTS, который использует Альфа-Зеро - работает совсем не так.
    Нет там никакого расчета на 15 полуходов, в каждой ветви перебора ходы исполняются до конца партии.
    То есть mcts это прогон большого количества партий, где в каждой партии выбираются не лучшие ходы, а ходы которые грубо говоря минимизируют ошибку в оценке (МО результата) либо ошибку в выборе лучшего хода. Не было тестов, сильнее ли играет Альфа считая на 15 полуходов чем Сток считающий на 40. Но ИМХО не видно ни малейшего основания для таких утверждений.
     
    Любитель_, Challenger Spy, N1mTzo и 3 другим нравится это.
  34. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Нейронная сеть не считает варианты. Считает варианты MCTS. Переборные алгоритмы Альфа-Зеро.
    https://arxiv.org/pdf/1712.01815.pdf
    На всякий случай, чтоб вы не подумали что гросс-переписочник вдруг начал выдумывать принципы игры шахматных программ - я автор шахматной программы.
    http://chessprogramming.wikispaces.com/Sergei+Nefedov
    http://chessprogramming.wikispaces.com/Anechka
    Ну и знаю что такое MCTS, так как автор программы использующей MCTS (UCT + RAVE) в Го-подобную игру Symple
    http://archive.codecup.nl/2013/49/rules_symple.html
    http://archive.codecup.nl/2013/27/competitionlist.html
    То есть примерно представляю о чем пишу. И как работает Альфа-Зеро.
     
    Любитель_, Mustitz, Challenger Spy и 5 другим нравится это.
  35. crem
    Оффлайн

    crem Учаcтник

    Репутация:
    14
    Нет, в данном случае это не так.
    Действительно, классический метод MCTS включает шаг "simulation", в котором полученный узел доигрывается до конца:
    https://en.wikipedia.org/wiki/Monte_Carlo_tree_search#Principle_of_operation

    Однако в AlphaZero этот шаг заменён на "evaluation", где вместо того, чтобы играть партию до конца, используется оценка в value network, см рисунок 3 в:
    https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf

    UPD: Внимательней перечитал, evaluation включает в себя и оценку в value network, и rollout (симуляцию игры до конца), так что я не прав.

    В Alphazero метод монте-карло берёт текущее дерево вариантов, выбирает, какой из узлов дерева продлить (при помощи нейронной сети policy network), и продляет этот узел на один полуход. Затем оценивает получившуюся позицию при помощи value network, пересчитывает вероятности, и всё повторяется заново (на следующем шаге он может продлить совсем другую ветку).

    В результате получается примерно такое же дерево вариантов, как в классических движках, но гораздо более неравномерное (для некоторых ходов, возможно даже и сильных, глубина будет низка, потому что policy network решает что value network выдаёт ему адекватную оценку), а для других возможно и очень глубокое. Возможно и до конца партии, но такое скорее всего редко.

    Value network тоже в принципе очень похожа на оценочную функцию классических движков, но "видит" гораздо больше. (И выводит не одно число "перевес в сантипешках", а три вероятности: победы, поражения и ничьей.)

    А вот в процессе обучения alphazero играют партии до конца, и исходя из результата партии обновляют оценки всех ходов партии, но там вообще нету ветвления.
     
    Последнее редактирование: 14 дек 2017
    Любитель_, Challenger Spy, N1mTzo и ещё 1-му нравится это.