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

ОИИ(1). Модели представления знаний

Представления знаний – есть формализация убеждений посредством схем записей языков.

Основная идея подхода при построении логических моделей представления знаний — вся информация, необходимая для решения прикладных задач, рассматривается как совокупность фактов и утверждений, которые представляются как формулы в некоторой логике. Знания отображаются совокупностью таких формул, а получение новых знаний сводится к реализации процедур логического вывода. В основе логических моделей представления знаний лежит понятие формальной теории, задаваемое кортежем: S = < B,F,A,R > , где:

•B—счетное множество базовых символов (алфавит);

•F — множество, называемое формулами;

•A—выделенное подмножество априорий истинных формул (аксиом);

•R—конечное множество отношений между формулами, называемое правилами вывода.

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

Если предметную область (ПО) рассматривать как совокупность понятий и связей (отношений) между ними, то семантические сети дают возможность представлять знания о ПО в наглядной и структурированной форме. Семантические сети обеспечивают представление ПО в виде ориентированного графа, вершинами которого выступают понятия, а ребрами – связи между ними. Связь между понятиями сетевой модели выражает минимальный объем знаний, простейший факт, относящийся к двум понятиям.

ПО в любой момент времени может быть представлена в виде совокупностей сущностей, понятий и ситуаций, называемой ее состоянием. Каждой ситуации можно поставить в соответствие некоторое утверждение или суждение об ее истинности или ложности.

Основа семантической сети – события, атрибуты, комплексы признаков и процедуры.

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

Атрибут – это характеризующее событие, имеющее несколько значений. (Например, «погода» атрибут «времени года»).

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

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

Для вывода знания события в сетевой модели делятся на исходные (признаки) и целевые(гипотезы).

Фреймовая модель представления знаний. Фрейм – это абстрактный образ для представления некоторого стереотипа восприятия. Примеры: треугольник (у каждого в голове свой образ – на слайде, на доске, нарисованный мелом, в тетради, но у каждого есть свой инвариант: 3 угла и 3 стороны, стороны должны быть нарисованы прямыми линиями), комната (есть дверь, окно - слоты). Слоты – это незаполненные значения некоторых атрибутов; атрибуты – некоторые инвариантные характеристики понятия слоты и атрибуты порождают фреймы. Различают фреймы – образцы или прототипы, хранятся в базах знаний, и фреймы-экземпляры, которые создаются для отображения реальных практичных ситуаций.

Продукционная модель представления знаний. Продукционная модель – модель, основанная на правилах, позволяющих представить знания в виде предложений типа: если <условие>, то <следствие> (<действие>). Идея предложения принадлежит Посту – 1943 год. Другие варианты предложения: если <предшествующий>, то <последующий>, если <основание>, то <гипотеза>. Если количество условий равно 0, то продукция описывает знание, состоящее только из вывода, а это факт. Знания в интеллектуальной системе образуют так называемую базу знаний Таблица принятия решений – это табличная форма записи множества продукционных правил. Идея таблицы решений заключается в использовании решений в качестве алгоритмов в постановках задач и одновременно в качестве средства программирования на исходном языке.

ОИИ(2) Представление о логическом и функциональном программировании.

Логическое программирование – программ-ие в терминах фактов и правил вывода, с использованием языка, основанного на формальных исчислениях.

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

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

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

Различаются 2 уровня программы: 1. Декларативный смысл программы определяет является ли данная цель истинной (достижимой) и если да, то при каких условиях она достигается. Декларативный смысл касается только отношений, определенных в программе. Таким образом, данный смысл

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

Рекурсия – это средство для организации повторяющихся действий в Prolog’е. Рекурсивная процедура – это процедура, вызывающая сама себя до тех пор, пока не будет соблюдено некоторое условие, которое остановит рекурсию. Такое условие называют граничным. Рекурсия – хороший способ для решения задач, содержащих в себе подзадачу такого же типа.

Пример рекурсии: найти факториал n!.

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

Действительно, чтобы найти значение факториала n!, можно найти значение факториала (n–1)! и умножить найденное значения на n. Для нахождения значения факториала (n–1)! можно пойти по уже известному пути – найти значение факториала (n–2)! и умножить найденное значения на n–1. Так можно действовать до тех пор, пока не доберемся до нахождения значения факториала (n–n)! или другими словами, факториала 0!. Значение факториала 0! известно – это 1. Вот это и будет граничное условие, которое позволит остановить рекурсию. Все, что теперь остается – это умножить полученную 1 на (n-(n-1)), затем на (n-(n-2)) и т.д. столько раз, сколько было рекурсивных вызовов. Результат n! получен.

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

Программы на языке Пролог состоят из двух типов фраз: фактов и правил, также называемых предложениями.

  • Факты - это отношения или свойства, о которых известно, что они имеют значение "истина".

  • Правила - это связанные отношения; они позволяют Прологу логически вы­водить одну порцию информации из другой. Правило принимает значение "истина", если доказано, что заданный набор условий является истинным.

2. В Прологе все правила имеют 2 части: заголовок и тело, разделенные специаль­ным знаком : -.

  • Заголовок — это факт, который был бы истинным, если бы были истинными несколько условий. Это называется выводом или зависимым отношением.

  • Тело — это ряд условий, которые должны быть истинными, чтобы Пролог мог доказать, что заголовок правила истинен.

факты и правила— практически одно и то же, кроме того, что факты не имеют явного тела. Факты ведут себя так, как если бы они имели тело, которое всегда истинно.

Пролог всегда ищет решение, начиная с первого факта и/или правила, и просматривает весь список фактов и/или правил до конца.

Механизм логического вывода Пролога берет условия из правила (тело правила) и просматривает список известных фактов и правил, пытаясь удовлетворить условиям. Если все условия истинны, то зависимое отношение (заголовок правила) считается истинным. Если все условия не могут быть согласованы с известными фактами, то правило ничего не выводит.

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

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

Язык Пролог не предназначен для программирования задач с большим количеством арифметических операций. Для этого используются процедурные языки программирования. Однако в любую Пролог-систему включаются все обычные арифметические операторы:

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

После этого определяется стандартный предикат Visual Prolog — findall, который дает возможность находить и собирать все решения для одной цели.

Функциональное программирование основывается на простой модели вычислений, состоящей из трех конструкций: переменные, определение функции и ее применение к какому-либо аргументу. Практически функциональное программирование возникло в 1962 году вместе с созданием Дж. Мак-Карти языка программирования LISP. В отличие от обычных процедурных языков, языки функциональной парадигмы не используют ни переменные, ни операторы присваивания. В них отсутствуют операторы цикла, а повторение действий реализуется с помощью рекурсии. Программа в таких языках представляет описание функций, а выполнение программы - процесс применения функций к аргументам. Язык LISP – один из первых языков обработки данных в символьной форме. В LISP и программа, и обрабатываемые ею данные представляются в одной и той же форме – форме списка. Подавляющее большинство программ искусственного интеллекта составлено на языке LISP.