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

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

  1. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Я знаю, и сам время от времени участвую, наигрывая новые партии.
    Но пока скорость прогресса существенно медленнее, чем у АГ (в пересчёте на одну партию).
    Только-только начинает старые версии GnuGo обыгрывать.
    NS нравится это.
  2. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А как 0 elo по random play соотносятся с обычным рейтингом? +4000 elo относительно random play это сколько?
  3. просроченый_кмс Старожил

    • Участник
    • Старожил
    Рег.:
    15.02.2010
    Сообщения:
    1.112
    Симпатии:
    167
    Репутация:
    6
    Оффлайн
    ну что, установив последний стокфиш и подвигав фигуры, я понял насчёт хода лф8, у меня 4 ядра меньше чем за пол минуты начинают видеть что крф8 лучше, значит стокфиш работал у них не очень хорошо, и второе в стокфише таки есть ошибки с отсечением ходов, когда он анализирует но не видит почему проигрывает, а как двинешь фигуру проанализирует ход и тут же поймёт, значит все эти сокращения дерева перебора работают не очень хорошо, чем альфазеро и пользовалась.

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

    Даёшь нейросеть в каждый дом)
  4. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    1) У них был старый Stockfish 8;
    2) Это не ошибки, а свойство алгоритма. Отсечения у SF очень качественное, но побочные эффекты имеют место быть, к сожалению.
  5. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Трудно сказать. Обычно нормируют рейтинг так, что у GNU Go 3.7 считается 1800. Так что сейчас по привычной шкале у LZ где-то 1000-1400 очков. А от нуля на графике - 3800.
    Хотя насчёт соотношения рейтинга GNU Go с человеческим тоже неясно. Я ей стабильно 4-5 камней форы даю, а мой рейтинг около 1900. Считать надо из расчёта 100 пунктов на камень форы...

    Вот в этом реддите много обсуждений текущего состояния LZ:
    https://www.reddit.com/r/cbaduk/
    NS нравится это.
  6. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  7. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    NS нравится это.
  8. redhelicopter Старожил

    • Участник
    • Старожил
    Рег.:
    11.11.2014
    Сообщения:
    629
    Симпатии:
    2.219
    Репутация:
    40
    Оффлайн
    Самый слабый ход в партии 33... Bxd4.
  9. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    таблицы, если есть, отключить
  10. zeroalphazero Учаcтник

    • Участник
    Рег.:
    14.12.2017
    Сообщения:
    133
    Симпатии:
    69
    Репутация:
    4
    Оффлайн
    Слабый относительно чего?
    У белых "с раздачи" (по лавинообразной нарастающей для человеческого понимания) инициатива, возможность жертвенной атаки, грандиозная компенсация, необъятный запас прочности (ничья в кармане), всю дорогу прекрасная оценка цепочек-связок фигур и их взаимодействия, удобные тропинки к выигранному эндшпилю, если не поддаться искушению ничьей...
    А у черных? "Врожденная" неизлечимая болезнь — "думая" за противника, не видеть дальше собственного носа, спотыкаясь о вечный шах или вечное преследование (у соперника ничья в кармане, дальше и думать не надо, — он щедрый, поделится), смело, веря в непогрешимость своей оценки идти на убой мчаться за горизонт из проигранного дебюта в проигранный эндшпиль?
    Шаг в направлении пропасти ищите раньше.
  11. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  12. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
  13. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.546
    Симпатии:
    1.265
    Репутация:
    36
    Адрес:
    Киев
    Оффлайн
    Минимум в два. В шахматах основная масса рейтингов лежит в диапазоне 1300 - 2800, читай 1500 пунктов. В го один кю/дан это 100 пунков, есть 20 кю (при этом иногда вводят 30 кю, потому что недостаточно 20), есть девять данов и есть про-даны... Так что минимум 3000 пунктов, максимум 5000.
  14. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
  15. MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Почитав NS и других форумчан, пройдясь по ссылкам на А0, описания Альфа Го для чайников, а также посмотрев описание Монте-Карло (МК) для поиска по дереву,
    прокрутив всё через белковую нейронную сеть (НС), пришёл к заключению
    (конечно, здесь немало людей более сведующих в предмете, которые, надеюсь, делакатно макнут фейсом в анализы, если что не так):

    1. А0 базируется на МК (что, конечно, не изобретение Гугла (Г)). Г сделал существенную техническую модификацию МК, переложив некоторую работу на НС.
    Идея заслуживает внимания, но если оценить её научную ценность, я бы назвал как хороший диплом с рекомендацией в аспирантуру, для кандидатской маловато.
    Детали будут ниже.

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

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

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

    Много это или мало? Каждый решает сам. На выходе, Г, заручишись форой (книга, старая версия, железо, контроль), обыграл самого Вяленого.

    Теперь чуть подробнее о предметной части.

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

    Б. Кратко описание МК.
    У нас есть дерево перебора. Это дерево могло быть унаследовано от прошлого хода, если достигнутая (после ответа соперника) вершина уже исследовалась на предыдущем
    ходу, или мы должны стартовать с нуля, если позиция вообще начальная, или мы ход соперника оценивали как слабый и не считали нужным копать в этом направлении.
    "С нуля" - это просто просто дерево перебора на один полуход (в описаниях встречал 2, но логики необходимости 2 не почуял. Очередь хода? Не выглядит важным).

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

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

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

    В. Где порылась собака?

    Гугл, вместо запуска случайной игры до конца в МК, просто использует в листе оценку, выдаваемую НС. Не бог весть как оригинально.
    Эту идею можно реализовать и без НС.
    Интереснее вопрос, насколько хороша ОФ, выдаваемая НС. Это предмет отдельного исследования.

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

    Как-то так.
    sovaz1997 и Mustitz нравится это.
  16. Jadn Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    10.05.2006
    Сообщения:
    3.626
    Симпатии:
    2.535
    Репутация:
    52
    Оффлайн
    Я подозреваю, что практически любую задачу, решаемую с помощью НС, можно реализовать и без НС. Преимущество нейросетей - в универсальности. Они достаточно хорошо справляются с совершенно разными задачами.
    Гугл всё же не шахматы пытается решить, и не Го, а создаёт ИИ. Думаю, с этой точки зрения универсальный алгоритм, способный самостоятельно освоить и очень хорошо играть в такие разные игры, как шахматы, го и сёги, это очень большой успех.
    Нестор нравится это.
  17. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    В программах на MCTS поиск не является изначально случайным. Это не модификация. Так-же как и в Альфе не рандомная PUCT, а небольшая рандомность внесена искусственно при выборе хода уже после построения дерева, так и в других программах на MCTS/UCT - нет рандомности.
  18. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Обращает на себя внимание то, что ни одной партии ни в Го, ни в сёги от версии AlphaZero продемонстрировано так и не было. От слова вообще. Джентльменам верят на слово!
  19. Rom Старожил

    • Участник
    • Старожил
    Рег.:
    12.02.2012
    Сообщения:
    645
    Симпатии:
    276
    Репутация:
    28
    Оффлайн
    MS,
    Гугл, конечно быстрее всех подсуетился, это да. Но с другой стороны они выполнили объём работы лет на пять вперёд "за нас". Читая мнение специалистов, у меня сложилось впечатление, что основная новинка для них, это новый подход к использованию reinforcement learning. По крайней мере разница между его реализациями в АльфаГоФан и АльфаГоЗеро заметна. Передача способа выбора хода от специальных правил к нейросети, по моему мнению, тоже очень важная и достаточно не очевидная вещь. Особенно для го. Когда можно за долю секунды "интуитивно" выделить три-четыре перспективных варианта из 200 возможных, это имеет огромное значение.

    В пользу Гугла ещё можно сказать, что за настольные игры можно было взяться ещё в 2012 году, но желающих было мало, пока Гугл наглядно не продемонстрировал открывающиеся возможности. Среди методов, которые использовал Зеро, большинство сейчас действительно уже общее место, но не стоит забывать, что ещё три года назад не были известны ни residual-блоки, ни батч-нормализация, ни инициализация Ксавье для полулинейной функции активации. Существовала только L2 регуляризация.
    N1mTzo нравится это.
  20. Rom Старожил

    • Участник
    • Старожил
    Рег.:
    12.02.2012
    Сообщения:
    645
    Симпатии:
    276
    Репутация:
    28
    Оффлайн
    Ха-ха, вы не поверите, но самая первая работа в этом направлении как раз была дипломной :) :
    Christopher Clark. Deep Go, 2014
  21. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Не подскажете, кстати, где про все это можно прочитать более-менее человеческим языком? А то мои знания теории нейросетей пока ограничиваются вводным ML-курсом от Andrew Ng, пройденным на Курсере 5 лет назад.
  22. Rom Старожил

    • Участник
    • Старожил
    Рег.:
    12.02.2012
    Сообщения:
    645
    Симпатии:
    276
    Репутация:
    28
    Оффлайн
    https://habrahabr.ru/company/wunderfund/blog/315476/
    https://habrahabr.ru/post/303196/
    https://habrahabr.ru/company/mailru/blog/311706/
    https://logic.pdmi.ras.ru/~sergey/teaching/dl2017/
    N1mTzo и WinPooh нравится это.
  23. zeroalphazero Учаcтник

    • Участник
    Рег.:
    14.12.2017
    Сообщения:
    133
    Симпатии:
    69
    Репутация:
    4
    Оффлайн
    Покадрово несколько закадровых красот, проявившихся в анализе:




    Есть желающие защищать Stockfish'ем такие позиции?:chess:
  24. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  25. zeroalphazero Учаcтник

    • Участник
    Рег.:
    14.12.2017
    Сообщения:
    133
    Симпатии:
    69
    Репутация:
    4
    Оффлайн
    Сказочный сон золотой вяленой рыбки:

    23... Kg7!? 24. hxg5 Nd7!? 25. Qh4?! fxg5! 26. Bxg5 Bxg5
    27. Qxg5+ Kh8 28. Rxd7 Bxd7 29. Re7 Qxc3 30. Rxd7 Qa1+ 31. Kh2 Rxf2

    По проселочной дороге шел я молча,
    И была она пуста и длинна,
    Только грянули гармошки, что есть мочи,
    И руками развела тишина...
    :applaus::bayan:

    Так-то уж "большая дорога" куда приятнее для черных!
  26. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    В человеческом рейтинге (что EFG, что РФГ) первый дан обычно привязан к рейтингу 2100, соответственно 5 кю - это 1600.
  27. zeroalphazero Учаcтник

    • Участник
    Рег.:
    14.12.2017
    Сообщения:
    133
    Симпатии:
    69
    Репутация:
    4
    Оффлайн
    AlphaZero — Stockfish 8
    (позиция из анализа)

    Интересно, что бы тут могли наковырять белые для притяжения к их игре широких масс?
    Ну или вот в такой:
  28. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Тут у программ рейтинг честный, привязан к реальному рейтингу Ke Jie - 3640
    А кю/дан - с KGS. Завышенный.
  29. MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Думаю, никто отрицает, что результат есть. Вопрос в том, чтобы правильно его оценить.

    Я бы не назвал идею передачи выбора хода нейросети неочевидной. Почему бы не попробовать? Проблема в том. что сеть для достаточно сложной задачи должна быть огромной, и не факт,
    что обучение даст по-настоящему хороший результат. Здорово, что огромную сеть оказалось возможно быстро обучить
    Качество ОФ на НС мы аккуратно оценить не можем, но, определённо, получилось что-то достаточно приличное.
  30. Мобуту спаситель нации

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    15.02.2006
    Сообщения:
    6.916
    Симпатии:
    3.969
    Репутация:
    141
    Адрес:
    Заир
    Оффлайн
    Я думаю, адвансер может усилить игру Стокфиша в новоиндийской партии с жертвой фигуры. Причина поражения Стокфиша: его ладья a8 и конь b8 были вне игры. Оценки Стокфиша для таких позиций ненадёжны, т.к. это обстоятельство сказывается нескоро, где-то за горизонтом расчёта. Усилить игру Стокфиша = развить коня b8 так, чтобы оценка не испортилась. После этого оценкам проги можно верить, т.к. долгосрочный, непонятный ей момент исчезает. Если она при развитом коне поставит оценку 0.00, то это действительно 0.00.

    Первый напрашивающийся момент, когда можно было развить коня:

    Предлагаю 23... Nd7(!) вместо исполненного в партии 23... b5(?). Глубоко не анализировал, но сомневаюсь, что за белых тут что-то найдётся. У них будет несколько пешек за фигуру, но у чёрных всё развито, такие позиции топ-движки оценивают трезво. Кто-то может найти тут перевес за белых против Стокфиша на своём компе, которому даётся, скажем, полчаса на партию?

    Может быть, коня можно было развить позже, хотя я навскидку не вижу где. Тогда, наверное, ошибка с 23-го хода перекочёвывает туда.

    Смущает 24. Be4 - выйдет ли там конь? Или получится как в партии, когда Стокфиш ставит нолики, но через десяток ходов обнаруживает, что ему "почему-то" плохеет? Хотя, возможно, и обойдётся - глубоко не копал. Тогда это ещё один способ удержать партию.
    Undying, zeroalphazero и Комсюк нравится это.
  31. redhelicopter Старожил

    • Участник
    • Старожил
    Рег.:
    11.11.2014
    Сообщения:
    629
    Симпатии:
    2.219
    Репутация:
    40
    Оффлайн
    Очень интересно было бы посмотреть на ничейные партии. Во всех ли партиях SF отбивался или все-таки А0 приходилось кое-где спасаться?
  32. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Забавно было бы, если везде))
  33. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Заблокирован
    • Старожил
    Рег.:
    17.07.2011
    Сообщения:
    19.230
    Симпатии:
    23.509
    Репутация:
    1.263
    Нарушения:
    31
    Оффлайн
    Стокфиш так сильно отбивался, что Альфа не во всех партиях спаслась...
  34. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Есть достаточно стандартная UCT формула. в которой вес каждого хода равен
    Eval(move)+c*UCT_Value(move)
    Это не значит что всегда будет делаться ход с большим Eval(move) - оценкой после хода, это значит что при прочих равных он будет сделан когда в узле появились в первый раз, и будет делаться чаще остальных при одинаковой статистике.
    Естественно для получения "хорошего" Eval , и можно использовать, и давно уже используют нейросети. И в этом решении нейросеть напрямую участвует в выборе хода.

    В Альфе, грубо говоря - другая формула. PUCT
    Eval(move)+c*P(move)*UCT_Value(move)
    где P - вероятность того что ход в этой позиции сильнейший. И в этом решении нейросеть напрямую участвует в выборе хода. И в этом решении не всегда в позиции будет выполняться ход с большим Eval(move) и/или P(move).

    То есть нейросеть и раньше, до Альфы, участвовала в выборе хода.
    Eval(move) - уже давно считают с использованием нейросетей. Использование нейросетей для получения P(move) - возможно впервые появилось в Альфе.
  35. zeroalphazero Учаcтник

    • Участник
    Рег.:
    14.12.2017
    Сообщения:
    133
    Симпатии:
    69
    Репутация:
    4
    Оффлайн
    Спасибо за постик!
    Как приятно осознавать, что не одинок во Вселенной!..
    Я, конечно, не о глубине борозды и не о возрасте коней!
    Рекомендую пройтись по моим выкладкам здесь на Форуме, многие заданные Вами вопросы прояснятся-отпадут.
    Полный анализ партии публиковать не буду, если только совсем уж меня не перемкнет после очередной (шквала, правда, почему-то не наблюдалось) текстовой и/или ютубовской халтуры какого-нибудь очередного (имя им легион) мэтра.
    Лень стало представителям нашего рода своими мозгами думать!

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