Similar presentations:
Раздел3 ЭС Л 3.1
1. Раздел 3 РАЗРАБОТКА ЭС
3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ2.
Классификация языков программирования3.
4. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Среди различных видов языков программирования имеютсянепроцедурные (функциональные и логические) языки, которые
начали зарождаться в 60-е годы.
Особенности логических языков:
Программа представляет собой совокупность правил или
логических высказываний.
В программе могут быть логические причинно-следственные
связи.
5. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Преимущества:Возможность откатов, т.е. возвращения к предыдущей подцели при
отрицательном результате одного из вариантов в процессе поиска
решения. Что избавляет от необходимости поиска решения путем
полного перебора вариантов и увеличивает эффективность
реализации.
Недостатки:
Узкий класс решаемых задач.
Применение:
Эмуляция искусственного интеллекта.
Разработка экспертных систем.
6. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Разрабатывать экспертные системы можно на любых языкахпрограммирования. Известны примеры работоспособных систем на
языках Pascal, C, Visual Basic, Java, Ruby, C#, Objective-C. Разработаны
так называемые оболочковые инструментальные системы (shellsystems), которые содержат инструменты для ввода знаний в базу и
используют встроенный механизм вывода. Примером такого рода
системы можно указать Guru.
Вместе с тем имеются специализированные языки для работы со
знаниями, из которых следует в первую очередь отметить язык Prolog.
Этот язык обладает рядом положительных особенностей, важнейшей из
которых является то, что программа на Прологе – это уже готовая
спецификация (описание) базы знаний. Задача вывода ответа в Прологе
полностью реализуется системой (программист избавлен от подобной
необходимости).
7.
Ещё несколько примеров:TerminusDB. Это – RDF-база данных, управляемая моделями,
поддерживающая контроль версий, дающая, при работе с
большими объёмами данных, возможности, сопоставимые с
возможностями Git. Она основана на Prolog. Эта база данных
поддерживает стандартный RESTful API, позволяющий
взаимодействовать с ней.
IBM Watson. – в недрах одного из главных проектов IBM
используется Prolog. Конечно, этот проект нельзя назвать
полностью основанным на Prolog, как TerminusDB, но в Watson
используются возможности этого языка. Watson создавался как
помощник для экспертов, предназначенный для упрощения
нахождения определённых данных или для поиска ответов на
простые вопросы.
8.
Все заговорили о Watson после того, как эта системапобедила чемпионов телешоу «Jeopardy!». Команда IBM
использовала Prolog для разбора текстов на
естественном языке и для перевода вопросов,
задаваемых людьми, в форму, понятную Watson.
GeneXus. Эта low-code-платформа применяет Prolog для
трансформации описаний нужного функционала в код
приложений. Речь идёт о том, что программа сама пишет
программы. Эта платформа поддерживает множество
языков программирования, в частности – Java, Ruby, C#,
Objective-C.»
https://www.youtube.com/watch?v=0by8g0G0HRI
9. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Логическое программирование – это подход к программированию, прикотором программа задаётся совокупностью правил без явного указания
последовательности их применения.
Под логическим программированием обычно подразумевают идею
использования для создания программного обеспечения логики
предикатов, в частности рассуждений, которые показывают путь к
достижению желаемого результата.
Предложение естественного языка может быть преобразовано в
предложение логики предикатов. Для этого следует сначала устранить
все ненужные слова из предложения, после чего преобразовать
предложение так, чтобы свойство или отношение стояло первым, а
обладающие данным свойством или находящиеся в данном отношении
объекты были сгруппированы после него.
10. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Тогда объекты становятся параметрами, на которых это свойствоили отношение действует.
В следующей таблице предложения естественного языка
преобразованы в синтаксис логики предикатов.
Естественный язык
Роза красная.
Монополия – игра.
Ане нравится монополия,
если монополия –игра.
Логика предикатов
красная (роза).
игра (монополия).
нравится (аня, монополия)
if игра (монополия).
11. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
У языков логического программирования два главных отличия отклассических алгоритмических языков:
1. Это символьное программирование. Данные в нём по сути символы,
представляющие только самих себя и не подлежащие интерпретации при
выполнении программы.
2. Алгоритмы получения определённых результатов непосредственно не
задаются, но описываются объекты, их свойства и отношения.
Логическое программирование позволяет учитывать главную проблему –
использование компьютера силами самого пользователя, не обладающего
знаниями в области программирования, но хорошо ориентирующегося в
своих прикладных областях, и владеющего профессиональными
специфическими знаниями.
12. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Логическое программирование учитывает также и возможности,присущие традиционному процедурному программированию.
Одним из самых знаменитых языков логического
программирования является Пролог, название которого произошло
от словосочетания ПРОграммирование при помощи ЛОГики
(PROgramming in LOGic).
В настоящее время Пролог – язык, предназначенный для создания
приложений, использующих методы и средства искусственного
интеллекта, и для создания экспертных систем. Среди отцов
Пролога называют ведущих учёных:
А. Колмероэ, Дж. Робинсона и Р. Ковальски.
13. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Алан Колмероэ – непосредственно автор Пролога как языка.В 1971 году в "Группе искусственного интеллекта" Марсельского
университета во Франции родился Пролог.
Главной задачей группы было создание программ для перевода с
естественного языка. А. Колмероэ решил использовать для задач
понимания и анализа естественного языка две области науки:
логику предикатов первого порядка; методику автоматического
доказательства теорем. Суть языка в том, чтобы основываясь на
определённых отношениях между объектами, путём логического
вывода доказать истинность (или ложность) других отношений.
14. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Вторым столпом называют Дж. Робинсона, предложившего методрезолюций для поиска решений. Коротко можно сказать об этом
методе следующее: получается ответ "НЕТ", если не возможно
найти ответ "ДА".
Третьим патриархом логического программирования стал Роберт
Ковальски из шотландского университета в Эдинбурге. Основные
заслуги Р. Ковальски: состоят в следующем – он первый подвёл
стройную математическую и логическую базу под язык; разработал
формальную семантику языка; явился первым и наиболее
энергичным популяризатором языка на конгрессах, конференциях,
в литературе и т.п. Математическая модель языка Пролог основана
на теории исчисления предикатов, в частности, на процедурной
интерпретации дизъюнктов Хорна.
15. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Программа на языке Пролог состоит из секций: domains, predicates,clauses, goal. В секции domains содержатся объявления
пользовательских типов данных. В секции predicates содержатся
объявления предикатов. В секции clauses помещаются правила для
доказательства объявленных предикатов и, наконец, в секции goal
записывается цель программы.
Предикаты (предикатные формулы) являются основой концепции
Пролога.
16. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Рассмотрим подходящий алгебраический пример. Пусть нектосообщает, что он задумал код (шифр) из пяти бинарных (0 или 1)
цифр. Обозначим цифры Х1, Х2, Х3, Х4, Х5. При этом некто
приводит следующие отношения между цифрами:
X1+Х2+Х3 >= 2,
X2+X3+X4 <= 2,
X2+X4+X5 <= 1,
X3+X4+X5 >= 1,
X1+X5 <= 1.
17. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Попробуем заставить Пролог найти эти цифры.Введем предикат
znach(X),
который устанавливает значение переменной X. Определение
этого предиката таково:
znach(B):-B=0; B=1.
Предикат можно прочитать так: если В = 0 или В = 1 то значением
переменной B является соответственно “0” или “1” и другого
быть не может. Интересно, как осмыслить предикат без
аргументов?
18. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Например, рассмотрим клоз:EQUATION:znach(X1),
znach(X2),
X1+X2=2.
Cистеме предлагается подобрать такие значения для переменных
Х1 и Х2, чтобы их сумма равнялась 2. Решение, разумеется,
единственное. Но для чего нужен предикат EQUATION? Этот
предикат “возглавляет целый клоз”, а потому его надо и
рассматривать как структурную единицу программы.
19. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Все клозы должны быть явным образом связаны. Для этогоиспользуется раздел программы, называемый GOAL (по-английски
цель). Чтобы понять сказанное, рассмотрим уже завершенный
вариант нашей программы:
PREDICATES
nondeterm
equation
nondeterm
znach(integer)
GOAL
equation.
CLAUSES
20. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
EQUATION:znach(X1), znach(X2),znach(X3), znach(X4),
znach(X5),
X1+Х2+Х3 >= 2
X2+X3+X4<=2,
X2+X4+X5<=1,
X3+X4+X5>=1,
X1+X5<=1,
write(“X1=”,X1,” X2=”,X2,” X3=”,X3,” X4=”,X4,” X5=”,X5).
znach(B):-B=0; B=1.
21. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
Пролог является декларативным языком. Программистзадаёт необходимые факты и правила, а Пролог
использует индуктивный вывод для решения задачи, т.е.
общее решение выводится из частных.
Программист имеет возможность заниматься
непосредственно задачей, а не поиском способа
разделения её решения на небольшие шаги. Такой метод
представляет собой полную противоположность
программированию на каком-либо процедурном языке, где
решение разбивается на дискретные шаги.
В следующей таблице представлены предложения
программы на языке Пролог.
22. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
ПредложениеПролог
Естественный
язык
Иван является
студентом
факт
студент (иван).
правило
ходит (X, лекция)
Если X студент, то
if студент (X). X ходит на лекцию
цель
ходит (иван, лекция). Иван ходит на
лекцию?
иван – конкретный объект, X – абстрактный объект.
23. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
Пример 2. Простейшая пролог-программа.predicates
nondeterm нравится (symbol, symbol)
clauses
нравится (лена, теннис).
нравится (петя, футбол).
нравится (коля, баскетбол).
нравится (женя, плавание).
нравится (марк, теннис).
% Егору нравится то же, что и Коле.
нравится (егор, X) if нравится (коля, X).
goal
нравится (егор, баскетбол).
% Нравится Егору баскетбол?
24. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
Любая программа на Прологе состоит из пяти секций илиразделов, некоторые из которых могут быть опущены. В
Примере 2 используются три из них, обозначенные
ключевыми словами predicates, clauses, goal.
Секция clauses (пролог- предложения или клозы) содержит
набор фактов и правил. Среди фактов нет информации о
том, что нравится ли Егору баскетбол. Тем не менее, этот
вопрос можно задать системе в виде цели goal.
На ввод этой цели будет получен результат yes. Для получения
ответа система использует один факт и одно правило:
(1) нравится (коля, баскетбол).
(2) нравится (егор, X) if нравится (коля, X).
25. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
Предложение (1) – факт, где в отношении нравитсяучаствуют два конкретных объекта коля и баскетбол.
Предложение (2) – правило, которое отличается от факта
наличием абстрактного объекта X и некоторого условия,
от выполнения которого зависит истинность этого
правила. Если заменить целевое утверждение другим:
goal
нравится (егор, плавание).
Будет получен результат no. Этот ответ не означает, что
Егору не нравится плавание. Ответ no означает, что
системе не известен факт любви Коли к плаванию.
26. 3.2 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОЛОГ
Пролог-программа состоит из предложений трёх типов:факты, правила и цели. Каждое предложение заканчивается
точкой.
Факт – это утверждение, которое всегда является истинным без
всякого условия. В фактах используются только объекты–
константы.
Правило – это утверждение, истинность которого доказывается в
зависимости от заданного условия. Правило позволяет выводить
один элемент информации из другого благодаря наличию в нём
переменных. Правило успешно, только если достижимы
заданные в теле правила цели, иначе правило терпит неудачу.
Цель – это утверждение, которое задают как вопрос относительно
фактов и правил. В целях применяются переменные, а также
константы.
27. 3.3 Назначение секций Пролог-программы
Любая программа состоит секций, которые обозначаютсяключевыми словами:
domains, facts, database, predicates, goal, clauses.
При отсутствии секций predicates, goal и clauses Пролог-система не
будет выполнять программу. Остальные секции могут быть
опущены.
Ключевое
слово
domains
facts
Назначение
Пояснения
Описание
доменов
Описание
фактов
Содержит объявления различных классов (типов)
используемых в программе объектов.
Содержит объявления недетерминированных
предикатов, представленных в программе
фактами. Такие предикаты можно объявлять и в
секции predicates, тогда секции facts не будет.
28. 3.3 Назначение секций Пролог-программы
Ключевоеслово
Назначение Пояснения
database
Описание
предикатов
ДБД
goal
Целевое
Является обязательной секцией. Содержит
утверждение формулировку назначения программы в
виде цели. Цель должна быть только одна.
Содержит объявления предикатов
динамической базы данных (ДБД). Если
программа не требует ДБД, то секция может
быть опущена.
29. 3.3 Назначение секций Пролог-программы
Ключевоеслово
Назначение
Пояснения
predicates
Описание
отношений
(кроме ДБД)
clauses
Утверждения
Является обязательной секцией. Содержит объявления
используемых программой предикатов (фактов,
правил). По умолчанию все предикаты считаются
детерминированными. Если предикат порождает
множество решений, то перед его именем следует
указать ключевое слово nondeterm
Является обязательной секцией. Содержит известные
априорно факты и правила, которые являются
необходимыми данными для работы программы.
Предложения группируются по именам предикатов.
Порядок следования предложений неважен, но зачастую
влияет на процесс поиска решения. Факты,
объявленные в секции predicates (но не в секции facts)
рассматриваются как статическая база данных.
30. 3.4 Константы и переменные
Константа обозначает конкретный объект и определяет однуконкретную сущность предметной области. Константа в
Прологе может быть числом или атомом.
Атом – последовательность заключённых в кавычки символов
или последовательность букв, цифр и символов
подчёркивания, которая начинается со строчной буквы.
Атомы без кавычек не могут содержать пробелов.
Примеры констант:
17
2.5
"Daniel H. Marcellus"
logic
"Санкт-Петербург"
31. 3.4 Константы и переменные
Понятие переменной в логическом программированииотличается от принятого в традиционных языках
программирования.
В частности, переменная не рассматривается как выделенный
участок памяти, которому присвоено имя.
В программе переменная обозначается последовательностью
символов, которая начинается с прописной буквы.
Переменная обозначает неопределённый (но единственный)
объект и служит для обозначения объекта, на который нельзя
сослаться по имени. Переменная может быть свободной,
связанной и анонимной.
32. 3.4 Константы и переменные
Свободная переменная – это переменная, значение которой неизвестно.
Связанная переменная – это переменная, получившая значение
в процессе логического вывода.
Начинается переменная с прописной буквы или символа
подчёркивания, например,
What
Who
Что
X
_X
_x
_кто
Процесс получения значения переменной называется
конкретизацией.
33. 3.4 Константы и переменные
Анонимная переменная – это переменная, используемая дляигнорирования значения, в котором нет нужды.
Анонимная переменная может использоваться вместо любой
другой переменной. Она соответствует чему-нибудь.
Анонимная переменная никогда не будет связываться с
конкретным значением. В программе такая переменная
обозначается символом подчёркивания.
34. 3.5 Объекты и отношения
Объекты логического программирования представляют собой элементыпредметной области и могут быть:
конкретными объектами (атомами), абстрактными объектами
(переменными).
Объекты взаимодействуют друг с другом, то есть, между ними существует
связь, которая их объединяет.
Набор однотипных связей между объектами называют отношением. В
Примере 2 два объекта марк и теннис взаимодействуют в отношении
нравится:
нравится
марк
теннис
Конкретный объект обладает вполне определённым свойством или
свойствами. В логических программах не существует различий между
отношением и свойством.
Термин отношение применяется и к свойствам тоже.
35. 3.5 Объекты и отношения
Примеры свойств:Объекты с отношениями являются неотъемлемой частью данных и образуют
утверждения предметной области. На первом месте в утверждении
указывается имя отношения, а в скобках через запятую – объекты
отношения. В конце обязательно ставится точка.
Примеры утверждений:
36. 3.5 Объекты и отношения
Очевидно, что утверждение может содержать разное количество объектов.Для обозначения числа объектов утверждения введён термин арность.
Утверждения
car и likes двух-арные, red и girl – одно-арные, plus –трёх-арное,
run – ноль-арное.
Запись отношения позиционно зависимая,
т. е. plus (3, 2, 5).НЕ РАВНО plus (5, 3, 2).
В общем виде факты имеют следующий формат:
где objectj – объекты, связанные отношением relation или свойством
property.
37. 3.6 Предикаты
Интуитивно понятно, что каждое отношение имеет некоторуюинтерпретацию. Например, известно:
Студенческая практика имеет определённое название (Имя) и проводится
на определённом курсе (Курс), кроме того, нет двух студенческих практик
с одинаковыми названиями. Для отношения назначить Практику между
объектами Имя и Курс могут существовать следующие интерпретации:
назначитьПрактику (учебная, 1).
назначитьПрактику (производственная, 3).
назначитьПрактику (исследовательская, 4).
38. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
База знаний (БЗ) содержит знания, относящиеся к конкретнойпредметной области, в том числе факты, правила (отношения
между фактами), оценки достоверности фактов и правил
(например, коэффициенты уверенности). Знания экспертов в БЗ
представляются в некоторой стандартной форме, например, в виде
продукционных правил.
Во многих случаях знания человека, выраженные в форме
высказываний, могут быть представлены с помощью функций
логических переменных (булевых функций). Напомним, что
логическая (булева) переменная – это переменная, принимающая
только два значения: “истина” (1) или “ложь” (0). Такие
переменные соответствуют высказываниям, описывающим знания
человека.
39. 3.1 СРЕДСТВА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ
Экспертная система (ЭС) – это компьютерная система,содержащая знания специалистов-экспертов в некоторой
предметной области и способная принимать решения, близкие по
качеству к решениям эксперта.
В структуре экспертной системы обычно выделяют следующие
компоненты:
база знаний и данных;
механизм вывода;
интерфейс пользователя;
подсистема объяснения;
подсистема извлечения знаний.