Шахматы и языковые модели



Про сами шахматы я знаю не так уж и много, всего-то 20к игр на lichess и 6к игр на chess.com. И свой движок я когда-то писал просто по фану.

Даже если вы сами не играете в шахматы, эта тема любопытна по двум простым причинам:

1) Шахматы исторически имеют особое значения для всей области ИИ. Вы по-любому слышали про Deep Blue и AlpahaZero.

2) Шахматы всё ещё можно использовать как бенчмарк того, насколько хорошо обобщают модели общего назначения. И выяснять с их помощью, как именно это обобщение работает.





🧑‍🏫 Слой 0: языковые модели общего назначения

Для начала, насколько хорошо языковые модели из коробки играют в шахматы?



OpenAI намеренно включают шахматные игры в предобучение, см. дополнение A2 статьи Weak-to-Strong Generalization (спасибо посту с lesswrong за наводку). Из-за этого наибольший рейтинг (примерно 1750 ELO против Стокфиша с ограниченной силой) среди моделей общего назначения долгое время имела gpt-3.5-turbo-instruct, и тому есть много пруфов (раз, два, три). При этом это играла она гораздо лучше gpt-4 😁, что скорее всего означает, что шахматный сет долили в начале 2023 года.



Что касается gpt-4o, в неё этот сет уже как будто бы попал, в рейтинге по задачкам у неё примерно 1800 ELO. Все остальные модели общего назначения играют хуже. На эту тему есть много смешных видео.





🤴 Слой 1: специально обученные языковые модели

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



Но перед этим коротко о форматах.

PGN: Формат партии: последовательность ходов с мета-данными и комментариями. Пример: 1. e4 e5 2. Nf3 Nc6 3. Bb5

FEN: Формат доски: положения фигур, кто сейчас ходит, можно ли рокироваться. Пример: rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1

UCI: Протокол общения между движками и нотация ходов. Пример: e2e4





Grandmaster-Level Chess Without Search

Статья: ссылка

Из названия более чем понятно, о чём статья. Ребята скачали 10м игр с Личесса, разметили винрейты для позиций и для каждого хода через Стокфиш, всё ещё лучший существующий открытый движок. Дальше учили 3 версии моделей: 1) на винрейты позиций, 2) на оценки ходов, 3) на лучший ход. В качестве входа используется FEN (то есть никакой истории, только текущее состояние), и для 2 и 3 версии ещё кодируется ход. В качестве выхода в 1 и 2 версии используются корзинки вероятностей, в 3 версии — one-hot представление хода. Модели маленькие, до от 9м до 270м параметров.



Лучшая версия модели имеет 2900 ELO против людей и 2300 ELO против ботов на Личессе 😱

Есть у авторов несколько объяснений наличия 2 чиселок вместо одной, основное из которых — разные пулы игроков, но это не так важно. Из по-настоящему важного — размер сетки влияет довольно сильно, и такая сетка выигрывает у аналогичной у AlphaZero (без поиска, само собой). Но не выигрывает у аналогичных сеток у современных движков. Да и с чего бы, там же тоже трансформеры и датасет не хуже.





Шахматы и вопрос разумности больших языковых моделей

Статья: ссылка

Если откинуть философские рассуждения, учили gpt-2-medium (380м, статья-то 2022 года) на PGN без переделки токенизатора, на 3.5M партий из ChessDB. В итоге у модели получилось около 1300 ELO против Стокфиша с ограниченной силой. Косяков тут много (да хотя бы токенизатор), но при этом статья вполне показательна. Да и вот аналогичная модель с такой же тушкой, датасетом и ELO.



Размеры моделей сравнимые с прошлой статьёй, так почему же так плохо? 😭

Во-первых, обучение на PGN, из-за чего модели нужно самой восстанавливать оригинальное состояние доски и отслеживать все изменения. С FEN всё проще, модели не нужно ничего помнить. Во-вторых, и это самое главное, партии-то неаннотированы. Модель обучалась как на хороших ходах, так и на плохих.





Осталась ещё пара слоёв, типа моделей мира и исследования ограничений архитектур через призму шахмат. Об этом в следующем посте.