Интеллект роботов

(Начало в №19)

Материалы серии "Интеллект роботов" вызвали неподдельный интерес. Но в процессе полемики с читателями достаточно часто чувствовалось некое недопонимание. Например, очень многие, прочитав материал, почему-то начинали дискуссию со Станислава Лема. Честно сказать, я не читал ни одного произведения этого писателя, когда-то давно посмотрел скучный (для меня) "Солярис" Тарковского, а американскую экранизацию этого произведения с Джорджем Клуни и вовсе выдержал минут пять. То есть, Лема я знаю очень плохо, и вообще фантастикой увлекался давно, другими писателями, а теперь гораздо интереснее читать просто технические документации:)... опять же, для меня. В предыдущем материале мы говорили об образном мышлении, каким оно может быть и как реализовываться. Сегодня подойдем к вопросу интеллекта роботов с другой стороны.

Тот, кто внимательно читал материалы по Elrob'2006 в прошлом году, наверняка обратил внимание на такую вещь, как CIP (Common Interface Protocol). Напомню вкратце, о чем речь. Дело в том, что, в отличие от американских, европейские производители военной робототехники в большей своей массе отказались от автономно управляемых машин с высокой долей собственного интеллекта, предпочтя им дистанционно управляемые. Последние дешевле, легче в разработке и производстве (можно быстро наладить поток). И хотя самой робототехники выпускается не так уж и много, каждая из компаний предлагает свой стандарт этого самого дистанционного управления. Это не совсем удобно с точки зрения военных, поэтому было решено внедрить CIP - единый стандарт для всех машин, благодаря которому оператор командного компьютера может управлять целой армией разных устройств от различных производителей: беспилотными самолетами, наземными роботами и так далее. То есть, речь идет о неком общем для всех стандарте.

На самом деле работа человека-оператора с введением CIP будет напоминать игру в Dune, Warcraft, Starcraft. Кстати, это наиболее емкое сравнение. Причем в данной ситуации "мозг" сосредоточен только в рамках командного центра. А раз уж мы заговорили о Dune, Warcraft, Starcraft, то разовьем идею дальше... ситуацией может управлять как человек, так и компьютер благодаря созданному в его рамках искусственному интеллекту (ИИ). Вы думаете, что создать таковой трудно? На самом деле, время показывает, что нет. Например, во многих играх стратегического плана ИИ уже специально "занижают" для того, чтобы у обычного человека была возможность выиграть. О данной теме мы поговорим поподробнее после, а сегодня начнем с истоков...


Где взять информацию?

Когда я бываю в Москве, то обязательным местом посещения в этой столице является "Дом книги" на Новом Арбате. По программированию ИИ и разработке компьютерных игр там имеется один небольшой стеллаж, который ваш покорный слуга практически скупил полностью. Наиболее занимательной книгой, которую я мог бы рекомендовать начинающим, оказалась самая недорогая, как это часто и бывает. Называется она "Программирование шахмат и других логических игр" ("БХВ-Петербург", 2005), написана Корниловым Е. Н. - человеком, который занимался этим вопросом более 10 лет. Листинги и примеры программ представлены на С++ и Pascal на базе стандартных приемов программирования, то есть, для студентов вузов это чтиво достаточно легкое, хотя содержит множество специфических терминов, достаточно емко объясненных, описаны основные алгоритмы, применяемые в современном шахматном ПО.

Англоязычные публикации по AI в компьютерных играх, особенно в шахматах, имеются в большом количестве в Интернете, список сайтов давать не буду, поскольку их очень много, а всякий интересующийся данным вопросом может найти для себя что-то новое и уникальное самостоятельно. Помимо этого, на некоторых ресурсах бесплатно даются готовые алгоритмы, в большинстве случаев написанные на С/С++. Нередко они хорошо прокомментированы, поэтому читать такой листинг можно как обычную книгу:). Для начала давайте ответим на вопрос, почему за основу мы берем именно ИИ в шахматах и компьютерных играх, куда это все ведет?


Один из вариантов. Многофункциональные ИИ

Одной из самых молодых, но бурно развивающихся ниш являются многофункциональные ИИ. Суть их заключается в том, что им "все равно, в какую логическую игру "играть", достаточно только загрузить правила. Среди таких "движков" был некогда популярен Zillions of Games, а на данный момент разрабатываются и другие подобные. Данная ниша вообще очень интересна, поскольку может иметь продолжение в обычной технике и робототехнике. То есть, вам не нужно будет программировать весь процесс принятия оптимальных решений и логику, достаточно иметь базис, в который загружаются условия. А за чем, собственно, будет следить такой многофункциональный ИИ, разницы нет - за ростом растений в теплице либо процессом освоения морского дна... Со временем, удешевлением технологий и ростом производительности, такой ИИ можно будет вставлять и в военную/гражданскую технику, давая ей определенную долю автономности или самостоятельности в принятии решений в рамках реальных ситуаций. Ведь, если говорить прямо, что такое гонки DARPA Grand Challenge (теперь уже Urban Challenge)? Это соревнования искусственных интеллектов применительно к задачам в реальных условиях.

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


Сравнение между 1 и 2...

  1. Генрих Рудольф Герц, проведя опыт по беспроводной передаче электромагнитной волны, назвал его абсолютно бесполезным для практики, хотя, несомненно, интересным с научной точки зрения, и ошибся, сейчас на этом держится очень многое.
  2. Клод Шеннон в первой статье о программировании шахмат также назвал свои опыты не имеющими значения для той же практики, указав, что сами вопросы представляют чисто научный интерес. Между тем Клод Шеннон в этой же статье определил два основных направления, по которым и сейчас создаются ИИ.


Что "внутри"?

Шахматные соревнования между программами, а также между человеком и компьютером проводятся уже более полувека. Каждая уникальная разработка имеет собственную алгоритмическую базу, чем она лучше, тем больше шансов на победу. То есть, если сейчас у кого-то появится радикально новая идея, она вполне может оказаться успешной, как это доказывает множество примеров. Так что для интересующихся могу сказать, что шансы есть всегда. Отдельно стоит отметить сам подход к созданию шахматного ИИ, который отличается от человеческого И:). Например, Михаил Ботвинник долгое время пытался создать свою шахматную программу, но она так и не заиграла. Как прокомментировал кто-то его попытки, "Ботвинник только думает, что знает, как он думает". И данное высказывание можно считать очень спорным.

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

Чистая математика не всегда эффективна, иногда излишне громоздка, поэтому очень многое приходится брать из "человеческого". Тут можно упомянуть и использование готовых баз дебютов и эндшпилей в большинстве ПО, а есть и другой тонкий момент. При программировании известного DeepBlue гроссмейстер Джон Бенджамен играл с машиной вплоть до момента возникновения неправильной оценки позиции с ее стороны. После нажимался "стоп", команда разработчиков собиралась и анализировала ошибку, вырабатывала решение, делая алгоритм более совершенным. То есть, очевиден эмпирический подход. Я это привожу в пример для того, чтобы вы понимали: все создается с помощью "совместных усилий", полный перебор до сих пор невозможен, но выборочный, с учетом людских наработок, функционирует и достаточно успешно. А в общем и целом, ситуация видится таким образом, что машинный интеллект уже побеждает чемпиона мира, хотя в 50-х мог проиграть любителю. Причем полный перебор не всегда и нужен, ведь если говорить о выборочном расширении определенных строк, то данный подход более близок к человеческому мышлению. Об этом писал и Клод Шеннон. Но всегда ли человек сможет выбрать лучший ход, продумать все ситуации? Спорный вопрос, поэтому в программах обычно балансируют между полным перебором на определенную глубину и выборочным, отклоняясь в ту или иную сторону в зависимости от предпочтений разработчика.


О прошлом материале

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

Вот и на форуме "КВ" возник спор, в котором ваш покорный слуга принял технократическую позицию. Ведь в любом случае ребенок после рождения заполняет свою "базу данных", запоминает те же геометрические фигуры и буквы, предметы и объекты, учится основополагающим понятиям на уровне ассоциаций. А если говорить технократическими терминами, то использует для всего этого информацию, поступающую от рецепторов, органов слуха и зрения. В принципе, оборудовать компьютерный мозг датчиками, видеокамерой, микрофоном, лазерным сканером не составляет особой сложности. Гораздо большие проблемы с тем, чтобы компьютер смог правильно распознавать и сравнивать, анализировать поступающие потоки информации, автоматизировано составлять собственную базу данных. Что брать за основу? Конечно, человеческое восприятие окружающего, его опыт, других вариантов как бы и нет. В общем, именно эта задача сейчас является первоочередной для программистов, и решаться она будет достаточно долго. Но (!) все реализуемо, мощный ИИ, сравнимый с уровнем человеческого интеллекта, создать можно, и рано или поздно он будет создан.


Вместо завершения

Что касается самих компьютерных игр (не шахмат), то на первый взгляд может показаться, что в них все гораздо проще, чем в супер-шахматах, правда, как вы понимаете, не редко используются те же методы: перебор возможных ситуаций на определенную глубину, их оценка, выработка оптимальных решений, а также должен сидеть умный человек или команда, который выявляет стратегические и тактические ошибки программы, исправляет их, улучшая алгоритмы. Хотя на самом деле все не так просто, ведь в каждом игровом жанре присутствует своя логика, это не стоит сбрасывать со счетов. А, судя по своему опыту, могу сказать следующее. Досконально ознакомившись с правилами игры и составив прекрасную математическую модель работы компьютерного интеллекта, вы все равно столкнетесь с множеством мелких нюансов и несовершенств, сядете за игру и в процессе начнете вносить поправки, особенно в случаях, когда программа должна выбирать определенные стратегические ветки, адаптироваться к созданным ситуациям. Успешным результатом можно считать тот момент, когда разработчики сами просят "ослабить" интеллект, что достигается различными путями. Обычно на этом работа и заканчивается. Если вам кажется, что создание ИИ в компьютерных играх просто, могу вас разочаровать - это один из самых трудоемких процессов, если не самый трудоемкий. Это, кстати, демонстрирует и множество игр, в общей массе которых хорошим интеллектом может похвастаться лишь несколько десятков процентов, а наиболее серьезные и сложные баталии происходят в сетевом режиме, когда человек играет с человеком.

В случае же, когда мы говорим о CIP и возможности управления военными операциями с множеством военной робототехники за счет компьютера без участия человека, то тут, наоборот, нужно еще много дорабатывать. М-да, военные вообще-то и так уже наворотили, что мало места. Но машины с развитым искусственным интеллектом могут оказаться очень полезными в области моделирования различных ситуаций, исследовательской деятельности, освоения космических тел и подводного пространства. Чтобы не писать общими словами, приведу немного абстрактный практический пример: есть необходимость в создании космической базы на планете N, для чего имеется множество различных радиоуправляемых роботов и единый командный центр с искусственным интеллектом. Этот вариант более удобен и эффективен, нежели дистанционное управление с Земли, тем более для случаев, когда решения нужно принимать незамедлительно. Для того, чтобы правильно запрограммировать такой ИИ, нужен... еще один компьютер с ИИ (или программа), который моделирует различные ситуации, возможные на планете N. То есть, за счет одного искусственного разума обучается другой. Своеобразные шахматы, в общем. Ну и так далее.

Кристофер,
[email protected]

Версия для печатиВерсия для печати

Номер: 

23 за 2007 год

Рубрика: 

Компьютер и жизнь
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Инкогнито
Хмм, хотелось бы понять, что именно нового автор сказал в своей статье - открыл америку о том, что шахматные программы действуют перебором или призналяся в том, что не слышал про "сумму технологий".
Аватар пользователя Логик
Кристофер > Ведь в любом случае ребенок после рождения... использует для всего этого информацию, поступающую от рецепторов, органов слуха и зрения.

Ребенок после рождения не может "переварить" и понять информацию, поступающую от рецепторов, органов слуха и зрения или даже только от тактильных рецепторов на коже (если ребенок рождается слепоглухонемым) без контакта с родителями, то есть без контакта с другими.

Без контакта с другими ребенок остается "пустым" вместе со своими рецепторами.

Аватар пользователя Логик
Кристофер > все реализуемо, мощный ИИ, сравнимый с уровнем человеческого интеллекта, создать можно, и рано или поздно он будет создан.

Тут ключевое слово - "сравнимый". Как будем сравнивать?

Комп уже обыграл Каспарова. Комп уже умнее или ИИ компа(программы в компе) уже мощнее?

Современные самолеты уже не могут управляться летчиками непосреддсвенно - они падают из-за неустойчивости. ИИ в компе без летчика управляет полетом самолета. Летчик только выдает команды - куда лететь, снизить скорость, развернутся и т.д. Эти команды обрабатывает ИИ компа самолета, переводя их в сигналы для двигателя и управления подкрылками самолета... - ИИ компа такого самолета уже(!) мощнее человеческого интеллекта или что?

Как будем сравнивать? ИИ с ЧИ (человеческим интеллектом )? Есть методика? Есть алгоритмы сравнения?

опять вспомним "китайскую комнату", прриведенную мною в качестве примера в пред. обсуждении - нет способов отличить понимает ли компьютер или даже человек китайский язык, то есть нет способов понять - понимает ли не то что компьютер, а понимает(!) ли другой человек или нет.

В случае "китайской комнаты" мы можем вынести вердикт, что при таком способе обучения китайскому языку, то есть при таком способе заполнения базы человека, - мы можем вынести вердикт, что человек, несмотря на то, что он отлично отвечает на китайском, несмотря на то, что мы не можем его отличить от действительно(!) знающего китайский, но мы может точно сказать, при таком способе заполнения его мозгов, его "базы знаний" - он ничего не понимает.

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

Вывод: даже если мы определим алгоритм сравнения мощного ИИ с уровнем человеческого интеллекта, как невозможность определить кто нам отвечает - компьютер или человек - мы все равно ни в том, ни в другом случае не сможем определить - кто из них вообще понимает(!) (один из них или даже оба или никто). - Но получив сведения, каким образом были получены знания ("загружена база знаний") мы можем только вынести вердикт, что при такой то загрузке знаний в голову или комп - никто из них не понимает вообще. Вот и все что мы можем.

Аватар пользователя Кристофер
So, sorry Логик, меня "не рекомедовали" в этой стране, может, хватит времени для опубликования всех "Интеллектов роботов":). Давайте побеседуем через другие издания...
Аватар пользователя Инкогнито
Логик вообще ничего не понимает. только постит и постит всякую дрянь. гы.
Аватар пользователя mike
>Логик вообще ничего не понимает

Думаю, прикидывается, что не понимает разницы между ИИ и моделированием мозга.

Аватар пользователя Логик
Кристофер > Давайте побеседуем через другие издания...

Инкогнито > Логик вообще ничего не понимает.

mike (old student)> Думаю, прикидывается

Странно.

Все о чем я тут пишу уже давно и неоднократно разжевано в различных текстах. Но, мне кажется, для вас это все, как то в новинку.

Странно.