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