Минимальный MLP, который никогда не проигрывает в крестики-нолики

Сеть 9 → 40 → 9 (769 параметров), обучена дистилляцией minimax-безопасной политики и исчерпывающе проверена: на всех 3888 легальных позициях её ход не ведёт к проигрышу. Играй против неё и смотри, как активируются нейроны и как формируется распределение вероятностей на выходе.

Игра

X   O   безопасный ход   проигрышный ход
Жёлтая рамка — ход, который выберет сеть (argmax по легальным клеткам).

Внутри сети — для текущей позиции (ходит: )

Вход: 9 клеток в системе «+1 — мои фишки, −1 — фишки соперника, 0 — пусто» (одна сеть играет и за X, и за O). Скрытый слой: 40 нейронов ReLU — яркость = величина активации. Выход: 9 логитов → softmax только по свободным клеткам (занятые маскируются, поэтому нелегальный ход в принципе невозможен).

Насколько компактнее дерева

Чтобы гарантировать «не проиграть», можно хранить ответ для каждой позиции явно. Вот сколько всего вариантов в игре — и во сколько раз меньше весит наша сеть.

…и в байтах

Сколько памяти нужно, чтобы хранить решение «никогда не проигрывать» разными способами. Все варианты MLP проверены исчерпывающе.

Точность при квантизации

«Не проигрывать» — это точное условие на argmax, поэтому грубое округление весов переворачивает выбор в трудных позициях. Наведи на формат — пример округления одного веса.

Меньше бит на вес → больше ошибок

Дообученная сеть, ужатая до N бит на вес (поканальный int). Видно порог: до 6 бит — 0 ошибок, ниже точность «не-проигрыша» обваливается.