Вопросы:
- Определяющие понятия, используемые в экспертных системах.
- Компоненты экспертной системы .
- Принципиальная схема работы экспертной системы.
- Организация базы знаний.
- Характеристика машины логического вывода.
- Последовательность построения систем, основанных на знаниях.
- Программное обеспечение, используемое при разработке систем, основанных на знаниях.
- Дополнительные алгоритмы обработки базы знаний
Литература
- Смирнов А.А. Прикладное программное обеспечение. Учебное пособие, , МЭСИ -152с
- Уотермен Д. Руководство по экспертным системам. М.Мир.1989.
- Змитрович А.И. Интеллектуальные информационные системы Мн. , 1997.
- Нейлор К. Как построить свою экспертную систему. М.1999.
- Минский М. Общение с внеземным разумом. В сб. Реальность и прогнозы искусственного интелекта. М.Мир.1987.
- Сойер Б., Фостер Д Программирование экспертных систем на языке PASCAL. М.1991.
- BCS.ORG
1. Определяющие понятия, используемые в экспертных системах.
Под экспертной системой понимается вычислительная система, в которую включены знания специалистов о некоторой конкретной проблемной области и которая в пределах этой области способна принимать экспертные решения. Группа по экспертным системам при комитете British Computer Society определила экспертную систему как » Воплощение в ЭВМ компоненты опыта эксперта, основанной на знании, в такой форме, что машина может дать интеллектуальный совет или принять интеллектуальное решение относительно обрабатываемой функции. Желательно дополнительное свойство (которое многие считают главным) -способность системы по требованию объяснить ход своих рассуждений понятным для пользователя образом.» Системы, основанные на знаниях применяются в различных сферах человеческой деятельности. Например, в крупном медицинском центре работает эксперт, который диагностирует онкологические заболевания на ранней стадии. Желающих попасть к нему на прием очень много. Но принять он может строго ограниченное число людей. Поэтому, к эксперту приходит специалист, инженер по знаниям и на основе знаний эксперта формирует базу знаний. Созданная система, основанная на знаниях эксперта, распределяется по различным больницам. После этого в каком-либо небольшом городе на прием к обычному врачу приходит пациент. Врач заносит в компьютер жалобы больного и отвечает на вопросы, которые задает экспертная система. В результате, экспертная система формирует диагноз, который в точности соответствует диагнозу, определенному экспертом. Основой экспертных систем является принципиально новый подход, который предусматривает замену традиционного соотношенияДАННЫЕ + АЛГОРИТМ = ПРОГРАММА
на новое соотношение
ЗНАНИЯ + ВЫВОД = СИСТЕМА .
Основное отличие понятия «данные» от понятия «знания» заключается в переходе от статики к динамике. При рассмотрении данных мы исходим из того, что либо данные есть (1), либо их нет (0). Для логической обработки данных используется Булевская логика. Знания всегда находятся в диалектическом развитии от полного незнания (0) к абсолютному знанию (1). Причем оба предела практически недостижимы. Поэтому знания можно охарактеризовать вероятностной величиной. Значения вероятностной характеристики меняются по мере получения новых знаний. Для логической обработки знаний используется логика Л.Заде (нечеткая логика, логика возможностей). Отличие понятий «алгоритм» и » вывод» также заключается в динамическом подходе. Алгоритм всегда при одних и тех же входных данных выдает один и тот же результат. Вывод представляет собой цепочку порождения знаний. Например, несколько тысячелетий назад люди придумали буквы (точнее 3,5 тысячи лет назад, финикийцы). Прошли тысячи лет и зная как пишутся буквы, была разработана технология печатания книг. Через сотни лет зная технологию печатания книг, была изобретена пишущая машинка. Затем на основе знаний о работе пишущей машинки, был создан матричный принтер. Затем на основе матричного притнтера, лазерный принтер. Данная цепочка является свидетельством того, что человек является интеллектуальной системой. Животные, в отличии от человека, не могут строить цепочки порождения знаний. Порожденные знания могут менять ход логического вывода. Следовательно, по мере накопления знаний при одних и тех же входных данных возможно получение различных результатов. Например, требуется принять решение о заключении контракта с какой-либо фирмой на определенных условиях. Контракт заключается, но выясняется, что условия контракта данной фирмой не соблюдаются. Следующий раз эксперт, при таком же наборе предлагаемых условий, примет решение не заключать контракт с данной фирмой. Экспертная система, реализованная в виде программного продукта, обладает следующими характерными признаками:во-первых, экспертная система ограничена определенной сферой экспертизы;
во-вторых, она способна рассуждать при сомнительных данных;
в-третьих, экспертная система способна объяснить цепочку рассуждений понятным образом;
в-четвертых, она строится таким образом, чтобы имелась возможность постепенного наращивания системы;
в-пятых, на выход экспертная система выдает решение эксперта.
Важной особенностью экспертных систем является возможность их использования для эффективного решения проблем, сложность которых превышает человеческие возможности.2. Компоненты экспертной системы.
У полностью оформленной экспертной системы имеются четыре основных компоненты:во-первых, база знаний;
во-вторых, машина логического вывода;
в-третьих, модуль усвоения знаний;
в-четвертых, интерфейс, связанный с объяснениями.
БАЗА ЗНАНИЙ содержит фактические знания и правила продукций.
МАШИНА ЛОГИЧЕСКОГО ВЫВОДА содержит управляющие знания и набор стратегий, позволяющих сделать логический вывод о конкретной ситуации.
МОДУЛЬ УСВОЕНИЯ ЗНАНИЙ предназначен для извлечения знаний из человека-эксперта и занесения их в экспертную систему.
ИНТЕРФЕЙС, СВЯЗАННЫЙ С ОБЪЯСНЕНИЯМИ, обеспечивает выдачу экспертной оценки и логическое обоснование принятого решения.
3. Принципиальная схема работы экспертной системы.
Экспертная система начинает работу с накопления фактических знаний. Получение фактических знаний обеспечивается путем диалога с пользователем. Как правило, пользователю задается совокупность вопросов, на которые необходимо ответить «ДА» или «НЕТ». При получении фактических знаний может быть предусмотрено задание коэффициента определенности. В этом случае, пользователь кроме ответа «ДА» или «НЕТ» задает в круглых скобках число (например, от 1 до 9), которое характеризует степень определенности его ответа.
В процессе работы экспертная система обеспечивает различные виды взаимодействия с пользователем.
Во-первых, пользователь получает экспертное решение по требуемой проблеме. В этом случае, он выступает в качестве потребителя.
Во-вторых, пользователь может проследить логику получения результата и приобрести новое знание. В этом случае, он выступает как ученик.
B-третьих, информация, поступающая от пользователя, может использоваться для совершенствования базы знаний. В этом случае, пользователь выступает в качестве учителя.
4 Организация базы знаний
Принципиальная особенность организации экспертной системы заключается в том, что она представляет собой систему, направляемую базой знаний. В традиционных программах задается алгоритм, определяющий последовательность обработки данных. В системах, основанных на знаниях, последовательность обработки определяется имеющейся и порождаемой информацией. Информация, управляющая работой экспертной системы, представляется в базе знаний. Для получения знаний необходимо качественно переработать значительные объемы информации. Информация, полученная от специалистов, только в том случае становится знаниями, если она структурирована, специальным образом представлена, тщательно протестирована и имеет способность к развитию. Существует несколько методов, позволяющих программным путем представить знания эксперта. Наиболее широкое распространение получили, во-первых, метод представления знаний, основанный на фреймах, во-вторых, метод представления знаний в виде правил. Экспертные системы, основанные на фреймах, имеют сложную организацию. Термин «фрейм» (FRAME) определяется как метод представления знаний, который связывает свойства с узлами, представляющими понятия и объекты. Автор термина Марвин Минский следующим образом разъясняет понятие фрейм. «Фрейм — это структура данных, представляющая стереотипную ситуацию, вроде нахождения внутри некоторой жилой комнаты, или сбора на вечеринку по поводу дня рождения ребенка. К каждому фрейму присоединяется несколько видов информации. Часть этой информации — о том, как использовать фрейм. Часть о том, чего можно ожидать далее. Часть о том, что следует делать, если эти ожидания не подтвердятся». Фреймы позволяют описывать объекты, процессы и отношения между объектами. Система фреймов связывает объекты и отношения между ними в структуры, называемые составными объектами. Понятия, входящие в узел, определяются набором атрибутов. Атрибуты, определяющие понятия, называются «слотами» (SLOT). Например, объект «служащий» может иметь слот «имя». В этом слоте должно быть записано действительное имя служащего. Каждый слот может быть связан с программными процедурами, которые выполняются, когда информация в слотах меняется. Использование фреймов позволяет обеспечить представление знаний на самом высоком уровне. Фреймы позволяют использовать в процессе работы экспертной системы абстракции и аналогии. Таким образом, интеллектуальные системы, основанные на фреймах, характеризуются следующими признаками:Во-первых, элементы интеллектуальной системы содержат информацию;
Во-вторых, элементы интеллектуальной системы порождают новую информацию;
В-третьих, элементы интеллектуальной системы связаны в единую сеть.
Наглядным примером, интеллектуальной системы, основанной на фреймах, может служить человеческий мозг. Клетки человеческого мозга содержать информацию. Клетки человеческого мозга обрабатывают информацию. Клетки человека мозга объединены в единую сеть. Рассматривая человека, как пример системы основанной на фреймах, можно перейти к рассмотрению архитектуры интеллектуальных систем. Переход к архитектуре интеллектуальных систем, означает, что какая-либо интеллектуальная система, рассматривается как элемент более сложной интеллектуальной системы. Таким образом, отдельный человек может рассматриваться, как интеллектуальный элемент более сложной системы, которая определяется как нация. Нация характеризуется единой культурой, менталитетом и т.д. Информационный обмен между элементами нации осуществляется через единый язык. Вхождение интеллектуального элемента в конкретную нацию определяется самосознанием. Нации могут рассматриваться, как интеллектуальные элементы, входящие в более сложную систему, которая определяется как человечество. Если продолжить, рассмотрение данного примера, то можно представить человечество, как интеллектуальный элемент в более крупной фреймовой системе, включающей внеземные цивилизации. В работах Марвина Минского и Эрнста Мулдашева рассматриваются вопросы формирования контактов между различными цивилизациями. При рассмотрении архитектуры интеллектуальных систем, целесообразно обратить внимание на изменение различных характеристик интеллектуальных систем по мере усложнения. Хотя бы временные характеристики, определящие жизненый цикл систем, основанных на фреймах. Продолжительность жизни человека ориентировочно может быть определена, как 100 лет. Жизнь нации может быть определена одним или несколькими тысячелетиями. Человечество, как интеллектуальная система, существует несколько десятков тысячелетий. Вопросы, времени существования космических цивилизаций; средства обмена информацией между космическими цивилизациями; объединение всех космических цивилизаций в единое целое, требуют дальнейшего осмысления. В экспертных системах, основанных на использовании правил, база знаний имеет структуру следующего вида:
Факты (фактические, декларативные знания) представляют собой краткосрочную информацию. Декларативные знания являются информацией о конкретном случае.
Правила (процедурные знания) представляют собой долговременную информацию о том, как порождать новые факты. Эти знания обычно собираются путем опроса специалистов в данной предметной области. Процедурные знания дают возможность порождать новые факты. Представляются процедурные знания в виде правил. Правила основаны на использовании выражений вида
ЕСЛИ <условие> ТО <действие>.
Условие предусматривает проверку текущей ситуации. Действие, возникающее при выполнении условия, может быть разнообразным. В частности: распечатка текста; проверка и запуск некоторого набора правил; добавление нового факта в базу знаний. Пример правила:ЕСЛИ программная среда не знакома разработчику
ТО время, выделяемое на разработку программного модуля,
необходимо увеличить в два раза.
Правило может быть представлено с использованием значка “->“. Например, правило «ЕСЛИ A ТО В», может быть записано в следующем виде A -> B . Правила продукцией могут включать вероятностные характеристики. Например:ЕСЛИ имеется зарубежный аналог прибора;
И точность зарубежного аналога выше;
ТО вероятность снижения договорной цены прибора умножается на 1,2; вероятность сохранения цены умножается на 0,9. Использование вероятностных значений является важным подходом, который расширяет возможность применения экспертных систем. Однако, в простейшем случае, при построении демонстрационных вариантов можно использовать правила, не содержащие вероятностные значения. Разработка экспертной системы, основанной на правилах, начинается с анализа знаний эксперта, формулировки правил и формирования массива фактических знаний. Например, при разработке экспертной системы для определения договорной цены на разрабатываемые программные продукты были сформулированы правила вида:ЕСЛИ объем программы 500 команд
И язык программирования С++
И операционная система LINUX
ТО стоимость команды 7 у.е.
При создании экспертной системы для определения договорной цены на разрабатываемый программный продукт, были выделены и закодированы следующие фактические знания:
Декларативные знания с 1 по 9 определяются в процессе диалога с пользователем. Факты с 10 по 15 порождаются машиной логического вывода на основе обработки процедурных знаний.
Знания экспертов, сформулированные в виде правил «ЕСЛИ..И..ТО», закодированы и представлены в виде следующей таблицы
Представленная база знаний позволяет формировать цепочки логического вывода, т.к. порождаемые факты используются для порождения других фактов. Например, порожденый факт с кодом «10» используется для порождения факта с кодом «15».
База знаний, реализованная в программной среде Delphi, может быть описана следующим образом:
Type
TRULE = Record { ТИП ПРОЦЕДУРНЫХ ЗНАНИЙ }
FactOut : Integer ; { Код порожденного факта }
Quant : Integer ; { Количество порождающих фактов }
FactIn : Array [1..3] of Integer; {Массив порождающих фактов}
End ;
TBASE = Record { ТИП БАЗЫ ЗНАНИЙ }
Fact : Array [1..15] of Integer ; { Фактические знания }
Rule : Array [1..8] of TRULE; { Процедурные знания }
End ;
Array_Fact = Array [ 1 .. 5 ] of Integer ; { Тип для массива фактов }
Var
BASEKNOW: TBASE;
TermFact, OutFact , InFact: Array_fact;
Nr: Integer {Число правил}
Рассматриваемая база знаний BASEKNOW имеет тип определенный как TBASE. В соответствии с типом TBASE база знаний определяется как запись, состоящая из двух элементов:- массива целых чисел FACT и
- массива RULE, описанного с типом TRULE.
- Массив FACT содержит числовые коды фактических знаний.
- Массив RULE содержит процедурные знания, т.е. правила вывода. Правила вывода определены как записи, имеющие тип TRULE.
- FACTOUT- номер порожденного факта;
- QUANT- количество порождающих фактов;
- FACTIN- массив порождающих фактов.
UNIT Unit_Expert;
INTERFACE
USES
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
TYPE
TFrmExpert = Class(TForm)
CmdInputB: TButton;
CmdDirect: TButton;
CmdInv: TButton;
CmdExit: TButton;
LblBf: TLabel;
LblRez: TLabel;
GridRez: TStringGrid;
EdBF: TEdit;
procedure FormActivate(Sender: TObject);
procedure CmdInputBClick(Sender: TObject);
procedure CmdDirectClick(Sender: TObject);
procedure CmdExitClick(Sender: TObject);
procedure CmdInvClick(Sender: TObject);
End;
TRule = Record {Тип процедурных знаний}
FactOut: Integer; {Код порожденного факта}
Quant: Integer;{Количество порождающих фактов}
FactIn: Array[1..3] of Integer; {Массив порождающих фактов}
End;
TBase = Record {Тип базы знаний}
Fact: Array[1..15] of Integer; {Фактические знания}
Rule: Array[1..8] of TRule; {Процедурные знания}
End;
T_Array = Array [1..5] of Integer; {Тип для массива фактов}
Var
FrmExpert: TFrmExpert;
BaseKnow: TBase;
NF: Integer; {Число имеющихся фактов}
NR: Integer; {Число правил}
TermFact: T_Array; {Терминальные факты}
NT: Integer; {Число терминальных фактов}
SPIS: T_Array; {Цепочка логического вывода}
NS: Integer; {Число элементов в цепочке логического вывода}
IMPLEMENTATION
{$R *.DFM}
Procedure TFrmExpert.FormActivate(Sender: TObject);
Begin
With BaseKnow Do
Begin
{ Загрузка базы знаний (Модуль усвоения знаний)}
Rule[1].FactOut:= 10; Rule[1].Quant:= 3;
Rule[1].FactIn[1]:= 1; Rule[1].FactIn[2]:= 4;
Rule[1].FactIn[3]:= 7;
Rule[2].FactOut:= 11; Rule[2].Quant:= 3;
Rule[2].FactIn[1]:= 1; Rule[2].FactIn[2]:= 6;
Rule[2].FactIn[3]:= 8;
Rule[3].FactOut:= 11; Rule[3].Quant:= 3;
Rule[3].FactIn[1]:= 2; Rule[3].FactIn[2]:= 6;
Rule[3].FactIn[3]:= 8;
Rule[4].FactOut:= 12; Rule[4].Quant:= 3;
Rule[4].FactIn[1]:= 3; Rule[4].FactIn[2]:= 5;
Rule[4].FactIn[3]:= 9;
Rule[5].FactOut:= 13; Rule[5].Quant:= 3;
Rule[5].FactIn[1]:= 12; Rule[5].FactIn[2]:= 5;
Rule[5].FactIn[3]:= 9;
Rule[6].FactOut:= 14; Rule[6].Quant:= 2;
Rule[6].FactIn[1]:= 5; Rule[6].FactIn[2]:= 11;
Rule[7].FactOut:= 14; Rule[7].Quant:= 2;
Rule[7].FactIn[1]:= 6; Rule[7].FactIn[2]:= 11;
Rule[8].FactOut:= 15; Rule[8].Quant:= 3;
Rule[8].FactIn[1]:= 4; Rule[8].FactIn[2]:= 7;
Rule[8].FactIn[3]:= 10;
End;
NR := 8;
{ Занесение инФормации в массив терминальных фактов}
TermFact[1]:= 13; TermFact[2]:=14; TermFact[3]:= 15;
NT:= 3;
{ Подготовка к вводу начальных фактов}
NF:=0;
EdBF.SetFocus;
LblRez.Visible:= False;
GridRez.Visible:= False;
GridRez.ColCount:= 1;
GridRez.Cells[0,0]:=’Факты’;
End;
Procedure TFrmExpert.CmdInputBClick(Sender: TObject);
Begin
{ Ввод начального факта}
NF:= NF +1;
BaseKnow.Fact[NF]:= StrToInt(EdBF.Text);
EdBF.Text:=’ ‘;
EdBF.SetFocus;
End;
Procedure TFrmExpert.CmdDirectClick(Sender: TObject);
{ПРЯМАЯ ЦЕПОЧКА ЛОГИЧЕСКОГО ВЫВОДА}
Begin
{Заглушка}
End;
Procedure TFrmExpert.CmdInvClick(Sender: TObject);
{ОБРАТНАЯ ЦЕПОЧКА ЛОГИЧЕСКОГО ВЫВОДА}
Begin
{Заглушка}
End;
Procedure TFrmExpert.CmdExitClick(Sender: TObject);
Begin
{Закрытие выполняемого пректа}
Close;
End;
End.
или напишите нам прямо сейчас