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

Discussion in 'Машинное отделение' started by grizly, 6 Dec 2017.

  1. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    По моему он натурально глючит, вчера работал более менее (но не без проблем!) - сегодня тратит на ход ~10 секунд а реально на обдумывание меньше секунды.

    Кажется я понял это изза того что я прописал ему рейтинг(ChessMaster).
  2. Kesandr Учаcтник

    • Участник
    Member Since:
    02.09.2008
    Message Count:
    464
    Likes Received:
    35
    Репутация:
    11
    Оффлайн
    А что откривать и где указать имя нейронки и какое оно должно бить? Бо я просто нейронку закинул у папку там где все файли. Имя нейронки после распаковки много безсмисленних литер.
  3. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Как подключить файл нейронки я писал выше:



    Поповоду имени,файл нейронки можно переименовать и после ключа -w указать естественно новое имя.
    —- добавлено: 4 Apr 2018 —-
    Посмотрел сейчас Arenu: Engines->Manage->Details->General->Command Line Parametrs
  4. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Сделал турнир LcZero(Нейросеть 83) в ChessMaster, cоперниками были персонажи с рейтингами от 1600 до 2200, играла на 8-ядрах(i7 Skylake), набрала 4 из 5-ти очков, 1-е место(делит с двумя другими), по рейтингу третья 1804(Первое место 1847).
  5. roman57 Учаcтник

    • Участник
    Member Since:
    23.09.2017
    Message Count:
    116
    Likes Received:
    16
    Репутация:
    1
    Оффлайн
    А если её запустить а Аквариум к стокфишу
  6. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Стокфиш должен всухую обыгрывать Магнуса у которого рейтинг >2800, делал в своё время подсчёт.
  7. roman57 Учаcтник

    • Участник
    Member Since:
    23.09.2017
    Message Count:
    116
    Likes Received:
    16
    Репутация:
    1
    Оффлайн
    Ну одну то партию у стокфиша должен каждый выиграть , хотя бы в блиц , иначе все мои труды напрасны ^_^
  8. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Какие труды?
  9. roman57 Учаcтник

    • Участник
    Member Since:
    23.09.2017
    Message Count:
    116
    Likes Received:
    16
    Репутация:
    1
    Оффлайн
    Есть система с помощью которой можно переиграть любой движок , на "Chess Book" во вконтакте показаны видео примеры , конечно для повторения нужно понять систему или запомнить нужный вариант для определённой версии , например stockfish в последнее время часто обновляется и варианты использования системы получаются разные , но в каждом видео обязательно написана версия движка , пробуйте - у многих уже получилось , а если будет желание понять систему глубже - я обязательно отвечу и расскажу все тонкости
  10. admd Заблокирован

    • Новичок
    • Заблокирован
    Member Since:
    14.06.2017
    Message Count:
    71
    Likes Received:
    30
    Репутация:
    5
    Нарушения:
    30
    Оффлайн
  11. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Рано или поздно возможности данной нейросети будут исчерпаны и нужно будет увеличивать её размерность, чтобы добиться дальнейшего прогресса. Хочу только заметить, что поскольку при обучении Лила как бы изыскивает слабости у самой себя, то небольшой регресс совсем не означает, что нейросеть становится слабее.
  12. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    По сравнению со многими другими движками Лила играет довольно слабо, так что скорее дело в насыщении или другой проблеме с сетью.
  13. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Текущая нейросеть очень небольшая. Можно сказать крошечная. Размерность у неё всего 6х64. У Гугла, для сравнения, нейросеть была 20х256. То есть в 50 раз больше, если не учитывать полносвязный выходной слой. Когда дорастём до такой величины, размер файла нейросети в распакованном виде превысит 300 Мб. Но, возможно, придётся увеличивать нейросеть ещё больше.

    P.S. Не уверен, что текущая нейросеть уже достигла своего предела.
  14. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    А не знаете когда они планируют увеличить размер сети и вообще нет ли какого планового графика развития движка?
  15. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Планового графика нет. В игре Го, например, увеличивают по факту стагнации (в ближайшие дни ожидается увеличение размерности до 15х192 или 20х256, в зависимости от результата тестов):
    http://zero.sjeng.org/
  16. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
    Увеличивать планировали скоро, но нашли серьёзный баг, который скорее всего съел существенную часть ёмкости сети. После его исправления сеть будет опять обучаться быстро. Будут ли одновременно с исправлением ошибки увеличивать сеть, ещё не решили, но пока большинство за то, чтобы так сделать.

    Баг заключается в том, что по задумке ходы для чёрных и для белых должны были выглядеть одинаково. То есть и чёрные и белые например видят свои пешки на втором ряду, и ходят e2e4 (но для чёрных это на самом деле обозначает e7e5).
    Так вот, доску для чёрных отображали как надо (свои пешки внизу), но ход от неё всё равно ждали не перевёрнутый, e7e5 вместо e2e4.

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

    Есть ещё другой баг (ходы соперника при передаче истории кодируются неправильно перевёрнутыми), и он тоже ещё не исправлен, но он не настолько серьёзный. Но его исправят одновременно с этим.
    Rom, sovaz1997 and Undying like this.
  17. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Crem, Rom, откуда вы берёте информацию, если не секрет?
  18. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
  19. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Спасибо.
  20. svoitsl Учаcтник

    • Участник
    Member Since:
    06.01.2018
    Message Count:
    374
    Likes Received:
    91
    Репутация:
    7
    Оффлайн
    Пожалуй с этим лучше не спешить, даже такая небольшая сеть требует громадных ресурсов, лучше на существующей все хорошо отработать (разумеется не только код), а тут ещё не початый край.
  21. nn Заблокирован

    • Участник
    • Заблокирован
    • Старожил
    Member Since:
    25.03.2007
    Message Count:
    1.459
    Likes Received:
    3.109
    Репутация:
    124
    Нарушения:
    31
    Оффлайн
    Сыграл с новой версией на хард. Кажется связки и вскрытые шахи она еще не понимает.

  22. svoitsl Учаcтник

    • Участник
    Member Since:
    06.01.2018
    Message Count:
    374
    Likes Received:
    91
    Репутация:
    7
    Оффлайн
    А между тем LCZERO уже наиграла 100 сетей!!!
    И пора бы уже допилить код,но он пока v. 0.4
  23. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    Скоро должна выйти 0.5.
  24. svoitsl Учаcтник

    • Участник
    Member Since:
    06.01.2018
    Message Count:
    374
    Likes Received:
    91
    Репутация:
    7
    Оффлайн
    [​IMG]
    Считается, что хотя в фиктивных ЭЛО роста и нет, но миллион игр не куда не делись и в настоящих ЭЛО все же рост есть!
    (хоть какой то )
    Худо ли, бедно и но сеть до 1-го разряда дошла все же
    (в отличии от меня например)
  25. Yury_Solomatin Учаcтник

    • Участник
    Member Since:
    25.01.2017
    Message Count:
    865
    Likes Received:
    503
    Репутация:
    24
    Оффлайн
    А люди могут играть с Лилой, чтобы ее обучать?
    —- добавлено: 8 Apr 2018 —-
    Мне кажется, такой находящийся в пеленках искусственный интеллект, с которым можно бороться любителям, привлек бы внимание шахматного сообщества и пофандрайзить тоже помог бы.
    Только вам нужна еще модель, которая была бы лицом Лилы и чтобы она приятным голосом разговаривала.

    Успехов.
  26. svoitsl Учаcтник

    • Участник
    Member Since:
    06.01.2018
    Message Count:
    374
    Likes Received:
    91
    Репутация:
    7
    Оффлайн
    Вообще кажется, что авторы этого движка наотрез отказываются от какого либо иного обучения, кроме самообучения.
    Даже двух ходовый вариант (например научиться у Стокфиша играть уверенно ничью, а уж потом заняться самообучением) и то не устраивает.
    Основная причина - отсутствие красоты теории, раньше считалось, что чтобы сделать неплохой шахматный движок надо бы и самому не дурно играть, но сейчас такая надобность вроде бы отпала.
  27. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Играть можно хоть сейчас, а вот нормально обучать не получится, поскольку нужны миллионы партий высокого качества. А где их взять?

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

    Человеческие партии используются только для проверки, что система работает. Средний уровень базы из миллионов человеческих партий крайне невысок. Обычно нейросеть и на своих партиях достигает такого уровня очень быстро. Так что смысла особого нет. В начале тренировки самое главное оптимизировать код и отловить баги.

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

    Когда накопится достаточно партий для начала тренировочного цикла, они нарезаются на позиции с оценками, добавляются к предыдущим тренировочным примерам лучшего качества и хорошенько перетасовываются. После чего начинается описанный выше цикл обучения. После обучения измененная нейросеть снова начинает играть. Но обычно уже лучше. Далее всё повторяется, и таким образом нейросеть постепенно, шаг за шагом, подтягивает сама себя к вершинам мастерства, прямо как альпинист.
    Alhimik88, Sergey1983 and svoitsl like this.
  28. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.547
    Likes Received:
    1.285
    Репутация:
    37
    Location:
    Киев
    Оффлайн
    Есть партии движков. Есть переписочные.

    Партии человека слабы стратегически или тактически? В целом прогнать автокодировщиком базу человеческих партий не самая плохая идея...
  29. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Пробовали. И движковые и человеческие. Уровень тех сетей давно уже пройден нынешней Лилой, всего за пару недель. Конечно, сыграло свою роль то, что те сетки были небольшими - 6х64. Но если бы наигрывали сразу большие, то получили бы минус к скорости сейчас.
  30. Sergey1983 Учаcтник

    • Участник
    Member Since:
    03.04.2018
    Message Count:
    126
    Likes Received:
    14
    Репутация:
    1
    Оффлайн
    А вот по этим https://docs.google.com/spreadsheets/d/18UWR4FVhPi0vNwwPreu_avd9ycujGQ5ayR2LzJOWP4s/edit#gid=0 данным роста не было (он появился лишь за последние 1-2 дня(если появился))
  31. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.547
    Likes Received:
    1.285
    Репутация:
    37
    Location:
    Киев
    Оффлайн
    Rom, причина может быть не в том, что уровень партий слабый. Причина может быть в том, что они не подходят по стилю. У людей и движков популярна сицилианка, в результате которой получаются достаточно насыщенные тактикой позиции, где недостаточно ни глубины нейросети, ни количества партий в узле. Поэтому сила игры стакается, потому что результат партии представляет собой рулетку.
  32. Пломбир Новичок

    • Новичок
    Member Since:
    09.04.2018
    Message Count:
    35
    Likes Received:
    25
    Репутация:
    0
    Оффлайн
    Интересно, а каким образом будет происходить переход от маленькой сети 6х64 к большой? Как перенести накопленную информацию? Пытаюсь разобраться в вопросе, но мой английский никакой.
    Кстати, никак не получается LCZero запустить на GPU. На трех машинах одно и тоже - вылетает. Все делал по инструкции. Тест какой-то в начале проходит, но работать не хочет. А при работе на CPU не могу никак заставить дольше считать. За это отвечает, команда "-p" как я понял.. она не распознается у меня почему-то.
  33. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
    Переход от маленькой сети к большой осуществляется при помощи методов net2net ( https://arxiv.org/pdf/1511.05641.pdf ).

    Вкратце: в ширину сеть увеличивается засчёт "расщипления" существующих узлов на несколько таким образом, чтобы они давали тот же результат что и до расщипления. Грубо говоря, если раньше было a = 5*b, то расщипляют b на c и d, и делают a = 2*c + 3*d.

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

    По поводу GPU: попробуйте указать параметр -gpu 1 (или другой номер), чтобы явно указать, какой gpu используется.

    Параметры -p и -v используются только когда внешняя программа GUI не сообщает сколько времени осталось. Если есть контроль времени, lczero.exe пытается сама решить сколько думать исходя из этого.
    Alhimik88 and Rom like this.
  34. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Добавлю только, что существует ещё один способ перехода на сеть большей размерности. Можно просто создать "пустую" нейросеть большей размерности, и натренировать её с нуля на партиях предыдущей сети. Поскольку тренировка сети выполняется примерно в 1000 раз быстрее, чем наигрывание партий при самоигре, то процесс протекает относительно быстро, даже на одном компьютере.

    Хочу ещё отметить, что в Го использование net2net натолкнулось на некоторые затруднения, которые (кажется) только что успешно преодолены. При тренировке Лила Го Зеро переход с помощью net2net на 10х128 не вызвал проблем и сразу дал большую прибавку, а вот при переходе на 15х192 пришлось вернуться достаточно далеко "в прошлое", выполнить net2net на старой сети и последние 1,5 миллиона партий дотренировывать увеличенную сеть указанным выше способом.
  35. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
    Да, сейчас тренируют сеть 6x64, и одновременно сеть 10x128 (для сравнения скорости игры и тренировки), именно таким образом заново с нуля, с исправленными багами. Планируется, что это займёт около суток. Но чтоб пользоваться этой сетью, нужна будет новая версия lczero.exe, v0.5, с исправленными этими же багами.

    На больших сетях это будет не так быстро, и там уже будет net2net.

Share This Page