Генетические алгоритмы использовались для широкого спектра разнообразных приложений: от планирования рабочих мест на фабриках до оптимизации инженерных проектов. Эти алгоритмы также – один из постоянно развивающихся методов оптимизации ИИ, вдохновленных природой. Алгоритм муравьиной колонии определяет оптимальный маршрут для водителей службы доставки подобно тому, как муравьи учатся находить кратчайший путь между едой и своим домом. Алгоритм пчелиного роя заставляет виртуальные частицы «летать вокруг», как рой пчел, ищущих цветы, в поисках наилучшего решения. Искусственные иммунные системы имитируют поведение человеческой иммунной системы, они могут обнаруживать компьютерные вирусы и даже контролировать роботов. Более того, исследователи заставляют компьютеры программировать самих себя за счет эволюции их собственного кода (или отладки кода), используя генетическое программирование.
Алгоритмы, основанные на поиске, являются отдельной ветвью ИИ. Поиск – это умопомрачительный трюк, который любят проворачивать ученые. Как вы помните из предыдущей главы, можно представить пространство возможностей. При поиске решения общей проблемы область поиска может быть больше похожа на трехмерное пространство, в котором мы перемещаемся, то есть иметь измерения
Так, точка (2, 3, 4) является решением с переменными
Если подумать, любой интеллект основывается на идее улучшения. Когда мы пытаемся чему-то научиться, мы продолжаем практиковаться, пока не станем достаточно искусны в этом. Когда мы пытаемся создать хорошего робота, мы продолжаем совершенствовать его конструкцию, чтобы он работал все лучше и лучше. И для нашего технологического мира, от проектирования до производства, от маркетинга до дистрибуции, поиск лучших решений – это благо. Если существует более надежное, более популярное, более эффективное и при этом менее затратное решение, мы хотим его найти.
ИИ и поиск всегда шли рука об руку. Как вы помните из второй главы, поиск был наиболее распространенным способом, которым принимали решения символические ИИ. Аналогичным образом исследователи используют поиск в алгоритмах. Он применяется и на гораздо более сложных этапах – даже при проектировании мозга роботов. Вдохновленные идеями Брукса о том, как можно связать восприятие с действием (см. главу 3), большинство исследователей в области эволюционной робототехники используют несимволический мозг для своих роботов. Строительные блоки для него могут быть сделаны из подобия нейронов, конечных автоматов, наборов правил или математических формул, а в качестве клея для этих строительных блоков, для соединения их с сенсорами и эффекторами, чтобы роботы могли выполнять реальные задачи, применяют поиск.
Система управления, которая когда-нибудь и в самом деле сгенерирует «разумное» поведение, может оказаться полнейшей путаницей за пределами нашего понимания.
Эволюционирующие роботы
Дарио Флореано – один из немногих пионеров в этой области. Он заставил эволюционировать схему из моделей нейронов, чтобы мозги у его роботов создавались автоматически. И принялся развивать эти мозги, пытаясь научить роботов ориентироваться в лабиринте или отслеживать свое местоположение, а также возвращаться и заряжаться как раз перед тем, как батареи разрядятся. Но Флореано не просто заставляет мозги развиваться – он хочет знать, как они работают. Поэтому он вскрывает их и исследует отдельные нейроны, чтобы увидеть, какие из них активируются при определенном поведении. Даже если информация закодирована в таинственной сети нейронов, в компьютере, в отличие от биологических организмов, мы можем исследовать все до мельчайших деталей и пронаблюдать, как искусственный мозг думает, видя каждый нейрон и то, что он делает, когда робот демонстрирует различное поведение.