Искусственный интеллект, великий и ужасный

в 3:01, , рубрики: искусственный интеллект, компьютерные шахматы, Программирование

Мой мальчик! Тебе эту песню дарю.
Рассчитывай силы свои.
И, если сказать не умеешь «хрю-хрю»,
Визжи, не стесняясь: «ИИ!»…
С. Я. Маршак

Эта тема постоянно всплывает в различных обсуждениях на протяжении многих лет. От бурных, с драками и истериками (приблизительно раз в десятилетие) до более спокойных во времена «между пиками». Сейчас, похоже, начался очередной «восходящий тренд». Хотя мусолятся, в основном, всё те же истерзанные тезисы: про дурацкий тест Тьюринга, про ещё более дурацкие «законы робототехники» Азимова, про эмоции и сознание, про шахматы и го плюс всякие ужастики на тему Скайнета. Как ни странно, по-прежнему много разговоров про шахматы, хотя мне казалось, что уж они-то давно уже должны бы прекратиться. Ну что же — эта тема мне наиболее близка, с неё и начнём.

Шахматы

Нет, я понимаю, что когда-то шахматы ассоциировались именно с ИИ. Это продолжалось до тех пор, пока компьютеры играли плохо, и потому «сапиенсы» имели возможность задирать нос и бахвалиться своим ЕИ, который у них, якобы, имеется «по умолчанию». Но сейчас-то? Да, в шахматы с компьютером играть уже не интересно, он постоянно выигрывает. А как насчёт интеллекта? Признаем за железякой его наличие? Да никогда!

  • При чём тут искусственный интеллект? Тут просто перебор всех вариантов.
  • Те же шахматы и прочие игры берутся до сих пор в основном «задницей», т.е. перебором.
  • Операции, которые мы проводим, играя в шахматы, совсем не похожи на простые арифметические. Если взять более сложную задачу, например, распознавание образов, то будет ясно, что машина не в состоянии выполнять необходимые расчёты так же быстро, как человеческий мозг.
  • Лет дцать назад многим казалось, что создание ИИ ознаменуется тем, что компьютер обыграет человека в шахматы. Обыграл. Где ИИ?
  • Мы уже построили компьютер, способный обыграть лучших игроков в шахматы. Но построить компьютер, который смог бы понять детскую книжку, а не просто распознать слова, пока что очень сложно.
  • Программа-шахматист не является ИИ. Это экспертная система (по строгой классификации).


Даже оставив в стороне очевидный бред про «экспертные системы», понятно, что человек будет придумывать всё новые, даже самые идиотские оправдания, лишь бы сохранить веру в сказку, что у него есть этот самый И: Определение разума меняется со временем. Когда-то оно включало способность к умножению — вычеркнуто, даже железки (без электроники) делают это. Потом вычеркнули умение играть в шахматы, далее, что называется, везде. Понятие разума сужается как шагреневая кожа. Как здесь правильно говорилось: Не нужно навешивать модный ярлык ИИ на всё, что шевелится! А я добавлю: и просто И не надо! Тот же тест Тьюринга предполагает, что ИИ должен опуститься до интеллектуального уровня «экзаменаторов», которым по блату приписали наличие интеллекта, и врать им в глаза — и всё это лишь для того, чтобы они соблаговолили признать у него наличие интеллекта? Да нормальный ИИ должен быть выше этих глупостей! Вспомним: миллиардные стада баранов тысячелетиями верят в религиозные бредни самого низкого пошиба, и при этом никто не сомневается в наличии у них интеллекта.

Про что это я? Ах, да — про шахматы. Хотя народ уже переключился на го. Ненадолго, конечно — пока люди и там по морде не получили: А вот пишут, что в Го компьютеры до сих пор играют очень слабо — там комбинаций гораздо больше, чем в шахматах. Игра Го всегда была крепким орешком для ИИ. Скептики утверждали, что программы в го либо никогда не победят, либо одержат победу очень нескоро. Го сложнее шахмат в 10^100 раз — именно в столько раз больше возможных позиций камней на стандартной доске 19*19, чем в шахматах. Что-то быстро вы, господа, забыли аналогичное блеяние про шахматы: Сложность анализа шахматной партии в том, что количество уникальных шахматных партий близится к числу 10^120 и прочие глупости в других «ИИ-задачах» вроде «предела Бреммермана».

Так действительно ли компьютер-шахматист сильнее человека? А разве у кого-то ещё остались сомнения? Он сильнее даже не потому что сильнее, а потому, что люди уже сдались! Каспаров говорил: Если компьютер сможет превзойти в шахматах лучшего из лучших, это будет означать, что ЭВМ в состоянии сочинять самую лучшую музыку, писать самые лучшие книги. Не могу в это поверить. Если будет создан компьютер с рейтингом 2800, то есть равным моему, я сам сочту своим долгом вызвать его на матч, чтобы защитить человеческую расу. Больше не дёргается. А Сергей Карякин высказался ещё определённее: В поединке против компьютера тебя не покидает чувство обречённости. А почему умер великолепный турнир в Гааге «машины против людей», 50 на 50, стенка на стенку? Да всё по той же причине: у людей не осталось никаких шансов! Хотя на ранних этапах этого состязания там играли, в основном, любители, и чуть ли не единственным представителем шахматной элиты человечества был Давид Бронштейн, а под конец там участвовало целое созвездие выдающихся шахматистов: Ваганян, Сейраван, сёстры Полгар, Косашвили, Кристиансен, Тимощенко и другие. Так что не нужно выяснять, кто сильнее: человек или машина — люди уже ответили на этот вопрос! Не говоря уже о том, что никто ещё не программировал компьютер на игру именно против человека (что довольно просто сделать). Черту подвёл Пётр Свидлер: Никакого шанса у человека победить суперкомпьютер в шахматы давно уже нет. Все дискуссии на эту тему давно окончены.

Свидлер, кстати, играл с нашей программой во времена «Кремлёвских Звёзд». Хотя некоторые гроссмейстеры (Шорт, Николич) наотрез отказывались играть с компьютером «на публике» (в фойе КДС), другие (Свидлер, Драгомарецкий) были, что называется «без комплексов». Во время одной из партий произошёл забавный случай: какой-то парнишка лет десяти начал подсказывать (что-то типа «лошадью ходи, век воли не видать»). Отец его одёрнул: «Не подсказывай! У тебя третий разряд, а у дяди, наверное, второй». Свидлер оглянулся: «Ну, по второму-то я по крепкому играю»!

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

Не поможет, господа! Компьютер вполне способен играть и без справочника. Например, наша программа (в зависимости от времени на ход и быстродействия компьютера) вполне по теории разыгрывала шотландскую, итальянскую, испанскую, русскую партии, ферзевый гамбит, ортодоксальную защиту, Каро-Канн, французскую… только моего любимого Пирца напрочь отказывалась играть, даже если этот вариант попадался по дебютному справочнику (и мы запретили играть его за чёрных), да и вообще (в отличие, скажем, от Рыбки) не любила фианкетто. Но это компьютер способен играть и без справочника. А человек-то способен? Ох, сомнительно! Скорее я соглашусь с утверждением, что несколько столетий опыта и рост дебютной теории с начала ХХ века давали человеку немалую фору. А как выглядит человек без дебютного справочника, прекрасно продемонстрировал Валерий Мурахвери. Он подсказал идею поменять местами чёрного ферзя и короля, и когда я запрограммировал это дело и принёс ему, его восторженные восклицания: «Смотри! Смотри! Гамбит Муцио в левой руке!» быстро сменились куда менее восторженным: «Нет, это не гамбит Муцио». Он сыграл четыре или пять партий, но так и не сумел спасти ни одной.

Остаётся последняя надежда на эндшпиль: Сделать ничью в шахматах гораздо легче, чем победить. Есть множество дебютных вариантов, полностью проанализированных до ничейного эндшпиля. Никакой суперкомпьютер не выиграет ничейный эндшпиль у гроссмейстера.
Во-первых, далеко не факт ни то, ни другое. Во-вторых, даже в несчастных эндшпильных справочниках, которые не имеют ни малейшего отношения даже к шахматам, не говоря уже про ИИ, Каспаров умудрился «увидеть Бога»! Кстати, что это за «эндшпильные таблицы Налимова»? Это какого такого Налимова? Не Женька, случайно? Точно, Женька: Евгений Викторович Налимов, Новосибирск! Уникальный человек! Очень сильный программист, который с первой же попытки стал чемпионом России. Вернее, он занял второе место, но позже выяснилось, что победитель турнира использовал Chessmaster, которую он выдавал за программу собственной разработки. Но дело не в этом: Женька вообще не умел играть в шахматы! Мы просто валялись со смеху, когда он буквально на пальцах высчитывал, где там e2, а где e4 (на досках не было обозначений вертикалей и горизонталей)! Правда, по его словам, тестировал его программу и составлял дебютный справочник всё-таки какой-то знакомый КМС.

Теперь пробежимся бегло по некоторым тезисам, большинство из которых не соответствуют действительности.

Дебютная теория в шахматах очень продвинутая — Wiki + Database. На данный момент дебютная теория практически окостенела, поскольку все основные дебюты уже просчитаны на 20 ходов вперед.

Да уж, продвинутее некуда! Помню, как-то заводили мы дебютный справочник по толстой книге с названием «Энциклопедия шахматных дебютов» (один из «сумасшедших вариантов» во французской защите) — какая-то странная жертва, контржертва… дали нашему «Миражу», тот посмотрел — МАТ!

Насколько я знаю, этот подход именно к шахматам устарел, современные сильнейшие программы основаны на многомиллионных базах сыгранных людьми партий.
Полная чушь! Из той же оперы, что и непогрешимость дебютов. Чушь хотя бы потому, что программы играют сильнее человека — так зачем им эти «многомиллионные базы» в исполнении заведомых чайников?

Человек смотрит на доску и «видит» лучший ход без явного перебора вариантов (ну может анализ нескольких ходов).

Да ни хрена он не «видит»! Тот же Карякин в матче с Карлсеном совершал ошибки уровня второго разряда. Тот же Карпов пошёл на вариант, где он получал мат в два хода и выиграл. А в одной из партий «матча титанов» Карпов-Каспаров на доске три хода подряд (!!!) стояла позиция несложного форсированного выигрыша (для большинства программ на это требуется 10-15 секунд) — один из них трижды не воспользовался этой возможностью, а второй трижды не воспользовался возможностью избежать немедленной гибели. Партия закончилась вничью.

Традиционный спор: что эффективнее, точно оценить позицию или достичь большей глубины поиска. Опыт показывает, что слишком «тяжелые» оценочные функции неэффективны. С другой стороны, более подробная оценка, учитывающая больше факторов, обычно приводит к более «красивой» и «агрессивной» игре. Скорость работы будет в основном зависеть от оценочной функции.

Простите, ЧЕЙ «опыт показывает»? И В КАКУЮ СТОРОНУ «будет зависеть»? Я вот, например, утверждаю, что сложная, комплексная оценочная функция ускоряет перебор! А вот в литературе обычно встречается прямо противоположное мнение.

Используется идея сначала сделать ход, в котором будет взятие фигуры противника, которая сделала последний ход. Также известна эвристика истории или служба лучших ходов.

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

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

Проект Komodo стартовал в 2007 году в результате сотрудничества программиста Дона Дейли и гроссмейстера Ларри Кауфмана. К сожалению, Дон Дейли ушёл из жизни, но дальнейшую разработку взял на себя Марк Лефлер, автор шахматной программы Now.

У Дейли и Кауфмана была очень интересная программа Rex, а затем более сильный, но куда более скучный Socrates. С ними я никогда не пересекался, а вот с Лефлером довелось: в Лондоне мы поделили с ним 3-4 места (после Hiarcs и M-Chess), а в Мюнхене на чемпионате мира по блицу Мираж проиграл Now, отдав на ровном месте ладью. У Лефлера глаза на лоб: «Это что, какой-то сбой в программе»? Я говорю: «Нет, это горе от ума — Мираж увидел мат себе и выбрал меньшее из зол». Вроде, всё правильно, но Now-то мата не видел! Так что согласен — бывает и так: Если компьютер оценивает своё положение как однозначно проигрышное и видит, что уже никак не спастись, то он выбирает не самое упорное продолжение, а просто играет уж хоть что-нибудь.

По счастливому совпадению, на шахматной доске 64 клетки. А значит, если для каждой клетки использовать один бит, мы можем хранить всю доску в 64-битном целом числе.
Маразм. Даже если не читать дальше объяснение о «преимуществах такого варианта».

В основе большинства шахматных движков лежит алгоритм поиска минимакс или его модификация негомакс.

Утомили уже этой «альфа-бетой»! Не говоря уже про бредни вида «такой метод требует заранее заданной глубины». Каскадный перебор — это вовсе не «сначала мы проводим анализ на глубину 1, потом на глубину 2 и т.д.» — глубина перебора рваная! В частности, у нас максимальная глубина была ограничена величиной 21 полуход. А форсированный перебор далеко не всегда «только взятия и шахи» — там ещё есть, как минимум, нападения и матовые угрозы, а иногда и движение проходных пешек. И вообще, я полагаю, что ни одна из шахматных программ (по крайней мере, из сильных шахматных программ) негомакс не использует.

За счёт качественной сортировки ходов и отсечений, современные движки умудряются достигать коэффициента ветвления ниже 2.

Ха-ха-ха! У Миража этот коэффициент редко превышал полтора, но и это очень много. Кстати, никаких «отсечений» не было.

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

Ну и правильно делает! Народу не нужны некорректные ловушки, народу нужны корректные ловушки!

Дип Сот на момент матча был в мире сильнейшим электронным игроком в шахматы — действующим чемпионом мира среди компьютерных программ.

А после матча, если я правильно помню, занял лишь третье место, уступив Фрицу, который играл на «пне» с частотой 90 МГц.

Ещё есть классическая книга экс-чемпиона М. Ботвинника «О кибернетической цели игры».

А сами-то читали эту книгу? Как говорил Леонид Филатов в каком-то фильме: «Семь ошибок: три в теории и четыре в числовых оценках». Я знал лично 3-4 десятка авторов шахматных программ, включая 5-7 чемпионов мира, и утверждаю, что ни один из них никогда не рассматривал своё произведение как ИИ. Впрочем, я не думаю, что и сам Ботвинник был настолько глуп, чтобы верить в эту ахинею. Скорее всего, он просто вешал лапшу на уши лохам, получая весьма ощутимые материальные дивиденды. В любом случае, его «Пионер» — это что угодно, но только не шахматная программа.

Слишком далеко ушли вперед современные программы, даже от программ десятилетней давности. За прошедшие 15 лет сменилось примерно 5 или 6 поколений шахматных программ, алгоритмы крайне сильно усовершенствовались, и то, что считалось сильнейшим в 1997-м году — сейчас любой новичок за неделю напишет программу сильнее, просто читая готовые статьи на специализированных сайтах. Это произошло не за счет роста мощности железа, а благодаря развитию алгоритмов.

Да неужели?! Огласите весь список, пжалста! И где там спрятался «любой новичок»? А ну, поворотись-ка, сынку! А вы знаете, что один из первых чемпионов мира (по-моему, это был Кен Томпсон) как-то сказал: «За последние десятилетия в компьютерные шахматы не было привнесено ничего нового, за исключением нуль-хода»? Я, правда, не согласен: нуль-ход тоже нафиг не нужен! Сюда же относятся сказки вида: Мои студенты после 2 курса втроём за три недели сваяли вот эти шахматы. Господа! Поверьте уж на слово: шахматная программа — это реально сложная вещь! А умение играть в шахматы вовсе не синоним умения передвигать фишки.

В этой реализации есть что улучшать, но не забывайте — все делалось за 48 часов. Так же мы планируем открыть API для шахматного ИИ. Когда ИИ станет достаточно сильным, мы позовем настоящего французского гроссмейстера и представителя Гиннесса, чтобы провести самую захватывающую шахматную партию! Еще мы ищем талантливых разработчиков на JavaScript, чтобы справиться со всем описанным выше.

Здесь я могу сказать лишь одно: какое только дерьмо ни назовут ИИ! В общем, «Петрики рулят»…

Процесс обучения программы шахматам занял всего лишь 24 часа. В систему были введены только правила игры — и все. Никаких дебютных библиотек или баз данных партий. Только правила. И 24 часа программа играла сама с собой. Через 24 часа и 44 миллиона партий, сыгранных с самой собой, AlphaZero стала сильнейшим игроком в шахматы в истории игры. Рейтинг Эло AlphaZero составляет примерно 3500 пунктов, хотя по разным данным он доходит и до 5000.

Ну или аналогичное: Нейросеть Giraffe за 72 часа научилась играть в шахматы на уровне международного мастера ФИДЕ. А что, потом электричество вырубили? Подучилось бы уж и дальше, хотя бы до уровня гроссмейстера. Лично я никогда не воспринимал нейронные сети всерьёз — во всяком случае, как ИИ. Ибо этого не может быть потому, что не может быть никогда! Но это уже тема для отдельного разговора.

Итак, слушали — постановили: никакого ИИ в компьютерных шахматах нет, не было, и не будет. Среди белковых шахматистов интеллекта также обнаружить не удалось.

В заключение хочу предложить одну из самых эффектных комбинаций нашего «Миража», которой он выиграл в турнирной партии у действующего чемпиона мира. На тот момент ни одна из известных нам программ не могла её найти. Можете попробовать скормить это современным программам — например, той же нейронной сети, которая за сутки достигла сверхчеловеческого качества игры в Го, шахматы и Сегу. Если кто-то сделает это, не сочтите за труд сообщить результат.

image

Ход чёрных. Выигрыш.

Автор: rybvv

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js