Leela Chess Zero (lc0): турниры, партии, рейтинги...

Тема в разделе "Машинное отделение", создана пользователем vasa, 10 окт 2018.

  1. KEV81 Учаcтник

    • Участник
    Рег.:
    06.03.2017
    Сообщения:
    240
    Симпатии:
    46
    Репутация:
    6
    Оффлайн
    это одно и то же
  2. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    793
    Симпатии:
    732
    Репутация:
    389
    Оффлайн
    Получается, раз Лила наигрывает партии сама с собой, разработчики алгоритма не могут выделить те самые "паттерны", благодаря которым Лила получает лучшие позиции?
  3. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Это практически нереально. Может, что-то и можно визуализировать, с 1-х слоев, но дальше начинаются "паттерны паттернов" и т. д. по слоям.
  4. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    В случае Lc0 может быть, в общем случае необязательно.
    —- добавлено: 7 мар 2019 —-
    Возможно там и паттернов особо нет... Просто интересно было бы, например, взять обучающий сет Lc0 и заменить нейросеть на алгоритм k-ближайших соседей (проще говоря, получаем из базы k самых похожих позиций, агрегируем оценку и присваиваем её узлу). Понятно, что поиск будет идти дольше, но если сила игры не просядет, то особо никаких “паттернов” у Lc0 тогда нет
  5. Alhimik88 Новичок

    • Новичок
    Рег.:
    10.06.2009
    Сообщения:
    81
    Симпатии:
    35
    Репутация:
    1
    Оффлайн
    Что-то я логику не уловил. Если одна программа достигает той же силы с помощью оценки уникальной позиции по агрегированной оценке группы похожих позиций, а другая с помощью сотен тысяч паттернов, то почему теперь у второй программы паттернов нет?
  6. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Нейросеть могла выделить некоторые паттерны, а могла просто запомнить их. Если мы возьмём же набор данных, на котором было проведено обучение, в одном случае будет играть с применением нейросети, а в другом методом k ближайших соседей, и если сила игры будет одинаковая при одинаковом количестве узлов в дереве перебора, то это будет означать, что идёт преимущественно запоминание позиций, а не выделение паттернов. Ну или можно сказать, что паттерны используются большей частью для архивации базы позиций.
  7. hornet Учаcтник

    • Участник
    Рег.:
    05.11.2016
    Сообщения:
    793
    Симпатии:
    732
    Репутация:
    389
    Оффлайн
    Я пока не могу правильно сформулировать итоговые результаты достигнутые алгоритмами, применяемыми в лиле и альфазеро. Понятно одно: предложен определённый нестандартный метод решения неточной переборной задачи (по Ботвиннику) - шахматной игры. Я не считаю, что где-то Deep Mind смошенничал в матче со стоком, ведь их алгоритмы реализованы в лиле. Непонятно как они пришли к такому подходу (прогнать через себя три четверти миллиона партий наигранных против себя же), и чего сами ожидали на выходе. Вычленить "ориентиры" (указатели, паттерны, параметры, характеристики позиции, "соображения" в конце концов) которыми пользуется та же лила в каждой новой партии - невозможно. Квантовая механика какая-то. Даже непонятно что это - "думающий" движок с нейросетью? На лицо только явный факт превосходства последнего над большинством элитных шахматных движков. Да и само понятие "нейросеть" плохо укладывается в человеческое понимание. Остается надеяться, что человек когда-нибудь сформулирует свои четкие доказательные критерии оценки шахматной позиции, причём прозрачные, а не скрытые в тысячах массивах зашифрованных данных. Между прочим, не постесняюсь напомнить, что в этом направлении заложил определённый фундамент программист Евгений Чужакин, предложив теорию опасных элементов.
  8. Challenger Spy Технический специалист

    • Команда форума
    Рег.:
    29.01.2011
    Сообщения:
    5.227
    Симпатии:
    2.806
    Репутация:
    226
    Оффлайн
    И еще философ Дмитрий Бирюков заложил базис Теории правды
  9. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Если бы это было невозможно, Земля была бы заполнена чем угодно, но только не городами, домами, технологиями и людьми.
    Человек же может выделить паттерны в позиции. А Лила - нет? Да нейросеть как раз этим только и занимается - выделением паттернов и их наслоением друг на друга.

    Я думаю, можно сделать какой—о анализ, хотя бы одного слоя. И посмотреть, как влияют изменения в позиции на веса в каком-то нейроне 2-го уровня. Понятно, что чем глубже мы идём, тем сложнее это определить. В итоге все это выливается в оценку позиции (по сути, самый сложный паттерн, который включает в себя всё остальное).
    Alhimik88 нравится это.
  10. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.474
    Симпатии:
    3.068
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Лила эти паттерны умеет использовать, а не извлекать и объяснять для человека. Ботвинник вот из себя пытался паттерны вытащить и воплотить в программе - не получилось...
    Undying нравится это.
  11. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Ну... если эти паттерны есть, то можно попытаться их извлечь. Чай для нейросети можно подать вход и замерить активность каждого нейрона. Построить тепловую карту и т. д. и т. п. Другой вопрос в том, что для человека эта информация может оказаться бесполезной — будет а-ля чужакинский мануал с большим количеством правил, который даже в анализе не спасёт. Хоть человек и лидер среди животных, но всё равно его мозг очень ограничен.
  12. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    У человека много нейросетей. Одна нейросеть работает непосредственно с шахматной позицией. Другая нейросеть - с позиционными факторами. Третья - с опасными элементами и комбинационными мотивами. И т.д. И в зависимости от того какой вход на уровне сознания формирует человек задействуется та или иная нейросеть.

    А у Лилы только одна нейросеть. На входе всегда позиция. Поэтому никаких паттернов понятных человеку из нейросетки Лилы не извлечешь. Паттерн это высокий уровень абстракции, а Лила работает на нижнем уровне.
  13. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    При этом Лила без счета играет на уровне 2300, а человек - нет. Так что я готов поспорить, что Лила не хуже, а может и лучше именно понимает позицию. А так, у человека ровно одна нейросеть - мозг с множеством входов и выходов. Сеть невероятно сложна идо конца не изучена.
  14. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    И еще не нужно преувеличивать уровень понимания шахмат Лилой. Считая 30 позиций в ход Лила играет примерно в силу кмс с классическим контролем. Человек при игре с классическим контролем примерно столько же позиций в ход перебирает. То есть нейросетка Лилы по силе примерно соответствует нейросетке кандидата в мастера. А сильнее Стокфиша Лила играет за счет перебора вариантов. Ее способности к счету в многие тысячи раз превосходят человеческие.
  15. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Undying, Вы не совсем понимаете, как работает нейросеть. На входе, как я понял, не только позиция, но и ее история и ход может зависеть от предыдущих ходов. Паттерн - это один уровень абстракции, паттерн паттерна - 2-й. Всего таких слоев 20, как я понимаю. И верхние слои намного более сложные. Например, на нижнем Лила видит, где находится пешка - и выдает ее вертикаль. На верхнем же видит опасность проходных пешек. На самом верхнем - оценку в целом или вероятности для ходов в позиции (не знаю точно).
  16. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    А что такое «понимание»? Может у неё лучше память? Вообще, обучение на выборке из миллионов позиций у меня не стыкуется со словом «понимание». Для меня понимание это когда прочитал учебник Панченко (от силы 10 000 позиций), и повысил скилл игры во всех окончаниях.
  17. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Хорошо, тогда может кто-нибудь объяснить, как Лила сохраняет позиции и ходы к ним в нейромети? Понимание - это, по сути, и есть нейросеть. Здесь нужен какой-то пример, на самом деле, если кто знает - напишите. Без примера тяжело будет объяснить, что это такое за "понимание".
    —- добавлено: 7 мар 2019 —-
    Да, у Лилы понимание приходит через объяснения виде "эта позиция плохая - она приводит к поражению". И на основе огромного числа позиций Лила выстраивает это все. Я просто сам только изучаю Deep Learning, пусть знающие Вам объяснят это более правильно.
  18. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Скажу так: Лила действительно может запомнить позиции, но это будет уже стадия переобучения, до которой нельзя доводить.
  19. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    Человек может обучаться также как Лила. Просто много играя в шахматы. До какого-то уровня человек таким образом дорастет и какое-то понимание шахмат у него появится. Но так как человек не может сыграть 40 миллионов партий, то этот уровень далек от полного раскрытия способностей к шахматам.

    Другой способ обучения это использование абстрактных паттернов, в виде которых обобщен опыт. Сознательно применяя паттерн на практике человек, если обучение проходит успешно, постепенно загоняет паттерн в свою нейросеть и начинает использовать это понимание бессознательно. Лила таким способом обучения не владеет. Она умеет учиться только бессознательно.
  20. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Понимают ли окончания таблицы Налимова? Если нет, то определение неконструктивное, и акцентирует внимание на способе, а не на результате. Типа человек может понимать, нейросеть может понимать, база данных лишена понимания априори.
    —- добавлено: 7 мар 2019 —-
    Я профессионально занимаюсь DeepLearning-ом, сейчас это Image Captioning (по изображению придумать подпись). На самом деле есть набор обучающих данных: позиция — оценка. Вот нейросеть старается подражать этому набору. Кстати, выделение признаков (feature extraction), имхо, могло бы усилить нейродвижок, но авторы Lc0, как я понял, категорически против.
    sovaz1997 нравится это.
  21. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Было бы интересно посмотреть на графике. Как по мне, 40 000 000 позиций для обучения, полученных из тестовых партий, крайне тяжело разбить на train/validation/test выборки таким образом, чтобы похожие позиции попадали в разные выборки. Ну выберем мы 20% позиций в validation и что? Из партии четыре хода попадут в обучающую выборку, пятый в проверочную, и что? Пятая позиция будет непохожа на первые четыре? Пока писал, придумал решение — делить выборку не на позициях, а на партиях. Но это может лишь немного помочь...

    Вообще, нейросеть Lc0 выглядит очень переобученной, потому как стоит только поменять в начальной позиции слонов и коней местами, её сила дропается на 100 ELO. Проще говоря, как только позиция не могла возникнуть достаточное количество раз в обучающей выборке, сразу же качество оценки падает. Интересно посмотреть, как будет меняться оценка Lc0, например, в случае когда позиция без возможности рокировок будет зеркально отражаться. Поймёт ли Lc0, что оценки должны совпадать? Совпадут ли?




    r1bq1rk1/pppp1ppp/2n2n2/2b1p3/2B1P3/3P1N2/PPP2PPP/RNBQ1RK1 w - - 1 6
    1kr1qb1r/ppp1pppp/2n2n2/3p1b2/3P1B2/2N1P3/PPP2PPP/1KR1QBNR w - - 1 6

    У кого Lc0 под рукой, может проверить оценку в этих двух позициях?

    SF10.js отдаёт предпочтение зеркальной версии:
    sf1.png
    hornet нравится это.
  22. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Mustitz, в дебюте Лила действительно переобучена, скорее всего. Лучше взять что-то из миттельшпиля и проанализировать. Также, конечно, не стоит доверять анализу на 19-й глубине, он может быть абсолютно некорректным.
  23. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Вообще, SF.js не лучшая прога для анализа, просто я подозреваю, что у Lc0 предикт нейросети для этих позиций будет сильно отличаться (переобучение).

    Опять же, если брать Lc0, то в дебюте она играет сильнее всего, не смотря на то, что там она должна быть сильно переобучена. Совпадение?
  24. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    А что в этом странного и удивительного? Человек тоже будет намного слабее играть в позициях с поменянными конем и слоном, если у него нет опыта таких шахмат. Человек переобучен? Нет, наоборот недообучен. Если с каким-то типом позиций человек не сталкивался, естественно ему сложнее их оценить. У нейросетки все тоже самое.

    А интересно было бы обучить Лилу шахматам Фишера. А потом посмотреть как от этого измениться ее сила в классические шахматы.
    Polarity, sovaz1997 и Michael-13 нравится это.
  25. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Ну и SF будет тоже играть слабее. Просто просадка в силе игры Lc0 выглядела неадекватно большой.
  26. Сергей С. Питер Старожил

    • Участник
    • Старожил
    Рег.:
    31.03.2006
    Сообщения:
    1.194
    Симпатии:
    60
    Репутация:
    11
    Оффлайн
    Подобным способом не занимающиеся шахматами и начавшие поздно играть любители, на самообучении в парках сами доходят до 2-1 разряда. Чтобы кмс стать - нужно заниматься и тренер. Понимание Лилы можно сравнить, как опытный шахматист в цейтноте играет рукой, без особого счета. Особенно эндшпиль легко. Двигаем пешки, отрезаем, фиксируем ,отдаленная проходная, защищенная проходная, король в центре... Еще аналогия с самообучением - это для живущего в Европе все китайцы и негры на одно лицо, и даже все азиаты. И национальности Кавказа не каждый может отличить. А кто бывал там, может западного грузина отличить от восточного, к примеру. Мозг натренирован в определении лиц.
  27. pavelgttfj8 Учаcтник

    • Участник
    Рег.:
    07.12.2017
    Сообщения:
    288
    Симпатии:
    89
    Репутация:
    3
    Оффлайн
    А как это было выяснено? Проведен большой турнир?
    Я знаю что есть куча начальных позиций-вариантов где лила порвет стокфиш. Достаточно просто убрать ферзя и проверить. Я давно заметил что в обычных партиях, в случае когда разменен ферзь и есть 3 легкие фигуры с каждой стороны - лила особенно опасна.
    Я проводил турниры где в начальной позиции нет ферзя, зато есть 3 коня и 4 слона на а3 и h3 или наоборот 3 слона и 4 коня. Лила значительно превосходит стокфиш в таких вариантах, при этом в случае игры из стандартной стартовой позиции лила проигрывает даже при игре без книг просто из-за того что на моем компе соотношение проц/карта сильно в пользу стокфиша.

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

    Но даже без этих вариантов, я сильно сомневаюсь что лила уступит в шахматах 960, если взять версии с последнего финала tcec и провести хороший турнир.
    Alhimik88, sovaz1997 и Undying нравится это.
  28. Alhimik88 Новичок

    • Новичок
    Рег.:
    10.06.2009
    Сообщения:
    81
    Симпатии:
    35
    Репутация:
    1
    Оффлайн
    С рокировкой у Лилы в шахматах 960 будут проблемы, так как там правила рокировки другие. Лила сможет играть, но только без рокировок, что значительно скажется на силе игры в целом.
  29. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.527
    Симпатии:
    1.243
    Репутация:
    32
    Адрес:
    Киев
    Оффлайн
    Проблема разве что в том, что в обучающей выборке не было позиций 960. А подать позицию в которой король на c1 и разрешена короткая рокировка сеть позволяет. Так что чуть пофиксить генератор ходов и можно играть :)
  30. pavelgttfj8 Учаcтник

    • Участник
    Рег.:
    07.12.2017
    Сообщения:
    288
    Симпатии:
    89
    Репутация:
    3
    Оффлайн
    Забыл про это, лол. Но если добавить хак и отменить рокировку... ей станет только лучше, она и так ее не часто использует
  31. crem Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    140
    Симпатии:
    203
    Репутация:
    14
    Оффлайн
    Там правила рокировки труднее, надо помнить где ладья стояла в начале игры.
    Например, король e1, ладья a1 и ладья b1, и право на длинную рокировку ещё не утеряно (на c1 и d1 фигур нет). Можно ли рокировать?
    Неизвестно, потому что не понятно, какая из ладей, a1 или b1 там с самого начала стояла, а какая пришла с королевского фланга.
  32. Undying Учаcтник

    • Участник
    Рег.:
    31.08.2016
    Сообщения:
    1.316
    Симпатии:
    566
    Репутация:
    15
    Оффлайн
    У Лилы нет генератора ходов. На входе только позиция. Всему остальному она учится самостоятельно.
  33. KEV81 Учаcтник

    • Участник
    Рег.:
    06.03.2017
    Сообщения:
    240
    Симпатии:
    46
    Репутация:
    6
    Оффлайн
    Чего еще у нее нет?
  34. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    649
    Симпатии:
    120
    Репутация:
    3
    Оффлайн
    Как можно сделать проверку на рокировку: в начале игры создаем маску KING | ROOK (маска из битбоардов королей и ладей):
    Код:
    10001001
    00000000
    00000000
    00000000
    00000000
    00000000
    10001001
    
    Далее, создаем маски для проверки на возможность рокировки:
    Код:
    10001000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    
    И так для 4-х типов (W1, W8, B1, B8). Просто берем необходимые единичные биты для каждой рокировки из 4-х видов. (биты 1-2, 2-3, 4-5, 5-6).

    Проверка на наличие рокировки.
    ~((CASTLINGS & castling_type) ^ castling_type) - показывает наличие или отсутствие рокировки.
    А дальше все просто: когда делаем ход, обновляем маску CASTLINGS = ROOK | KING.

    Это точно работает для обычных шахмат. Для Chess960 нужно еще после рокировки затирать либо 1-ю горизонталь CASTLINGS, либо 8-ю, т. к. иногда король или ладья могут оставаться на месте.

    Поправьте, если где-то мог ошибиться. Я примерно помню, как это реализовывал, но теоретически мог где-то ошибиться сейчас.
    —- добавлено: 8 мар 2019 —-
    Такой расстановки по правилам быть не может:
    "одна ладья должна находиться слева от короля, другая — справа (таким образом, король в начальной позиции не может находиться на вертикалях «a» и «h»);" (https://ru.wikipedia.org/wiki/Шахматы-960).

    Всегда король стоит между ладьями.
  35. crem Учаcтник

    • Участник
    Рег.:
    24.11.2016
    Сообщения:
    140
    Симпатии:
    203
    Репутация:
    14
    Оффлайн
    Вопрос не в том, как закодировать похитрее, а так, чтобы поудобнее было для нейронной сети.
    Например, сейчас 4 отдельные плоскости для каждой из рокировок, хотя можно было одной обойтись, да ещё и с пешками объединить.

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

    Изначально не может, но одна из ладей может прийти в процессе игры, и надо знать, какая из ладей пришла.
    FlashNeo, Undying, Alhimik88 и ещё 1-му нравится это.

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