О том как stockfish смотрит на шахматную доску ♟
(
или о выученных фильтрах для оценки позиции)
Последние лет 5 на соревнованиях среди шахматных программ выигрывает stockfish, а всё благодаря тому что в 2020 году перешёл на оценку позиции нейросетью архитектуры
NNUE (и это что-то само по себе прекрасное).
Рассмотрим одну из версий архитектуры. Шахматная доска кодируется one-hot через
(piece_square, piece_type, piece_color)
— положение фигуры, тип фигуры и цвет фигуры, всего получается 8×8×6×2=768 чисел на вход, из которых не более 32 единичек (не более 32 фигур), а остальные нолики. Первый слой отображает этот one-hot вектор в 64 features, которые потом дорабатываются в маленьком MLP.
На фото предлагаю взглянуть, а как разные фигуры на разных местах влияют на эти features. Цветом по каждому столбику показано значение фичи. Каждая картинка 8х8 показывает как меняется значение при перемещение фигуры по доске. Первая строчка каждой фигуры это для белых, а вторая строчка для черных.
Тут явно видно, как ходят фигуры. А ещё, что вклад черных это буквально отрицательный вклад белых. Да, вы смотрите прямо в мозги stockfish :)