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

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

  1. SKY Учаcтник

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Врвсе нет,совершенно иначе.Сети наигрывают как можно большее кол-во партий и потом при игре ассоциируют имеющуюся позицию со своим опытом и исходя уже из этого делают ход.То есть просто вспоминают,а не рассуждают.Рассуждают только в плане "как правильнее вспомнить" ведь невозможно пока сыграть все варианты партий,приходится ассоциировать позиции с теми что были наиграны.
  2. nn Старожил

    • Участник
    • Старожил
    Рег.:
    25.03.2007
    Сообщения:
    1.047
    Симпатии:
    2.602
    Репутация:
    100
    Оффлайн
    Обучением Лилы crem занимался. Вряд ли кто-то здесь обучал NNUE, слишком новая. Но может быть. Вон Igel, продолжение Greko WinPooha, перешел на сеть, может автор сюда тоже заходит. Правда, сеть может кто-то другой обучать.
    —- добавлено: 13 сен 2020 —-
    Это recursive learning. А обучать можно на любом наборе партий.
    Они не запоминают, они обобщают.
  3. SKY Учаcтник

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Можно,но чем больше партий тем сильнее игра.Конечно не запоминают,ассоциируют,запоминать нет ни смысла ни возможности,ведь мало будет совпадений,ведь любое кол-во наигранных партий это капля в сравнении с возможным кол-вом,но все же,сети таки или иначе но обращаются к своему опыту,то есть вспоминают.
  4. Benas Учаcтник

    • Участник
    Рег.:
    09.05.2017
    Сообщения:
    133
    Симпатии:
    26
    Репутация:
    1
    Оффлайн
    Меня интересует само начало - когда программа вообще не умеет играть. Тогда просто получаеться партий, которые как бы и пользы не дают или там даються какие то указания ?

    Или даеться набор партий ?

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

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Задаются правила естественно и просто сеть играет сама с собой все лучше и лучше быстро наращивая силу,потом наступает момент остановки набора силы,тогда нужно дико увеличивать мощности тогда снова идет рост силы.Примерно так.
  6. Benas Учаcтник

    • Участник
    Рег.:
    09.05.2017
    Сообщения:
    133
    Симпатии:
    26
    Репутация:
    1
    Оффлайн
    Но учеба то идет от конечной позиций и дойти до нее чтоб оценить - выигрыш/проигрыш можно в инфинити вариантов, и партий в таких игр неумеющий проти неумеющего дляться может сотни ходов...Как то мне непонятно как так сравнительно быстро проходит обучения ???

    У меня то проблема может и схожая но другая - у меня не ясен результат - примерно как в покере - достиг результата, что противник вложил все деньги - однако примерно в 40% - ты на этом - проиграл...
  7. SKY Учаcтник

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Мелкие сети относительно быстро обучаются на не очень выдающемся железе причем,а Аотфа0 обучалась на очень мощном железе.Где-то попадалась инфа сколько именно партий было сыграно ей при обучении.Видимо параллельно проходит множество партий при небольшом времени на ход.
    —- добавлено: 13 сен 2020 —-
    Benas, Спецы и разработчики тут: https://forchess.ru/showthread.php?t=57&page=410 можно найти много подробных объяснений всего,просто много перелопатить придется.
    nh2008 нравится это.
  8. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.256
    Симпатии:
    2.573
    Репутация:
    90
    Адрес:
    Москва
    Оффлайн
    Я пока не очень вдавался в тему NNUE, но по той скорости, с которой сейчас штампуют движки с его поддержкой, кажется, что там есть какой-то готовый код и сетка, которую берут все кто ни попадя, и Ctrl-C/Ctrl-V в свои движки. Примерно как со стандартным кодом для эндшпильных таблиц Syzygy или Налимова.
    Мне подобные экзерсисы кроме скуки ничего не навевают, поэтому в Греке нет ни единой строчки заимствованного кода. И поэтому же вряд ли она когда-либо будет играть сильнее 2800...
    kozel64a, Комсюк и longinean нравится это.
  9. nn Старожил

    • Участник
    • Старожил
    Рег.:
    25.03.2007
    Сообщения:
    1.047
    Симпатии:
    2.602
    Репутация:
    100
    Оффлайн
    Готовый-то код есть для стокфиш с GPL. Т.е. все с GPL могут брать. Но сети учат свои или в планах учить свои. Да и, наверно, только с RL для своей программы сильнейшая сеть получиться может. Обучение тоже развлечение, но другого сорта.
    С архитектурой сети тоже можно экспериментировать, с вводом.
    WinPooh нравится это.
  10. Benas Учаcтник

    • Участник
    Рег.:
    09.05.2017
    Сообщения:
    133
    Симпатии:
    26
    Репутация:
    1
    Оффлайн
    Спасибо, да там еть интресные рассуждения , примеры, обьяснения....
    Я пытаюсь найти зацепку, как создать алгоритм обучения, в ситуаций когда одно и то же решение - н всегда - лучшее. Это например - один и тот же ход в одинаковых позициях - один раз - хороший, другой - нет.

    Я помню высказывание одного старого проффессионала по игре го. Когда он мне коментировал мою партию, я спрашивал "вот такой ход - хороший или плохой ?" ...

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

    У меня ситуация немножко - похожая - на результат влияет несколько параметров, однако вес каждого из тех параметров либо неясен, либо - понемножку - меняеться...

    Что за алгоритм обучения должен быть в такой ситуаций ?

    Может кто то сталкивалься с такой ситуацией ?
  11. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.256
    Симпатии:
    2.573
    Репутация:
    90
    Адрес:
    Москва
    Оффлайн
    Очевидно, алгоритм обучения должен включать рефлексию. То есть на входе модели должны быть не только признаки позиции, но и собственные её свойства. А эти свойства проще всего получить из опыта собственной же игры. Отсюда приходим к уже известной технике reinforcement learning, использующейся в Alpha Zero, Leela Zero, далее везде...

    Простейший пример: анализируя партии гроссмейстеров, программа пришла к выводу, что изолированная пешка на d4 - это очень хорошо. Она начинает играть партии с самой собой, и во многих из них будет стремиться получить этот самый изолятор. После чего вдруг обнаружит, что её техники не хватает на то, чтобы использовать его преимущества. А недостатки изолятора приведут к плохой статистике. Вот и рефлексия. Если же железо будет помощнее, возможно, атаки с использованием изолятора будут более удачными. То есть мы имеем подстройку модели под того, кто играет - условно, любитель или супергроссмейстер.
  12. Benas Учаcтник

    • Участник
    Рег.:
    09.05.2017
    Сообщения:
    133
    Симпатии:
    26
    Репутация:
    1
    Оффлайн
    Да но тут есть такое что изоляция и там и там обладает одинаковым влиянием на результат, однако , например в покере это не так - то естьскажем та игра которая против игрока А даст +1000 против игрока В даст -1000.
    Я дам пример поточьнее в чем проблема -автомобиль А разогналься по дороге до скорости 100км /час - двигатель отключен и автомобиль проехал 700 метров до остановки.
    Автомобиль В все проделывал так же, однако остановилься за 600 метров , автомобиль С опять все то же только 800 метров...
    Понятно , что на длину проезда влияют - вес автомобиля, покрытие дороги , какие то подшипники, какая то обтекаемость автомобиля , ветер направление и сила , еще что то... словом 5-6 параметров.
    Однако выяснить вес каждого параметра - очень трудно.
    Если есть один параметр - просто - два тоже довольно просто, но когда их >трех появляеться зверские проблемы. ...
    Реально, каждый параметр это как бы слой перцептрона, однако тогда все слои как будто должны принимать тот же сигнал о данных одновременно.

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


    Если количество проб было бы тысячи
  13. SKY Учаcтник

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Только опыт,количество сыгранных партий,а если АВ движок,то уточнение оценки позиции,понимание что лучше,что хуже и почему и в какой ситуации и к чему что приведет,то есть плюс просчет последствий.Я предлагал некоторые параметры программы влияющие на оценку сделать рандомными либо больше рандомными чтобы оценка плавала и жестче фиксировалась после побед.
  14. Benas Учаcтник

    • Участник
    Рег.:
    09.05.2017
    Сообщения:
    133
    Симпатии:
    26
    Репутация:
    1
    Оффлайн
    Я пытаюсь найти кто делал и обучал какую то простую сеть, с несколькими параметрами влияющими на решение, когда вес каждого параметра не ясен и кто провел обучение нейросети успешно.
    Делал управление для дронов, то там неюыло особых проблем хотя и условия менялись. Влияние каждого параметра хоть и менялось но не менялось кардинально
    А вот когда есть параметры которые влияют как бы случайнопри том могут влиять и в плюс и в минус - не совсем понятно как делать...
    А оценка параметров и есть случучайной на старте - в процессе учебы и пытаемься выяснить зависимость результата от оценки...
  15. Zayats Без определенного статуса

    • Ветеран
    • Старожил
    Рег.:
    08.01.2007
    Сообщения:
    2.206
    Симпатии:
    1.296
    Репутация:
    135
    Оффлайн
    В действительности, мощности, необходимые для минимально возможного функционирования нейронной сети просто чудовищны. Сейчас будет небольшой блок воспоминаний.

    В конце 80-ых нейронные сети были невероятно популярны, считалось, что удастся создать единый алгоритм, который будет блестяще играть во все пошаговые стратегии. Эвристики считались шулерским приемом, т.к. привлекают экспертную оценку (типа: ферзь - 9 пешек, лишний материал - хорошо и т.п.), а квалификация эксперта a priori не известна. Однако уже на шахматах универсальный алгоритм оказался на редкость беспомощным, его действия по виду не отличались от генератора случайных ходов. Техника тогда была на 286-ых процессорах, иногда вообще XT. Конечно, 32-битные машины были, но они вытягивали графические игры, так что на бессмысленные развлечения вроде ИИ тратить эти ресурсы казалось кощунством.

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

    P.S. Сейчас день программиста по понятным причинам отмечается 13(12) сентября, а в те времена он падал на 22 апреля, и отнюдь не из-за дня рождения вождя мирового пролетариата. Просто код специальности у параллельной группы, которая мучилась с шахматами на нейронных сетях, был 22.04. Точнее, это "Программное обеспечение автоматизированных систем и вычислительной техники", а конкретно нейронные сети имели, если не ошибаюсь, кодировку 22.04.02.
    Kalvados, Benas, Rom и 2 другим нравится это.
  16. SKY Учаcтник

    • Участник
    Рег.:
    05.11.2018
    Сообщения:
    178
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Некто "Сергио" сам обучает сети для nn SF: https://www.comp.nus.edu.sg/~sergio-v/nnue/
    Но не знаю как с ним связаться.
  17. TopicStarter Overlay

    grizly Учаcтник

    • Участник
    Рег.:
    10.05.2015
    Сообщения:
    146
    Симпатии:
    396
    Репутация:
    14
    Оффлайн
    WinPooh нравится это.

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