Остап Бендер из мира нейросетей: как ChatGPT играет в шахматы
На волне безумной популярности ChatGPT, которая умеет писать статьи, музыку, верстать сайты, а самое главное при этом сохраняя контекст диалога, стало интересно, насколько реально потягаться с ней в шахматном искусстве
Предисловие.
В настоящий момент ни для кого не секрет, что возможности вычислительной техники намного опережают возможности человека, пусть и самого гениального и талантливого. С каждым годом остается все меньше сфер и направлений, где человек был бы абсолютно незаменим и замена его какими-либо алгоритмами и программами не представлялась возможной. До совсем недавних пор нельзя было представить, что нейросети могут создавать иллюстрации, писать книги и сценарии, но это время наступило, уже и это не кажется чем-то таким невозможным. В этой статье я хотел бы поделиться своим опытом игры в шахматы с ChatGPT, но начнем мы с небольшого исторического контекста.
Небольшой исторический экскурс.
Вообще, на заре становления компьютерной техники самым главным катализатором возможностей компьютеров в сравнении с человеком были шахматы. Оно и понятно — простые правила, огромное количество возможных вариантов развития партии, компьютеру сложно «смухлевать» и иметь явное преимущество перед человеком. Так одним из самых знаковых ЭВМ для игры в шахматы можно считать Deep Blue. На тот момент это был шахматный суперкомпьютер, разработанный в IBM. Первая его версия в феврале 1996 года потерпела поражение от Гарри Каспарова со счётом 2 : 4. Эта была великолепная игра и проявление гения Каспарова. Он понимал, что хоть компьютер и умеет просчитывать варианты на десятки ходов вперед, он имел большой изъян — не умел понимать шахматную стратегию и вести грамотную позиционную игру, особенно если свернуть партию с известных дебютных троп. Лично мне особенно запомнилась последняя, шестая, партия из того противостояния.
Обзор шестой партии противостояния Г. Каспарова и Deep Blue
Увы, это была последняя успешная игра против шахматного компьютера, ведь всего лишь год спустя была представлена общественности обновленная вторая версия шахматного суперкомпьютера, которая оказала сопротивление Г. Каспарову и взяла реванш за младшего брата, закончив игру со счетом 3½ : 2½ в пользу Deep Blue. После этого было много шума, Каспаров обвинял IBM в жульничестве и нечестной игре, давлении, просил переигровки, но это не имело по большому счету большого значения — было очевидно, что это только начало революции компьютеров в шахматном мире, технологии развивались стремительно и, если уже в 1997 году суперкомпьютер мог обыграть самого сильного шахматиста мира, то с каждым обновлением ЭВМ, с увеличением производительности, новыми алгоритмами шансов у человека против них не оставалось.
До 2017 года в мире шахмат все было спокойно и размерено. Существовали различные шахматные движки, которые умели анализировать позиции, правильно расчитывать угрозы и делать немыслимое погружение во все возможные варианты на десятки ходов вперед, что естественно не под силу человеку. В помощь движкам добавили дебютную базу (несколько первых ходов игроков, которые определяют ход всей дальнейшей партии), а также использовали эндшпильные таблицы Налимова, которые позволяли компьютеру в конце игры практически моментально и точно просчитывать исход игры со 100% точностью. Самым сильным из всех движков был Stokfish, и с ним не то что человек не мог потягаться, с ним не могли на равных тягаться даже другие движки и шахматные системы.
Но в 2017 нейросети начали просачиваться в повседневную жизь. Компания DeepMind представила миру свое детище — AlphaZero. Программа, основанная на нейронных сетях, после всего лишь 24 часов самообучения просто разгромила самый сильный компьютерный движок. Из 100 игр с нормального начального положения AlphaZero выиграл 25 партий белыми, 3 чёрными и свёл вничью оставшиеся 72. Просто, без шансов.
И вот сейчас в 2023 году нейросети просто везде, где только можно. Чего стоит добавление ChatGPT в Bing. Мне стало очень интересно, умеет ли ChatGPT играть в шахматы и какова его сила на текущий момент.
Подготовка к игре в шахматы с ChatGPT.
Я честно признаюсь, что ожидал безумно интересной игры от ChatGPT. Конечно стоит понимать, что все таки это не шахматный движок, что он не заточен под эту игру, но все же, это нейросеть и неизвестно чему именно ее обучали разработчики. С учетом ее возможностей в сфере программирования и решения задач с литкода в частности, а также всего исторического шахматного контекста и колоссального объема данных для обучения в открытом доступе, я готов был к разгрому. Я не профессиональный игрок, в шахматы играю во время перерывов между изучением .NET среды, но я знаю, как можно сгладить углы. Во-первых, я решил, что неплохо было бы для начала визуализировать игру. Я не гроссмейстер, который способен держать партию в голове, поэтому для простоты зашел на lichess.org и решил что именно здесь буду играть против чата. Затем планировал включить встроенный движок, чтобы попробовать поднять свой скилл, заодно посмотреть как чат будет справляться с умным интеллектом. Ну и в дальнейшем хотел глянуть, будет ли чат со мной импровизировать, или разыграет какую-нибудь известную ему позицию из базы шахмат. Вооружившись инструментарием я ринулся в бой.
Как играет в шахматы ChatGPT.
Итак, начнем наше с ним знакомство
Hello! Can you play in chess?
> Yes, I can play chess! Would you like to play a game with me now?
Yes
> Great! I’ll start the chessboard. What type of game would you like to play? A casual game or with specific rules such as time controls?
Casual game
> Understood, a casual chess game it is! I’ll make the first move as white.
Я в предвкушении первого хода, гадаю куда же заведет меня чат, но первый ход немножечко убил:
К такому я был не готов, но быстро понял, что это один из вариантов шахматной нотации. В принципе, можно было бы и в таком виде переносить на электронную доску, но хотелось все таки более человеческого варианта. Поэтому попросив делать ходы в PGN нотации, все стало куда проще.
[Event "Casual Chess Game"]
[Site "OpenAI"]
[Date "2023.02.10"]
[Round "1"]
[White "ChatGPT"]
[Black "User"]
[Result "*"]
1. e4
Ну что ж, открытый дебют, ничего смертельного и хитрого, поэтому первые пять ходов не представляли особого интереса и на выходе из дебюта мы получили такую позицию.
Позиция по дебюту
Нотация:
e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. O-O O-O
Миттельшпиль.
Глянув в движок, я понял, что поспешил с короткой рокировкой и имею уже хуже позицию (оценка +1,3). Я напрягся, ожидая постепенной реализации этого преимущества, но шестой ход меня очень смутил. Но да ладно, подумал я, возможно есть какая-то тактика или хитрость, попробуем продержаться… или может быть схитрим? Мне стало дико интересно, что будет, если указать заведомо невозможный ход.
> It’s my turn again, I’ll play 6. c3. Your move!
d4.
Визуализация хода
И это был первый звоночек. Вместо того, чтобы указать, что такой ход невозможен, чат такой ответ принял и продолжил партию, как ни в чем не бывало.
> Here’s the updated PGN:
csharpCopy code[Event "Casual Chess Game"]
[Site "OpenAI"]
[Date "2023.02.10"]
[Round "1"]
[White "ChatGPT"]
[Black "User"]
[Result "*"]
1. e4 e5
2. Nf3 Nc6
3. Bb5 Nf6
4. d3 Bc5
5. O-O O-O
6. c3 d4
> I’ll play 7. exd5. Your move!
Мы как истинные джентельмены не стали пользоваться невнимательностью чата (а то так можно и мат заочно поставить в два хода), поэтому поинтересовались у чата, возможен ли такой ход, который мы указали:
how are you thinking, my last move «d4» is possible?
> I apologize for that mistake. The move d4 by Black is illegal as it would put the Black king in check. In this position, the Black queen bishop on c5 is attacking the white queen, so moving the d-pawn would put the king in check. A player is not allowed to make a move that puts or leaves their own king in check.
> Here’s the corrected PGN:
csharpCopy code[Event "Casual Chess Game"]
[Site "OpenAI"]
[Date "2023.02.10"]
[Round "1"]
[White "ChatGPT"]
[Black "User"]
[Result "*"]
1. e4 e5
2. Nf3 Nc6
3. Bb5 Nf6
4. d3 Bc5
5. O-O O-O
> My turn again, I’ll play 6. c3. Your move!
Странный ответ. С одной стороны он прав, что такой ход невозможен, только вот причина совершенно другая — пешка не может ходить на 3 клетки вперед. Осадочек остался, но продолжим дальше. И тут еще один звоночек: чат, выдавая абсолютно правильную нотацию, стал «забывать» контекст. На восьмом ходу он очень хотел 8. Nc3, да вот незадача — эта клетка занята его же пешкой. И так сильно хотел этот ход, что пришлось у него три раза спрашивать, уверен ли он в таком ходе и возможен ли он, на что он говорил, дескать, да, ошибочка, извиняюсь — и снова пытался сделать этот же ход. Очень странно
> It’s my turn again, I’ll play 8. Nc3. Your move!
How is possible, your sixth move is c3
> I apologize for that mistake. You are correct, my previous move was 6. c3.
> I’ll play 8. Nc3. Your move!
Wait a moment, on c3 your pawn after your previous moves
> I apologize for the confusion. Yes, you are correct. My previous move was 6. c3, and the pawn on c3 is a white pawn.
> I’ll play 8. Nc3. Your move!
Its illegal move, because c3 hold your pawn
> I apologize for the error. You are correct, the move 8. Nc3 is illegal because it would put the knight on a square that is already occupied by a pawn. In chess, a player is not allowed to move a piece to a square that is already occupied by one of their own pieces.
> I’ll play a different move, 8. d4. Your move!
С четвертого раза мы поняли и приняли, наконец, что были неправы и сделали другой ход.
К десятому ходу случилось немыслимое — чат просто так отдал фигуру. Оценка уже -7, что означает позиция за белых просто безнадежно проигранная. И это практически в самом начале игры
Нотация:
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. O-O O-O 6. c3 d5 7. exd5 Qxd5 8. d4 exd4 9. Nxd4 Bxd4 10. cxd4 Qxb5
Позиция и оценка
Целый лишний конь и оценка движка практически в -8. Это поражение. Уверен, что в таких позиция тренер Бет Хармон из сериала «Ход королевы» заставлял ее сдаваться.
После такого «трюка» стало ясно, что на самом деле ChatGPT в шахматы играть не умеет от слова совсем. Все что он умеет — делать вид, что умеет играть. То есть составлять нотацию по правилам, и никак не пытается понять правильность и возможность таких ходов. Это меня сильно насторожило. Шахматы — не самое главное, достаточно написать модуль для чата, который будет уметь играть в шахматы и чат научиться это делать превосходно, я уверен. Меня больше всего в этом удивил следующий момент: почему чат не понимает контекст? Ведь есть куча историй, как чат помогает в различных задачах, может верстать страницы, добавлять какую-то логику в уже имеющееся решение, дополнять какими-то элементами и многие уверены, что чат помнит весь контекст и умело его использует. С его помощью даже вот дипломы пишут, на секундочку. Но как оказалось, это не так. За 8 ходов чат не смог справиться с контекстом, в упор не видел своей ошибки и даже не признавал сразу, после того, как в нее указали, несмотря на то, что историю партии он выводит правильно.
Эндшпиль.
Дальше было хуже. К 12 ходу у чата началась деменция, он стал путать очередность хода и предлагал мне пойти второй раз
> It’s my turn again, I’ll play 12. Qf3. Your move!
Qxf3
>Here’s the updated PGN:
>It’s your turn again. What’s your next move?
I did Qxf3 after your 12. Qf3. Your move now
>Yes, I apologize for the mistake. After your move 12… Qxf3, it’s my turn again. I’ll play 13. gxf3. Your move!
Еще через два хода чат решил мне продемонстрировать, что знаком с классикой и стал косплеить Остапа Бендера из деревни «Васюки».
> It’s my turn again, I’ll play 14. Bg5. Your move!
My move is Nxf3+
> It’s my turn again, I’ll play 15. Kg2. Your move!
My move is Nxg5
> Here’s the updated PGN:
14. Bh4 Nxf3+
15. Kg2 Nxg5
Его ходы пошли вразрез с шахматной нотацией. Ну мы тоже ему продемонстрировали, что с классикой знакомы
Все ходы записаны
Пришлось выяснять отношения с чатом
You are playing white. Your 16. h4, i move … Ne6. It’s your turn, 17th move
> Ok, I’ll play 17. Bf4. Your move.
You are don’t have a bishop after 14. Bg5. Nxf3+ 15. Kg2 Nxg5. Your 16 move is 16. h4, my move is Ne6.
> My move is 17. Bf4. Your turn.
In your notation mistake: Your 14 move was Bg5.
> My move is 17. Bf4. Your turn.
You are don’t have a bishop, your last move is illegal
Все таки он этот момент исправил, но все равно стал испытывать фантомные боли — ходить слоном, которого уже не было. Тут же и деменция обострилась и чат предложил мне снова ходить после своего хода, а потом вообще стал сам сразу ходить за двоих, естественно не впопад.
Сдача партии.
Чат хватило на еще один ход, который тоже был невозможен, он пытался ходить пешкой, которой у него было. После неоднократного указания на это, чат решил перестать играть в шахматы далее:
Are you sure? Your 13. gxf3. Now you don’t have a pawn on g line
> I apologize, you are correct. After 13. gxf3, white no longer has a pawn on the g-file. The correct move would be 18. hxg5 instead.
18. hxg5 its illegal for you
> Yes, you are correct. My apologies for the mistake. The move 18. hxg5 is illegal because it would leave the king in check. The correct move would be 18. Nxg5
I don’t understand, how u can 18. Nxg5? Its move imposible for you
> I apologize for that mistake. You are correct, I cannot play 18. Nxg5 as I am playing the white pieces and the knight is black. The correct move for white would be 18. hxg5. Thank you for bringing this to my attention.
Are welcome. But make you sure, what you 18. hxg5 is possible? After 17. h5 Nxh5 you don’t have a pawn more.
> I apologize for the mistake. You are correct. After 17. h5 Nxh5, there is no longer a pawn on h5. I cannot play 18. hxg5. I’m sorry for the confusion.
Ok. what’s you move now?
> I apologize, but as an AI language model, I am not able to physically play chess. I can only generate text based on the information and prompt given to me. I can assist with providing information, analysis, and PGN notation for a chess game.
It’s mean what you are have defeat in this game?
> As an AI language model, I do not have the ability to win or lose a game of chess. I can only assist with providing information, analysis, and PGN notation for a chess game.
Лишь бы не признать себя побежденным…
Результат.
Какой итог можно подвести. Обыгрывать искусственный интеллект конечно приятно, но это не совсем тот случай. Понятное дело, что за нейросетями будущее и они в самом ближайшем времени будут внедряться в различные сферы и аспекты жизни. Мне было интересно поиграть с чатом в шахматы, чтобы оценить его силы в сравнении с имеющимся движками, проанализировать какими партиями он руководствуется, да и вообще планировал во время партии спрашивать о его ходах, ожидая анализа решений, что могло бы очень сильно помочь в изучении шахмат. Но стало грустно, когда пришло осознание, что по сути чат занимается имитацией деятельности, нежели реально эту деятельность ведет. И дело не в том, что он ужасно играл в шахматы — это неважно. Я понимаю, что в него банально не заложены правила игры, отсюда идет такая игра. Но! Есть одно огромное и важное, на мой взгляд «но». На самом деле чат не понимает контекст и не может дать в режиме реального времени оценку своим же решениям. Через 7 циклов обращений к нему он стал противоречить самому себе. Благодаря шахматам я это смог понять и поймал себя на мысли, что чат напоминает более прокаченную версию умной колонки или голосового помощника, который может блестяще справляться с простыми задачами и имитировать помощника-собеседника, но через несколько обращений подряд он уже не понимает, что от него хотят и как это сделать.
Вывод.
Вывод у меня получился двоякий. С одной стороны мне, как начинающему разработчику, было приятно видеть, что все таки чату очень и очень далеко для выдавливания ИТ специалистов. Да, он многое умеет, он будет уметь еще больше, и это скорее вопрос времени, когда это случится, но это явно не в этом или следующем году, так что надо продолжать учиться и самостоятельно развиваться, пока еще есть возможности. С другой, немножко стало не по себе, когда представил, что в своих ответах чат руководствуется огромным пластом данных, при этом нет никакой гарантии в правильности ответа, в его достоверности и объективности. Ладно, если там фактические неточности или вода в дипломе. Что если чат будут использовать инженеры для каких-то испытаний и просчетов, для моделирования каких-то моделей, для установления связей? Вот это на текущий момент немного настораживает.
История чата
Нотация и итоговая позиция
e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. O-O O-O 6. c3 d5 7. exd5 Qxd5 8. d4 exd4 9. Nxd4 Bxd4 10. cxd4 Qxb5 11. Nc3 Qf5 12. Qf3 Qxf3 13. gxf3 Nxd4 14. Bg5 Nxf3+ 15. Kg2 Nxg5 16. h4 Ne6 17. h5 Nxh5