Кружок Программирования

Подводим Итоги

 

Итак, 9 апреля 2026 года началась тренировка новой сети гомоку. Одна сессия тренировок наращивает легаси дерево вариантов примерно до 40 миллионов ходов, проводя примерно 10 тысяч тренировок нейронной сети. Каждая тренировка передаёт в нейронку определённую позицию, а также оценку позиции (для value head) и лучшие ходы (для policy head).

После 123 тысячи тренировок нейронка стала показывать феноменальный результат - обыгрывать против supervising minimax legacy tree!

🚀 Почему это вообще могло произойти?

На первый взгляд может показаться, что нейронная сеть внезапно "прорвалась" и начала играть сильнее классического minimax-дерева. Однако есть несколько факторов, которые могли временно дать такой эффект:

  • 🧠 Случайное попадание в удачную область параметров — нейронка могла найти локальный минимум, хорошо согласующийся с текущим состоянием дерева;
  • 🌳 Неполнота legacy-дерева — дерево не хранит абсолютно все позиции, а лишь часть, поэтому в некоторых ветках оно может недооценивать позиции;

⚠️ Однако такие всплески силы часто оказываются нестабильными и исчезают при дальнейшем обучении.

И правда, этот результат не закрепился в дальнейшем. Во время тренировки нейронки, в обучающий код вносились косметические изменения. Не понятно, могло ли это повлиять на неё в худшую сторону, однако эта работа велась предельно аккуратно, и я даже пару раз откатывал изменения. Состояние нейронки, логов и файлов дерева на момент совершения 123 тыс. тренировок, я сохранил тут 

 

🔍 Почему результат мог не закрепиться?

Даже при аккуратных изменениях кода обучение нейронной сети остаётся крайне чувствительным процессом. Возможные причины деградации:

  • ⚖️ Смещение баланса между policy и value — если одна из голов начинает доминировать, сеть перестаёт правильно выбирать ходы;
  • 📉 Переобучение на текущем состоянии дерева — сеть начинает копировать слабые места legacy-алгоритма;
  • 🔁 Изменение распределения обучающих данных — даже небольшие изменения в генерации кандидатов могут сильно повлиять на градиенты;
  • 🎲 Снижение энтропии — сеть становится слишком уверенной и перестаёт исследовать альтернативные ходы;
  • 🧩 Локальный минимум — классическая проблема, когда сеть "застревает" в не оптимальном состоянии.

 

🤔 Как нейронка может выигрывать у дерева, если дерево запоминает поражения?

Интересный и неочевидный момент: legacy-дерево действительно запоминает проигрышные ветки и старается избегать их в будущем. На первый взгляд это должно делать повторные победы нейронки невозможными.

Однако на практике это работает иначе:

  • 🌳 Дерево хранит не всё пространство — оно ограничено по размеру (десятки миллионов узлов), тогда как возможных позиций на поле 15×15 — астрономически больше;
  • 🔀 Нейронка может находить новые пути — даже если один выигрышный сценарий заблокирован, она способна прийти к победе другим путём;
  • 🧠 Обобщающая способность сети — нейронка не запоминает конкретные позиции, а учится распознавать шаблоны (например, угрозы и комбинации);
  • ⚠️ Ошибки оценки дерева — minimax-дерево не идеально и может неверно оценивать сложные позиции;
  • 📉 Ограниченная глубина поиска — даже при большом количестве узлов дерево не гарантирует идеальную игру.

📊 Должен ли winrate быть меньше 50%?

Теоретически — да, если дерево было бы идеальным и запоминало бы все проигрыши, нейронка не смогла бы выигрывать повторно.

Но в реальности:

  • дерево не покрывает всё пространство состояний;
  • каждая партия идёт по немного разному сценарию;
  • нейронка постоянно меняется в процессе обучения.

👉 Поэтому winrate может быть ниже 50%, но не обязан стремиться к нулю. На практике наблюдается баланс в районе 30–50%, в зависимости от силы сети и состояния дерева.

Текущее состояние - это 211000 тренировочных  итераций [TRAIN TREE] и winrate колеблющийся примерно около 35%

 

Для большей уверенности, требуется дополнительное тестирование процесса обучения. Для чистоты результатов, можно взять любое состояние кода из ветки neuro_alpha_zero (но не старее, чем за 8 апреля 2026) и провести хотя бы несколько сотен тысяч [TREE TRAIN] итераций.

 

📉 Текущая интерпретация результатов

На данный момент обучение, вероятно, находится в состоянии плато:

  • 📊 winrate стабилизировался около 30–35%;
  • 🧠 нейронка не демонстрирует устойчивого роста силы;
  • 🔁 улучшения носят кратковременный характер.

💡 Таким образом, текущий этап можно считать завершением первой фазы — обучения "по дереву". Нейронка уже использует self-play для генерации позиций и оценок, а дерево пассивно накапливает результаты и проводит rating propagation. По мнению ChatGPT, хотя оно звучит сомнительно и расплывчато, но для дальнейшего прогресса может потребоваться:

  • 🎯 улучшение policy target (например, через более точное распределение вероятностей);
  • 🔍 увеличение разнообразия позиций для self-play;
  • ♟️ возможная интеграция дополнительных стратегий оценки позиций или более глубокого дерева.

🚀 Таким образом, текущий этап можно считать завершением первой фазы — обучения "по дереву", и переходом к более сложным стратегиям обучения.

Страница создана 13.04.2026
М.О.