Medii de programare in Inteligenta ghindeanu/courses/mpia/Curs.pdf · bazat pe cazuri (case-based),...

download Medii de programare in Inteligenta ghindeanu/courses/mpia/Curs.pdf · bazat pe cazuri (case-based), logica fuzzy (fuzzy logic), retele neuronale, retele bayesian, etc. Cele mai multe

of 51

  • date post

    03-Feb-2018
  • Category

    Documents

  • view

    223
  • download

    8

Embed Size (px)

Transcript of Medii de programare in Inteligenta ghindeanu/courses/mpia/Curs.pdf · bazat pe cazuri (case-based),...

  • Medii de programare in

    Inteligenta Artificiala

    Mihaela Colhon

  • 2

    Rationamente bazate pe reguli Un motor de inferenta este un cod software care poate procesa reguli, obiecte sau alte mecanisme de reprezentare a cunostintelor in functie de datele problemei analizate. Marea majoritate a produselor AI contin o capabilitate de rationament deductiva (forward-chaining) sau inductiva (backward-chaining). Sistemele bazate pe reguli sunt folosite pentru a modela expertiza umana prin implementarea de rationamente bazate pe reguli aplicate pe o multime de date. Structura unui sistem bazat pe reguli contine o multime de fapte numita memoria de lucru a sistemului in care sunt stocate faptele ce se cunosc a fi adevarate, o baza de reguli ce contine regulile folosite in inferenta si un motor de inferenta care are rolul de a decide ordinea in care se aplica regulile activate de datele de intrare. Structura unei reguli are urmatoarea sintaxa: IF LHS (premiza) THEN RHS (concluzie) Procesul de pattern matching este declansat in timpul inferentei ... Exista doua tipuri de algoritmi de inferenta: - forward chaining (data-driven reasoning) - backward chaining (goal-driven reasoning) Observatie Exista cazuri in care, structura de control a anumitor sisteme bazate pe reguli nu foloseste nici inlantuirea inainte nici inlantuirea inapoi a regulilor, ci o strategie de control de tip agenda. Agenda este o lista de sarcini pe care sistemul trebuie sa le execute. Aceasta strategie este in special utila in cazul in care se foloseste un criteriu de selectie a regulilor bazat pe preferinta starilor, deci o functie euristica de evaluare. Strategie de control de tip Agenda 1. Initializeaza agenda cu sarcina de executat 2. repeta

    2.1. Selecteaza sarcina cu prioritate maxima, T 2.2. Executa sarcina T in limitele unor resurse de timp si spatiu 2.3. pentru fiecare noua sarcina Ti generata de T executa 2.3.1. daca Ti este deja in agenda atunci i. Fie T'i copia lui Ti din agenda ii. daca justificarile lui T'i nu includ justificarea lui Ti atunci adauga justificarea lui Ti justificarilor lui T'i iii. Inlocuieste T'i cu Ti

    2.3.2. altfel adauga Ti si justificarea asociata in agenda 2.3.3. Calculeaza prioritatea sarcinii Ti pe baza justificarilor pana agenda

    satisface conditia de stare finala sau agenda este vida sfarsit. Definitie Un sistem expert modeleaza expertiza umana intr-un anumit domeniu. Sistemele expert pot include mai multe tipuri de rationament: rationament bazat pe reguli (rule-based), bazat pe cazuri (case-based), logica fuzzy (fuzzy logic), retele neuronale, retele bayesian, etc. Cele mai multe sisteme expert sunt bazate pe reguli. Ele contin o baza de cunostinte (reguli) si un motor de inferenta care analizeaza faptele si decide care reguli pot fi aplicate si de

  • 3

    asemenea ordinea de aplicare a lor. Faptele sunt analizate pana cand scopul este demonstrat sau pana cand toate regulile sistemului au fost aplicate si atunci spunem ca demonstrarea scopului a esuat. Jess este un shell pentru sisteme expert si un limbaj de scripting scris in totalitate in Java. A fost dezvoltat de Ernest Friedman-Hill la Sandia National Laboratories in Livermore, California. Jess poate procesa un numar mare de reguli fiind unul dintre cele mai rapide motoare de prelucrare a regulilor. Acest mecanism este utilizat ca o varianta perfectionat a shell-ului CLIPS (C Language Integrated Production System). Folosind Jess se pot realiza aplicatii Java n domeniul inteligentei artificiale pe baza unui set de cunostinte acumulate sub forma unor reguli declarative folosite pentru a obtine concluzii si a face inferente. Sunt mai multe moduri de a reprezenta cunostinte in Jess:

    reguli care in principal sunt pentru cunostinte euristice bazate pe experienta fapte functii pentru cunostinte procedurale programare orientata obiect, pentru cunostinte procedurale

    La fel ca marea majoritate a motoarelor de inferenta bazate pe reguli, regulile sunt definite declarativ si nu in cod procedural. Spre deosebire de o paradigma procedurala , in care un singur program are o bucla care este activata o singura data, paradigma declarativa folosita in Jess, aplica in mod continuu o colectie de reguli unei colectii de fapte printr-un proces numit Potrivire de abloane (Pattern Matcher). Regulile pot modifica colectia de fapte sau pot executa orice cod Java. Motorul de inferenta Jess foloseste o varianta imbunatatita a algoritmului Rete (Rete in latina inseamna retea) care decide aplicarea regulilor in functie de faptele existente in memoria de lucru. Un sistem expert bazat pe reguli scris in Jess este un program dirijat de datele ncrcate n memorie (data-driven) care hotresc execuia prin intermediul motorului de inferente. Acesta este un exemplu despre modul in care Jess difera de limbaje procedurale cum ar fi Java si C. n limbajele procedurale, execuia se poate realiza i fr date. Instructiunile sunt suficiente pentru a cauza executia. De exemplu, instructiunea System.out.print(Hello world!) poate fi executata imediat n Java. Este o instruciune complet care nu are nevoie de date suplimentare pentru a declana execuia. n schimb, n Jess, datele sunt necesare pentru a cauza execuia regulilor. Algoritmul Rete ofera o descriere logic generalizat a unei implementri de funcionalitate responsabil cu potrivirea faptelor n conformitate cu produciile (regulile) declarate ntr-un sistem ce folosete Pattern Matcher (o categorie de motoare de inferen bazate pe reguli). O producie e constituit din una sau mai multe condiii corelate la un set de aciuni care trebuie sa fie executate pentru fiecare set complet de fapte ale cror atribute se potrivesc cu cele exprimate n condiii. Algoritmul Rete prezinta urmatoarele caracteristici majore:

    Elimina anumite tipuri de reduntan prin folosirea partajat a nodurilor Salveaza potriviri pariale ceea ce permite sistemelor de producie s evite reevaluarea

    complet a tuturor faptelor de fiecare dat cnd se fac schimbri n memoria de lucru a sistemului.

  • Modalitatea de a accesa motorul de inferente Jess o reprezint[inclus ntr-o aplicaie Java] import java.net.*

    public class TestJess {

    public static void main(String[] args) {

    Rete r = new Rete(); //se

    r.executeCommand(

    r.reset(); //se reseteaza motorul

    r.run(); //se executa comanda

    }

    }

    Programarea logica Este o paradigma care pleaca de la ideea specificarii unei probleme in limbajul logicii cu predicate de ordin Iteoreme pentru rezolvarea acelei probleme. cum se rezolva la programarea declarativa Deoarece demonstrarea automata de teoreme are niste dezavantaje legate de caracterul sau prea general, au fost necesare niste restrictii. De eHorn care reduc complexitatea calculului si nedeterminarea, introducand aspecte de control.

    Programarea functionalabaza are unui program, asa cum intructiunile sunt parte constructiva in programele procedurale, clauzele in programarea logica si obiectele in programarea orientata obiect. Un program functional este o compunere de functii. Cel mai cunoscut reprezentant al paradigmei de programare functionala este limbajul Lisp. Deoarece Lisp este un limbaj interpretat dupa lansarea in executie a sistemului Lisp se intrintr-o bucla in care interpretorul asteapta Semnalul ca interpretorul Lisp asteapta instructiuni pentru a fi executate este facut prin aparitia prompterului. Dupa ce utilizatorul a introdus o expresie Lisp interpretorul o evalueaza si daca aceasta expresie este corecei. Se spune ca interpretorul Lisp functioneaza intrTIPARESTE (read-eval-print). La fel ca si CLIPS, Jess-ul are la baza limbajul Lispreguli (e unul dintre cele mai rapide motoare de inferenta bazate pe reguli) fiind un produs sotware extrem de stabil. Desi sintaxa Jess este similara lui CLIPS, totusi Jess si CLIPS sunt doua sisteme diferite. Spre deosebire de Lisp, Jess nu slucru afecteaz modul n care codul Java este reprezentat n Jess considerm codul Java: class JavaTest { private int nr;

    public String label;

    Modalitatea de a accesa motorul de inferente Jess o reprezint clasa Rete din pachetul jess

    public static void main(String[] args) {

    Rete r = new Rete(); //se instantiaza un nou motor de inferenta

    r.executeCommand(jess-command); //executa comanda Jess

    r.reset(); //se reseteaza motorul

    r.run(); //se executa comanda

    Este o paradigma care pleaca de la ideea specificarii unei logicii cu predicate de ordin I si utilizarea demonstrarii automate de

    pentru rezolvarea acelei probleme. Se trece astfel de la programarea imperativaprogramarea declarativa ceea ce trebuie rezolvat.

    Deoarece demonstrarea automata de teoreme are niste dezavantaje legate de caracterul sau prea general, au fost necesare niste restrictii. De exemplu, in Prolog se lucreaza cu clauze Horn care reduc complexitatea calculului si nedeterminarea, introducand aspecte de control.

    Programarea functionala In limbajele functionale, functiile sunt componentele de baza are unui program, asa cum intructiunile sunt parte constructiva in programele procedurale, clauzele in programarea logica si obiectele in programarea orientata obiect. Un

    e o compunere de functii.

    Cel mai cunoscut reprezentant al paradigmei de programare functionala este limbajul Lisp. Deoarece Lisp este un limbaj interpretat dupa lansarea in executie a sistemului Lisp se intr

    o bucla in care interpretorul asteapta introducerea unei expresii Lisp. Semnalul ca interpretorul Lisp asteapta instructiuni pentru a fi executate este facut prin aparitia prompterului. Dupa ce utilizatorul a introdus o expresie Lisp interpretorul o evalueaza si daca aceasta expresie este corecta lexical, sintactic si semantic tipareste rezultatul evaluarii ei. Se spune ca inte