-
> Mystic ©
а вы смогли бы сделать самообучающуюся шашечную программу типа lczero?
-
> а вы смогли бы сделать самообучающуюся шашечную программу > типа lczero?
Я думаю в этом направлении, но нету времени. В принципе план действий пока что такой:
☐ реализовать сервер на основе MCTS, который бы раздавал задания клиентам (доиграть с такой-то позиции) и хранил статы и базу возникающих позиций ☐ реализовать клиенты, которые бы брали задание у сервера и доигрывали партию
Потом уже можно обучать нейронную сеть, но лично мне было бы интересно дополнительно
☐ кластеризовать позиции; и для каждого кластера подобрать оптимальные значения параметров Propability, Ngames, чтобы оптимальный ход находился как можно быстрее для кластера (оптимизационная задача)
☐ Обучить нейросеть на этом наборе, чтобы вместе с вероятностью каждого хода шёл дополнительный параметр Ngames, который будет характеризовать достоверность оценки (чем меньше Ngames, тем больше MCTS будет стараться его дополнительно проверить).
Ну и кроме нейросети мне было бы интересно посмотреть на CLONALG и попытаться построить распознавание паттернов на его основе тоже
-
> Mystic ©
а как сами партии разыгрываются? случайными ходами?
-
У меня сейчас MCTS а доигрывание случайными ходами. https://github.com/mustitz/checkersСобственно говоря, вполне можно использовать это для первой итерации. Потом веса будет возвращать натренированная нейросеть.
-
> Потом веса будет возвращать натренированная нейросеть.
веса для чего? для оценочной функции?
мне с AlphaZero вот что непонятно. они говорят, что научили ее играть с нуля, то есть у нее не было никаких шахматных знаний.
это получается, она сама находили позиционные признаки и вычисляла для них коэффициенты? (веса)
-
> веса для чего? для оценочной функции?
там же нейросеть, значит для нейронов, то что обозначается в англ. литературе как w (weight)
-
> веса для чего? для оценочной функции?
Вес хода, который затем будет использоваться алгоритмом MCTS. А оценочной функции у нас вообще нет.
В общем случае ситуация такая: для каждой позиции у нас есть статистика доигрываний, а именно сколько раз встрелилась позиция и какой процент набранных очков. Например, позиция после e2-e4 встретилась 42 раза, из них белые набирали 60.7% очков.
Если подобная статистика у нас есть для каждого хода, т. е. при любом ходе возникает позиция, для которой у нас есть статистика, то существует хорошая формула для того, чтобы выбрать ход для очередного доигрывания (новой партии).
Но что делать в случае, когда мы только начали анализ, и никакой статистики у нас нет? В моих шашках сейчас мы пробуем сделать каждый ход, и только потом уже пользуемся формулой, когда хотя-бы одно доигрывание есть. Ещё есть опция считать, что изначально у нас была 1 симуляция, где мы набрали 50% очков (ничья).
Но... есть ещё вариант, чтобы некий Оракул посмотрел на позицию и заранее проставил желательно оба параметра (число симуляций и оценку). Чем эта оценка лучше рандома, тем адекватнее ходы попадут в симуляции, и тем будут сильнее играть программа. На крайняк Оракул может возвращать только оценку, а число симуляций проставим какой-нить константе (например 1). Вот эта оценка возникающей позиции и есть вес хода.
Роль этого Оракула может исполнять нейронная сеть. Которая тоже имеет свои веса. Итак, на входе нейросеть получает позицию, на выходе для каждого хода прогнозирует процент набранных очков. А дальше уже работает MCTS.
Как настроить коэффициенты этой нейросети? Ну... один из вариантов примерно такой. Допустим, у нас уже заданы некоторые коэффициенты нейросети (рандом). Наша задача усилить нейросеть. Отлично, играем со старыми коэффициентами много разных партий. Ну а дальше если ход привёл к победе, то заносим его в обучающий набор с коэффициентов 1, если к поражению — с нулём. Как только такой статистики много, делаем обучение новой нейросети.
-
> Mystic ©
но возможных позиций в шахматах - безумное число (в стоклеточных шашках, наверное, тоже велико), а мы можем сохранить лишь небольшое подмножество.
как сеть поведет, когда встретится незнакомая позиция? как она сопоставляет ее с той, что есть уже в базе?
-
А сколько всего картинок в мире? Нейросеть обучается распознавать животных на любых картинках, а не только на определённом размеченном датасете.
Так и тут, если позиция незнакомая, то нейросеть постарается оценить её на основании схожести со знакомыми.
-
а как схожесть установить? вот в чем вопрос
-
Суперфинал в 17-00 по МСК
-
> а как схожесть установить? вот в чем вопрос
Дые нейросеть сама устанавливает схожесть на основании обучающих данных. Иначе какой бы в ней был прок?
-
Мистик, а как вы собираетесь определять схожесть? Это сложная математика?
-
> В остальном пока что SF10 пока что ведёт и в личной встрече, > и по очкам, и по рейтингу. Но посмотрим, какую сетку выберут > для суперфинала.
В чате говорят, что лила проигрывает из-за перегрева gpu, в остальных случаях на двух gpu со стокфишем ничья
-
мда, lc0 стабильно проигрывает только черными
-
> Мистик, а как вы собираетесь определять схожесть? Это сложная > математика?
Нет, не сложная. В принципе, можно выбрать много метрик оценки позиции (например, наименьшее расстояние до общей позиции в партии). Или разность в количестве шашек, штрафы на общие ходы, ... А дальше кластеризация. Потом можно прикрутить автокодировщик, и смотреть расстояние уже в том векторном пространстве, в котором он работает.
-
похоже стокфиш проигрывает черными, пока +2 в пользу sf но если проиграет то будет +1 а там бы продержаться lc0 черными
-
Ну... там с раздачи тяжёлый вариант во французской, а игра чёрными SF по французской против AlphaZero это боль.
-
она выиграла белыми. Теперь нужно защитить черными :)
-
> игра чёрными SF по французской
вообще этот вариант с ходом Nc6 кажется некорректным, весь смысл французской защиты в ходе c5, а конь блокирует эту пешку
|