Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все вопросы в одном.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
856.77 Кб
Скачать

3. Подход теории возможностей

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

В его статье понятие множества было расширено допущением, что функция принадлежности элемента к множеству может принимать любые значения в интервале [0...1], а не только 0 или 1. Такие множества были названы нечёткими.

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

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

28. Реализация функций объяснения, обоснования и прогнозирования в

ИИС.

29. Инструментальные средства ИИС. Выбор инструментария.

[Тоскин, 140]

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

Выше уже говорилось, что ИИС представляют собой некоторый программ­ный комплекс, позволяющий решать производственный и экономические за­дачи на уровне человека - оператора или управленца (эксперта). Однако оче­видно, что любую программу можно написать на машинно - ориентирован­ном языке (ассемблере) или на универсальном языке высокого уровня (ПЛ/1, Си, Бейсик, Алгол, Ада, Фортран, Паскаль и т.д.). В этой связи возникает вполне справедливый вопрос: зачем рассматривать специализированные сред­ства, для изучения которых требуется определенное время, если универсаль­ным языком высокого уровня (либо языком ассемблера) владеет практически любой программист? Ответ на этот вопрос взят из практики: процесс про­граммирования систем ИИ на специализированных средствах занимает в 2-3 раза меньше времени, чем на универсальных. Однако следует всегда помнить, что параметры эффективности (объем памяти и быстродействие) ИИС, реали­зованных на базе специализированных средств, в большинстве случаев ниже, чем при реализации ИИС на универсальных средствах.

Еще одним фактором, существенным для выбора ИИС инструментальных про­граммных средств при разработке ИИС, является потенциальная возможность взаимодействия с программными средствами, используемыми на различных уровнях иерархии интегрированных корпоративных информационных систем.

В этой связи оптимальным решением задачи выбора программных средств для реализации ИИС следует, по - видимому, считать следующее: первый прототип (или прототипы: исследовательский, демонстрационный) реализуется на специализированных средствах. В случае достаточной эффективности этих средств на них могут быть написаны действующий прототип, и даже промышленная система. Однако в большинстве случаев прототип следует «пере­писать» на традиционных программных средствах.

Рассмотрим наиболее известные и широко применяемые программные средства интеллектуальных систем.

Анализ традиционных языков программирования и представления знаний

Специализированный язык LISP

Одним из самых популярных языков программирования в системах ИИ является язык LISP. Популярность языка LISP в первую очередь объясняется тем, что он с по­мощью довольно простых конструкций позволяет писать сложные и изящные системы обработки символьной информации. К сожалению, почти все суще­ствующие LISP - системы имеют низкую вычислительную эффективность. Именно это не дает возможность языку LISP выйти за рамки «академических» экспериментальных систем. Однако бурное повышение производительности современных компьютеров, а также разработка LISP - машин типа С/330, SYMBOLICS и т.д. вселяет оптимизм в отношении будущего языка.

Язык LISP имеет очень простой синтаксис, поскольку возможны только две его конструкции: атом и список.

Существенной особенностью языка LISP является то, что здесь «данные» и «программы» внешне ничем не отличаются друг от друга. Это дает возмож­ность писать на LISP «программы», манипулирующие не только данными, но и «программами». Именно данное свойство позволяет LISP стать изящным средством программирования систем ИИ. Понятия «данные», и «программа» в LISP не используются, их заменяют такие понятия, как выражение и функция.

LISP - функциональный язык.

LISP - это рекурсивный язык

Рекурсивность LISP удобна при решении очень популярной в искусственном интеллекте задачи «поиска по дереву», которая является довольно обобщенной и охватывает широкий класс конкретных задач, начиная шахматными и кончая за­дачами «принятия решений» или управления сложными объектами.

Язык логического программирования PROLOG

В последнее время к разработке ЭС все чаще стал привлекаться язык про­граммирования Пролог. Свое наименование Пролог получил от сокращения «Программирование логики» (PRogramming in LOGic). Математической осно­вой Пролога являются исчисление предикатов преимущественно первого по­рядка, метод резолюции Робинсона, теория рекурсивных функций.

Существующие системы программирования Пролога имеют большой на­бор «встроенных» предикатов (т.е. предикатов, понимаемых самим Проло­гом), которые обеспечивают выполнение арифметических операций, строко­вую (символьную) обработку, функции ввода-вывода и целый ряд специфиче­ских функций. За счет наличия встроенных предикатов язык Пролог можно отнести к универсальным языкам программирования и даже к языкам систем­ного программирования.

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

Современные программные средства построения интеллектуальных систем

Объектно-ориентированный язык Visual Basic

Visual Basic язык поддерживающий событийно-управляемое программиро­вание (event-driven programming): визуальное проектирование и элементы объектно-ориентированного программирования,

Возможности языка Visual Basic для создания ЭС

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

В Visual Basic реализовано «управление от событий», как уже отмечалось ранее, что позволяет разработчику спроектировать интерфейс пользователя максимально удобно для пользователя. После этапа визуального проектирова­ния программист просто пишет программный код для обработки связанных с объектом событий, VB предоставляет удобную среду для разработки прило­жений, тестирования их работы и нахождения и исправления ошибок.

Язык логического программирования Visual Prolog

Visual Prolog — объектно-ориентированное расширение языка программирования PDC Prolog, развивавшегося из Turbo Prolog (Borland), семейства Prolog, а также система визуального программирования датской фирмы Prolog Development Center.

Prolog Development Center затратил более трех лет на разработку системы Visual Prolog с поэтапным бета-тестированием, поставки коммерческой версии которой начались с февраля 1996.

Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных с ним окон, диалогов, меню, строки уведомлений о состояниях и т. д. производится в графической среде. С созданными объектами могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования.

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

Интегрированная инструментальная среда GURU

В инструментальной среде построения ЭС GURU, разработанной фирмой Micro Data Base Systems, Inc., методы экспертных систем сочетаются с такими средствами обработки данных, как составление электронных ведомостей, управление базой данных и деловой графикой, и таким образом формируется уникальная среда для поддержки принятия решений и разработки прикладных интеллектуальных систем.

Система GURU легка в употреблении для новичков и в то же время является достаточно эффективной и гибкой системой для профессионалов - разработчиков.

В обычных «интегрированных» программных продуктах или несколько от­дельных программ помещены в операционную среду, или несколько, второ­степенных компонентов вкладываются в главный компонент (как, например, программа обработки электронных ведомостей или текстовый редактор).

30. Эвристические процедуры поиска на графе

Эвристические процедуры поиска на графе Использование эвристик

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

Для многих задач имеется возможность использовать некоторую инфор­мацию, относящуюся к рассматриваемой задаче, чтобы содействовать сокра­щению поиска. Информацию такого рода обычно называют эвристической, а процедуры поиска, использующие ее, — методами эвристического поиска. Часто можно определить эвристики, уменьшающие затраты на поиск (по сравнению, например, с методом поиска в ширину), но не ценой лишения гарантии того, что путь с минимальной длиной будет найден. Некоторые эв­ристики очень существенно уменьшают затраты на поиск, но не гарантируют нахождения пути минимальной стоимости. В большинстве практических за­дач мы стремимся к тому, чтобы минимизировать некоторую комбинацию стоимости пути к цели и стоимости поиска, необходимого для нахождения этого пути. Более того, нас обычно интересуют такие методы поиска, кото­рые минимизируют эту комбинацию, усредненную по всем ожидаемым за­дачам. Если усредненная стоимость комбинации для первого метода поиска меньше, чем для второго, то говорят, что первый метод поиска имеет боль­шую эвристическую силу, чем второй. Заметим, что из нашего определения не следует, что метод поиска, обладающий большей эвристической силой, гарантирует нахождение пути минимальной стоимости.

«Жадный» алгоритм поиска

Наиболее простой путь эвристического поиска — это применение процедуры поиска экстремума (hill climbing). Стратегии, основанные на поиске экстре­мума, оценивают не только текущее состояние поиска, но и его потомков. Для дальнейшего поиска выбирается наилучший потомок; при этом о его братьях и родителях просто забывают. Поиск прекращается, когда достига­ется состояние, которое лучше чем любой из его наследников. Так как в этой стратегии данные о предыдущих состояниях не сохраняются, то алгоритм не может быть восстановлен из точки, которая привела к «неудаче». Основная проблема стратегий поиска экстремума — это их тенденция останавливать­ся в локальном максимуме. Другими словами, как только они достигают состояния, имеющего лучшую оценку, чем его потомки, алгоритм заверша­ется. Если это состояние является не решением задачи, а только локальным максимумом, то такой алгоритм неприемлем для данной задачи. Это зна­чит, что решение может быть оптимальным на ограниченном множестве, но из-за формы всего пространства, возможно, никогда не будет выбрано наилучшее решение. Дело в том, что «лучший» не означает «идеальный». Методы поиска без механизмов возврата или других приемов восстановле­ния не могут отличить локальный максимум от глобального. Существуют методы приближенного решения этой проблемы, например, случайное воз­мущение оценки. Однако гарантированно решать задачи с использованием техники поиска экстремума нельзя. Несмотря на эти ограничения, алгоритм поиска экстремума может быть достаточно эффективным, если оценивающая функция позволяет избежать локального максимума и зацикливания алгоритма. В общем, однако, эвристический поиск требует более гибкого ме­тода, предусмотренного в «жадном» алгоритме поиска, где при использо­вании приоритетной очереди возможно восстановление алгоритма из точки локального максимума. Подобно алгоритмам поиска в глубину и алгорит­мам поиска в ширину, «жадный» алгоритм поиска использует списки сохра­ненных состояний: список open отслеживает текущее состояние поиска, а в closed записываются уже проверенные состояния. На каждом шаге алго­ритм записывает в список open состояние с учетом некоторой эвристической оценки его «близости к цели». Таким образом, на каждой итерации рассмат­риваются наиболее перспективные состояния из списка open.

На каждой итерации функция BestFirstSearch удаляет первый элемент из списка open. Достигнув цели, алгоритм возвращает путь, который ве­дет к решению. Заметим, что каждое состояние сохраняет информацию о предшествующем состоянии, чтобы впоследствии восстановить его и позво­лить алгоритму найти кратчайший путь к решению. Если первый элемент в списке open не является решением, то алгоритм использует продукцион­ные правила проверки соответствия и операции, чтобы сгенерировать все возможные потомки данного элемента. Если потомок уже находится в спис­ке open или closed, то алгоритм выбирает кратчайший из двух возможных путей достижения этого состояния. Затем функция BestFirstSearch вычис­ляет эвристическую оценку состояний в списке open и сортирует список в соответствии с этими эвристическими значениями. При этом «лучшие» со­стояния ставятся в начало списка.

Применение оценочных функций

Эвристическую информацию можно использовать для упорядочения вершин в списке open таким образом, что процесс поиска будет распространяться по тем участкам границы, которые представляются наиболее перспективными. Чтобы применить такую процедуру упорядочения, нужен метод вычисле­ния «перспективности» вершины. В одном из таких методов используется функция, принимающая на вершинах действительные значения и называе­мая оценочной. В основе оценочных функций могут лежать самые разнооб­разные идеи: можно определить вероятность того, что некоторая вершина принадлежит наилучшему пути; можно вводить меры расстояния или раз­личия между произвольной вершиной и целевым множеством; кроме того, в настольных играх или головоломках для рассматриваемой конфигурации часто подсчитывается число очков — на основании тех ее особенностей, ко­торые, видимо, связаны с ее перспективностью.

Обозначим оценочную функцию f. Тогда f (n) дает значение этой функ­ции в вершине n. Пусть пока f — любая произвольная функция; в дальней­шем предположим, что она является оценкой стоимости пути минимальной стоимости от исходной вершины к целевой при ограничении, что этот путь проходит через узел n.

Используем функцию f для упорядочения вершин в списке open. Усло­вимся, что вершины в списке open расположены в порядке возрастания соот­ветствующих им значений функции f. При совпадениях значений f упоря­дочение осуществляется произвольно, но целевым вершинам всегда отдается предпочтение. Считаем, что вершина, имеющая меньшую оценку, с большей вероятностью окажется на оптимальном пути.

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

Алгоритм А

Определим оценочную функцию f так, чтобы ее значение f (n) для любой вершины n оценивало сумму стоимости пути минимальной стоимости от ис­ходной вершины s к вершине n и стоимости аналогичного пути от вершины n к целевой. Это значит, что f (n) является оценкой стоимости пути минималь­ной стоимости при условии, что он проходит через вершину n. Та вершина в списке open, для которой значение f наименьшее, считается вершиной, да­ющей наименее жесткое ограничение, следовательно, ее целесообразно взять для очередного раскрытия.

Перед тем как продемонстрировать некоторые свойства этой оценочной функции, введем ряд полезных обозначений. Пусть функция k(ni5nj) выра­жает реальную стоимость пути минимальной стоимости между двумя произ­вольными вершинами ni и nj. (Функция k не определена для вершин, меж­ду которыми нет пути.) Стоимость такого пути от вершины n к некоторой конкретной целевой вершине ni в этом случае равна k(n,ti). Пусть h*(n) — минимум всех значений k(n, ti) на полном множестве целевых узлов {ti}. Та­ким образом, h*(n) — стоимость пути минимальной стоимости от вершины n к целевой вершине и любой путь от вершины n к целевой, для которой до­стигается h*(n), является оптимальным путем от n к цели. (Функция h* не определена для любой вершины n, не имеющей доступа ни к одной целевой вершине.)

Часто нас интересует стоимость k(s, n) оптимального пути от заданной исходной вершины s к некоторой произвольной вершине n. Чтобы несколько упростить наши обозначения, введем новую функцию g*(n) = k(s,n) для всех n, доступных из s.

Далее, определим функцию f * так, чтобы ее значение f *(n) для любой вершины n было бы реальной стоимостью оптимального пути от вершины s к вершине n плюс стоимость оптимального пути от вершины n к целевой:

f *(n) = g *(n) + h*(n).

Функция f *(n), следовательно, равна стоимости оптимального пути при усло­вии, что он проходит через вершину n. (Заметим, что f *(s) = h*(s) — это ре­альная стоимость оптимального пути от s к цели в отсутствие ограничений.)

Мы хотим, чтобы наша оценочная функция f была оценкой f *. Эта оцен­ка дается соотношением

f (n) = g(n) + h(n)

где g — оценка g* и h — оценка h*. Очевидно, в качестве g(n) можно выбрать стоимость пути на дереве поиска от s к n, которая получается в результате суммирования стоимостей дуг, вычисленных при отслеживании указателей от n к s. (Этот путь является путем самой меньшей стоимости от s к n, найденным до сих пор алгоритмом поиска. Значение g(n) для некоторых вершин можно уменьшить, если дерево поиска видоизменяется на шаге 7.) Заметим, что такое определение подразумевает g(n) > g*(n). При установле­нии h(n) — оценки h*(n) — исходим из эвристической информации об области задачи. Назовем h эвристической функцией. Итак, пусть в качестве оценоч­ной функции имеем

f (n) = g(n) + h(n).

Назовем алгоритм поиска, использующий эту оценочную функцию для упо­рядочения вершин, алгоритмом А. Отметим, что, когда h = 0 и g = d (глу­бина вершины на дереве поиска), алгоритм А идентичен поиску в ширину. Ранее мы утверждали, что алгоритм поиска в ширину с гарантией находит путь к цели, имеющий минимальную длину. Если h является нижней гра­ницей h* (т.е. (h(n)) < h*(n) для всех вершин n), то алгоритм А находит оптимальный путь к цели.

31. Личности в исследовании интеллектуальных систем.