Онлайн час в Google Meet
Лого на 91. НЕГ „Проф. Константин Гълъбов“

11. клас · Избираем модул · Урок 5

Знание чрез правила. Експертни системи

Как знанието на специалист се записва като факти и правила „ако – тогава“, как машината за извод ги свързва във верига и защо експертните системи се провалят при непълно знание.

Как да вкараме знание в компютъра

В урок 2 видяхте двата пътя към „умна“ програма: да ѝ дадем правила или да ѝ дадем данни. Днес тръгваме по първия. Той е по-старият и, което е по-важно за нас, можете да го извървите докрай сами: с лист хартия днес и с C# след два урока.

Помислете как работи лекар, автомонтьор или ботаник. Задава въпроси, събира факти и от тях стига до заключение. Голяма част от знанието му може да се опише с изречения от вида „ако това и това, тогава онова“. Идеята на експертните системи (expert systems) от 70-те и 80-те години е точно тази: да запишем такива изречения в компютъра и да оставим машината да ги свързва.

Експертна система

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

Факти и правила

Нужни са ни само два вида неща.

  • Факт — твърдение за конкретния случай: „листата са иглички“, „температурата е 38,5“. Фактите идват от потребителя (отговори на въпроси) или от измервания.
  • Правило „ако – тогава“ — условие (може да са няколко, свързани с „и“) и извод. Правилата ги записва специалистът веднъж, преди системата да се ползва.
№Ако (условие)Тогава (извод)
1листата са игличкидървото е иглолистно
2иглолистно и игличките са по две в снопчебор
3иглолистно и игличките са единични и плоскиела
4листата са широки и плодът е жълъддъб
5листата са широки и кората е бяла с черни ивицибреза

Забележете нещо: изводът на правило 1 („иглолистно“) е условие в правила 2 и 3. Правилата се закачат едно за друго. Именно това ги прави повече от обикновен списък.

Машината за извод

Машина за извод (inference engine)

Частта от програмата, която избира кое правило да приложи и в какъв ред. Тя не знае нищо за растения или болести — знае само как да сравнява условия с факти.

Извеждане напред

  1. Записваме известните факти.
  2. Търсим правило, чиито условия всички са налице сред фактите.
  3. Добавяме извода му към фактите.
  4. Повтаряме, докато получим краен извод или нито едно правило вече не сработва.
факти: иглички, по 2 в снопчеправило 1нов факт: иглолистноправило 2извод: борИзвеждане напред: от фактите към извода, правило по правило.
Потребителят казва „иглички“ и „по две в снопче“. Правило 1 дава „иглолистно“, правило 2 — „бор“. Две стъпки, две правила.

Извеждане назад

Обратният ред: тръгваме от хипотеза — „бор ли е?“ — и търсим правило с такъв извод. Правило 2 иска „иглолистно“ и „по две в снопче“. „Иглолистно“ пък идва от правило 1, което иска „иглички“. Стигнали сме до факти, които не следват от нищо — тях питаме потребителя.

Така системата задава само въпросите, които са ѝ нужни за текущата хипотеза. Затова съветниците, които „разпитват“, обикновено работят назад.

База от знания срещу програма

Най-важното в експертните системи не е нито едно правило, а разделянето: правилата — базата от знания — са данни, а машината за извод е програма, която не зависи от областта.

Обикновена програмаЕкспертна система
Къде е знаниетов кода, като условия ifотделно, като списък от правила
Ново знаниепрепрограмиране и ново компилиранедобавя се още едно правило
Кой го променяпрограмисти специалистът, ако форматът е прост
Обяснение „защо“трябва да се напише отделноидва наготово — списъкът от сработилите правила

Една и съща машина за извод може да работи с правила за растения, за диагнози или за избор на лаптоп — сменя се само базата. Ще го видите на C# в урок 7: първо правилата като if, после като масив от обекти, който цикъл обхожда.

Къде работят и къде се провалят

MYCIN

Класическият пример е MYCIN — система от 70-те години, разработена в Станфордския университет. По резултати от изследвания тя предлага диагноза при бактериални инфекции на кръвта и подходящ антибиотик. Знанието ѝ е няколкостотин правила „ако – тогава“, записани с помощта на лекари, а всяко правило носи и степен на увереност. MYCIN може да обясни всяко свое предложение, като покаже правилата, които е приложила.

Тя никога не влиза в реална болнична употреба — отчасти заради въпроса кой носи отговорност при грешка, отчасти защото въвеждането на всички данни отнема повече време, отколкото лекарят има. Това е поука, която важи и за днешните системи.

Къде правилата са на място

  • Диагностика на техника — списъци с проверки „ако лампата мига два пъти, тогава…“.
  • Проверка на формуляри, конфигурации и настройки.
  • Данъчни, административни и банкови правила, които са записани в закон.
  • Филтри за нежелана поща по правила и поведение на противници в игри.

Общото: знанието е ясно, ограничено и рядко се променя. Там правилата са бързи, евтини и — най-важното — обясними.

Защо се провалят

  • Непълно знание — за факти, които не покрива нито едно правило, системата няма какво да каже. Няма „горе-долу“: правилото или сработва, или не.
  • Крехкост — една стъпка извън предвиденото и отговорът е безсмислен, а системата не усеща, че въпросът е странен.
  • Знанието трудно се измъква — специалистът често „просто вижда“ отговора и не може да каже кое правило е приложил.
  • При хиляди правила две от тях започват да си противоречат и никой не забелязва, а всяка промяна в областта значи ръчно пренаписване.

Какво трябва да запомниш

  • Експертната система = факти + правила „ако – тогава“ + машина за извод.
  • Изводът на едно правило може да е условие в друго — така се получава верига от разсъждения.
  • Извеждане напред: от фактите към извода. Извеждане назад: от хипотезата към нужните факти.
  • Базата от знания е отделена от програмата — ново знание е нов ред, не ново компилиране.
  • Силна страна: обяснява защо. Слаба: при непълно знание мълчи, при много правила се обърква.