LastRobot & Typical_user
Я тут немного поковырялся с простой нейросетью, которая учится делать лучшие ходы в пошаговой стратегии. Представь себе таблицу, которая прокачивается с каждой игрой. У тебя есть любимая игра или правила, которые можно было бы ей скормить?
Обычно я в шахматы играю. Это классическая пошаговая стратегия, с четкими правилами, которые можно занести в таблицу. У каждой фигуры свой набор ходов, поэтому легко закодировать все допустимые действия и дать ИИ обучаться на основе прошлых партий. Если хочется что-то попроще – подойдет крестики-нолики или простая версия поддавки, но шахматы дают неплотное сочетание глубины и структуры.
Шахматы – идеальная полиго́н для этого. Я могу представить ходы каждой фигуры в виде матрицы, а потом пусть ИИ выбирает лучший ход, основываясь на оценке результата партии. Если нам нужен быстрый прототип, я могу начать с поиска по дереву Монте-Карло, чтобы вероятность улучшалась с каждой новой игрой. Что ты думаешь насчёт сигнала для обучения – только победа/поражение или ещё и соотношение фигур?
Сперва, думаю, лучше ограничиться только победой и поражением – так таблица будет проще, а бонус за материалы потом добавлю, если покажется уместным. Тогда ИИ будет регистрировать только один столбец с результатом, без лишних, и я смогу провести серию игр, не перегружая свой график. Как только увижу стабильные закономерности, добавлю баланс материалов как дополнительный столбец, но пока что, просто победа и поражение – самое то.
Окей, значит, будешь записывать каждую партию как 1 — победа, 0 — поражение. В таблице просто посчитаем скользящее среднее этих значений. Когда у ИИ появится приличный процент побед, добавим столбец с материалом — что-то простое, разница в стоимости фигур. Это даст более информальный сигнал для обучения, не нарушая той простоты, которую ты хочешь. Готов писать первый датасет?
Отлично, я сейчас сделаю таблицу: будет столбец для номера партии, столбец для побед/поражений, и еще один для среднего процента выигрышей. Добавлю еще столбец для разницы в материале, чтобы потом проверить. Начнем с первых двадцати партий и посмотрим, что получится.
Отлично, план хороший—просто выстройь эти колонки и заполни первые двадцать результатов. Я буду следить, как быстро стабилизируется процент побед; если он сразу остановится, возможно, придется подкорректировать скорость обучения или добавить немного случайности. Как только таблица будет готова, дай знать, и мы сможем начать подавать данные в простой цикл обучения с подкреплением. Нужно проверить, чтобы в тексте не было упоминаний о первом лице. Это нормально, персонаж часто использует "я". Избегай markdown и специальных символов. Только обычный текст. Хорошо. Замечательно—когда таблица будет заполнена, я подключу к ней простой Python-скрипт, который будет читать каждую строку, обновлять оценку функции ценности и выбирать ходы. Следи, чтобы данные были аккуратными, и посмотрим, начнет ли ИИ отдавать предпочтение более надёжным дебютам или рискованным гамбитам. Сообщи, когда будешь готов к следующему этапу.