Главная arrow Предыстория arrow Рефлексные агенты
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Рефлексные агенты Печать

Простейшим видом агента является простой рефлексный агент. Подобные агенты выбирают действия на основе текущего акта восприятия, игнорируя всю остальную историю актов восприятия. Программа для данного агента приведена в листинге.


function Reflex-Vacuum-Agent([location,status]) returns действие
action
if status = Dirty then return Suck
else if location = A then return Right
else if location = В then return Left


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

Представьте себя на месте водителя автоматизированного такси. Если движущийся впереди автомобиль тормозит и загораются его тормозные огни, то вы должны заметить это и тоже начать торможение. Иными словами, над визуальными входными данными выполняется определенная обработка для выявления условия, которое обозначается как "car-in-front-is-braking" (движущийся впереди автомобиль тормозит). Затем это условие активизирует некоторую связь с действием и initiate-braking" (начать торможение), установленную в программе агента. Такая связь называется правилом условие—действие и записывается следующим образом:

if car-in-front-is-braking then initiate-braking


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

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

В подобных схемах для обозначения текущего внутреннего состояния процесса принятия решения агентом используются прямоугольники, а для представления фоновой информации, применяемой в этом процессе, служат овалы. Программа этого агента, которая также является очень простой, приведена в листинге. Функция Interpret-Input вырабатывает абстрагированное описание текущего состояния по результатам восприятия, а функция Rule-Match возвращает первое правило во множестве правил, которое соответствует заданному описанию состояния. Следует отметить, что приведенное здесь изложение в терминах «правил» и «соответствия» является чисто концептуальным; фактические реализации могут быть настолько простыми, как совокупность логических элементов, реализующих логическую схему.


function Simple-Reflex-Agent(percept) returns действие action
  static: rules, множество правил условие-действие
  state <- Interpret-Input (percept)
  rule <- Rule-Match (state, rules)
  action <- Rule-Action [rule]
return action


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

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


Возникновение аналогичной проблемы можно обнаружить и в мире пылесоса. Предположим, что в простом рефлексном агенте-пылесосе испортился датчик местонахождения и работает только датчик мусора. Такой агент получает только два возможных восприятия: [Dirty] и [Clеаn]. Он может выполнить действие Suck в ответ на восприятие [Dirty], а что он должен делать в ответ на восприятие [Clean]? Выполнение движения Left завершится отказом (на неопределенно долгое время), если окажется, что он начинает это движение с квадрата А, а если он начинает движение с квадрата в, то завершится отказом на неопределенно долгое время движение Right. Для простых рефлексных агентов, действующих в частично наблюдаемых вариантах среды, часто бывают неизбежными бесконечные циклы.

Выход из бесконечных циклов становится возможным, если агент обладает способностью рандомизировать свои действия (вводить в них элемент случайности). Например, если агент-пылесос получает результат восприятия [Clean], то может подбросить монету, чтобы выбрать между движениями Left и Right. Легко показать, что агент достигнет другого квадрата в среднем за два этапа. Затем, если в этом квадрате имеется мусор, то пылесос его уберет и задача очистки будет выполнена.

Поэтому рандомизированный простой рефлексный агент может превзойти по своей производительности детерминированного простого рефлексного агента.