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

Како гранка од вештачката интелигенција, **Експертниот систем** претставува сметачки (компјутерски) систем кој користи специјализирано знаење од некоја област и ја имитира способноста на човечкиот експерт да носи одлуки, а со тоа и да решава проблеми. Експертните системи решаваат комплексни проблеми преку расудување врз основа на знаење, слично како човечки експерт, а не следат одредена процедура зададена од развивачот како што прават конвенционалните компјутерски програми. Првите експертни системи биле создадени во 70-тите години, а во 80-тите станале попопуларни.

## Форма на експертни системи

Уште од зачетоците на вештачката интелигенција во раните 70-ти, целта на научниците кои се занимавале со вештачка интелигенција секогаш била да се резвие компјутерскаа програма која што ќе може да размислува и да решава проблеми онолку интелигентно колку и човечки експерт.

Сепак, според некои научници повеќето практичари на вештачката интелигенција не сметаат дека експертните системи заслужуваат да се вбројат во полето на вештачка интелигенција. Имено, вистинска интелигенција бара способност за учење, за расудување врз основа на искуство, за „*пукање од појас*“, користење на општо знаење, носење заклучоци користејќи интуиција, а експертните системи не можат да прават ништо од тоа. Тие не се подобруваат со искуство. Само продолжуваат кон следното ако/тогаш правило.

Но повеќето се сложуваат дека експертните системи го прават токму тоа. *Random House* непопречениот речник дава една дефиниција на **учење** како „чинот или процесот на здобивање на знаење или вештина“; секако дека експертниот систем, со додавање на нови факти во својата база, се здобива со знаење и со додавање на нови правила добива нови вештини.

Најчеста форма на експертен систем е програма која се состои од низа од правила преку кои се анализираат информациите внесени од корисникот кои треба да се решат од страна на системот. Овој систем е направен да решава одредени специфични проблеми. На пример системот за временска прогноза ќе дава инфромации за времето, анти-вирусната програма ќе дава информации за вируси и сл. Експертните системи најчесто се среќаваат кај организациите кои имаат потреба од огромно знаење и соодветни експерти и бидејќи ваквото знаење е тешко да се пренесе на други членови од организацијата се користи експертните системи. Во вавките системи се вградени знаеањата на повеќе експерти и информации имплементирани од нив. Овие инфорамции експертниот систем ги користи за донесување на заклучок или решение на одреден проблем, па така според потребите експертните системи можат да бидат направени за решавање на најразлични проблеми. Посотојат алатки кои помагаат при решавање на проблемите како што се листи заснован на предикатна логика, добивање на резултат со споредување на податоци од минатите испитувања и др. Постојат и системи кои проблемот го делат на помали проблеми и така сè додека не се дојде до едноставен проблем кој полесно се решава.

## Структура на експертните системи

thumb|right|Шема на структурата на експертните системи
Експертните системи имаат уникатна структура, различна од традиционалните програми. Имено тие се изградени од два модели, еден фиксен дел, независен од експертниот систем: погонот (механизмот) за заклучување и еден променлив дел: базата на знаење.
Во 80-тите се појавил и трет дел: дијалог посредник (или интерфејс) како вид на кориснички интерфејс за комуникација со корисникот. 
Освен тоа постојат и уште некои помошни сегменти па целиот систем може да биде поделен на следниот начин: *кориснички посредник*, *систем за објаснување*, *база на знаење*, *погон за заклучување* и *листа со [[факт]]и*.

### Кориснички посредник

Корисничкиот посредник може да биде од различен тип, а неговите почетоци се во 80-тите и тогаш има дијалог заснована форма, посредувајќи меѓу системот и корисникот преку командна конзола или нешто слично.

### Систем на објаснување

Експертните системи треба да бидат способни да понудат објаснување во врска со одлуките кои ги прават. Повеќето експертни системи нудат механизам каде корисникот може да постуавува прашања од типот:

„Зошто одредено прашање е поставено (од страна на системот)?“

„Како системот дошол до одреден заклучок?“

Нудењето објаснување е од голема важност кај сите нетривијални домени за корисникот да разбере како системот работи и да провери односно да се увери дека расудувањето и резонирањето на системот е исправно.

### Базата на знаење врз основа на правила

Во експертните системи, базата на знаења е изразена во правила во природен јазик од типот АКО ... ТОГАШ ... Овие правила го претставуваат знаењето кое системот го користи. На пример:
* „АКО е живо суштество ТОГАШ е смртно“
* „АКО дата на раѓање = позната ТОГАШ возраст = денешна дата - дата на раѓање“
* „АКО возраст = 40 И здравствена состојба = нормална И рата на чукање на срцето > 155 ТОГАШ намали брзина на трака за трчање“
Ваквата формулација е добра поради тоа што се изразува го секојдневниот јазик што е причилно ретко во компјутерската наука или класично кодирање. Правилата можат да имаат видоизменета форма во зависност од механизмот на пребарување. Главниот проблем за експертните системи е да го придобијат знаењето за некоја тема од некои човечки експерти.

### Погон за заклучување

Погонот (или механизмот) за заклучување (англиски: *inference engine*) е програмскиот дел од експертниот систем. Тој презентира модел за решавање на проблемот кој користи правила од базата на знаење и специфично знаење од работната меморија за да реши одреден проблем. Механизмот е заснован ра логика.
Има два начини на кои може да работи: *блоковски* или *разговорен* начин.

Кај *блоковскиот* начин, експертниот систем ги има сите потребни податоци уште при самиот почеток. За корисникот, програмата работи како класична програма: тој ѝ дава податоци и добива резултат веднаш. Процесот на расудување е невидлив.

*Разговорниот* начин станува потребен кога развивачот на системот знае дека не може да го праша корисникот сè наеднаш на почетокот, поради комплексноста на проблемот. Тогаш софтверот мора да најде начин да го реши проблемот, барајќи некои податоци, по патно доближувајќи сè до решението што е можно побрзо. Вака системот резултира во нешто налик на дијалог помеѓу корисникот и човечки експерт од дадената област. За да го води разговорот, механизмот мора да има неколку нивоа на софистикација: „*верижење нанапред*“, „*верижење наназад*“ и „*мешано верижење*“.

* Верижење нанапред претставува испрашување од страна на експерт кој нема никаква идеја за тоа што би било решението и истражува прогресивно.
* Кај верижењето наназад пак, механизмот има идеја за целта. Па почнува од целта со надеж дека ќе го најде решението најбрзо што може.
* При мешано верижење системот има некаква идеја за целта но не е доволна. При тоа користи верижење нанапред во комбинација со одговори од претходни корисници, па неретко сам го заклучува одговорот на следното прашање уште пред да го праша.

Позитивна работа на користењето на логика е дека ваквиот софтвер може да му даде на корисникот јасна претстава и објаснување за тоа што тој прави (прашањето „зошто?“) и што тој заклучил (или „како?“). Исто така благодарение на логиката најсофистицираните системи можат да пронајдат контрадикција во информациите од корисникот или во знаењето и можат да ги објаснат со што го претставуваат експертското знаење и начинот на размислувањето на експертот.

### Листа со факти

Листата со факти (некогаш и *работна меморија*, *список на инстанци* или *[[база на податоци]]*) претставува збир на факти познати за областа за која системот работи. Елементите во листата со факти ја отсликуваат моментната состојба на светот.

На пример при решавање на проблем за телевизор, работната меморија содржи информации само за телевизорот кој го има на располагање. Секој различен телевизор или модел на телевизор има своја посебна листа со факти.

Погонот за заклучување ги користи информациите од оваа листа заедно со правилата во базата на знаење со цел да понуди додатни информации за проблемот кој се решава.

## Историја

Експертните системи биле претставени од страна на научниците во Проектот за Евристичко Програмирање на Стенфорд (анг.: Stanford Heuristic Programming Project), вклучувајќи го и *таткото на експертните системи* Едвард Фајгенбаум (Edward Feigenbaum), со системите „Dendral“ и „Mycin“. Првични придонесувачи на технологијата биле Брус Бјукенан (Bruce Buchanan), Едвард Шортлиф (Edward Shortliffe), Рендал Дејвис (Randall Davis), Вилијам ВанМеле (William vanMelle), Карли Скот (Carli Scott) и други истражувачи на Стенфорд. Експертните системи биле меѓу првите вистниски успешни форми на софтвер од полето на вештачка интелигенција.

Истражувањата биле доста активни и во Франција, каде што истражувачите се фокусирале на автоматизирање на процесот на расудивање и логични погони. Францускиот програмски јазик Пролог (PROLOG од *programmation en logique*), дизајниран во 1972 година, претставува вистински напредок од системи како „Dendral“ или „Mycin“. Тој претставува школка-шел (анг.: shell]), што значи дека е софтверска структура спремна да прима информации и да работи со било кој експертен систем. Пролог има погон кој користи логика од прв ред, со правила и факти. Тој претставува популарна алатка за масовно произведување на експертни системи и други сегменти од вештачката интелигенција. Сепак тој не е многу лесен за корисниците и е работи со различна логика од човечката.

Во 80-тите, експертните системи станале уште попопуларни и биле прифатени како практична алатка за решавање на проблеми од реалниот свет. Многу универзитети во САД почнале да воведуваат предмети за експертни системи и две третини од *Fortune 1000* компаниите ја користеле технологијата во секојдневни бизнис активности. Технологијата се интернационализирала со зголемениот интресе во Јапонија и низ Европа. А растот продолжил и во 90-тите.

Развојот на експертните системи бил помогнат од развојот на симболички програмски јазици како LISP и споменатиот Пролог.
Во 1981 со појавата на првиот личен сметач и опаративниот систем *MS-DOS*, имиџот на вештачката интелигенција и експертните системи бил на високо ниво и многу компании правеле т.н. генератори на системи со додавање на можности за пишување на правила во природен јазик и теоретски за развивање на експертнисистеми без програмски јазик во самата школка. Најпознат ваков систем е *„Guru“* кој се заснова на Mycin. Но сепак овие алатки на крајот се користеле само за истражувачки цели и не успеале да го пробијат пазарот.

CLIPS (C Language Integrated Production System) претставува комплетна околина за развој на експертни системи, која во себе вклучува интегриран едитор и алатки за дебагирање. CLIPS школката овозможува донесување на заклучоци (inferences) или резонирање. Тој датира од 1984 година кога се развил во еден од центрите на НАСА и тоа како замена за LISP. Главниот недостаток на LISP се смета тоа што тешко се интергира со другите јазици (тешко е да се направат вградени (embedded) апликации).

Во 1986, нов генератор на системи за персонални сметачи се појавил на пазарот, изведен од француските академски истаживачи: *Intelligence Service* Овој софтвер покажал радикална иновација: користел логика на од нулти ред за извршување на експертни системи, расудивање на базата на знаење со секојдневен јазик, создавање на објаснувања и наоѓање на контрадикција меѓу фактите. Ова бил првиот софтвер кој ја покажувал вештачката интелигенција онака како што била дефинирана од страна на Едвард Фајгенбаум. Овој софтвер всушност бил разработен под името *Pandora* од страна на двајца студенти на еден од најпознатите француски истражувачи од областа на вештачката интелигенција Жан Луи Лориер (фра.: Jean-Louis Laurière), како дипломска работа. За жал, бидејќи овој софтвер не бил развиен од страна на специјализирани ИТ развивачи, не еволуирал и продажбите биле на минимално ниво и по неколку години престанале.

## Предности

Експертните системи имаат низа на предности за корисниците во однос на класичните програми, затоа што тие функционираат налик на чоечкиот мозок:

##### Разговорни

Веројатно првата и највпечатливата предност за корисниците е разговорноста бидејќи системот овозможува корисникот да комуницира со компјутерот слично како со човок. За внесување на податоци во традиционалните програми се користи специфичен посредник меѓу човекот и машината, кој преку екранот за внесување на податоци, нив ги претвора од природен јазик во машински разбирлив, што претставува неинтерактивен медиум. Овој начин ко приморува корисникот да определи множество на податоци без секогаш да разбира зошто. Скоро секогаш потребен е период на тренинг и навикнување на софтверот пред негово користење. Разговорниот експертен систем пак, го прашува корисникот чекор по чекор разни работи околу проблемот и постепено го идентификува решението. Корсиникот размислува само на едно прашњање во дадено време што претставува природен начин на адаптација за човекот.

##### Брза достапност и можност за само-програмирање

Бидејќи базата на знаење е во секојдневен јазик, експертниот систем може да биде пишуван многу побрзо од конвенционалната програма, од страна на корисниците или човечки експерти, со што се прескокнува професионалниот развивач на софтвер кому сè би требало да му се објасни.

##### Можност за искористување на огромно количество на знаење

Експертните системи го претвораат софтерот во база на податоци: база на знаење. Па, за разлика од конвенционалните програми, волуменот на знаењето не е главна грижа за програмата, како кај базите на податоци. Дали базата на знаење има 10 или 10.000 правила, погонот извршува исти операции.

##### Надежност

Надежста на експертниот систем е иста како сигурноста кај базите на податоци, односно доста добра, подобра од кај класичните програми..

##### Размерливост

Еволуирање на еден експертен систем значи да се додадат, модифицираат или избришат некои правила. Бидејќи правилата се напишани во природен јазик, полесно се наоѓаат оние кои треба да се модифицираат или избришат.

##### Педагогија

Погоните кои работат врз основа на вистинска логика имаат можност да му објасната на корисникот во природен јазик зошто прашуваат нешто или како донеле некој заклучок. Правејќи го тоа, тие покажуваат карактереистики и знаење како човечки експерт, па корисникот може да научи нешто врз основа на тоа. Уште подобро, тие ги објаснуваат нивните заклучоци чекор по чекор, па корисникот добива информации за проблемот уште пред да го добие крајниот одговор.

##### Зачувување и подобрување на знаењето

Корисно знаење може да исчезне, доколку се чува кај човечки експерт поради смрт, пензионирање или слично. Зачувано во еден експертен систем тоа станува вечно. Исто така равивањето на експертен систем е како правење на интервју со некој експерт и во истовреме претставување на тековното знаење. Па, тоа му дава можност на експертот или на системот да се потсети на сè што знае до тогаш и да го унапреди веќе кажаното.

##### Нови полиња заборавени од конвенционално компјутерство

Автоматизирајќи огромно количество на знаење, развивачот може да се средно со класичниот проблем на комбинаторна експлозија што ја комплицира неговата работа и резултира во комплексна програма која одзема многу време. Расудувањето на експертните системи не се среќава со таков проблем бидејќи погонот автоматски ги полни комбинаториките меѓу правила. Оваа можност може да се однесува на полиња каде комбинаториката е огромна како: високо интерактивни или разговорни апликации, дијагнозирање на грешки, медицинско дијагнозирање, поддршка за одлучување кај комплексни системи, едукациски софтвер итн.

## Области на примена на експертните системи

* Медицинска дијагностика
* Дијагноза на сложени електронски и електромеханички апарати
* Правни системи
* Финансии и банкарство
* Планирање на експерименти во биологија, хемија, молекуларна генетика и сл.
* Оптимизирање на конфигурација на компоненти од комплексни системи кои мора да задоволат некои услови
* Дизајн на VLSI системи
* Менаџирање со знаењето
* Воени цели
* Образовни цели

## Наводи

## Користена литература

* В. Трајковиќ: *Експертни системи - скрипта*. ФЕИТ, УКИМ, Скопје, 2010.

Категорија:Вештачка интелигенција
Категорија:Информациски системи
Категорија:Сметачки системи