Експертна система по породах дерева
Теорія:
b>
Структура експертних систем
Щоб проводити експертизу, комп'ютерна програма повинна бути здатна вирішувати питання за допомогою логічного виводу і отримувати при цьому достатньо надійні результати. Програма повинна мати доступ до системи фактів, що називається базою знань.
Програма також повинна під час консультації виводити висновки з інформації, наявної в базі знань. Деякі експертні системи можуть також використовувати нову інформацію, додавати під час консультації. Експертну систему, таким чином, можна представляти що складається з трьох частин:
1. База знань (БЗ).
2. Механізм виводу (МВ).
3. Система призначеного для користувача інтерфейсу (СПИ).
База знань - центральна частина експертної системи. Вона містить правила, що описують відносини або явища, методи і знання для вирішення завдань зі сфери застосування системи. Можна представляти базу знань складається з фактичних знань і знань, які використовуються для виведення інших знань. Затвердження "Джон Ф. Кеннеді був 35-м президентом Сполучених Штатів" - приклад фактичного знання. "Якщо у вас болить голова, то прийміть дві таблетки цитрамон" - приклад знання для виводу. Сама база знань звичайно розташовується на диску або іншому носії.
Механізм висновку містить принципи та правила роботи. Механізм висновку "знає", як використовувати базу знань так, щоб можна було отримувати розумно узгоджуються висновку (висновки) з інформації, що знаходиться в ній.
Коли експертній системі задається питання, механізм виводу вибирає спосіб застосування правил бази знань для вирішення проблеми, поставленої в питанні. Фактично, механізм виводу запускає експертну систему в роботу, визначаючи які правила потрібно викликати і організовуючи до них доступ до бази знань. Механізм виведення виконує правила, визначає коли знайдено прийнятне рішення і передає результати програмі інтерфейсу з користувачем.
Коли питання має бути попередньо оброблений, то доступ до бази знань здійснюється через інтерфейс з користувачем. Інтерфейс - це частина експертної системи, яка взаємодіє з користувачем.
Система інтерфейсу з користувачем приймає інформацію від користувача і передає йому інформацію. Просто кажучи, система інтерфейсу повинна переконатися, що, після того як користувач описав завдання, вся необхідна інформація отримана. Інтерфейс, грунтуючись на вигляді і природі інформації, введеної користувачем, передає необхідну інформацію механізму виведення. Коли механізм виведення повертає знання, виведені з бази знань, інтерфейс передає їх назад користувачеві в зручній формі. Інтерфейс з користувачем і механізм виведення можуть розглядатися як "додаток" до бази знань. Вони разом складають оболонку експертної системи. Для бази знань, яка містить велику і різноманітну інформацію, можуть бути розроблені та реалізовані кілька різних оболонок.
Добре розроблені оболонки експертних систем звичайно містять механізм додавання та оновлення інформації в базі знань.
Як бачимо, експертна система складається з трьох основних частин. Взаємозв'язок між частинами може бути складним, що залежить від природи і організації знань, а також від методів і цілей виводу. Наступні розділи описують ці аспекти експертних систем. Спочатку описується подання знань разом з деякими простими прикладами. Цей опис вдаються як до систем, що грунтуються на правилах, так і до систем, що базуються на логіці. Потім розглядаються методи виводу. Далі йде опис систем інтерфейсу з користувачем разом з прикладами обробки вводу та виводу. Потім передбачається, що читач готовий до розгляду двох конкретних методик проектування експертних систем: систем, що базуються на правилах, і систем, що базуються на логіці.
Представлення знань
Представлення знань - це безліч угод з синтаксису і семантиці, згідно з якими описуються об'єкти. Гарне правило при проектуванні подання знань - це організація знань у такій формі, яка дозволяє легко здійснювати доступ за допомогою природних і простих механізмів. "Чим простіше, тим краще" - правило, яке потрібно пам'ятати, при роботі з поданням знань.
Експертні системи часто створюються "інженером по знаннях" (або проектувальниками експертних систем), які працюють з людиною-експертом, щоб закодувати знання експерта в базі знань.
Перший спосіб - це класифікація і приміщення фактів і чисел (фрагментів фактичного знання) в правила Турбо-Прологу.
Це подання підходить для використання в експертних системах, що базуються на правилах. Інший спосіб - це організація фактів і числової інформації у твердженнях, які утворюють базу знань на твердженнях.
Представлення знань у твердженнях підходить для використання в експертних системах, що базуються на логіці.
Користувальницька інтерфейсу
Система для користувача інтерфейсу забезпечує взаємодію між експертною системою і користувачем. Ця взаємодія звичайно включає кілька функцій:
1. Обробка даних, отриманих з клавіатури, і висвічення вводяться і виводяться даних на екрані.
2. Підтримка діалогу між користувачем і системою.
3. Розпізнавання ситуації нерозуміння між користувачем і системою.
4. Забезпечення "дружності" по відношенню до користувача.
Система інтерфейсу з користувачем має ефективно обробляти введення та виведення. Для цього необхідно обробляти вводяться і виводяться дані швидко, в ясної і виразної формі. Необхідно також включити можливість роботи з додатковими засобами такими, як друкувальні пристрої, магнітні диски і додаткові файли даних.
Крім того, система інтерфейсу повинна підтримувати відповідний діалог між користувачем і системою. Діалог - це загальна форма консультації з експертною системою.
Консультація повинна завершуватися ясним твердженням, що видаються системою, і поясненням послідовності висновку, що призвела до цього твердження.
Система для користувача інтерфейсу повинна також розпізнавати нерозуміння, між користувачем і системою, що виникло або із-за помилки, або на принциповій основі. Система повинна реагувати відповідним чином на цю ситуацію. Наприклад, не повинно статися збою системи, якщо користувач вводить 1, коли очікується "Так" або "ні", або коли користувач задає безглузде запитання.
Здатність експертної системи моделювати людини експерта може мінятися від простих пізнавальних процесів до включення нових знань або нових способів вирішення задачі. Система інтерфейсу повинна інформувати користувача про методику роботи системи та її розвитку, якщо такий розвиток передбачено в системі.
Нарешті, система для користувача інтерфейсу повинна бути "дружній" до користувача. Наприклад, послідовність меню, що показує завдання, які користувач може вибрати, є необхідною рисою експертної системи.
Користувач також повинен мати можливість взаємодіяти з експертною системою природним чином. В ідеалі користувач повинен мати можливість використовувати природну мову
Експертна система на правилах
В усіх експертних системах існує залежність між вхідним потоком даних і даними в базі знань. Під час консультації вхідні дані зіставляються з даними в базі знань. Результатом зіставлення є негативний або ствердну відповідь. У системі, що базується на правилах ствердну результат є дією одного з продукційних правил. Ці продукційні правила визначаються вхідними даними.
Таким чином, експертна система, що базується на правилах (на Турбо-Пролозі) містить безліч правил, які викликаються за допомогою вхідних даних в момент зіставлення. Експертна система також містить інтерпретатор в механізмі виведення, який вибирає і активізує різні модулі системи.
Роботу цього інтерпретатора можна описати послідовністю трьох кроків:
1. Інтерпретатор порівнює зразок правила з елементами даних в базі знань.
2. Якщо можна викликати більше одного правила, то інтерпретатор використовує механізм вирішення конфлікту для вибору правила.
3. Інтерпретатор застосовує вбрання правило, щоб знайти відповідь на запитання.
Цей трехшаговий процес інтерпретації є циклічним і називається циклом "розпізнавання-дія".
У системі, що базується на правилах, кількість продукційних правил визначає розмір бази знань. Деякі найбільш складні системи мають бази знань з більш ніж 5000 продукційних правил.
1. Використовувати мінімально достатня безліч умов при визначенні продукційного правила.
2. Уникати суперечать продукційних правил.
3. Конструювати правила, спираючись на структуру властиву предметної області.
Експертні системи, що базуються на логіці
В експертних системах, що базуються на логіці, база знань складається з тверджень у вигляді пропозицій логіки предикатів.
Такі пропозиції можуть групуватися, утворюючи базу даних Турбо-Прологу. Правила можуть або описувати дані, або керувати процесом внутрішньої уніфікації Турбо-Прологу.
Так само як і в системі на правилах експертна система, що базується на логіці, має безліч правил, які можуть викликатися за допомогою даних з вхідного потоку. Система має також інтерпретатор, який може вибирати і активізувати модулі, що включаються в роботу системи.
Інтерпретатор виконує різні функції усередині системи на основі такої схеми:
1. Система має пропозиції в базі знань, які управляють пошуком та зіставленням. Інтерпретатор зіставляє ці пропозиції з елементами даних в базі даних.
2. Якщо може бути викликано більше одного правила, то система використовує можливості Турбо-Прологу для вирішення конфлікту. Отже користувачеві/програмісту не потрібно розглядати потенційно можливі конфлікти.
3. Система отримує результати уніфікаціонного процесу автоматично, тому вони можуть направлятися на потрібний пристрій виведення інформації.
Так само як і в системі, що базується на правилах, цей циклічний процес є процесом розпізнавання-дія.
Краса і великі можливості системи, заснованої на логіці, полягають у тому, що вона відображає структуру самого Турбо-Прологу. Цим пояснюється той факт, що вона дуже ефективна в роботі.
Найбільш важливим аспектом для бази знань у системі, осно ванної на логіці, є проектування бази знань, її тверджень та їх структури. База знань повинна мати недвозначну логічну організацію, і вона повинна містити мінімум надлишкової інформації. Так само як і в системі, що базується на правилах, мінімально достатня кількість даних утворюють найбільш ефективну систему.
Структура бази знань експертної системи для вибору породи дерева b>.
Для ідентифікації породи всередині кожного підмножини можна використовувати список атрибутів. Кількість характеристик буде визначати ступінь точності класифікації. Розрізняються не обов'язково є якась єдина характеристика - вся безліч атрибутів використовується для досягнення цілей в споруджуваних правилах.
Всі перераховані нижче атрибути є необхідними, оскільки жоден з них не характерний для всіх порід одночасно.
1) листяна;
2) хвойна;
3) м'яка;
4) тверда;
5) дуже тверда;
6) сіро-коричнева;
7) світло-червона;
8) світла;
9) темна;
10) смолиста;
11) дуже смолиста;
12) Велика текстура;
13) Дрібна текстура.
Кожна характеристика для конкретної породи або вірна, або не вірна. Для кожної породи справедливі наступні характеристики:
Порода - Характеристики
Дуб - 1,4,6,13
Бук - 1,4,7,12
Осика - 1,3,8,13
Тис - 1,5,9
Ель - 2,3,8,10
Сосна - 2,3,8,11
Спосіб використання цієї інформації залежить від реалізації експертної системи.
У нашому випадку при проектуванні бази знань деревоподібна структура, безліч ідентифікують характеристик та набори номерів характеристик для кожної породи складають робочу модель бази знань для вибору породи.
Зауважте, що номери характеристик є штучними фактами, необхідними проектувальнику, і введені вони для того, щоб функціональних модулів експертної системи було легше ідентифікувати характеристики і маніпулювати ними.
Проектування та реалізація системи, що базується на правилах.
b>
Спочатку необхідно зробити декларації бази даних. База даних буде зберігати відповіді користувача на питання системи для користувача інтерфейсу (СПИ). Ці дані є ствердна або негативними відповідями.
Далі потрібно оголосити предикати для виконання висновку (машина виведення) і для взаємодії з користувачем (система для користувача інтерфейсу).
Усе разом це такі декларації:
database
xpositive (symbol, symbol)
xnegative (symbol, symbol)
predicates
do_expert_job
do_consulting
ask (symbol, symbol)
dog_is (symbol)
it_is (symbol)
positive (symbol, symbol)
negative (symbol, symbol)
remember (symbol, symbol, symbol)
clear_facts
Предикати бази даних xpositive і xnegative використовуються для зберігання стверджувальних і негативних відповідей користувача. Перші чотири предиката потрібні для взаємодії з користувачем, а інші шість - для механізму виведення.
Повинні бути складені вісім продукційних правил: по одному для кожної породи. Кожне правило повинне ідентифікувати породу за ознакою приналежності до групи довгошерстих або короткошерстих.
Правило it_is виробляє цю ідентифікацію. Потім правило positive ідентифікує характеристики собаки в кожному випадку.
І it_is і positive використовуються механізмом виведення. Нижче наведено повне продукційні правило для дуба:
tree_is ( "Дуб"): --
positive (tree, "Листяна"),
positive (tree, "Тверда"),
positive (tree, "Серо_Корічневая"),
positive (tree, "Мелкая_текстура "),!.
Механізм виведення повинен мати правила для управління даними вводяться користувачем, для зіставлення їх з продукційними правилами і збереження "траси" (або запам'ятовування) негативних і ствердних відповідей. Правила positive і negative використовуються для зіставлення даних користувача з даними в продукційних правилах. Правило remember (запам'ятовування) виробляє подача пропозицій з відповідями yes (так) і no (немає), для використання при зіставленні зі зразком:
positive (X, Y): --
xpositive (X, Y),!.
positive (X, Y): --
not (negative (X, Y )),!,
ask (X, Y).
negative (X, Y): --
xnegative (X, Y),!.
remember (X, Y, yes): --
asserta (xpositive (X, Y)).
remember (X, Y, no): --
asserta (xnegative (X, Y)),
fail.
clear_facts: --
retract (xpositive (_,_)),
fail.
clear_facts: --
retract (xnegative (_,_)),
fail.
Призначення системи для користувача інтерфейсу (СПИ) - зв'язок вводяться користувачем даних з системою логічного висновку. Головний модуль do_expert_job (виконай експертну роботу) і модуль do_consulting (виконай консультацію) здійснюють цей зв'язок. Модуль ask (X, Y) (запитай) запрошує дані у користувача і зберігає відповіді в базі знань. Крім того, вікно забезпечує додаткову зручність під час консультації. Система призначеного для користувача інтерфейсу повністю приведена нижче:
do_expert_job: --
setup_window,
do_consulting,
write ( "Press space bar."), nl,
readch (_),
removewindow,
exit.
setup_window: --
makewindow (1,7,7, "AN EXPERT SYSTEM", 1,16,22,58),
nl, write ( "* * * * * * * * * * * * * * * * * * * *"),
nl, write ( "A Tree Expert"),
nl, write ( ""),
nl, write ( "This is a tree identification system."),
nl, write ( "Please answer the question about"),
nl, write ( "the dog you would like by typing in"),
nl, write ( " 'yes' or 'no'."),
nl, write ( "* * * * * * * * * * * * * * * * * * * *"),
nl, nl.
do_consulting: --
dog_is (X),!, nl,
write ( "the tree you have indicated is a (n)", X ,"."), nl,
clear_facts.
do_consulting: --
nl, write ( "Sorry I can't help you!"),
clear_facts.
ask (X, Y): --
write ( "Question: -", X, "it", Y, "?"),
readln (Reply),
remember (X, Y, Reply).
Зауважте, що головний модуль do_expert_job викликає модулі setup_window (установи вікно) і do_consulting (виконай консультацію). Консультує модуль має дві альтернативні форми. Перша взаємодіє з механізмом виведення; якщо результат циклу "розпізнавання - дія" позитивний, то результат повідомляється користувачеві. Друга форма повідомляє про негативний результат.
Тепер можна поєднати окремі компоненти і сформувати повну експертну систему на правилах для вибору породи дерева.
Ця програма просить користувача вибрати режим консультації або вихід із програми. Потім експертна система вибирає породу собаки на підставі відповідей користувача на питання, або в кінці невдалого пошуку видає повідомлення "Sorry!"
Реалізація:
b>
domains
database
xpositive (symbol, symbol)
xnegative (symbol, symbol)
predicates
do_expert_bird.
do_consulting
ask (symbol, symbol)
tree_is (symbol)
positive (symbol, symbol)
negative (symbol, symbol)
remember (symbol, symbol, symbol)
clear_facts
goal
do_expert_bird.
clauses
do_expert_bird: --
makewindow (1,7,7, "Expert System", 1,3,22,71),
nl, write ( "------------------------------------------ ---------"),
nl, write ( "A Tree Expert"),
nl, write ( ""),
nl, write ( "Please answer the questions 'yes' or 'no'."),
nl, write ( "------------------------------------------ ---------"),
nl, nl,
do_consulting,
write ( "Press space bar."), nl,
readchar (_),
removewindow,
exit.
do_consulting: --
tree_is (X),!, nl,
write ( "Tree", X ,"."), nl,
clear_facts.
do_consulting: --
nl, write ( "Sorry!"),
clear_facts.
ask (X, Y): --
write ( "expert>", X, "", Y, "?"),
readln (Reply),
remember (X, Y, Reply).
positive (X, Y): --
xpositive (X, Y),!.
positive (X, Y): --
not (negative (X, Y )),!,
ask (X, Y).
negative (X, Y): --
xnegative (X, Y),!.
remember (X, Y, yes): --
asserta (xpositive (X, Y)).
remember (X, Y, no): --
asserta (xnegative (X, Y)),
fail.
clear_facts: --
retract (xpositive (_,_)),
fail.
clear_facts: --
retract (xnegative (_,_)),
fail.
tree_is ( "Дуб"): --
positive (tree, "Листяна"),
positive (tree, "Тверда"),
positive (tree, "Серо_Корічневая"),
positive (tree, "Мелкая_текстура "),!.
tree_is ( "Бук"): --
positive (tree, "Листяна"),
positive (tree, "Тверда"),
positive (tree, "Светло_Красная"),
positive (tree, "Крупная_текстура "),!.
tree_is ( "Осика"): --
positive (tree, "Листяна"),
positive (tree, "М'яка"),
positive (tree, "Світла"),
positive (tree, "Мелкая_текстура "),!.
tree_is ( "Тис"): --
positive (tree, "Листяна"),
positive (tree, "Очень_твердая"),
positive (tree, "Темна "),!.
tree_is ( "Смерека"): --
positive (tree, "Хвойна"),
positive (tree, "М'яка"),
positive (tree, "Світла"),
positive (tree, "смолиста "),!.
tree_is ( "Сосна"): --
positive (tree, "Хвойна"),
positive (tree, "М'яка"),
positive (tree, "Світла"),
positive (tree, "Очень_Смолістая "),!.
tree_is ( "Стовп"): --
positive (tree, "Не_дерево"),
positive (tree, "Очень_Твердий "),!.< br>