Introducere în învățarea automată
Învățarea, precum inteligența, acoperă o gamă variată de procese pe care nu le putem defini concret, luând în cosiderare multiplele păreri subiective ale specialiștilor în domeniu. Totuși, în limite largi, putem spune că un sistem învață ori de câte ori își modifică structura, modul de programare, sau informațiile deținute (fie că ne referim la datele de intrare ale problemei, ori la rezultatul obținut), cu scopul de a obține îmbunătățiri ale performanței pe viitor.
Cu siguranță că există asemenea modificări pe care nu le-am putea include în categoria unor sisteme care învață, precum modificarea structurii unei baze de date. Dacă ne referim însă la îmbunătățirea performanțelor unui sistem care joacă șah după ce a exersat de mai multe ori cu un alt sistem, sau cu o persoană, oferirea titlului de sistem capabil să învețe este oarecum justificată.
De cele mai multe ori, problemele asociate învățării automate [14] sunt strâns legate de domeniul inteligenței artificiale și implică recunoaștere, diagnoză, planificare, controlul roboților, predicție, șamd. Pentru a exemplifica această conexiune, prezentăm urmatoarea schemă ce evidențiză arhitectura unui agent inteligent [14]:
Semnale senzori
Funcții țintă
Perceptie
Planificare și raționament
Sistem
Comportament
Acțiuni
După cum se poate observa, un agent percepe și modelează mediul înconjurător pentru determinarea acțiunilor potrivite, prin anticipare efectelor acestora. Modificările făcute oricărei componente din figură determină învățarea sistemului, iar alegerea mecanismului de învățare care trebuie adoptat într-o anumită situație se face în funcție de subsistemul care suferă schimbări.
Desigur, pe lângă faptul că această ramură a inteligenței artificiale este foarte interesantă, captivantă și provocatoare, atât din punct de vedere psihic, cât și tehnologic, există câteva motive bine puse la punct conform cărora necesitatea studierii ei este clară:
-
Uneori, cerințele problemei nu pot fi definite cu exactitate, în sesul că putem preciza perechi de tipul: intrări/ieșiri, însă nu putem găsi o relație concretă între cele două. Avem nevoie de sisteme care să își poată ajusta structura internă, în vederea determinării unor rezultate corecte, pentru un număr consistent de date de intrare și care să poată determina funcții de aproximare a acestei relații.
-
Diverse metode de învățare pot fi folosite pentru a extrage informații importante din cadrul unor seturi foarte mari de date (data mining [14]).
-
Uneori, oamenii produc sisteme care nu se mulează perfect pe arhitectura mediului în care sunt utilizate, tocmai datorită faptului ca în etapa de producție sunt omise anumite specificații. Învățarea automată ar putea elimina aceste probleme, prin posibilitatea îmbunătățirii sistemului în funcție de factorii externi.
-
Întrucât cunoștințele unei ființe umane sunt limitate, anumite probleme ar putea depăși puterea de înțelegere și decizie a acesteia. Un sistem auto-instruibil ar putea însă în timp, să depășească această limitare a creierului uman și chiar să găsească soluții.
-
Tehnologia se află într-o continuă ascensiune, fiind direct proporțională cu numărul de descoperiri făcute, cantitatea de cunoștințe acumulate și cu schimbările majore care apar constant atât din punct de vedere al tehnologiei, cât și al mediului în care trăim. Redesign-ul constant al sistemelor inteligente este astfel impractic. Învățarea automată ar putea totuși să determine urmărirea continuă a modificărilor care apar și găsirea unor modalități de a ține pasul cu acestea.
Module generice ale unui sistem care învață
Pentru caracterizarea conceptului de învățare automată, au fost definite 4 module generice, care vor fi prezentate succint în cele ce urmează. Totuși, această clasificare nu se pretează oricărui tip de algoritm de acest fel, fiind menită să ofere o percepție largă asupra materializării îvățării.
-
Modulul de performanță are rolul de a îmbunătăți performanța sistemului pe baza funcțiilor țintă învățate. Preia o instanță nouă a problemei ca dată de intrare și produce ca rezultat succesiunea stărilor obținute până la soluționarea problemei [13].
-
Modulul critic preia ca date de intrare istoricul stărilor și obține ca rezultat un set de date de antrenament pentru funcția țintă. Astfel, fiecărei instanțe din cadrul setului de antrenament îi este asociată o anumită stare a sistemului, alături de aproximarea valorii funcției țintă corespunzătoare [13].
-
Modulul de generalizare are rolul de a descoperi o funcție generală de acoperire a tuturor cazurilor prevăzute în setul de antrenament și care să poată pe cât posibil să identifice și posibile apariții ale unor situații încă neîntâlnite [13].
-
Modulul de generare a unor experimente noi are rolul de a prelua funcția învățată anterior, în vederea găsirii unei noi probleme care să fie atribuită sistemului de performanță. Alegerile trebuie făcute astfel încât rata de învățare a sistemului să fie maximizată constant [13].
Tipuri de învățare automată
Pentru a reduce această abstractizare și generalizare a mecanismului de învățare automată, au fost concepute mai multe clasificări, în funcție de caracteristicile luate în considerare. Astfel că, referindu-ne la modul de inițiere al algoritmului de învățare precum și la feedback-ul obținut în urma rulării acestuia, mașinile auto-instruibile folosesc 3 mari tipuri de învățare:
Învățarea supervizată: pornind de la un set de date de antrenament, adică de la o colecție de exemple de instanțe ale unei anumite probleme, se dorește determinarea unei funcții șablon, pe baza căreia vor putea fi clasificate ulterior noile instanțe apărute. Sistemul este deci pregătit pentru procesul de antrenare, prin primirea inițială a unor informații corecte, exemplificate, care constituie resursele necesare începerii procesului de învățare. Setul de antrenament este reprezentat sub forma unui dicționar cu elemente de tip (cheie, valoare), unde cheie reprezintă instanța, iar valoare constituie clasa căreia i-a fost atribuită această instanță . Un scenariu ideal, ar permite algoritmului astfel creat să generalizeze informațiile primite spre înțelegere și învățare, fiind astfel capabil să determine soluția problemelor apărute, chiar dacă acestea nu au fost învățate până în momentul respectiv.
Pentru ca o anumită problemă să poată fi rezolvată prin învățare supervizată, trebuie respectată o ”rețetă” bine pusă la punct. Avem nevoie de anumite ”ingrediente”, iar pașii vor fi făcuți în ordine.
Pentru început, trebuie determinat tipul instanțelor folosite pentru antrenament. De exemplu, în cazul recunoașterii scrisului de mână, o astfel de instanță ar putea fi reprezentată de un caracter, un cuvânt, o frază, sau chiar de către un document întreg.
Pasul următor este constituit de găsirea unui set de date de antrenament, care să corespundă cerințelor noastre și ale sistemului. Informațiile obținute pot proveni atât de la specialiști umani, cât și de la diverse măsurători făcute în mediul real, cu aplicabilitate în viața de zi cu zi.
Urmează determinarea modului de reprezentare a caracteristicilor unei instanțe, acest pas având o influență majoră asupra acurateții funcției învățate. De cele mai mlte ori, aceste caracteristici formează un vector, iar numărul lor trebuie să fie cât mai mic, dar să conțină totuși suficiente informații, în vederea găsirii rezultatului corect.
În acest pas, vor fi alese structura funcției de învățare și algoritmul corespunzător acesteia. Se poate opta pentru folosirea unor rețele neuronale, a arborilor de decizie, a mașinilor cu suport vectorial, a metodelor de învățare bayesiană șamd.
Până în momentul de față, a fost creat scheletul aplicației de învățare. Urmează pasul cel mai important și anume antrenarea sistemului. Pe baza datelor de antrenament primite, mașina auto-instruibilă va fi capabilă să învețe și să își definească o concepție clară asupra problemei.
Ultimul pas este cel de testare al sistemului. Astfel, este evaluată acuratețea funcției învățate, cu ajutorul unui set de date nou, diferit de cel oferit pentru antrenare. Se măsoară numărul de greșeli făcute, cât și numărul de decizii care au fost luate corect. Astfel, va putea fi trasă o concluzie asupra calității sistemului și vor putea fi luate eventuale decizii de îmbunătățire a acestuia.
Învățarea nesupervizată încearcă să găsească structura ascunsă a unor date de intrare neetichetate, spre deosebire de învățarea supervizată, unde se preciza concret valoarea unei anumite instanțe. Astfel, în evaluarea potențialei soluții nu există erori, greșeli sau modalități de recompensă (ca în cazul învățării prin întărire), iar scopul algoritmului nu este unul predefinit, evoluția acestuia fiind una spontană. Acest tip de învățare este asociat problemelor de estimare a densităților din statistică și cuprinde multe alte tehnici de căutare și preprocesare a informațiilor (de exemplu data mining), probleme de clasificare, aplicații ale modelelor Markov ascunse, separarea oarbă a semnalelor folosind tehnici de extragere a caracteristicilor pentru reducerea dimensionalității.
Învățarea prin întărire este inspirată din psihologia comportamentală, și se preocupă de modul în care agenții informatici ar trebui să se comporte într-un anumit mediu, astfel încât noțiunea de recompensă cumulativă să fie maximizată. Acest tip de învățare diferă de învățarea supervizată, cât și de cea nesupervizată, avand în vedere faptul că datele de intrare etichetate/neetichetate lipsesc cu desăvârșire. Accentul cade asupra găsirii unei balanțe între explorarea teritoriului necunoscut și exploatarea cunoștințelor existente. Astfel, un model de învățare prin întărire este constituit din: un set de stări reprezentative mediului, un set de acțiuni, reguli de trecere dintr-o stare în alta, reguli de determinare a unui factor de recompensă în urma unei astfel de tranziții, precum și reguli care descriu percepția agentului asupra mediului [13].
Dostları ilə paylaş: |