Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InfIntSys-09Conspect_add.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

8.2. Системы с интеллектуальными агентами на логике

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

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

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

Open(valve221)

Temperature(reactor4726,321)

Pressure(tank776,28)

Такие формулы могут быть использованы для описания некоторого окружения, т.е. создания базы данных с информацией об окружающей среде агента. База данных для агента играет похожую роль, как убеждения для человека. Так человек может быть убежден, что вентиль 221 открыт, а для агента создать такое убеждение можно, введя предикат Open(valve221) в его базу данных. Однако факт того, что в базе данных агента записано Open(valve221) не значит, что вентиль 221 открыт. Датчики агента могут быть неисправны, его заключения могут быть неверны, информация может быть устаревшей или интерпретация формулы Open(valve221) может сильно отличаться от задуманной разработчиком. Это следует учитывать при формировании описания поведения агента.

Рассмотрим, как можно построить некоторую абстрактную модель агента на логике. Пусть L обозначает набор формул логики первого порядка и пусть D=(L) будет набором баз данных L, т.е. набор наборов L–формул. Тогда внутреннее состояние агента представляет собой элемент D. Определим 1, 2,… как элементы D. Внутреннее состояние агента в этом случае просто определяется элементом набора D. Тогда процесс принятия решения агентом может моделироваться через набор правил дедукции , которые являются простыми правилами логического вывода. Введем описание ∆‏↔ρ¬, если логическая формула может быть доказана через базу данных , используя только правила дедукции .

Введем в абстрактную модель агента функцию восприятия, выходом которой будет набор воспринимаемых на входе агента сигналов Р в разных состояниях из набора S, т.е.

see: S→P.

Введем также функцию next, которая отображает базу данных D и восприятие P на новую базу данных D, т.е.

next: D×P→D.

Тогда функция выбора действия агента должна определять действия А в соответствии с новой базой данных D, т.е.

action:D→A

Определение этой функции должно быть дано в терминах правил дедукции. В псевдокоде оно будет выглядеть следующим образом:

1. function action(∆: D): A

2. begin

3. for each aA do

4. if ∆ ↔ρ ¬Do(a) then

5. return a

6. end-if

7. end-for

8. for each aA do

9. if ∆¬ ↔ρ ¬Do(a) then

10. return a

11. end-if

12. end-for

13. return null

14. end function action

Здесь дедуктивные правила и база данных агента должны быть представлены таким образом, что если формула Do(a) может быть выведена, где a является термом, определяющим действие, тогда a это лучшее действие для выполнения. Это реализуется в первой части описания функции (строки 3-7), где агент последовательно перебирает все возможные действия a и пробует доказать формулу Do(a) из своей базы данных (переданной как параметр данной функции), используя дедуктивные привила . Если агенту удается доказать Do(a), то a возвращается как действие для выполнения. Если агент не сможет доказать Do(a) для всех действий aA, он пытается найти действие, которое не противоречит правилам и базе данных, т.е. то, которое не запрещено явно. Это реализуется в строках 8-12, где агент пытается найти действие aA такое, что Do(a) не может быть выведено из его базы данных посредством правил. Если он сможет найти такое действие, тогда оно возвращается как действие для выполнения. Если все же агент не смог найти действие, функция возвращает специальное действие null (нет действия).

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

Пример: система чистки помещения с агентом на логике

Рассмотрим небольшой пример системы автоматической чистки. Система включает робота-агента, который убирает пыль в комнате. Робот оснащен сенсором, который определяет, есть ли там какая-либо пыль, и пылесосом, который может быть использован для уборки пыли. Робот все время имеет четкую ориентацию (одну из обозначенных как north «север», south «юг», west «запад», east «восток»). В дополнения к способности убирать пыль робот может перемещаться вперед на один шаг или поворачиваться на 90 градусов. Агент перемещается по комнате, которая разделена сеткой на несколько ячеек одинакового размера (соответствующего единице перемещения агента).

С целью упрощения предположим, что комната имеет сетку 3х3, и робот-агент (Р-А) стартует на квадрате сетки (0,0) в направлении на «север» (рис.8.2). Робот может получить сигнал наличия пыли Dirt (означающее, что где-то есть пыль) или null (значащее, что нет никакой специальной информации). Он может выполнять любое одно из доступных действий: forward «вперед», suck «убрать пыль», turn «поворот». Цель робота - пересекая комнату постоянно искать пыль и удалять ее.

На начальном этапе введем три простых предиката:

In(x,y) ;агент находится на (x,y)

Dirt(x,y) ;есть пыль на (x,y)

Facing(d) ;направление агента d

Далее определим функцию next. Эта функция должна реагировать на сигналы очувствления, полученные от сенсоров (Dirt или null), и вырабатывать новую базу данных, которая включает эту информацию. Она также должна удалять старую или неуместную информацию и определять новое положение и направление агента. Поэтому лучше определять функцию next по частям. Сначала напишем old(), чтобы определить «старую» информацию в базе данных, которая при обновлении можно удалить:

old()={P(t1,…,tn) | P {In, Dirt, Facing} and P(t1,…,tn) }.

Далее необходимо определить функцию new, которая выдаст набор новых предикатов, которые надо добавить к базе данных. Эта функция имеет следующий вид:

new: D×P→D.

Эта функция должна генерировать предикаты: In(…) описывающий новую позицию агента, Facing(…) описывающий ориентацию агента и Dirt(…) если пыль была обнаружения на новой позиции. Имея функции old и new, функцию next можно записать:

next(,p)=(\old())new(,p)

Теперь можно перейти к новым правилам, которые определяют поведение агента. Дедуктивные правила имею вид:

(…)→ (…),

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

Первое правило относится к основному действию очистки: оно имеет приоритет над всеми другими поведениями агента (такими как навигация).

In(x,y)Dirt(x,y) →Do(suck)

Следовательно, если агент находится на позиции (x,y) и он видит пыль, тогда назначенным действием будет suck. В противном случае основным действием агента будет forward или turn. Подсоединим основной алгоритм навигации таким образом, что робот всегда будет двигаться от (0,0) к (0,1) к (0,2) и потом к (1,2), (1,1) и так далее. Как только робот доходит до (2,2),он переходит снова к (0,0). Правила, относящиеся к перемещению вплоть до (0,2), могут быть такие:

In(0,0) Facing(north) Dirt(0,0) →Do(forward)

In(0,1) Facing(north) Dirt(0,1) →Do(forward)

In(0,2) Facing(north) Dirt(0,2) →Do(turn)

In(0,2) Facing(east) →Do(forward)

Заметим, что в каждом правиле необходимо явно проверять, не выполняется ли предшествующая часть первого правила. Это делается для того, чтобы быть уверенным, что всегда назначается только одно действие через предикат Do(…). Похожие правила могут быть выведены для случая, когда робот достигает (2,2) и, когда один раз переходит от (2,2) к (0,0). Эти правила совместно с функцией next обеспечивают требуемое поведение робота.

Рассмотрим вопрос о практичности такого подхода к построению агентов, основанных на логике. Предположим, что построен набор правил для агента такой, что для любой базы данных , если возможно доказать Do(a), то тогда a является оптимальным действием, т.е. наилучшим действием, которое может быть выполнено при состоянии среды, описанным в базе . При запуске агента в момент t1 агент вырабатывает некоторую базу данных 1 и начинает применять свои правила для того, чтобы найти действие, которое следует выполнить. Через некоторое время в момент t2 ему удается вывести 1↔ρ Do(a) для некоторого действия aA и, поэтому a является оптимальным действием, которое агент может выполнить в момент t2. Но если состояние среды изменилось между t1 и t2, то нет никакой гарантии что a все еще оптимально, особенно, если прошло много времени между t1 и t2. Только, если t2-t1 бесконечно мало, т.е. принятие решения происходит практически мгновенно, то можно не обращать внимание на эту проблему. На практике принятие решения агентов, основанных на логике, не будет мгновенным. Принято считать, что агент обладает свойством вычислительной рациональности, если его блок принятия решения предлагает действие, которое было оптимально на момент начала процесса принятия решения. Ясно, что вычислительная рациональность не приемлема в среде, которая меняется быстрее, чем агент может принять решение. Это - проблема чисто логического подхода, принятого здесь. Уходя от языков представляющих жесткую логику и состоящих из законченных наборов дедуктивных правил, можно построить агентов, которые обладают приемлемыми характеристиками. Но в этом случае теряется преимущество логического подхода: простая и элегантная семантика.

Есть еще несколько проблем, связанных с логическим подходом. Во-первых, функция see агента, которая отображает восприятие среды, при использовании логики должна, воспринимая среду, строить символьное отображение, поскольку среда должна описываться набором формул на языке представления агента. Однако во многих случаях трудно или невозможно воспринять и отобразить среду в символьном виде. Например, проблема преобразования изображения в набор декларативных утверждений является предметом изучения в течение десятилетий и до сих пор открыта. Другая проблема заключается в сложности формирования динамического представления среды, отображающего изменения ситуации во времени. Наконец, как показывает пример чистки комнаты от пыли, представление простого процедурного знания (т.е. знание «что делать») в традиционной логике может быть не интуитивным и громоздким.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]