Limbaje de Programare Utilizate in Inteligenta Artificiala

Imagine preview
(8/10 din 1 vot)

Acest referat descrie Limbaje de Programare Utilizate in Inteligenta Artificiala.
Mai jos poate fi vizualizat cuprinsul si un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 13 pagini .

Profesor indrumator / Prezentat Profesorului: Mirica Ion

Iti recomandam sa te uiti bine pe extras, cuprins si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca. Ai nevoie de doar 4 puncte.

Domeniu: Inteligenta Artificiala

Cuprins

Introducere 3
Reprezentarea cunostintelor 4
Limbaje de programare în inteligenta artificiala 5
Limbajul CLIPS 6
Limbajul PROLOG 8
Limbajul LISP 9
Tipuri de date în LISP 12
Construcţiile limbajului 13
Bibliografie 14

Extras din document

INTRODUCERE

Obiectul inteligenţei artificiale este obţinerea de artefacte care să se comporte inteligent, similar unui om. Câteva exemple binecunoscute de astfel de artefacte sunt roboţii antropomorfi, programele de jucat şah, calculatoarele care pot dialoga într-un limbaj similar celui uman, programele de traducere automată sau de regăsire a textelor relevante pe Internet.

În funcţie de ideea fundamentală acceptată, în inteligenţa artificială sunt două abordări (nu neapărat antagoniste). Abordarea conexionistă se bazează pe ideea că inteligenţa este “emergentă” reţelelor neuronale deosebit de complexe. Pe de altă parte, abordarea simbolică, bazată pe aşa numita ipoteză a sistemelor simbolice fizice a lui H. Simon şi A. Newell (Stefik 1995), consideră că orice sistem inteligent (natural sau artificial) este un sistem fizic de prelucrare a simbolurilor.

Fiecare din cele două abordări are realizări şi limite. De exemplu, reţelele neuronale artificiale au fost folosite cu succes în recunoaşterea imaginilor sau a vocilor. Ele au limitări însă în înţelegerea limbajului uman, problemele sintaxei şi a semanticii combinaţionale, a compoziţionalităţi fiind foarte greu de tratat (Fodor 1988). Un exemplu al lui Jerry Fodor se referă la exprimarea “rachetă antirachetă” (Anderson et al., 1990b, pag. 601), care este imediat înţeleasă de oamenii care nu au mai auzit-o, fapt foarte greu de explicat prin simple asociaţii (conform modelului ABC- Asociaţionism, Behaviorism, Conexionism, care stă la baza reţelelor neuronale artificiale (Dennett 1998 pag. 103).

Înţelegerea exprimării de mai sus poate fi foarte uşor explicată prin abordarea simbolică, în care se postulează existenţa unui “limbaj al gândirii” (Anderson et al. 1990a, pag. 600). Avantajul reprezentării simbolice este foarte bine exprimat şi de Daniel C. Dennett (Op. cit. pag.152):

“Simbolurile, spre deosebire de nodurile ţesute în reţelele conexioniste, sunt mobile; ele pot fi manipulate; ele pot forma structuri mai mari, în care contribuţia lor la sensul întregului poate fi o funcţie definită, generabilă, a structurii - a structurii sintactice - a părţilor.”

În abordările simbolice de inteligenţă artificială, prelucrările sunt efectuate de un program care manipulează cunoştinţe dintr-o aşa numită bază de cunoştinţe. Programele de calcul, în acest caz, sunt denumite sisteme bazate pe cunoştinţe, caracteristica lor definitorie fiind că există o separare netă între baza de cunoştinţe (care poate fi dezvoltată incremental în timp sau chiar total înlocuită cu alta) şi un mecanism de efectuat raţionamente. Una din cele mai grele probleme ale dezvoltării unui astfel de sistem este construirea bazei de cunoştinţe, aşa numita achiziţie de cunoştinţe.

Bazele de cunoştinţe pot deveni nebănuit de mari. De exemplu, pentru înţelegerea unor propoziţii în limbajul uman este necesar un volum nebănuit de mare de cunoştinţe de “bun simţ”, pe care le ştie şi un copil de câţiva ani dar care sunt foarte greu de introdus într-un program. Astfel, înţelegerea instantanee de către noi a propoziţiei “Am văzut Statuia Libertăţii zburând deasupra New-York-ului!” în sensul că vorbitorul zbura (şi nu statuia), este foarte greu de realizat de calculator (pentru că ar trebui să ştie, de exemplu, că statuile nu zboară).

În inteligenţa artificială există divergenţe de opinii referitoare la mai multe probleme esenţiale. După părerea noastră, aceste dispute sunt datorate câtorva aspecte esenţiale care pun sub semnul întrebării posibilitatea realizării de roboţi cu “viaţă psihică” sau conştiinţă, elemente determinante în considerarea unui robot ca fiind egal omului.

REPREZENTAREA CUNOŞTINŢELOR

Noţiunea de “cunoaştere” poate fi definită în variate moduri. Spre deosebire de informaţie, noţiune centrală în informatică (de unde şi termenul de IT - “information technology” - “tehnologia informaţiilor”), cunoaşterea era, în acest domeniu, până de curând, specifică doar subdomeniului inteligenţei artificiale. În acest context, cunoaşterea are o semnificaţie bine precizată. Conform definiţiei lui Alan Newell, unul din pionierii şi teoreticienii inteligenţei artificiale, cunoaşterea este ceea ce poate fi atribuit unui agent uman sau artificial (un program de calculator autonom care interacţionează cu mediul său înconjurător) astfel încât comportarea sa să poată fi catalogată drept raţională (Newell 1982). În consecinţă, am putea spune că societatea cunoaşterii este populată cu agenţi (din care mulţi sunt agenţi artificiali, adică programe de calculator) care acţionează raţional. O observaţie importantă în acest sens este că o comportare raţională este o comportare predictibilă (cu conotaţie pozitivă, de situare într-un mecanism), ducând la posibilitatea cooperării între agenţi în vederea atingerii unor scopuri comune. Cunoaşterea adaugă la informaţie un înţeles, asociază o acţiune.

Totodată, la mijlocul anilor ’70, la circa două decenii de cercetări în inteligenţă artificială, s-a ajuns la concluzia că reprezentarea şi prelucrarea cunoştinţelor este esenţială în asigurarea inteligenţei.

Tot Newell în lucrarea “Nivelul cunoştinţelor” (Newell 1982), postulează că, în universul ştiinţei calculatoarelor, există un nivel separat, al cunoştinţelor, situat deasupra nivelului programelor (denumit şi nivelul simbolic), nivel care, la rândul lui este situat deasupra celor specifice “hardware”-ului (“transferul între regiştrii, circuitele logice, circuitele şi dispozitivele). Trecerea la noul nivel, al cunoştinţelor, este noutatea adusă şi de societatea cunoştinţelor faţă de cea a informaţiei.

După postularea noului nivel, Alan Newel trece la caracterizarea acestuia. La acest nivel sunt identificate scopuri, acţiuni şi corpuri de cunoştinţe. Prin corespondenţă, considerăm că societatea cunoaşterii trebuie să fie definită în termeni de scopuri, acţiuni şi corpuri de cunoştinţe. Aceleaşi elemente se regăsesc şi la agenţii artificiali inteligenţi. Corpurile (bazele) de cunoştinţe sau ontologiile sunt definitorii pentru aplicaţiile bazate pe cunoştinţe.

În contextul programelor de calculator “clasice”, cunoştinţele sunt, în cea mai mare majoritate, încorporate implicit în program. Multe din ele sunt înglobate în teoriile matematice care stau la baza programelor. Alte cunoştinţe sunt implicite în algoritmii implementaţi sau în construcţiile scrise în limbajul de programare.

Orice program de calculator înglobează o cantitate de cunoştinţe referitoare la problema de rezolvat şi la domeniul căruia aparţine acea problemă. Pentru exemplificare să considerăm cazul unui program de sortare (ordonare) a unei secvenţe de numere memorate într-un vector. Analizând un program pentru rezolvarea acestei probleme din perspectiva cunoştinţelor implicate, se pot face următoarele precizări:

- Programul înglobează cunoştinţe referitoare la faptul că, pentru a sorta nişte numere (sau, în general, chei sau elemente), o abordare posibilă este de a compara cheile între ele şi a le interschimba pentru a le aduce la locul lor în secvenţa finală.

- Algoritmul (scenariul) de sortare, care a stat la baza programului, este obţinut ca o consecinţă a cunoştinţelor referitoare la schemele posibile de rezolvare a unei probleme. În particular, de exemplu, algoritmul particular de sortare prin interclasare este o consecinţă a ideei că o abordare utilă în multe cazuri este de a descompune problema iniţială în subprobleme mai simple care apoi sunt recompuse în soluţia finală ("divide et impera").

- Algoritmul foloseşte cunoştinţe procedurale de genul că, pentru a schimba două elemente între ele, metoda uzuală este de a folosi o variabilă temporară şi de a face o permutare circulară între valorile celor două elemente şi a variabilei temporare.

- Implementarea algoritmului într-un anumit limbaj implică, în plus, cunoştinţe asupra respectivului limbaj.

Fisiere in arhiva (1):

  • Limbaje de Programare Utilizate in Inteligenta Artificiala.doc