Cuprins
- Introducere ...2
- Capitolul 1 Machine Learning . 4
- 1.1 Scurt istoric .. 4
- 1.2 Tehnici de învă.are ... 4
- 1.2.1 Învă.are nesupravegheată .. 5
- 1.2.2 Învă.are supravegheată .. 5
- 1.2.3 Consolidarea învă.ării ... 6
- 1.2.4 Re.elele neurale .i învă.area profundă .. 7
- Capitolul 2 Programare orientată obiect. Java Eclipse 8
- 2.1 Java Eclipse scurtă prezentare .. 8
- 2.2 Structura programului .. 8
- 2.2.1 Compilator 9
- 2.2.2 Editarea surselor 9
- 2.2.3 Refactoring .. 10
- 2.2.4 Căutare 11
- 2.2.5 Execuția programelor .. 12
- 2.2.6 Depanare . 12
- 2.2.7 Informa.ii suplimentare .i ajutor . 13
- 2.3 Programare orientată pe obiect ... 14
- 2.3.1 Clase 14
- 2.3.2 Obiecte 15
- 2.3.3 Pachete standard în Java . 16
- 2.3.4 Pachetul ACM Graphics . 18
- 2.3.5 Gestionarea și generarea interfeței grafice cu utilizatorul .. 21
- Capitolul 3 Algoritmi utiliza.i 26
- 3.1 Algoritmul de grupare K-means . 26
- 3.2 Regresia liniară ... 28
- 3.2.1 Metoda celor mai mici pătrate 28
- 3.2.2 Metoda gradientului 29
- Capitolul 4 Ilustrarea algoritmilor de inteligență artificială .. 32
- 1
- 4.1 Algoritmul K-means ... 32
- 4.2 Algoritmul de regresie liniară 41
- Concluzii .,, 51
- Bibliografie ...52
- Anexe .53
Extras din licență
Introducere
Am ales lucrarea intitulată „Ilustrarea și simularea unor algoritmi de inteligență artificială folosind programarea orientată pe obiect în limbajul Java” pentru că îmi place matematica și programarea, iar algoritmii de inteligență artificială sunt la ordinea zilei. Am observat că de cele mai multe ori sunt dificili de înțeles și mi s-a părut bună ideea de a ilustra acești algoritmi printr-o aplicație ce folosește elemente grafice și limbajul Java.
Lucrarea este structurată într-un număr de patru capitole: capitolul 1 Machine learning, capitolul 2 Programare orientată obiect. Java Eclipse, capitolul 3 Algoritmi utilizați, respectiv capitolul 4 Ilustrarea algoritmilor de inteligență artificială.
În primul capitol am vorbit despre „Machine lerning” deoarece aceasta în ultimul deceniu a devenit un stâlp important al tehnologiei informației. Învățarea mașinilor este o aplicație a inteligenței artificiale (AI) care oferă sistemelor capacitatea de a învăța și de a îmbunătăți în mod automat experiența fără a fi programată în mod explicit. Procesul de învățare începe cu observații sau date, cum ar fi exemple, experiență directă sau instruire, pentru a căuta modele în date și pentru a lua decizii mai bune în viitor pe baza exemplelor pe care le oferim. Scopul principal este de a permite calculatoarelor să învețe în mod automat fără intervenția și asistența umană și să ajusteze acțiunile în consecință.
Există mai multe tipuri de învățare automată, printre care învățarea supravegheată și nesupravegheată. Cea supravegheata prezintă date de intrare cu ieșiri puse la dispoziție, învățarea modulului de asociere intrare-ieșire și predicția asupra ieșirii a unor date noi, iar cea nesupravegheata prezintă date de intrare fără ieșiri și învățarea structurii de date.
În al doilea capitol am prezentat elementele de bază ale limbajului de programare Java Eclipse. Elementele fundamentale pe care le-am folosit în aplicațiile lucrate sunt moștenirea care se referă la aranjamentul ierarhic al fragmentelor implementate, polimorfismul care ne indică că entitățile abstracte sunt implementate în mai multe moduri, clasa care definește rolurile comune ale diferitelor obiecte care îi aparțin și obiectul.
Am putut să folosesc pachetul ACM Graphics și clase precum GObject, GImage, GLabel, GRect, GLine, GOval, GPolygon, GCompound care sunt deja dezvoltate și testate.
În cel de-al treilea capitol am descris algoritmul K-means și algoritmul de regresie liniară. Algoritmul K-means este un algoritm de grupare nesupravegheat care alege k clustere și repartizează punctele la acestea alegând centroid-ul cel mai apropiat de punctul respectiv. Pe măsură ce punctele sunt poziționate la un cluster, centroid-ul poate migra.
Regresia liniară se poate rezolva prin metoda celor mai mici pătrate ceea ce presupune rezolvarea unui sistem de k ecuații și cu k necunoscute, unde k este numărul de variabile de
intrare. Această metodă are o soluție bine definită, dar care în practică, în momentul în care avem foarte multe date de intrare și foarte mulți parametri, cum ar fi de exemplu în genetică sau în meteorologie, presupune un volum foarte mare de calcul pentru a rezolva acel sistem de sute de mii de ecuații cu sute de mii de necunoscute, iar atunci modele iterative sunt preferate în învățarea automată.
Metoda pe care am ilustrat-o în lucrare este metoda gradientului cu două variante: varianta folosind setul complet de date și varianta cu iterație folosind punctele pe rând.
Iar în ultimul capitol am programat cei doi algoritmi de învățare nesupravegheată în limbajul de programare Java unde am ilustrat prin enunț pașii prin care am trecut, ce reprezintă fiecare parte de cod și am exemplificat prin poze procesul fiecărui program.
Bibliografie
[1] E. S. Roberts, The Art and Science of Java, Stanford University, January 2006
[2] R. Wiener, L.Pinson, Fundamentals of OOP and Data Structures in Java
[3] S. Shalev-Shwartz, S. Ben-David, Understanding Machine Learning from Theory to Algoritms, Cambridge University Press
[4] T. Vasilache, Curs Programare orientată obiect, Facultatea de Științe Aplicate, 2014
[5] V. Neagoe, Rețele neuronale pentru explorarea datelor, Matrix Rom, 2018
Surse online [6] https://cs.stanford.edu/people/eroberts/jtf/documents/License.pdf
[7] https://cs.stanford.edu/people/eroberts/jtf/javadoc/student/acm/graphics/GObject.html
[8] https://docs.oracle.com/javase/7/docs/api/javax/swing/package-use.html [9] https://web.stanford.edu/class/archive/cs/cs106a/cs106a.1178/eclipse/
[10] https://www.geeksforgeeks.org/classes-objects-java/
Preview document
Conținut arhivă zip
- Ilustrarea si simularea unor algoritmi legati de inteligenta artificiala folosind programarea orientata pe obiect in limbajul java.pdf