Как надо (не стоит) создавать шахматный движок. Часть 3
Пост 3. Ловушка нелогичных ходов Пост 2= https://set.ki/post/5ynPMjZ
Вот проблема, с которой столкнулись эмпирически.
Модель обучается на логичной базе партий. Играет стабильно до 20–25 хода против адекватного соперника. Но стоит противнику начать играть абсурдно — модель деградирует на 2–3 ходу.
Это классический distributional shift. Модель переобучена на узком распределении позиций. У неё нет опыта в нестандартных ситуациях.
В шахматах это особенно болезненно. Противник может пожертвовать ферзя без причины. Может увести короля в центр на 5-м ходу. Логика заканчивается — и модель теряется.
Что мы предлагаем?
Self-play со shift-моделью. Идея: если основная модель играет сама с собой, она генерирует разнообразный опыт. Но есть нюанс — self-play не гарантирует генерацию нелогичных ходов.
Нужен явный механизм шума. Temperature sampling. Dirichlet noise. Adversarial-агенты.
Пока это не реализовано. Проблема диагностирована верно, но не решена полностью.
Честность важнее красивых отчётов.