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

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

Уште од зачетоците на вештачката интелигенција во раните 70-ти, целта на научниците кои се занимавале со вештачка интелигенција секогаш била да се резвие компјутерскаа програма која што ќе може да размислува и да решава проблеми онолку интелигентно колку и човечки експерт.Jay Liebowitz, The Handbook of APPLIED EXPERT SYSTEMS, CRC Press LLC, 29.12.1997. ISBN 08449331064

Сепак, според некои научници повеќето практичари на вештачката интелигенција не сметаат дека експертните системи заслужуваат да се вбројат во полето на вештачка интелигенција. Имено, вистинска интелигенција бара способност за учење, за расудување врз основа на искуство, за „пукање од појас“, користење на општо знаење, носење заклучоци користејќи интуиција, а експертните системи не можат да прават ништо од тоа. Тие не се подобруваат со искуство. Само продолжуваат кон следното ако/тогаш правило.Schank RC; Childers PG: The Cognitive Computer: on Language, Learning and Artificial Inteligence, Pearson Addison-Wesley, New York, 1984, глава 2.1.

Но повеќето се сложуваат дека експертните системи го прават токму тоа. Random House непопречениот речник дава една дефиниција на учење како „чинот или процесот на здобивање на знаење или вештина“; секако дека експертниот систем, со додавање на нови факти во својата база, се здобива со знаење и со додавање на нови правила добива нови вештини.Siler, William; Buckley, James J. : Fuzzy expert systems and fuzzy reasoning, 2005. ISBN 0-471-38859-9, стр 2.

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

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

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) и други истражувачи на Стенфорд. Експертните системи биле меѓу првите вистниски успешни форми на софтвер од полето на вештачка интелигенција.Crevier, Daniel; AI: The Tumultuous Search for Artificial Intelligence, BasicBooks, New York, NY, 1993. ISBN 0-465-02997-3McCorduck, Pamela: Machines Who Think (2nd ed.), Natick, MA: A. K. Peters, Ltd., 2004. ISBN 1-56881-205-1"Russell, Stuart J.; Norvig, Peter: Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, 2003. ISBN 0-13-790395-2Nilsson, Nils: Artificial Intelligence: A New Synthesis, Morgan Kaufmann Publishers, 01.04.1998. ISBN 978-1-55860-467-4.

Истражувањата биле доста активни и во Франција, каде што истражувачите се фокусирале на автоматизирање на процесот на расудивање и логични погони. Францускиот програмски јазик Пролог (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) апликации).