Sunteți pe pagina 1din 21

Notite SBC

Curs 1
Introducere, istoric, definitii, clasificari

1956 - se pune problema masinii de calcul inteligente la conferinta de la Dartmount College


John Mc Carthy introduce conceptul de IA (Inteligenta Artificiala) - devenind un domeniu
inteligent
Intreg domeniul se bazeaza pe niste descoperiri anterioare, mai teoretice.
Newell, Shaw si Simon descriu un program cu un progesor de calcul simbolic - cunoscut sub
numele de Logica Theorist
Se creeaza IPL - capabil sa modeleze procesarea informatiilor de mintea umana
Apare LiSt Processing (LISP), limbaj dezvoltat de John Mc Carty - nu se preteaza pentru
rularea pe un calculator obisnuit. Este utilizat mai mult in partea de vorbire artificiala

Curs2
Inteligenta = aptitudinea de a sesiza anumite raporturi intre obiecte si fenomene. Sesizare
senzoriala (la animale) datorata reflexelor conditionale sau intelectuala (la om) unde intervine
limbajul natural si conceptele.
Ex: Nu este neaparat senzorial faptul ca interpretez ca o temperatura este mare.
Modul in care un individ reactioneaza depinde de modul in care sunt definite conceptele
persoanei respective.
Conform lui Findler ---- Un sistem are propietatea de inteligenta daca se poate adapta la noi
situatii, daca are capacitatea de a produce rationamente, de a intelege legaturile dintre fapte si
de a descoperi alte intelesuri pentru a cunoaste sensul adevarat al unui text. Un astfel de
sistem ar trebui sa fie capabil sa invete.

IA este un subdomeniu al stintei calculatoarelor care are ca obiectiv de a concepe sisteme de


calcul ce pot sa fie inteligente. Manifesta propietati pe care le asignam inteligentei umane
* intelegerea limbajului natural (comunicare)
* acumularea de cunostinte (invatare)
* producere de rationamente si rezolvare de probleme
IA poate fi privita ca o modalitate de a simula comportamentul inteligent pe diferite sisteme
tehnice. Rationamentele pe care le luam se bazeaza pe un nou model (inter al lumii exterioare)
pe care il cream la nivelul sistemului inteligent

Crearea unui model al lumii reale - model de reprezentare al cunoasterii.


La nivelul sistemului, prin modelul de reprezentare al cunoasterii cream un model al lumii
reale. Interactiunea cu lumea reala se realizeaza prin organe senzoriale - cu stimulii de
perceptie (perceptia unor semnale, fenomene)
* Pe baza organelor senzoriale se face perceptia de semnale
* Pe baza modelului lumii interioare executam rationamente
* Rezultatul - actiunile pe care le facem (catre lumea exterioara sau actiuni care sunt doar
specificate)
Orice sistem are date de intrare si date de iesire. Ceea ce se intampla in interiorul sistemului
---- in loc sa avem un algoritm avem un model care reprezinta cunostinte si pe baza lor se
produc rationamente

Deci rationamenul nu inseamna cunoasterea automata a unui algoritm initial.


Avem doar cunostinte si pe baza datelor de intrare se produc rationamente si se obtin rezultate
= actiuni asupra lumii exterioare.

Un sistem nu este inteligent daca i-am inglobat un algoritm. Utilizez doar cunostinte.
Trebuie sa descopar algoritmul pentru rezolvarea unei probleme

Inteligenta unui program nu o putem defini ca o metrica, deci este intotdeauna relativa (Nu
putem spune ca prog X este mai inteligent decat prog Y) Fiecare program se adreseaza unui
anumit domeniu.

IA = ramura a stintei calculatoarelor ce realizeaza niste tehnici de programare performate care


sa fie capabile sa rezolve probleme complexe, in situatia in care nu cunoastem un algoritm de
rezolvare
Intrarile nu sunt niste date, intrarile sunt formulari de probleme. Pe baza acestei probleme,
trebuie sa ajung la o solutie. Ex: Decizia de a face sport, pe baza unor probleme - am chef, ma
simt bine, etc. Pentru a gasi solutia, fac o cautare euristica. Incercam sa folosim cunostintele
pe care le-am dobandit.

Cand vorbim de SBC, vorbim de o serie de metode de utilizare a pieselor de cautare (a


cunostintelor), pe baza euristica.

In baza de cunostinte avem


* Fapte
* Relatii
* Reguli - daca anumite expresii sunt adevarate atunci sunt adev si alte expresii

Definire probleme
O problema are 3 parti:
* Ipoteza - date initiale
* Concluzie - ceea ce ar trebui sa obtin
* Proces - sirul de rationamente aplicate pentru a ajunge de la ipoteza la concluzie - astfel
nu mai am o problema ci am un fapt

Putem avea si probleme la care nu putem gasi un proces care sa ne duca la concluzie.
Daca cele 3 componente sunt cunoscute - avem un fapt (Daca aplic P ipotezei I, obtin C)

Daca avem o coponenta necunoscuta - avem o problema


Oricare dintre cele 3 poate fi necunoscuta.

1. IPX - Care este concluzia aplicarii procesului P asupra ipotezei I. Aceasta este problema
tipica de prelucrare de date, de care se ocupa intotdeauna programarea clasica.

2. XPC - Care este ipoteza asupra careia daca aplic procesul P obtin concluzia C?
3. IXC - Descoperiti procesul aplicat ipotezei pentru a obtine concluzia. Este o problema
creativa - aceasta este o formulare din zona IA.

4. La problemele incomplet formulate ma opresc in momentul in care nu mai am nicio


piesa de cunoastere pe care sa o pot aplica

Subdomenii IA
1) Reprezentarea cunostintelor si rationarea cu acestea - se gaseste in toate celelalte
subdomenii.

2) Vederea artificiala. Initial a fost recunoasterea formelor - sa disting o forma fata de alta
forma (utilizata in zona de productie pentru a detecta conturul pieselor). Recunoasterea
formelor s-a dezvoltat atat de mult incat s-a ajuns la distingerea multor detalii. Detectez
culori, forme, caracteristici. Ex: recunoasterea emotiilor persoanelor.

3) Reproducerea miscarii - Robotica. La un moment dat, multe lucruri devin algoritmice.

4) Intelegerea limbajului natural. (A nu se confunda cu intelegerea vorbirii). Se poate


intelege limbajul natural corect. Avem persoane care au deficiente de vorbire, au anumite
accente - nu functioneaza pentru ei. Ar trebui sa se faca un antrenament pentru a intelege o
anumita persoana. Sistemul se autoantreneaza

5) Demonstrarea automata de teoreme

6) Sisteme cu autoinstruire. Sisteme capabile sa invete singure. Se genereaza noi piese de


cunoastere pe care le inamagazineaza

1 si 6 fac parte din SBC

Clasificarea cunoasterii
* Dupa modul de achizitie
# Apriori (universal valabile, nu pot sa le neg, stau la baza unui anumit domeniu, sunt
independente de sistemul senzorial) (ex. legile fizicii)
# Aposteriori (dobandite prin experienta) Validarea/invalidarea lor este un rezultat al
experientei. Vaccin pentru Covid-19 este aposteriori.

* Dupa gradul de generalitate


# Semnale (nivel de baza) ascund date dar si multe zgomote
# Datele - din semnal extrag elemente de interes si obtin date
# Informatii - daca mai curat putin datele pentru a obtine niste elemente care au interes
bine precizat - inpormatii
# Cunostinte - daca determinam niste reguli de actiune in anumite situatii pe baza
informatiilor
# Metacunostinte - cunostinte despre cunostint. Cum sa utilizez cunostintele in
rezolvarea unei probleme. De exemplu la mate, cand am o problema, pe langa cunostinta
deprea acea problema, mai cunostinte legate de modul de rezolvare al problemei, bazat pe
faptul ca seamana cu unele anterioare

* Dupa continut
# Cunoastere procedurala - o reteta, un parcurs, o inlantuire prin care se ajunge la un
anumit rezultat. In limbajul respectiv am inclus si modul prin care se inlantuie. Conteaza si
ordinea
# Cunoastere declarativa - De a asigna valori de adevar pentru un anumit enunt (Este
adevarat sau fals)
# Cunoastere tacita - Dobandita neconditionat - abilitate - ex: abilitatea de patinaj. Este
un dat mostenit - talent

Exemplu continut cunoastere

Limbaje si tehnici de programare


Limbajele de programare sunt construite pe o gramatica. Limbajele de programare sunt
independente de context. Trebuie reprezentanta sintaxa si semantica.
* Limbaje procedurale (procesare in secvente, in ordine fizica, logica)
* Limbaje imperative - toate limbaje stintifice - C, Fortran, Pascal, Assembly
* Functionale - Calcul simbolic - LISP
* Limbaje neprocedurale
* Declarative (declar, dar nu dau ordinea de procesare)
# Orientate pe Obiect (C++)
# Logice (Prolog, nu conteaza ordinea, conteaza logica) - pentru cunostinte
# Bazate pe reguli (OPS5, Exsys, Clips) - pentru cunostinte
# Bazate pe cadre - pentru cunostinte
* Nondeclarative - IA

Discutii limbaje
LISP este procedural dar este utilizat in IA pentru ca se poate face procesare simbolica
Declarative - se precizeaza ce trebuie obtinut, nu se precizeaza cum trebuie obtinut
In programarea logica, programul este compus din fapte, reguli si scop. Executia verifica daca
scopul este adevarat
Programarea bazata pe reguli este legata de evolutia sistemelor expert
Programarea bazata pe cadre este mai rar utilizata. Se preteaza la piese de cunoastere
sterotipe.

SBC vs SE (sistem expert)


Un SBC = program implementat si scris pentru un sistem de calcul. Urmareste sa stocheze
piese de cunoastere si contine o serie de proceduri capabile sa rezolve probleme.

Un SE = Informatiile stocate provin de la experti umani. Sunt capabile sa rezolve probleme


complexe.
Expert = persoana ce are experienta intr-un anumit domeniu
Expertiza = capacitatea unui expert de a evalua in mod obiectiv un anumit domeniu

Curs 3
Inginer de cunostinte - Extrage cunostintele de la experti in domeniu si le formalizeaza astfel
incat sa le poata transmite mecanismului de achizitie cunostinte. Nu este simplu. Presupune
diverse metode de extragere. Inginerul de cunostinte "fura" cunostinte de la inginerul uman
Mecanismul de achizitie de cunostinte - ii permite expertului sa gestioneze baza de cunostinte

Baza de cunostinte - stocata in memorie permanenta. Contine fapte, reguli, metacunoastere.


Reguli - asemanatoare cu if...then. Materializata intr-un fisier de date. Cu o organizare
independenta de modelul de reprezentare.
Metacunostinte = Cum utilizez cunostintele din baza. Ce cunostinte va utiliza sistemul in
functie de contextul in care se gaseste - Niste retete, strategii. Ne spun cum sa organizam
cunostintele.

Baza de fapte - Intervine atunci cand se face lansarea in executie a sistemului. Faptele sunt
pastrate in memorie temporara. Initial faptele sunt cunostintele initiale, dar pe parcurs se
adauga alte fapte care au fost deduse prin utilizarea pieselor de cunoastere. Se mai numeste
baza de contexte pentru ca pastreaza contextul initial, dupa obtinerea piesei, se obtine alt
context, etc.

Mecanismul de inferenta - Componenta centrala. Daca dezvolt un sistem de la 0, trebuie sa


creeam si acest mecanism. Trebuie sa fie conform cu modelul de reprezentare al cunostintelor
folosit. Implementeaza elementele de control. Este program procedural. Este incapsulat in
compilatorul sau interpretorul limbajului. La Prolog - in compilator. Daca il fac de la 0, ar
trebui sa fac un mecanism de parcurgere al unor arbori si grafuri.

Modulul de explicare - Furnizeaza strategia de rezolvare, justifica solutia.

Interfata utilizator - Un mod de a facilita interactiunea dintre utilizator si un sistem

Sistemul esential - Cuprinde componentele obligatorii - baza de cunostinte, baza de fapte


(pastreaza contextul initial si cele de pe parcurs), baza si mecanismul de inferenta
Celelalte module sunt auxiliare - pot lipsi in functie de specificul aplicatiei.
Baza de cunostinte se modifica la intervale mari de timp (cunostintele evolueaza lent in timp)

Avantaje utilizare SBC


* Poate opera cu un volum mare de cunostinte. Pentru un domeniu ingust exista sute de mii
de piese de cunoastere. Asadar, un expert s-ar putea sa nu fie capabil sa ia o decizie pentru ca
nu mai cunoste toate piesele. SBC-urile pot sa faca acest lucru intr-un timp rezonabil.

* Asigura expertiza intr-o multime de locatii. Nu este afectata de factori de stres.

* Pot fi folosite in medii periculoase pentru expertul uman

* Asigura perenitatea cunostintelor, nu se pierde expertiza prin migrarea personalului.

* Rezolva probleme pentru care nu este cunoscut un algoritm.

SBC, programare clasica - comparatie


La programarea clasica algoritmul este cunoscut si el este implementat in cod. Daca se
modifica algoritmul, trebuie sa modific codul programului. Modificarile de algoritm au ca
efect modificarea codului. (mai aflu ceva, cred ca modific algoritmul)
SBC ofera o separare inre cunostinta si algoritm de rulare. Pot sa aduc noi piese de cunoastere
in baza fara a modifica algoritmul Noile piese duc la modificarea rezultatelor. Se poate
compara cu individul uman - inteligenta este nativa, cunostintele se dobandesc. (mai aflu
ceva,adaug in baza ce am mai aflat cred)

Este usor de actualizat, fara o interventie in cod


Ordinea cunostintelor nu influenteaza rezultatele, dar influenteaza timpul in care se obtine
rezultatul.
In programarea clasica exista doar valorile de adevar - adevarat si fals. In SBC formulele pot
fi nedecidabile sau decidabile cu valorile adevarat sau fals.

Ce poate contine SBC?


* Constante cu diverse tipuri de date - temperatura, numele unei persoane
* Variabile Reprezentate de date de achizitionate prin diverse mijloace (senzori, introduse
de operator)
* Relatiile dintre obiecte (Distanta dintre doua orase, relatii de rudenie
* Reguli specifice domeniului(legea lui ohm)
* Reguli euristice, obtinute pe baza unor observatii, pe baza experientei (pastrarea
echilibrului intre productie si consum)

Mecanismul de inferenta
Algoritm generic de control. Reactioneaza indiferent de continutul bazei. Dar modelul de
reprezentare trebuie sa fie conform.
Determina momentul in care o piesa de cunoastere este lansata in executie.
La un moment dat exista posibilitatea ca mai multe piese sa fie aplicabile.
Secventa de operatii intre inceperea si terminarea programului este determinata in mod
automat de catre mecanismul de inferenta care tine cont de anumite date.
Aceest mecanism implementeaza o strategie de parcurgere a arborilor si a grafurilor

Cand se recomanda SBC


In cazul problemelor nestructurate la care nu se poate gasi un algoritm, sau se poate gasi unul
foarte greu
Atunci cand avem cunostintele necesare. Avem specialisti care sa furnizeze piese de
cunostinte.
Exista foarte multa cunoastere dobandita (aposteriori) ( cred ca pt ca altfel ar trebui sa tot
modificam algoritmul si in sbc doar adaugam cunostinta)
Daca cunoasterea despre rezolvarea problemei este incerta (se modifica frecvent in timp) deci
avem nevoie de un sistem care este capabil sa se plieze pe aceste modificari.
Prelucrarile necesare sunt de tip simbolic, nu numeric. Pentru procesari numerice de
anvergura se poate apela la programe externe.
CURS4

Logica matematica
Elimina ambiguitatile din limbajul natural pentru a obtine un cadru riguros pentru
rationamente.
Judecatile umane se exprima prin enunturi, in SBC acestea sunt faptele si regulile de baza ale
bazei de cunostinte
Enunt - formatiune lingvistica (utilizam un anumit limbaj) declarativa, cu inteles, compusa
din subiect sau subiecte si partea predicativa. Partea predicativa defineste o relatie.
Subiect poate fi precizat (instantiat) sau nu (anonim).
Propozitie = enunt cu toate subiectele instantiate (Deci nicio variabila)
Predicat = enunt ce are cel putin un subiect neinstantiat
Variabila - subiect neinstantiat dintr-un predicat
Aritate = numarul subiectelor neinstantiate dintr-un predicat (Ex: persoana X are trei copii ->
aritate 1)
Propozitia este un predicat cu aritate 0

Enunturile compuse sunt formalizate in logica folosind operatori logici (conective logice si
cuantificatori)

Operatiile logice. Sunt suficiente negatia si conjunctia sau negatia si disjunctia. Cu toate
acstea, pentru a avea claritate se folosesc toate operatiile. (negatia - 7 intors) (conjunctia - v
intors), (disjunctia- v) (implicatia -> ) si echivalenta (egal cu 3 linii)

Cuantificatori: existential(exista) si universal(a intors - semnul de oricare de la mate) ( se


refera la utilizarea unor variabila, de ex un cuantificator existential prefixeaza o variabila)
Limbajul artificial pe care dorim sa l construim vrem sa fie ca cel natural.

Tip similitudine
Abstractizarea fundamentala pe care sunt construite limbajele.
Se noteaza cu sigma
Sig = <I, J, K, teta, phi)
I = multimea de indexare a familiilor de relatii (un sistem relational intre subiecte cu diverse
aritati). Multimea relatiilor pe care le construim in acest tip de similitudini. O relatie e
evaluata prin valoarea sa de adevar, nu produce o valoare in domeniul de definitie.
J = multimea de indexare a famililor de functii (mult simbolulilor) . Functia are un rezultat in
domeniul de definitie.
K = multimea de indexare pentru elem distincte (mult elem distincte)
Repet: aritate = cate variabile avem
Teta:I -> N = aplicatia de aritate a familiilor de relatii
phi:J -> N= aplicatia de aritate a familiilor de functii (nr de argumente al unei functii)

suport/univers = multimea simbolurilor pe care le putem utiliza in limbajul respectiv


Daca I e vida, atunci e algebra. Daca J e vida, e sistem relational.

Deci cand discutam de orice limbaj formal pornim de la un set de simboluri primitive, avem
un set de simboluri functionale, unul de relationale. Problema care se va pune este sa avem
structura semantica.

N = set de simboluri
<= e simbol relational ( obtin A sau F)
+, * si functie succesor (s) sunt simboluri functionale ( obtin valoare) . S este o functie
generatoare.
iar 0 e multimea elementelor distincte de la care se porneste.

Dpdv al aritatii, <= are aritate binara, + si * e tot binara, la succesor e unara.

Cand vine vorba de limbaj natural si limbaj formal – de ex in limba romana, chiar daca
concatenam mai multe cuvinte = aplicam un simbol functional pe mai multi termeni, si vom
obtine tot un termen, asta nu inseamna ca va avea si semantica = ca va avea sens.]
Echivalentul frazelor din limbajele naturale = formule in limbaje formale.
F1 si F2 sunt formule => oricum am aplica relatiile negare, implica etc etc, obtinem tot o
formula. (ca la propozitii/fraze)
variabila libera = o variabila care nu e nici instantiata nici prefixata de ceva. Daca x e o variab
libera intr o formula F, atunci prefixarea ei cu un cuantificator obtine tot o formula.

Daca am o formula de n variabile, substitutia e o formula tot de n variabile in care fiecare


variabila a fost inlocuita cu o alta. Domeniul substitutiei vor fi doar variabilele care sunt
diferite de valoarea lor dupa substitutie.

Valida = mereu A indif de variabile


Consistenta = nu e intodeauna falsa
Contingenta = Nu intotdeauna adevarat, nu intotdeauna fals
Axioma, postulat in fizica = formula cu statut de permanenta validitate. Axiomele sunt
independente, nu pot fi deduse din altceva
Reguli de inferenta = metode prin care putem sa determinam care sunt consecintele dpdv al
validitatii unei formule pe baza unor presupuneri
Inferenta = operatia pe baza careia, pornind de la acceptarea valorii de adevar a unui numar
finit de enunturi numite premise se trece la acceptarea unui alt enunt numit concluzie.

Aplicarea unei teoreme in matematica e o inferenta. Daca ipoteza e adevarata, atunci enuntul
aferent concluziei e adevarat.
Daca premisa e falsa nu inseamna neaparat ca si concluzia e falsa ca s ar putea sa fie
adevarata daca aplicam alte reguli. E posibil sa obtin aceeasi concluzie si prin acceptarea unor
alte premise.
O teorie pentru care s-au definit axiome si reguli de inferenta este o teorie axiomatic
deductiva.
Un sir de inferente in care premisele unora se gasesc printre concluzile altora se numeste lant
inferential - au o anumita ordine.
UN lant inferential = o succesiune de inferente logice care se fac intr-o anumita ordine. Aplic
o inferenta, obtin o concluzie, care poate e o premisa pe care aplic alta inferenta etc. Desi pe
fiecare ramura am o anumita succesiune, pot exista mai multe ramuri de unde sa ajung la
aceeasi concluzie. Deci se genereaza un graf. Important e ca acest lant de inferente sa fie
cel mai scurt.

functiei de posibilitate = inferenta

Sistemul axiomatic = faptele initiale, expresiile cu statut de validitate.


Sistem inferential = cel care produce transformari de context, de la sistem axiomatic la
concluzie. Sistemul axiomatic si cel inferential trebuie sa coexiste.

Aplicarea unei reguli din matematica este o inferenta.

Limbajul calculului propozitional - Se ocupa de compunerea propozitiilor si studiul


valorilor de adevar a expresiilor rezultate – limbaj formal
Elemente
* Alfabet - set finit de simboluri
* Sintaxa - modul de combinare a simbolulilor din alfabet
* Semantica - semnificatia combinatiilor obtinute respectand sintaxa
Alfabetul contine variabile propozitionale, conective logice si semne de grupare.
Variabila propozitionala = propozitii. Nu permite variabile, deci nu permite cuantificatori.

Limbajul calculului cu predicate ( ex PROLOG)


Elemente
- variabile individuale
- variabile functionale = functii. O functie cu aritate 0 e o constanta.
- multimea predicatelor . UN predicat cu aritate 0 = variabila propozitionala
- conective logice si cuantificatori pentru ca aici avem variabile
- simboluri auxiliare (pct si virgula, virgula paranteze etc)

La prolog e valabila clauza Horn inversata adica B daca a1, a2…

Tipuri de formule
* Tautologii - formule ce au tot timpul valoarea adevarat indiferent de valoarea de adevar a
propozitiilor componente
* Contradictorii - formule ce au intotdeauna valoarea fals indiferent de valoarea de adevar a
propozitiilor componente
* Formule variabile - formule ale caror valori de adevar sunt dependente de valoarea de
adevar a elementelor componente

CURS5

Prolog = Limbaj de programare logica


Folosit in intreligenta artificiala pentru partea de calcul inapoi
Implementeaza calcul cu predicate de ordin 1
Rationarea incepe de la precizarea scopului. Se incearca demonstrarea acestuia.
Un prog Prolog nu are un punct de intrare.
Baza de cunostinte este formata din clauze
O clauza in Prolog - S:-S1,S2,... - Atat S cat si S1...Sn sunt predicate, virgula este conjunctie
logica, : - disjunctie logica. In partea dreapta pot sa apara paranteze de grupare pentru a defini
precedenta operatilor.
Operatia si este prioritara fata de sau.
Pot exista clauze ce au doar membrul stang. Poarta denumirea de fapte - aserteaza
predicatul ca adevarat.

Entitati PROLOG
* Fapte despre obiecte si relatiile dintre acestea. Ex: parinte(ion,vasile), carte(sbc).
* Reguli despre obiecte si relatiile dintre ele, care permit deducerea altor fapte be baza
faptelor deja cunoscute
* Scop(intrebare) despre obiecte si relatiile dintre ele la care programul raspunde luand in
considerare faptele si regulile existente. Raspunsul poate fi afirmativ sau negativ.
* Variabilele sunt obiecte generice ca argumente ale predicatelor. O variabila este legata
(instantiata) daca exista un obiect asociat ei sau neinstantiata (libera, anonima), in caz contrar.
* Conventie - variabile - incepe cu litera mare sau incepe cu _ sau este _
# -constante - incep cu litera mica

Ex: frate(X,Y):-descendent(X,Z), descendent(Y,Z). , X,Y,Z sunt variabile anonime.

Tipuri de date
* Char
* String
* Integer
* Real
* File - nume de fisier
* Symbol - un nume tratat ca atom fara se se poata actiona asupra sa
Pot fi definite si tipuri utilizator cum sunt listele ([1,2,3]) - elemente separate prin virgula.
Toate elementele unei liste sunt de acelasi tip si pot contine liste.

Componente PROLOG
Orice program incearca sa verifice un scop final prin descompunerea in subscopuri ce se vor
verifica
Componente standard
* DOMAINS - defineste variabilele si le asociaza anumite tipuri de date. Scopul nu este de
a le utiliza in program ci de a specifica logica unui predicat. Pot fi folosite pentru a face
programul mai usor de inteles

* PREDICATES - sectiunea care defineste predicatele construite de utilizator. Specific


numele si numarul de elemente

* GOAL - specificarea unui scop - fereastra aia de jos din prolog. Daca lipseste la rulare se
cere precizarea scopului. Punctul de intrare intr-un program Prolog este dat de clauza care are
scopul in membrul stang.

* CLAUSES - sectiune ce contine fapte si clauze fiind considerat corpul programului. Nu


se face dinstinctia intre fapte si clauze. Membrul drept al clauzei este o conjunctie sau
disjunctie de predicate, unele din ele necesitand executia altei clauze in care predicatul este
membru stang.
!!! Toate clauzele ce au acelasi membru stang trebuie sa fie in aceeasi sectiune
Variabilele incep cu litera mare. Daca incep cu litera mica sunt considerate constante
symbol.

Paralela programare clasica - logica

! - este folosit pentru a opri masina Prolog sa urmareasca predicatul test pe celelalte ramuri.
Pentru ca masina se uita la toate celelalte clauze.

Daca inversez clauzele obtin incorect mereu iar daca valoarea e 1, intra si in clauza 2 si imi
scrie si corect.
Switch

Do - While
aici nu era – la !

Daca as fi scris X = X + 1 ar fi fost mereu fals.

Liste
header + tail

Asserta(inregistrare) - scrie la inceputul bazei


Asertz - scrie la finalul bazei
Retract - sterge prima inregistrare

Prolog: baze de date dinamice si statice

Baza de date statica - fisier


Fisierul are fie nume simbolic fie nume complet ce precizeaza intreaga cale
Deci prolog opereaza fie structuri de date de baza, fie de tip utilizator (de tip liste), fie ce
formeaza structuri (sau structuri de tip database).

Reguli de productie - CLIPS


- Regulile de productie sunt scrise in tipic gen clauza Horn, nu inversata ca in prolog.
- fapt e in baze de fapte si regula e in baza de cunostinte
- logica fuzzy → rationarea nu mai e de tip binar, e bazat pe logica multivalenta ( un enunt
este mai mult sau mai putin adevarat)
Fapte in CLIPS:
- sunt indexate cu un numar
- avem o comanda specifica “ assert(ion)” iar sistemul raspude cu indexul faptului
- daca doua campuri au ordinea campurilor diferite atunci sunt fapte distincte
- cand vrem sa introducem un fapt cu altul existent, e suprascris

Reguli in CLIPS:
- nu exista doua reguli cu acelasi nume
Deci la programele prolog avem o abordare putin diferita de abordarea clasica, uzuala.
( backtracking)
La clips fiecare regula e independenta, ordinea e complet aleatoare. SI la clips sunt in acelasi
loc regulile si faptele dar sunt stocate diferit.

Cut = cand am intrat pe o anumita clauza, executa clauza dar nu mai verifica si alte clauze in
continuare. E un break gen.
Daca am avea test(1) :- !, predicat1. Inseamna ca o sa opreasca, si apoi face predicat1. Dar
daca puneam de ex conditie, ! Atunci daca nu era adevarata conditia nici nu ajungea la cut. Pe
scurt, cut afecteaza doar ce e dupa el in celelalte clauze, dar se poate si sa nu se ajunga la el
deloc.

Aici de ex, daca X<10 ajunge la cut, altfel se opreste acolo si intra pe toate celalalte.

CURS 6

Reprezentarea cunoasterii- baze de cunostinte

Modele de reprezentare
Exista o diferenta intre cunostinte ( o serie de afirmatii) si modul de reprezentare al
cunostintelor (modelul).
Se parcurg doua etape:
-acumulare de cunostinte ( intr-o forma care de obicei e specifica limbajului natural)
- codificarea cunostintelor

Acumularea cunostinteleor presupune si clasificarea acestora pentru a fi regasite atunci cand


sunt relevante. Elementele cu semnificatie poarta denumirea de piese de cunoastere.
( analogie = dezvoltare algoritm)
Tipuri de piese de cunoastere
• Concept (clasa) - condenseaza rezultatele abstractizarii si specifica apartenenta
obiectelor la diverse clase. ( adica concept = clasa de obiecte cu anumite
proprietati, criteriile de apartenenta la clasa aceea)
• Instanta (obiect) - materializata prin obiecte individuale, definirea unor constante
care dau apartenenta obiectelor la clase
Codificarea cunostintelor - dezvoltarea de programe care sa codifice si sa proceseze piesele
de cunoastere. Cu toate ca poate fi realizat si prin programare clasica, apar noi necesitati
privind gasirea si activarea pieselor de cunoastere. Intre structurile ce reprezinta o piesa de
cunoastere sunt necesare legaturi prin care sa fie usor regasite piesele de cunoastere inrudite.
(analogie = implementare algoritm). Cred ca putem sa i zicem si model de reprezentare.
( alegerea unui model de reprezentare)
Acumularea si codificarea - proces iterativ. Acumulam un set de piese, le codificam, mai
adaugam un set, etc.

Caracteristici model de reprezentare


Furnizeaza o metoda de codificare utilizata in realizarea bazei de cunostinte
• Expresivitate - capacitatea de a descrie bine obiectele si propietatile esentiale ale
acestora
• Claritate - Intre orice obiecte avem relatii. Ele sunt explicitate foarte clar.
(posibilitatea de a explicita f clar si corect relatia dintre obiectele modelate)
• Completitudine - Permite o reprezentare completa si concisa a obiectului respectiv
• Independenta de context si neambiguu semantic - nu este dependent de context,
seamana cu claritatea
• Eficienta - Dpdv al gestionarii bazei (adaugare, stergere, organizare piese de
cunoastere) si al executiei rationamentelor

Modelul este definit prin conventii sintactice(alfabetul reprezentarii) si conventii


semantice (intelesul combinarii simbolulilor)
Detalii model de reprezentare
Trebuie sa stabilim piesele de cunoastere ce vor fi modelate
Aspecte ontologice (trasaturi generale). Semantica depinde de ontologia modelului. Toate
modelele obtin o ontologie generala si una specifica.

Primitive semantice = in matematica axiome. Noi dorim sa fie cat mai putine. Numarul
primitivelor trebuie sa fie mai mic decat cel al elementelor modelate.
Primitivele sutn independente intre ele.

Reprezentare calcul cu predicate = alcatuim o formula care exprima ce se exprima si piesa de


cunoastere prin limbajul natural.

1. Ca sa descompunem in propozitii → ne uitam cate verbe avem. Avem 1→ e deja


descompus (ex. A1) . Din descompunerea in propozitii trebuie sa si reprezentam predicativ.

2. Pt A1: introducem predicatul pe care il aveam ( ex: este_compus(obiect, comp1, comp2,


comp3, comp4). Dar poate se mai adauga componente => se schimba aritatea, nu am dori
asta. Mai bine reformulam si obtinem:

Ex2.

De ce e predicat de ordin 1 si nu e regula?


Ex3. Orice om are o optiune politica. → avem si cuantificator universal (orice om) dar si
existential (exista optiune).
DECI elemente din baza de cunostinte = fapte relatii sii reguli !!!
La exemplul cu cuburile, avem nevoie de cea mai scurta cale care ma duce din starea initiala
in starea obiectiv.

Reprezentarea prin reguli de productie


Aici o sa avem daca a atunci b. Inainte aveam pentru a-l deduce pe a deduce-l pe b.
Aici nu e rationament inapoi ca la calculul cu predicat. (ce???)
Nu conteaza ordinea faptelor/pieselor de cunoastere. Vor fi declansate cand se indeplinesc
anumite conditii. Performantele pot fi modificate in functie de ordinea lor, totusi.
Baza de cunostinte = baza de reguli
Reguli de productie nu sunt regulile = baza de cunostinte
( in cursul 6 la sfarsit a zis ca de fapt conteaza ordinea la reguli in calculul cu predicate)

ARE SAU NU BAZA DE CUNOSTINTE FAPTE????

S-ar putea să vă placă și