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

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

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

    • Заслуженный
    • Ветеран
    Рег.:
    17.07.2011
    Сообщения:
    13.966
    Симпатии:
    16.024
    Репутация:
    1.031
    Нарушения:
    23
    Оффлайн
    Конечно будет :)
    Но в афишированном матче перевеса нет, я собственно об этом
  2. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Если на той-же технике на которой был сыгран обсуждаемый матч - нормально настроить стока, просто дать ему хорошую ДБ, то он матч выиграет. Неужели с этим кто-то спорит?
  3. roman57 Учаcтник

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

    • Начинающий
    Рег.:
    12.12.2017
    Сообщения:
    2
    Симпатии:
    5
    Репутация:
    0
    Оффлайн
  5. Arseniy.915 Новичок

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

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    647
    Симпатии:
    117
    Репутация:
    3
    Оффлайн
    Пока запущу 60+0.6 Stockfish - Stockfish с Celebrium 1000 партий (6 партий параллельно).
  7. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    307
    Симпатии:
    64
    Репутация:
    0
    Оффлайн
    Возвращаюсь к партии


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

    • Заслуженный
    • Ветеран
    Рег.:
    17.07.2011
    Сообщения:
    13.966
    Симпатии:
    16.024
    Репутация:
    1.031
    Нарушения:
    23
    Оффлайн
    Можно сделать главный вывод - Сток упорно ползёт на кладбище идёт во французскую
    Это не дебют плохой, а плохой дебют для движковых матчей чёрными с короткой книгой
    Правда, тут один альфафан смеялся над этой заманухой, но он покинул нас... и возразить не сможет :)
    sovaz1997 нравится это.
  9. roman57 Учаcтник

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Есть. Её нейросеть и есть ОФ, которая в том числе выдает оценку позиции. И поэтому как раз очень интересно, в какую силу она будет играть без перебора, или на альфа-бете.
  18. zeroalphazero Учаcтник

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

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    307
    Симпатии:
    64
    Репутация:
    0
    Оффлайн
    Можете показать позицию на доске?
  20. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    Рег.:
    17.07.2011
    Сообщения:
    13.966
    Симпатии:
    16.024
    Репутация:
    1.031
    Нарушения:
    23
    Оффлайн
  21. ШахматыЭтоДиагноз Учаcтник

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

    • Участник
    • Старожил
    Рег.:
    25.03.2007
    Сообщения:
    945
    Симпатии:
    2.412
    Репутация:
    96
    Оффлайн
    Появилась статья, как кажется, пока что единственная в крупном технологическом СМИ 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. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    Рег.:
    17.07.2011
    Сообщения:
    13.966
    Симпатии:
    16.024
    Репутация:
    1.031
    Нарушения:
    23
    Оффлайн
    и делаете глубоко идущие выводы на глубине 20?

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

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

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

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

    • Заслуженный
    • Ветеран
    Рег.:
    17.07.2011
    Сообщения:
    13.966
    Симпатии:
    16.024
    Репутация:
    1.031
    Нарушения:
    23
    Оффлайн
    lav.jpg
    N1mTzo и Нестор нравится это.
  27. Baron Учаcтник

    • Участник
    Рег.:
    08.02.2008
    Сообщения:
    2.343
    Симпатии:
    233
    Репутация:
    11
    Оффлайн
    Хотелось бы перевод. Хотя бы основные мысли из этой статьи.
  28. NS Нефёдов Сергей

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

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

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

    • Участник
    Рег.:
    31.03.2017
    Сообщения:
    1.716
    Симпатии:
    2.170
    Репутация:
    120
    Оффлайн
    А что она тогда считала со скоростью 80 килонодесов?
  32. Undying Учаcтник

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

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

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

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    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 Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    138
    Симпатии:
    200
    Репутация:
    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 играют партии до конца, и исходя из результата партии обновляют оценки всех ходов партии, но там вообще нету ветвления.
    Любитель_, Challenger Spy, N1mTzo и ещё 1-му нравится это.

Поделиться этой страницей