Search
Write a publication
Pull to refresh

Некоторые замечания об игре в Шахматы против LLM (на примере deepseek)

Reading time6 min
Views4.3K

Поскольку LLM (все эти ChatGPT, DeepSeek и т.п.) это языковые модели, которые по идее просто складывают ответ из кусочков фраз, как в калейдоскопе - мы не ожидаем от них чудес логики. Тем больше они нас удивляют пытаясь генерировать ответы на достаточно мудрёные задачи - от генерации и исправления программного кода до, например, игры в шахматы.

Идея с игрой в шахматы хороша тем что на ней легко продемонстрировать и неспециалисту как возможности так и ограничения LLM. Эксперименты на эту тему появились уже давно, например в статье на Хабре же от 2023 года. Там автор на 6м ходу сделал неправильный ход но LLM этого не заметила. Мы кратенько посмотрим есть ли прогресс в этом направлении, попробуем немного изменить подход и потестируем пару похожих игр.

Обзор предыдущей статьи

Здесь пара наблюдений - во-первых автор попробовал прямолинейно задать задачу - вот садись и играй со мной. В комментариях отметили что поскольку LLM не обладает памятью как таковой, эта задача возможна только с некоторыми ограничениями - в частности LLM в том или ином виде выводит текущую позицию в каждом ответе и переиспользует её.

Второе наблюдение - опять же из комментариев - чуть более ранняя версия ChatGPT вообще сразу отказывалась играть сообщая что она LLM а не шахматный движок. Из этого можно сделать вывод - разработчики в какой-то мент подсуетились и добавили в каком-то виде "бэкенд" под эту конкретную задачу. Правда не полноценный движок а только возможность отображать позицию и предлагать ходы.

Попытка №1 - по аналогии с предыдущей статьёй

Мы попробуем использовать DeepSeek (в основном потому что он доступен без ухищрений) - и сперва зададим вопрос в аналогичном ключе:

Как видим, LLM сразу предлагает использовать популярную в компьютерных шахматах нотацию для записи позиции (построчно) - но впрочем говорит что может и изобразить кое-как доску в ASCII. С учётом печати символов с небольшой задержкой это оказывается довольно нудно. По ходу я попросил LLM не пытаться давать подсказок и уже на 2-м ходу столкнулся с небольшой проблемой:

1. e4 e5 2. d4 exd4
1. e4 e5 2. d4 exd4

Пешка с e5 бьёт d4 и судя по диаграмме оказывается опять же на d5. Попытки убедить исправить это безобразие не увенчались успехом.

Я предложил начать заново и использовать только FEN-нотацию. Её можно копипастить например на доску анализа на lichess а не "визуализировать в уме".

те же ходы 1. e4 e5 2. d4 exd4
те же ходы 1. e4 e5 2. d4 exd4

В этот раз всё правильно, и чёрная и белая пешки стоят бок о бок на четвертой горизонтали.

исправленная позиция после двух двойных ходов
исправленная позиция после двух двойных ходов

К сожалению на этом хорошее заканчивается. Игнорируя подсказки ИИ (типичное продолжение Nf3 - навалиться на пешку конём а не сразу бить ферзем, иначе его отгонят с потерей темпа) я предлагаю двинуть вперед мою пешку.

отказывается двигать пешку вперед
отказывается двигать пешку вперед

Объяснение впечатляет - пойти на e5 нельзя потому что пешка уже на e4 (она не может двинуться отсюда на e5 за один ход). Искать логику в этом объяснении бессмысленно - но оно хорошо показывает что LLM именно языковая модель - она забрасывает нас формально склееенными фразами примерно соответствующими ситуации которую обрисовал запрос.

Оставим попытки идти этим путём и попробуем чуть иначе.

Попытка №2 - даём позицию, спрашиваем лучший ход

Простейшая оптимизация с учётом характера работы LLM - предложить ей готовую позицию и задать относительно неё вопрос. Расставим фигуры в соответствии с 2.5 первыми ходами:

1. e4 e5 2. Nf3 d6 3. Bb5
1. e4 e5 2. Nf3 d6 3. Bb5

Спросим какой ход порекомендует за чёрных

предлагает ход a6 вместо c6
предлагает ход a6 вместо c6

Как видим идея логичная - прогнать вылезшего невовремя слона - но реализация не просто плохая а даже невалидная, король остается под шахом. Гнать слона нужно пешкой c6 а не a6. Будем терпеливы и обратим внимание на этот момент...

замечательно что так подробно поясняет
замечательно что так подробно поясняет

Предложенный ход адекватный, но пояснения (которые хотелось почикать с этого скриншота) настораживают - четвёртый вариант предлагает сдвинуть короля вправо, но отмечает что это ход некорректный, потому что король остаётся под шахом от слона. Не верь глазам своим - король не остаётся под шахом, но пойти на f8 конечно не может так как там стоит его собственный слон!

Кажется на этом желание продолжать уже иссякает - слишком много усилий для достижения ничтожного результата.

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

Немного поварьируем позицию - я сделаю ход пешкой (а не конём) чтобы предотвратить размен слона на коня и заставить противника потерять темп...

сколько ходов белых возможно в этой позиции?
сколько ходов белых возможно в этой позиции?

Как я вижу, здесь 6 пешек могут сделать короткий или длинный ход каждая (всего 12) доступны 2 хода левым и 5 ходов правым конём, слон может сделать 7 ходов, ферзь 1 и король 3 включая рокировку - итого 30 что ли? А что думает наш "калькулятор"?

очевидно он не считает на самом деле ходы а опять же "склеивает" ответ из фраз... где их берет?
очевидно он не считает на самом деле ходы а опять же "склеивает" ответ из фраз... где их берет?

Поскольку текст ответа печатается с маленькими задержками, до последнего момента не оставляет надежда на лучшее. И эта аккуратная разбивка по фигурам... К сожалению содержание ответа печально:

  • для короля упущен третий ход Kf1

  • зато ферзь считает коня на f3 пустым местом и имеет 4 хода в этом направлении - да ещё один на d2 (пешку тоже не замечает)

Остаток списка ходов тоже содержит интересные откровения:

Rook Moves (2): Rh1e1 Ra1b1 Bishop Moves (4): Bb5a4 Bb5c4 Bb5d3 Bb5e2 Knight Moves (from b1) (2): Nb1c3 Nb1a3 Pawn Moves (7): a3, a4 b3, b4 c3, c4 g3, g4 h3, h4 d3 (but not d4 as it's blocked by pawn on d6) f4 Knight Moves (from f3) (4): Nf3g5 Nf3h4 Nf3d4 Nf3e5 Total Valid Moves: After careful counting, White has 26 legal moves in this position.

Оказывается возможны ходы ладьями а пешка на d может пойти на d3 но не на d4 потому что ей мешает пешка на d6. Отдельно любопытно что пишет - ходов пешек всего 7 - и перечисляет 8 (включая невалидный f4 - прыжком через коня).

Хватит с шахматами. Ведь это китайский LLM - попробуем его родную игру!

Сыграем в Китайские Шахматы - Xiang-qi

Вероятно не все (и даже многие) не знают подробностей правил этой игры, но для наших экспериментов это и не требуется. При желании вы можете расспросить LLM о правилах. Я их знаю поверхностно и уточнив что LLM понимает нотацию XFEN попробую ей воспользоваться. Как и раньше, сделаю пару первых ходов и спрошу совета:

красные двинули вперед пешку а чёрные шагнули вправо "колесницей"
красные двинули вперед пешку а чёрные шагнули вправо "колесницей"

В этой позиции пушка (катапульта) угрожает побить пешку красных - у этой фигуры довольно необычное поведение - она ходит как ладья (колесница), но бьёт (тоже по горизонтали или вертикали) прыжком через ровно одну фигуру (свою или противника) - ей как бы нужна точка опоры. В данном слуае такой опорой будет чёрная пешка (вторая слева).

Что нам предложит DeepSeek?

Для ходов используется китайское наименование фигур а для позиции европейское
Для ходов используется китайское наименование фигур а для позиции европейское

Кони в китайских шахматах ходят почти как в европейских с одним любопытным отличием - если "впритирку" к коню стоит другая фигура (своя или чужая) - по горизонтали или вертикали - то он лишается подвижности в этом направлении (то есть теряет 2 хода из 8). Иными словами коней можно блокировать. Вместе с поведением катапульт это даёт игре довольно неожиданные повороты.

Даже если мы не очень знакомы с принятой в Xiang-qi записью ходов, DeepSeek нам подсказывает. К сожалению трудно понять что он пытается предложить. Запись H0+1 не кажется мне знакомой, коня на "g0" нет и даже если имелся в виду конь на h0 то в этом направлении пойти он не может т.к. подпёрт слоном, как пояснено выше. Попробуем уточнить:

во как скакнул
во как скакнул

Конь совершил квантовый скачок на 2 клетки вперед и на 3 вправо. Не знаю есть ли подобная фигура в "сказочных шахматах" но это точно не по правилам Xiang-qi. Кажется на этом эксперимент можно считать ещё более неудачным чем с шахматами.

Игра попроще - Ним

Конечно LLM знает всё или почти всё о более простых играх. В игре Ним у нас есть несколько кучек камней и можно брать сколько угодно из любой (но только одной) по очереди. Цель - взять последний камень. Я предлагаю начать с кучками из 3, 5 и 7 камней

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

Я предлагаю взять 3 камня из средней кучки и оказывается что мой противник забыл текущую позицию. Я-то предполагал что он анализирует свой предыдущий ответ...

должно быть 3, 2, 6 конечно
должно быть 3, 2, 6 конечно

я напоминаю ему позицию и прошу исправиться. он это делает но неожиданно впадает в целую цепочку нерешительных раздумий

дальше идёт примерно столько же текста и исправленный результат 3, 2, 1
дальше идёт примерно столько же текста и исправленный результат 3, 2, 1

В конце он говорит что возьмёт 5 камней из третьей кучки. Хорошо, памятуя что ему надо давать каждый раз текущую позицию, продолжаю:

какой молодец
какой молодец

Что ж, это вам не шахматы, с небольшими погрешностями LLM доводит дело до конца. Не откажем ему в удовольствии насладиться победой - прошу выразить триумфально свой триумф:

предложение сыграть в крестики нолики звучит уже немного пугающе
предложение сыграть в крестики нолики звучит уже немного пугающе

Можно отдать должное языковым способностям движка - ну заодно и порадоваться его предложению сыграть в крестики-нолики.

Честно говоря я планировал сделать совсем короткую заметку единственная цель которой - предложить коллегам эдакий "инструмент" на случай когда нужно объяснить проблематичность использования ИИ для решения (псевдорешения!) задач требующих логики. Тем не менее если кому-то будет не лень попробовать в крестики-нолики - расскажите, чем кончится дело!

Tags:
Hubs:
+11
Comments28

Articles