Comments 13
Любой один откровенно слабый (и в силу этого не применявшийся в реальных партиях) ход противника будет выводить модель в область неизвестного ей. Метод Таля.
Алгоритм слаб именно в той области, за счёт которой компьютер обычно выигрывает у человека.
Спасибо за комментарий )
Модель вполне корректно реагирует на редкие ходы.
Как раз в этом и смысл обобщения опыта и выявления закономерностей - реагировать на неизвестные комбинации, потому что реагировать на известные комбинации можно просто по справочнику.
По части редких ходов речь идет о том, чтобы убирать их из датасета при обучении, потому что в отношении редкого хода нельзя однозначно определить "успешность" хода по итогу партии. Как понимаю, целесообразно, чтобы в датасете было однозначно "успешные" и "неуспешные" комбинации, и обучаться именно на них, без "шума", тогда качество реагирования на неизвестные комбинации повышается.
Спасибо за комментарий )
На данный момент понимаю так:
Книга дебютов очень хороша, когда встречается известная проработанная комбинация. В этом случае есть рекомендации по дальнейшим ходам и обширные комментарии обоснования. Можно еще усилить ситуацию и дополнительно с Книгой смотреть показатели успешности в конкретных загружаемых датасетах.
Но что делать, когда комбинация новая и не встречается в Книге ? Приходиться считать )
Так что на этапе разработки и тестирования мы намеренно стремились отойти от игры по справочникам и играть по выявленным закономерностям.
С другой стороны представляется интересным совместить:
если комбинация распространена, есть в Книге дебютов и есть в датасете, то возможно сделать ход на основании Книги дебютов или на основании показателей успешности в датасете. А вот в случае, если комбинация новая или редкая - тогда считать по коэффициентам, полученным на обучении.
Также может быть интересно принять Книгу дебютов за хороший датасет и научить модель играть дебюты на основе Книги. В этом случае также возможно совмещение: если есть комбинация в Книге - играть по Книге или показателям успешности, а если нет комбинации в Книге и нет в датасете - играть по коэффициентам, но полученным также при обучении на основании Книги.
Да, применение "оценочной функции, возможно, на некоторую глубину" - это как раз сейчас и применяется в компьютерных расчетах. Поставленная же задача - не сделать новую / лучшую реализацию расчета ходов на сколько-то вперед, а именно выявить закономерности - почему эта партия стала выигрышной, почему именно эта цепочка комбинаций привела к успешному результату.
"По-человечески" мы, конечно, можем комментировать и обосновывать ходы, но хочется выявить это математически )
"используя в качестве критерия лишь этот результат, а не шаги по его получению"
это как раз отдельная ветка для размышлений - как учитывать не только результат, но и всю цепочку шагов
Идея отличная сама по себе. Сетку помощнее бы, и датасет.
Идея нравится тем, что сеть имплицитно в своих весах находит и вес фигур, и вес конкретных ситуаций. Первый слой мог бы быть embeddings layer технически.
Мы же конечно знаем, что шахматы имеют конечное дерево игры, но тут важно что его можно приблизительно экстраполировать до финала.
Без всяких reinforcement learning.
Спасибо за комментарий )
Да, с embeddings может интересно получиться )
А чтобы сеть нашла вес фигур и вес конкретных ситуаций - это как раз "недокументированная косвенная задача" )
Кстати, еще такая мысль. Если сетка была бы рекуррентной, или трансформер с positional encoding, они Тьюринг полные, то при хорошем качестве прогнозов, на уровне человека или лучше, можно было бы свидетельствовать в пользу Тезиса Черча (о том что интуитивно вычислимые функции частично рекурсивны, то есть решаются машиной Тьюринга). В классе стратегических задач
Да, применение и positional encoding, и attention и self-attention - на данном этапе выглядит вполне перспективным. Действительно, пусть фигуры смотрят друг на друга и таким образом кодируются веса и положения.
В целом же рекуррентность применительно к Шахматам - сейчас это отдельная "глобальная" ветка размышлений.
1. Важно ли (или насколько важно) для комбинации, как именно в нее пришли.
С одной стороны, возможно, следует оценивать только саму комбинацию, как состоявшийся факт, а с другой стороны, возможно, следует оценивать и то, как именно к ней пришли.
2. Возможно ли в принципе рассматривать ход шахматной партии так же, как рассматриваются другие последовательности, например, текст. То есть может ли задача перейти в задачe генерации / предсказания следующего хода, аналогичную задаче предсказания / генерации следующего слова.
Помнится, когда Каспаров играл с Дип Блю, то Дип Блю его опередил на полхода: если бы Дип Блю не поставил Каспарову мат, то ответным ходом мат поставил бы Каспаров. Не просчитывая дерево ходов, представляется невозможным определить, хорошая стратегия была в данном случае у каждого из игроков или плохая.
Спасибо за комментарий )
Да, скоринг позиции и дерево ходов - отличный путь для выбора хода, и это уже прокачанная и работающая технология. Минимакс, отсечение, white book, стоимость фигур, количество атакуемых и защищаемых полей, скоринг- там все и так довольно круто, поэтому мы даже не смотрим в ту сторону )
Задача - не улучшить существующий подход на чуть-чуть, а развить принципиально другой.
Идея в том, чтобы на основе имеющихся данных вытащить закономерности, почему эти партии был выиграны, и пытаться "повторить успех" только учитывая предыдущий опыт, а не расчет потенциальных перспектив. При этом соответствующие веса фигур, комбинаций и прочее также подобрать автоматически во время обучения сети.
Более глобально - впоследствии применить подход к другим процессам, рассматривая Шахматы и сыгранные партии как частный случай. То есть вычислять "закономерности успеха" и "стабильно повторять успех".
Учим нейросеть принимать решения на основе уже известного опыта (на примере Шахмат и загруженного датасета)