|
INTELIGENTA ARTIFICIALA - NOTIUNI DE INTELIGENTA ARTIFICIALA
1.1. Definitii ale inteligentei artificiale
Inteligenta artificiala (IA) reprezinta un domeniu al informaticii care urmareste realizarea unor sisteme care sa reproduca (sa imite) caracteristicile inteligentei umane: intelegerea limbajului, invatarea, rationamentul, rezolvarea problemelor, recunoasterea formelor etc. Ea se afla la confluenta mai multor stiinte: informatica, stiintele cognitive, logica, neurostiintele etc.
Inteligenta naturala este definita [1] ca fiind "capacitatea de a invata sau intelege din experienta, abilitatea de a achizitiona si memora cunostinte, capacitatea de a raspunde rapid si eficient la probleme noi, utilizarea facultatii de a rationa". Altfel spus, inteligenta poate fi definita ca abilitatea de a achizitiona cunostinte si de a le utiliza folosind gandirea si rationamentul.
In ceea ce priveste inteligenta artificiala exista o multitudine de definitii, dintre care o parte vor fi trecute in revista mai jos, toate concurand insa spre ideea de a inzestra masinile cu ceea ce la oameni se numeste inteligenta.
Iata cateva dintre cale mai cunoscute definitii ale IA:
IA este legata de automatizarea activitatilor pe care noi le asociem cu gandirea umana, activitati cum ar fi rezolvarea problemelor, luarea deciziilor, invatarea (Bellman, 1978) [6].
IA este legata de efortul de a face calculatoarele sa gandeasca, de a inzestra masinile cu minte, in sensul cel mai literal (Hangeland, 1985) [6].
IA este studiul proceselor de calcul ce fac posibile perceptia, rationamentul si actiune (Winston, 1992) [6].
Sistemele inteligente sunt acele sisteme care gandesc rational si actioneaza rational (Russel si Norvig, 1995) [1].
O alta abordare interesanta a inteligentei in general si a cele artificiale in particular este prezentata in referinta [13]:
Se poate defini inteligenta ca o masura a succesului unei entitati de a-si atinge obiectivele prin interactiune cu mediul sau. Consecintele acestei definitii sunt:
A. Comportamentul inteligent poate fi observat doar in prezenta unui mediu;
B. Pentru a masura inteligenta trebuie sa existe scopuri si o scala pentru a determina cat de bine sunt acestea atinse;
C. Aceasta definitie permite existenta masinilor inteligente;
D. Abilitatea de a "etala " inteligenta depinde de interactiunea cu mediul si de mecanismele interne ale sistemului in cauza.
Din cele expuse mai sus rezulta o serie de elemente comune dar si de deosebiri in definirea IA de catre diversi cercetatori.
Problema poate fi simplificata daca se da o definitie operationala a unui sistem inteligent: cum trebuie sa se comporte un sistem pentru a fi considerat inteligent. Aceasta definitie a fost data de Alan Turing care a conceput in 1950 celebrul test ce-i poarta numele. Testul Turing este urmatorul [6]: se considera un "joc de imitatie", la care participa trei jucatori. Jucatorul A este un barbat iar jucatorul B este o femeie. Jucatorul C (judecatorul) comunica printr-un sistem de teleimprimare cu A si B, fara sa-i poata vede pe acestia. Jucatorul C trebuie sa decida, prin intrebari adresate celorlalti doi, care este barbat si care este femeie. Scopul lui A este sa-i faciliteze lui C o identificare corecta pe cand scopul lui B este sa provoace o identificare eronata. Daca in locul unui barbat si a unei femei se pun un om si o masina, aceasta poate fi considerata inteligenta daca C nu poate decide care este omul si care este masina. O alta varianta consta in inlocuirea lui C cu un sistem artificial si daca acesta face corect identificarea femeii si a barbatului, se spune ca este un sistem inteligent.
Elementele caracteristice ale IA, puse in evidenta de definitiile de mai sus pot fi si mai mult reliefate prin comparatie cu informatica conventionala:
Tabelul 1.1. Comparatie intre IA si programele conventionale. Sursa [1], pag. 14.
Criteriul
Programe de IA
Programe conventionale
Natura prelucrarii
In principal simbolica
In principal numerica
Natura intrarilor
Pot fi incomplete
Obligatoriu complete
Cautarea
In principal euristica
Algoritmica
Explicatii
Ofera explicatii
Uzual nu ofera explicatii
Scopul principal
Cunoasterea
Date si informatii
Structura
Separarea cunoasterii de control
Controlul este integrat cu datele si informatiile
Natura iesirilor
Pot fi incomplete
Obligatoriu corecte si complete
Intretinerea si actualizarea
Relativ usoara datorita modularitatii cunoasterii
Uzual dificila
Hardware
In principal PC-uri si statii de lucru
Toate tipurile de calculatoare
Capacitate de rationament
Da
Nu
In aceeasi idee a evidentierii particularitatilor IA, referinta [3] imparte informatica clasica in patru domenii:
Tabelul 1.2. Domeniile informaticii clasice. Sursa [3], pag. 2.
Domeniul informaticii
Limbajul folosit
Masurarea performantei
Obiectele manipulate
Informatica stiintifica
FORTAN
FLOPS (floating point operation per second)
numere reale
Informatica de gestiune
COBOL
IPS (instructions per second)
siruri de caractere si numere intregi
Informatica in timp real
ADA
DEBIT in BPS (bits per second) si timpi
de comutare de context
evenimente
Informatica simbolica ("inteligenta artificiala")
LISP
PROLOG
LIPS (logical inferences per second)
concepte
1.2. Scurt istoric al IA
Primele elemente de IA pot fi semnalate inca din Egiptul antic, dar preocuparile constante de studiere a inteligentei umane si de realizare a unor sisteme inteligente au aparut dupa al doilea razboi mondial. Momentul nasterii IA este considerat anul 1956 cand a fost folosit pentru prima oara si termenul Artificial Intelligency. Tabelul 1.3 ilustreaza principalele jaloane istorice ale IA.
Tabelul 1.3. Istoria inteligentei artificiale. Sursa [1], pag.15.
ANUL
EVENIMENTUL
3000-2778 IC
S-a realizat in Egipt primul sistem expert pe hartie de papirus cu aplicatie in chirurgie.
200 IC
In China s-au realizat automate si orchestre mecanice.
1930 DC
Se utilizeaza un analizor diferential in reglarea tirurilor artileriei.
1936
Alan Turing prezinta o masina capabila sa solutioneze orice problema din matematici cu ajutorul unui alfabet si unui set de reguli.
1943
McCulloch si Pitts propun arhitecturi de retele neuronale pentru inteligenta artificiala
1950
Isaac Asimov prezinta trei legi ale roboticii.
1951
UNIVAC I - Primul calculator electronic introdus pe piata, conceput de Eckert si Mauchly.
1951
Marvin Minsky a construit primul calculator neuronal SNARK.
1955
Allen Newell, J.C. Shaw si Herbert Simon au realizat primul limbaj de programare in inteligenta artificiala IPL 11 (Information Proccesing Language 11).
1956
Newell, Shaw si Simon creeaza programul numit Logic Theorist care in 1957 devine General Problem Solver. Se folosesc tehnici recursive pentru solutionarea problemelor matematice in logica propozitiilor.
1956
La colocviul de la Darthmouth College din New Hampshire (SUA) se lanseaza termenul de "inteligenta artificiala" de catre John McCarthy acceptat unanim pentru a desemna o noua stiinta si tehnologi.
Nathaniel Rochester prezinta primul sistem neuronal realizat cu calculatorul electronic.
1957
Apare o descriere a PERCEPTRON-ului I, model care are capacitatea de a recunoaste formele, de catre F. Rossenblatt cu sistemele neuronale.
1959
Apare limbajul LISP, primul utilizat pe scara larga in inteligenta artificiala (John McCarthy).
1965
Incepe proiectul DENDRAL, primul sistem expert, destinat analizei structurilor moleculare (B. Buchanan, E. Feigenbaum, J. Lederberg). Logica Fuzzy-Zadeh.
1966
Apare ELIZA - un program inteligent "psihanalist" (J. Weizenbaum) care interoga pacientii.
1967
S-a creat primul laborator de inteligenta artificiala la M.I.T. (SUA).
1967
Incep lucrarile la INTERNIST, primul sistem expert pentru diagnostic medical, de catre A. Pople si J. Myers, in prezent denumit CADUCEUS, functional din 1982.
1968
Apar retele semantice si modelul memoriei asociative de Quillian.
1970
Apare limbajul PROLOG realizat de Alain Colmerauer si Roussel (Franta).
1973
Sistemul expert MYCIN pentru diagnostic medical.
1974
Apare primul robot controlat de calculatorul electronic.
1975
Tehnica Frames (cadre) de M. Minsky.
1976
PROSPECTOR - pentru expertiza geologica (Duda & Hart).
1977
OPS-shell utilizat in realizarea lui XCON/R1 (Forgy).
1978
Este lansat PROSPECTOR, un sistem expert pentru localizarea zacamintelor geologice de R.O. Duda si colegii sai.
1979
Algoritmul Rete pentru accelerarea executiei SEBR (Forgy).
Sfarsitul anilor '70 si inceputul anilor '80
Se infiinteaza primele firme specializate in inteligenta artificiala care incep sa comercializeze sisteme expert.
1980
Sistemul expert XCON de la Digital Equipment Corporation pentru configurarea calculatoarelor.
1980
Masinile LISP (Symbolics, LMI).
1981
Kazuhiro Fuchi anunta proiectul japonez " A cincia generatie"
1982
John Hopfield resusciteaza retelele neuronale.
1983
KEE-shell (Intellicorp).
1985
CLIPS-shell (NASA).
1988
Piata sistemelor expert era deja de circa 400 milioane dolari SUA.
In anii '80
Se infiinteaza programul ESPRIT (European Strategic Program for Research in Information Technology) pentru Comunitatea Europeana.
Sfarsitul anilor '80 si inceputul anilor '90
Creste numarul firmelor si sistemelor expert comercializate, al sistemelor neuronale, robotilor etc.
1990 si urmatorii
Cercetari in domeniul agentilor inteligenti incorporati in medii reale (Newell, Laird, Rosenbloom).
1992
MARVEL - sistem expert in timp real care monitorizeaza zborurilor spatiale.
1994
PEGASUS - program inteligent pentru recunoasterea vorbirii.
1997
Calculatorul IBM Deep Blue il invinge pe campionul mondial la sah Garry Kasparov!
2000
Roboti interactivi (animale) devin disponibili comercial (ex. AIBO realizat de Sony). MIT realizeaza robotul Kismet, capabil sa exprime emotii. Robotul Nomad de la Carnegie Mellon exploreaza zone indepartate din Antarctica si localizeaza meteoriti.
2002
Se experimenteaza un prototip de avion-robot proiectat pentru misiuni de lupta.
1.3. Componentele Inteligentei Artificiale
Asa cum s-a putut vedea in sectiunile anterioare, IA ca stiinta are o varsta relativ mica si acest lucru se manifesta si printr-o oarecare neclaritate a frontierelor sale. Figura 1.1. prezinta sintetic un punct de vedere asupra componentelor IA. In sinteza, se pot face urmatoarele afirmatii [3]:
IA simuleaza rationamentele de gandire ale creierului uman prin intermediul unor reguli de rationament aplicate succesiv prin intermediul unui sistem de calcul si a unui nou mod de programare de tip declarativ ce utilizeaza conceptele de reguli, fapte si motoare de inferenta (MI). Apare astfel un nou domeniu al informaticii - informatica simbolica - caracterizat prin limbaje specializate (LIPS, PROLOG) si concepte specifice.
Domeniile (componentele) clasice ale IA sunt:
interfetele, ce asigura:
- perceptia vizuala;
- imagine pe calculator;
- tratarea automata a cuvintelor;
rationamentele, cuprind:
- sisteme expert;
- demonstrarea teoremelor;
instrumentele, contin:
- baze de cunostinte;
- reprezentarea cunostintelor;
- masini specializate / masini LISP.
De asemenea, la intersectia acestor domenii, IA mai contine:
- traducerea automata;
- intelegerea limbajelor naturale;
- metodologie-ajutor in programare;
- baze de date deductive.
1.4. Aplicatii ale IA
Componentele IA ilustrate in fig. 1.1. sugereaza si principalele domenii de aplicatie ale IA [1]:
Rezolvitoare generale de probleme
Sisteme expert
Prelucrarea limbajului natural
Recunoasterea formelor
Robotica
Invatamantul asistat de calculator
In capitolul 2 se vor prezenta mai multe aplicatii ale inteligentei artificiale in domeniul economic si al gestiunii.
Fig. 1.1. Componentele Inteligentei Artificiale. Sursa [3], pag. 3.
Aceste aplicatii ale IA sunt realizate cu ajutorul sistemelor inteligente care se bazeaza pe una din cele doua abordari fundamentale:
Prelucrarea simbolica a informatiilor (cunostintelor);
Paradigma conexionista (abordarea neuronala).
Abordarea logico-simbolica a condus la realizarea unor programe inteligente, din categoria rezolvitoarelor generale de probleme si sisteme expert.
Abordarea neuronala, foarte activa in momentul de fata porneste de la simularea neuronala ("hardware") a creierului uman. S-au obtinut rezultate remarcabile in recunoasterea formelor, recunoasterea vorbirii etc.
Principalele tipuri de sisteme inteligente, realizate pornind de la una din abordarile de mai sus sunt [1]:
Sistemele neuronale artificiale. Sunt bazate pe paradigma conexionista si au aplicatii, in aproape toate domeniile vietii sociale.
Sistemele inteligente bazate pe algoritmi genetici. Functionarea lor este inspirata din biologie, in sensul ca in timp se incurajeaza solutiile candidat capabile sa rezolve o problema si se penalizeaza solutii care esueaza (similar cu evolutia biologica).
Sistemele fuzzy. Sunt sisteme bazate pe logica nuantata si s-au dovedit performante in aplicatii de control si de recunoastere a structurilor. Sistemele fuzzy pot prelucra incertitudinea si imprecizia.
Sistemele expert reprezinta unul dintre succesele IA si se caracterizeaza prin faptul ca rezolva probleme complexe la nivelul de performanta al expertilor umani.
Sisteme inteligente hibride sunt sisteme ce implica cooperarea doua sau mai multe tehnologii din cele de mai sus. Astfel exista sisteme neuro-fuzzy, sisteme expert fuzzy etc.
1.5. Rezolvarea problemelor de IA
Tabelele 1.1 si 1.2 din sectiunea 1.1. au pus in evidenta trasaturile particulare esentiale ale IA. In cele ce urmeaza vom prezenta concis si alte elemente caracteristice ale acestui domeniu: metodele de rezolvare a problemelor de IA.
In primul rand sa incercam sa precizam care sunt clasele de probleme ce fac obiectul IA. In general o problema poate fi rezolvata prin urmatoarele tehnici [9]:
a) utilizarea unei formule explicite. Exemplu:
b) utilizarea unei expresii pentru modul de calcul (formula de recurenta):
c) construirea solutiei prin enumerare sau prin incercare - eroare. In general, in cazul rezolvarii algoritmice a unei probleme se defineste complexitatea algoritmului ca fiind numarul de operatii de efectuat, in functie de dimensiunea intrarii (in exemplele precedente, in functie de n).
In cazul in care complexitatea este marginita de o expresie polinomiala de gradul K, se spune ca problema este polinomiala (In exemplul 1 complexitatea este O(0) in exemplul 2 este O(n). Problemele pentru care nu se cunoaste un algoritm polinomial se numesc probleme NP (not polynomial) si o categorie aparte de astfel de probleme se numesc NP complete.
In general clasa problemelor de IA este cea a problemelor complexe care fie nu au o solutie cunoscuta fie solutiile cunoscute sunt prea complicate (ex. probleme NP)
1.5.1. Specificarea problemelor de IA
Problemele sunt puse adesea sub forma unui enunt informal in limbaj natural. Pentru a rezolva problema cu ajutorul unui calculator este necesar sa se emita specificatiile problemei [4]:
Enunt Enunt formalizat Solutia
Descrierea formala a unei probleme necesita urmatoarele [3]:
1. Definirea unui spatiu al starilor problemei care sa contina toate configuratiile posibile.
2. Specificarea uneia sau mai multor stari din spatiul starilor din care procesul de rezolvare sa poata porni (stari initiale).
3. Specificarea uneia sau mai multor stari care pot fi acceptate ca solutii (stari scop sau stari finale).
4. Specificarea unei multimi de reguli care descriu actiunile permise (operatorii permisi).
5. Specificarea unei strategii de control care sa decida ce actiune trebuie efectuata in fiecare stare.
Exista mai multe tipuri de enunturi:
1. Enunturi de tip 1 pentru probleme de tip combinatoriu;
2. Enunturi de tip 2 pentru probleme cu operatori de schimbare de stare;
3. Enunturi de tip 3 cu operatori de decompozitie a problemei;
Rezolvare unor probleme dificile conduce uneori la acceptarea unei solutii care nu este optima. O astfel de strategie de control care nu garanteaza cea mai buna solutie ci o solutie foarte buna poate folosi cunoasterea euristica despre problema.
O euristica este o regula empirica, o simplificare sau orice alt mecanism care limiteaza drastic cautarea solutiei in spatii mari de probleme [1].
1.5.2. Rezolvarea problemelor
Rezolvarea unei probleme consta in gasirea unui drum in spatiu starilor dintr-o stare initiala intr-o stare finala. Este un proces de cautare in care se folosesc reguli si o strategie de control.
In IA cautarea are doua semnificatii majore:
cautarea unui drum spre scop;
cautarea unei solutii (este un caz mai general implicand cautarea intr-un spatiu mai mare de solutii posibile).
O modalitate convenabila de structurare a sistemelor inteligente in scopul realizarii procesului de cautare o constituie sistemul de reguli de producere (productie).
Un sistem de productie consta in urmatoarele componente [6]:
a) O baza de fapte ce constituie informatia necesara pentru o sarcina particulara;
b) O multime de reguli (operatori) de tipul conditii, actiune (c, a). Regulile de productie actioneaza asupra bazei de date, modificand-o;
c) O strategie de control - care specifica in ce ordine se aplica regulile.
Principalele diferente dintre sistemele de productie si programele informatice clasice (procedurale) sunt:
toate regulile au acces la baza de fapte. Nici o data nu este legata in mod special de o anumita regula;
regulile nu se apeleaza una pe alta, comunicarea dintre ele facandu-se prin intermediul bazei de fapte;
in cazul programelor conventionale orice modificare in baza de cunostinte poate antrena schimbari mari in structura programelor;
in cazul sistemelor de productie, baza de fapte fiind separata de baza de reguli si de mecanismul de control, se pot face modificari in oricare dintre ele, fara a le afecta pe celelalte.
1.5.3. Strategii de control
Prin strategia de control se intelege selectarea, filtrarea regulilor ce vor fi aplicate si inregistrarea istoricului actiunilor deja desfasurate. Strategiile de control pot fi:
strategii irevocabile - la care aplicarea unei reguli conduce la excluderea ei in viitor;
strategii cu revenire (prin incercari succesive) in care se poate reveni la alegerea unei reguli.
Strategiile de control pot fi reprezentate convenabil prin grafuri (grafe) sau arbori.
Un arbore care pastreaza urmele diferitelor reguli aplicate si ale starilor rezultate se numeste arbore de cautare. Starea sau starile initiale reprezinta nodul radacina al arborelui. Aplicarea unei reguli asupra unui nod conduce la aparitia unui succesor al acestui nod. Aplicarea regulii se reprezinta printr-un arc intre nodul parinte si succesorul sau. Construirea arborelui inceteaza cand se atinge o stare finala.
Cautarea intr-un arbore se poate face in largime (cand pentru un nod se genereaza toti succesorii) sau in profunzime (cand se avanseaza in adancime alegand cate o singura ramura din fiecare nod).
1.5.4.Cautarea euristica
Unele probleme conduc, in cautarea solutiei optime, la un numar foarte mare de pasi (explozie combinatoriala). In aceste cazuri se renunta la cautarea solutiei optime in favoarea unei solutii bune sau foarte bune. O astfel de strategie se numeste euristica. Termenul vine din greceste (heuristikein = a descoperi) si desemneaza studiul metodelor si regulilor descoperirii si inventiei. O metoda euristica este o tehnica de imbunatatire a eficientei cautarii, eventual sacrificand cerinte de completitudine.
In general o euristica este o regula euristica, o strategie, o simplificare ce limiteaza semnificativ cautarea solutiei in spatii mari de probleme [6].
Folosirea euristicilor se bazeaza si pe faptul ca in realitate de putine ori este necesara o solutie optima, de multe ori fiind suficienta o solutie satisfacatoare.
Rezulta ca informatica simbolica manipuleaza baze de fapte (BF), baze de reguli (BR), baze de cunostinte (BC) si motoare de inferente (MI). BF contine faptele privite ca structuri de date complexe ce reprezinta un anumit sens. BR poseda multitudinea regulilor aplicabile faptelor pe baza carora se construieste solutia problemei abordate. Daca acceptam ideea potrivit careia cunostintele sunt operatori elementari de transformare a faptelor, atunci BC regrupeaza cunostinte relative la un domeniu specific utilizate pentru obtinerea unei solutii (denumita scop sau tinta) prin activarea unui MI ce activeaza BC si constituie mecanismul de rationament in scopul cercetarii solutiei pentru problema abordata.
1.6. Sisteme informatice bazate pe cunostinte
Asa cum am incercat sa evidentiem in sectiunile precedente, inteligenta artificiala incearca sa realizeze sisteme care sa emuleze capacitatea omului de a rezolva probleme complexe si a condus la aparitia unor noi tipuri de sisteme informatice. Astfel de sisteme informatice care surprind capacitatea unui expert uman de a rezolva probleme intr-un domeniu specific folosind baze de cunostinte poarta numele de sisteme informatice bazate pe cunostinte (SIBC) iar de proiectarea si implementarea acestor sisteme se ocupa ingineria cunoasterii [20]. Aparitia acestor sisteme a facut necesara cooperarea specialistilor din domeniul abordat (expertii) cu inginerii de cunostinte sau cognoticienii (fig. 1.2).
Fig. 1.2. Rolul inginerului de cunostinte. Sursa:[20]
In vederea utilizarii prin program, cunoasterea este memorata sub forma unor piese de cunoastere, ce descriu fapte, fenomene, procese, evenimente, obiecte cu insusiri dintr-o parte a lumii reale ce constituie domeniul de competenta al programului. Un domeniu concret poate avea intre 50000 si 100000 de piese de cunoastere specifice