Нейросети для чайников. Часть 2. Как мы прокачали сеть и приблизились к AlphaZero
В первой части мы разобрали простую нейросеть для игры в Гомоку, реалезованную в ветке neural. Теперь посмотрим, как она была улучшена (в ветке neuro_alpha_zero) и чем стала отличаться от классического подхода.
Главная цель всей работы — приблизиться к идее AlphaZero: нейросети, которая сама учится играть, анализируя позиции и выбирая лучшие ходы.
1. Как работала старая версия нейросети
Обучение отчасти происходило прямо во время игры. Это приводило к тому, что:
- данные были шумными
- обучение зависело от текущей партии
- сеть могла «забывать» предыдущий опыт
Кроме того, архитектура была проще: сеть сразу выдавала карту оценок ходов без разделения на policy и value.
2. Что изменилось в новой архитектуре
В новой версии мы сделали несколько принципиальных улучшений, которые приблизили систему к подходу AlphaZero.
Главные улучшения:
- tanh-нормализация рейтинга
- обучение распределению ходов
- Разделение на две головы:
- Policy — куда ходить
- Value — кто выигрывает
- Хранилище партии (gameHistory):
- сначала собираем все ходы
- потом обучаемся по всей партии
- Отложенное обучение:
- обучение происходит после завершения партии
- данные становятся стабильнее и чище
Теперь процесс выглядит так:
игра → сохранение ходов → обучение по всей партии
Это важный шаг, потому что:
- сеть начинает видеть полный контекст игры
- обучение становится более стабильным
- появляется возможность обучаться стратегиям, а не отдельным ходам
Кроме того, архитектура стала глубже:
- общие сверточные слои
- раздельные policy и value головы
- использование dropout для устойчивости обучения
Итог:
Старая версия училась «на лету» и реагировала на отдельные ходы, а новая версия 👉 учится на всей партии сразу, что делает её гораздо ближе к современным подходам вроде AlphaZero.
3. Что показывают логи после улучшений
- Winrate вырос с ~2% до ~10–13%
- Появились победы за ноликов (O)
- Spread (различие ходов) вырос с ~0 до 0.1–0.4
- Policy_loss стал стабильнее
👉 Это означает, что сеть начала понимать игру, а не просто реагировать.
4. Что такое дерево поиска (в нашей системе)
В текущей реализации используется дерево, построенное легаси-алгоритмом.
Оно делает следующее:
- генерирует допустимые ходы
- оценивает их рейтинг
- Если дочерние узлы ещё не вычислены, то рейтинг вычисляется по системе скоринга по количеству двоек, троек и четвёрок своих и оппонента
- Если дочерние узлы уже известны, то используем рейтинг лучшего дочернего узла, но со знаком минус (что хорошо для оппонента - плохо для первого игрока)
- сохраняет их как дочерние узлы
Это дерево:
- детерминированное (всегда одинаковый результат)
- основано на правилах и эвристиках
- не исследует случайные варианты
👉 По сути, это жёсткий алгоритм, а не обучение.
5. Что такое MCTS (Monte Carlo Tree Search)
MCTS — это другой тип дерева.
Он работает так:
- пробуем ход
- играем случайную партию до конца
- смотрим результат
- повторяем много раз
В итоге получаем статистику:
ход A → 70% побед
ход B → 20%
ход C → 10%
👉 это даёт не один ответ, а распределение вероятностей.
6. Главное отличие дерева и MCTS
| Характеристика | Легаси-дерево | MCTS |
|---|---|---|
| Тип | Детерминированный | Стохастический (случайный) |
| Источник решений | Правила и эвристики | Симуляции партий |
| Выход | Лучший ход | Распределение ходов |
| Исследование | Нет | Да |
| Обучение | Нет | Да (через статистику) |
Главная идея:
дерево → выбирает
MCTS → исследует
7. Где мы сейчас находимся
Текущая система — это гибрид:
- нейросеть (policy + value)
- дерево (легаси)
То есть:
нейросеть → дерево → обучение
А в AlphaZero:
нейросеть → MCTS → обучение
👉 Мы примерно на уровне:
70–80% от AlphaZero
8. Почему это уже работает
Даже без MCTS:
- сеть учится на множестве ходов
- получает распределение вероятностей
- начинает понимать стратегию
👉 Это уже даёт:
- рост winrate
- появление защиты
- осмысленные решения
9. Почему сеть ещё не побеждает стабильно
Потому что:
- дерево не исследует новые позиции
- мало разнообразия партий
- нет случайных симуляций (как в MCTS)
👉 Сеть учится, но в ограниченном мире.
10. Что будет дальше
Есть два пути улучшения:
- добавить self-play (игру самой с собой)
- реализовать MCTS
Это даст:
- больше разнообразия
- лучшее обучение
- рост до уровня AlphaZero
11. Итог
Мы прошли путь:
- от простой нейросети
- к системе, которая анализирует позиции и выбирает стратегии
И приблизились к AlphaZero:
✔ Policy + Value
✔ Обучение распределению ходов
✔ Использование дерева
❗ Нет MCTS (пока)
Главный результат:
сеть начала думать
Следующий шаг — научить её исследовать и побеждать стабильно.
