Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICENŢĂ
Absolvent
Achim-Caranica Alexandru
Coordonator
Prof.dr.ing. Bogdan Dumitrescu
Bucureşti, 2021
CUPRINS
1. Introducere 1
2. Rețele neurale 2
2.1. Rețele neurale artificiale 3
2.2. Metode de învățare 4
2.3. Proximal policy optimization 6
3. Simularea Parcării 9
3.1. Unity 9
3.2. ML-Agents 11
3.3. Observații și acțiuni 13
3.4. Recompense și pedepse 16
3.5. Parametri și hiperparametri 17
4. Antrenarea rețelei 23
4.1. Încercări și rezultate 23
5. Concluzii 30
Bibliografie 31
Lista contribuţiilor personale 32
1. Introducere
Aproximativ 40% din accidentele auto în care se produc doar daune materiale
au loc în timpul parcării mașinii. Acest lucru se datorează în principal vizibilității
limitate în jurul mașinii și uneori și lipsei de experiență a șoferului sau neatenției
acestuia. Cea mai des întâlnită soluție este parcarea asistată, unde un set de senzori
oferă o vizibilitate mai buna șoferului necesară parcării în siguranță. Așa că am decis
să aleg o implementare care generează parcarea fără incidente folosind inteligența
artificială.
Scopul proiectului este să creez o simulare cât mai apropiată de modelul real în
care să antrenez un agent în cât mai scurt timp posibil să parcheze o mașină într-un
loc de parcare a cărui poziție este cunoscută de la început. Deciziile agentului care sunt
necesare pentru controlul mașinii sunt luate folosind o rețea neurală care în timp va fi
antrenată cu scopul de a maximiza performanța agentului. Unul dintre obiectivele
mele este să micșorez cât mai mult perioada de învățare. Pentru aceasta, am folosit un
modul de învățare (GAIL) care influențează rețeaua să treacă din nou prin stările
furnizate de o demonstrație făcută de un utilizator. Motivul pentru care am ales
această abordare este pentru a evita efectul de reproducere a comportamentului
utilizatorului, adică dacă inteligența artificială trebuie să imite acțiunile unei
demonstrații, atunci aceasta nu poate fi niciodată mai eficientă decât acea
demonstrație. Așa că obiectivul meu principal este ca agentul să fie antrenat în cât mai
scurt timp posibil și cu o performantă cel puțin egală cu cea a demonstrației.
1
coliziunea cu alte mașini parcate.
Deoarece proiectul a fost unul de cercetare, multe din rezultatele mele au fost
obținute prin testare și observare, iar în capitolul 4 am descris etapele parcurse pentru
a ajunge la o antrenare eficientă a agentului.
2. Rețele neurale
2
Fig.2.1. Reprezentare vizuală a
unei rețele neurale simple[3]
Modul în care neuronii sunt conectați între ei definește tipul de rețea în care se
află. Rețeaua folosită este de tip feedforward (cu propagare a informației numai
dinspre intrare spre ieșire), adică pentru fiecare set de valori de intrare, valorile se
propagă prin structura rețelei neurale pentru a obține un set de valori de ieșire. Alte
tipuri de rețele neurale sunt: rețele neurale de convoluție folosite de obicei pentru
recunoașterea tiparelor în imagini și înregistrări video și rețelele neurale recurente
pentru audio și text.
3
în special în „Deep Learning”. Neuronii unui strat se conectează numai la neuronii
straturilor imediat precedente și imediat următoare. Stratul care primește date externe
este stratul de intrare. Stratul care produce rezultatul final este stratul de ieșire. Între
două straturi, sunt posibile mai multe modele de conexiune. Ele pot fi complet
conectate, fiecare neuron dintr-un strat conectându-se la fiecare neuron din stratul
următor. Pot fi grupate, în cazul în care un grup de neuroni dintr-un strat se conectează
la un singur neuron din stratul următor, reducând astfel numărul de neuroni din acel
strat. Neuronii care au doar astfel de conexiuni formează un grafic aciclic direcționat.
𝜔1 𝑥1
𝜔2 𝑥2
(2.2) 𝑓(𝑥) = 𝑏𝑖𝑎𝑠 + 𝑊 𝑇 ∗ 𝑋, 𝑊 = [ ⋮ ], 𝑋 = [ ⋮ ],
𝜔𝑛 𝑥𝑛
unde W este vectorul care conține ponderile conectate la intrarea neuronului iar X este
vectorul care conține ieșirile neuronilor precedenți.
4
vorbirii și a gesturilor). Acest lucru poate fi gândit ca învățatul cu un „profesor”, sub
forma unei funcții care oferă feedback continuu cu privire la calitatea soluțiilor
obținute până acum.
Învățarea este adaptarea rețelei pentru a gestiona mai bine o sarcină luând în
considerare eșantionul de observații. Învățarea presupune ajustarea ponderilor (și a
pragurilor opționale) rețelei pentru a îmbunătăți acuratețea rezultatului. Acest lucru,
pentru învățarea supravegheată, se face prin minimizarea erorilor observate. Învățarea
este completă atunci când examinarea observațiilor suplimentare nu reduce în mod
util rata de eroare. Chiar și după învățare, rata de eroare nu ajunge de obicei la zero.
Dacă după învățare, rata de eroare este prea mare, rețeaua trebuie de obicei să fie
reproiectată. Practic, acest lucru se realizează prin definirea unei funcții de cost care
este evaluată periodic în timpul învățării. Atâta timp cât eroarea sa continuă să scadă,
învățarea continuă. Costul este frecvent definit ca o statistică a cărei valoare poate fi
doar aproximată. Ieșirile sunt de fapt numere, deci atunci când eroarea este mică,
diferența dintre ieșire (aproape sigur o pisică) și răspunsul corect (pisică) este mică.
Procesul de învățare încearcă să reducă totalul diferențelor între observații.
Majoritatea modelelor de învățare pot fi privite ca o aplicație simplă a teoriei
optimizării și a estimării statistice.
5
aplicațiile includ clustering, estimarea distribuțiilor statistice, compresie și filtrare.
6
PPO este o metodă cu gradient de politică în care politica este actualizată în
mod explicit. Putem scrie funcția obiectiv sau funcția de pierdere a gradientului
general al politicii cu funcția de avantaj [5]
7
sub formă de constrângeri dure procesului de optimizare. De asemenea,
implementarea algoritmului TRPO nu este o sarcină suficient de directă.
Aici intervine PPO cu o abordare mult mai simplă. PPO este o optimizare de
primă ordine care simplifică implementarea sa. Similar funcției obiectiv TRPO,
definește raportul de probabilitate între noua politică și vechea politică și o putem
numi r(θ) [5]
𝜋𝜃 (𝑎 |𝑠)
(2.6) 𝑟(𝜃) = 𝜋 ,
𝜃𝑣𝑒𝑐ℎ𝑖 (𝑎 |𝑠 )
unde:
• 𝜃𝑣𝑒𝑐ℎ𝑖 conține parametri politicii înainte de actualizare.
Fără a adăuga constrângeri, această funcție obiectiv poate duce la instabilitate sau
la o rată de convergență lentă, datorită actualizării dimensiunilor de pași mari și,
respectiv, mici. În loc să adauge o constrângere KL complicată, PPO impune raportul
de politică, r(θ) pentru a rămâne într-un interval mic în jurul valorii de 1. Acesta este
intervalul dintre 1-𝜖 și 1 + 𝜖. 𝜖 (epsilon) este un hiperparametru PPO și este setat în
fișierul de configurare, cu o valoare implicită setată la 0,2. Funcția obiectiv PPO are
forma [5]
(2.8) 𝐽𝐶𝐿𝐼𝑃 (𝜃) = 𝔼[𝑚𝑖𝑛(𝑟(𝜃)Â𝜃𝑣𝑒𝑐ℎ𝑖 (𝑠, 𝑎), 𝑐𝑙𝑖𝑝(𝑟(𝜃),1 − 𝜖, 1 + 𝜖)Â𝜃𝑣𝑒𝑐ℎ𝑖 (𝑠, 𝑎))].
8
3. Simularea parcării
3.1 Unity3D
Unity este un game engine, o unealtă folosită la crearea jocurilor video pentru
orice platformă. În cazul meu, folosesc Unity pentru sistemul de fizică avansat pe care
l-am folosit în simularea sistemului real al parcării. Dat fiind că este unul dintre cele
mai populare game engine-uri, are și o comunitate foarte dezvoltată cu ajutorul căreia
poți învăța rapid cum să construiești jocuri simple. Pentru simulare am construit o
parcare din modele 3D descărcate din Unity Asset Store în care am agentul,
reprezentat de mașina albastră, iar locul de parcare țintă este reprezentat de marcajul
roșu (inițial). Scopul mașinii este să se oprească cu toate roțile în interiorul marcajului
și cu orientarea corectă, în sensul săgeții (în imagine, mașina trebuie să parcheze cu
fața). Locurile de parcare au fost alese astfel încât să acopăr cât mai multe cazuri de
parcare posibile: din scurt, mai depărtate, cu mașini parcate deja pe ambele parți, pe o
singură parte sau cu nicio mașină în apropierea senzorilor de detectare.
9
Fig.3.2. Componenta “Wheel
Collider” din Unity
În figura 3.2 sunt parametri folosiți în modelul meu. Parametrii au fost aleși prin
testarea diverselor valori până când comportamentul simulat se asemănă cu un
comportament al unei mașini reale. Parametrii componentei influențează modelul
mașinii în următorul mod:
• „Mass”
o reprezintă masa roții,
• „Radius”
o reprezintă raza roții,
• „Wheel Damping Rate”
o reprezintă o valoare de amortizare aplicată roții,
• „Suspension Distance”
o reprezintă distanța maximă a suspensiei roții,
• „Force App Point Distance”
o reprezintă punctul în care forța suspensiei este aplicată,
• „Center”
o reprezintă centrul roții în spațiul local al mașinii,
• „Suspension Spring”
o încearcă să ajungă la „Target Position” adăugând forța elastică și de
amortizare,
• „Spring
o reprezintă forța elastică a suspensiei,
10
• „Damper”
o reprezintă forța de amortizare a suspensiei,
• „Target Position”
o reprezintă poziția de repaus de-a lungul distanței suspensiei,
• „Forward/Sideways Friction”
o reprezintă proprietățile de frecare a mașinii
11
• Python Trainers conține toți algoritmii de învățare automată care permit
antrenarea agenților. Algoritmii sunt implementați în Python și fac parte din
propriul pachet „mlagents” Python. Pachetul expune un singur utilitar de linie
de comandă mlagents-learn care acceptă toate metodele de formare și opțiunile
prezentate de ML-agents.
12
GAIL sau Generative Adversarial Imitation Learning, este un algoritm de
învățare fără imitație, care obține performanțe semnificative față de metodele existente
fără model în imitarea comportamentelor complexe în medii complexe, cu dimensiuni
ridicate. Anumite instanțieri ale cadrului vor face o analogie între învățarea imitată și
rețelele contradictorii generative. GAIL recompensează agentul pentru
comportamentul similar cu un set de demonstrații fără a-i influența în mod direct
acțiunile. GAIL poate fi utilizat cu sau fără recompense din mediu și funcționează bine
atunci când există un număr limitat de demonstrații. În acest cadru, o a doua rețea
neurală, discriminatorul, este învățat să distingă dacă o observație / acțiune este dintr-
o demonstrație sau este produsă de agent. Acest discriminator poate examina apoi o
nouă observație / acțiune și îi poate oferi o recompensă pe baza a cât de aproape crede
că această nouă observație / acțiune este de demonstrațiile furnizate. La fiecare pas de
antrenament, agentul încearcă să învețe cum să maximizeze această recompensă. Apoi,
discriminatorul este instruit pentru a distinge mai bine între demonstrații și starea /
acțiunile agentului. În acest fel, în timp ce agentul devine din ce în ce mai bun la
mimarea demonstrațiilor, discriminatorul continuă să devină din ce în ce mai strict și
agentul trebuie să încerce mai mult să-l „mulțumească”. Această abordare învață o
politică care produce stări și acțiuni similare demonstrațiilor, necesitând mai puține
demonstrații decât clonarea directă a acțiunilor. În plus față de învățarea pur din
demonstrații, semnalul de recompensă GAIL poate fi amestecat cu un semnal de
recompensă extrinsecă pentru a ghida procesul de învățare. Acest modul îi oferă
agentului ghidarea să se îmbunătățească cât mai repede, dar și libertatea ca acesta să
poată deveni mai bun decât demonstrațiile oferite inițial.
13
Agentul are un total de 13 observații: 5 observații care țin de poziția mașinii:
• Primele două - poziția relativă a mașinii față de locul de parcare
14
Figura 3.4.b Senzorii mașinii când detectează un obstacol
• Frâna, care este o acțiune discretă, primește valori în intervalul (-1,1), iar
dacă această valoare este mai mare decât 0, mașina frânează
15
aplicarea ei;
Observații: Clamp(x, min, max) este o funcție care returnează valoarea x dacă se află
între min și max, min dacă x este mai mic decât min și max dacă x este mai mare decât
max.
Valoare Acțiune
16
Valoare Acțiune
17
Unde:
• “mlagents-learn” este comanda pentru începerea învățării;
• “trainer_config2-R.yaml” este numele fișierului de configurare necesar
pentru învățare;
• “--run-id=Parking-curriculum-A2” este numele fișierului în care se
generează fișierele de învățare și se salvează fișierul de configurare
împreună cu rețeaua neurală după învățare;
• “--env=../Build2-9/MachineLearning.exe” este calea către executabilul creat
de Unity care conține mediul de antrenare;
• “--time-scale=100000” este un coeficient de scalare pentru timp. O valoare
mică (1) a acestui parametru pornește o antrenare în timp real și va consuma
puține resurse, iar o valoare mai mare începe o antrenare mai rapidă, dar va
consuma și mai multe resurse necesare pentru calculul a mai multor pași în
același timp. O limitare pentru acest parametru poate fi puterea
componentelor care rulează învățarea (în cazul meu, placa video);
• “--quality-level=0” este un parametru care setează calitatea graficelor
pentru simulare în timpul învățării. Zero este valoarea minimă acceptată și
va consuma cele mai puține resurse;
• “width=512 --height=512” sunt dimensiunile ferestrei create cu instanța
jocului pentru simularea mediului de antrenare.
• “—resume” este un alt parametru care poate fi adăugat, acesta fiind adăugat
cu scopul continuării unei antrenări deja începute. Pentru aceasta valoarea
parametrului “run-id” trebuie să fie regăsită în fișiererul de antrenamente
deja create.
Restul parametrilor pot fi adaugați sau modificați direct din cod, cum ar fi:
18
Parametrii si hiperparametrii din fișierul de configurare folosiți sunt:
• trainer_type: ppo;
o Valoare implicită: ppo
o Modul de învățare folosit pentru antrenarea agentului
o Alegeri: “ppo” (Proximal Policy Optimization), “sac” (Soft Actor-
Critic) sau “poca” (MultiAgent POsthumous Credit Assignment)
• summary_freq: 50 000
o Valoare implicită: 50 000
o Numărul de experiențe care trebuie sa fie colectate înainte de a
19
genera și afișa informații despre învățare
o Din cauză că se afișează și recompensa cumulativă, este necesar că
acest număr să fie mai mare decât numărul maxim de pași pentru un
episod înmulțit cu numărul de agenți care se antrenează simultan
• time_horizon: 128
o Valoare implicită: 64
o Numărul de experiențe care trebuiesc să fie colectate înainte de a le
adaugă în coada de experiențe
o Am setat această valoare aproape de numărul de pași necesari
agentului pentru a realiza o parcare perfecta
• max_steps: 30 000 000
o Valoare implicită: 500 000
o Numărul total de pași care trebuie făcuți în mediul de învățare pentru
încheierea procesului de învățare, indiferent de numărul de numărul
de episoade. Dacă în mediul de învățare exista mai mulți agenți,
atunci se ia cumulul tuturor pașilor
• keep_checkpoints: 2
o Valoare implicită: 5
o Numărul maxim de modele salvate pe parcursul învățării cu scopul
siguranței că daca învățarea se întrerupe, procesul nu pierde mult
progres. Sunt salvate toate informațiile necesare continuării
antrenamentului inclusiv starea modelului actual. Odată ce numărul
maxim de salvări este atins, se șterge cea mai veche salvare și se
adaugă cea nouă
• checkpoint_interval: 1 000 000
o Valoare implicită: 500 000
o Numărul de pași dintre 2 salvări de pe parcurs a modelului
• threaded: true
o Valoare implicită: false
o Permite mediului să continue învățarea în timp ce modelul rețelei
este actualizat folosind experiențele dobândite
• learning_rate: 0.0003
o Valoare implicită: 0.0003
o Rata de învățare inițială pentru propagarea gradientului
• batch_size: 256
o Valori recomandate pentru ppo continu: 512-5120
o o Numărul de experiențe în fiecare iterație din propagarea
gradientului. Trebuie să fie un divizor al lui “buffer_size”
o o Motivul pentru care m-am abătut de la valorile recomandate este
că deși am folosit un model continuu pentru simulare, o nouă acțiune
este cerută de mediu odată la 3 pași. Asta înseamnă că din
perspectiva modelului, controlul se aproprie de unul discret, adică
antrenarea este mai rapidă, iar un “batch_size” puțin mai mic este
mai optim
• buffer_size: 2048
20
o Valoare inițială: 10240
o Valori recomandate ppo: 2048 – 409600
o Numărul de experiențe care trebuiesc acumulate înainte de a
actualiza modelul
• learning_rate_schedule: linear
o Valoare implicită: linear
o Valori posibile: linear, constant
o Determina dacă rata de învățare se schimbă în timp sau rămâne
constantă. Pentru “linear” rata de învățare scade liniar, la început
având valoarea inițială cea setată coborând până la 0 la sfârșitul
antrenamentului
• beta: 0.005
o Valoare implicită: 0.005
o Coeficientul regularizării entropiei, ceea ce face politica să fie “mai
aleatoare”. Acesta are grijă ca agentul să exploreze destul de bine
mediul de învățare înainte să înceapă să profite de experiențele
acumulate
• epsilon: 0.2
o Valoare implicită: 0.2
o Influențează cât de rapid poate evolua politica în timpul antrenării.
Adică corespunde maximului diferenței dintre politica actualizată și
cea veche
• lambd: 0.95
o Valoare implicită: 0.95
o o Este un parametru de regularizare folosit pentru calcularea lui
“GAE” [4]. O valoare mai mare a acestui parametru influențează
agentul să urmărească recompensele imediate mai mult, iar o valoare
mai mică influențează agentul să urmărească estimarea
recompenselor posibile din acea stare
• num_epoch: 3
o Valoare implicită: 3
o Numărul de treceri pe care o face coada de experiențe prin model
atunci când se actualizează modelul
• hidden_units: 256
o Valoare implicită: 128
o Numărul de noduri conținute de fiecare strat ascuns de neuroni din
model
• num_layerys: 2
o Valoare implicită: 2
o Numărul de straturi de neuroni ascunși din model. Pentru modele
simple, este suficient un model mai mic, dar pentru modelul meu am
observat prin testare că un număr mic de straturi cu un număr mare
de neuroni pe strat oferă cel mai bun rezultat
• normalize: false
21
o Valoarea inițială: false
o Dacă normalizarea să fie aplicată vectorului de observații sau nu.
Motivul pentru care am optat să nu folosesc normalizarea automată
este că o normalizare manuală ar fi mai eficientă, cunoscând limitele
mediului de antrenare
GAIL:
• gamma: 0.99
o Valoare implicită: 0.99
o Factor de reducere pentru recompensele viitoare
• strength: 1
o Valoare implicită: 1.0
o Factorul cu care se înmulțește recompensa primită de la modulul
GAIL
• learning_rate: 0.0003
o Valoare implicită: 0.0003
o Rata de învățare pentru rețeaua neurală folosită de GAIL numită și
discriminator
• use_actions: false
o Valoare implicită: false
o Determină dacă discriminatorul să își bazeze recompensele doar pe
stări sau pe stări și acțiuni
• use_vail: false
o Valoare implicită: false
o Activează un blocaj variațional în cadrul discriminatorului GAIL.
Acest lucru îl obligă pe discriminator să învețe o reprezentare mai
generală și îi reduce tendința de a fi „prea bun” la discriminare,
făcând învățarea mai stabilă
• demo_path: ../demos/Parking.demo
o Fără valoare implicită
o Reprezintă calea către demonstrația făcută. O demonstrare se
înregistrează folosind componenta “Demonstration recorder” din
Unity, se pornește simularea din editor iar experiențele făcute de
utilizator vor fi colectate și salvate.
22
4. Antrenarea rețelei
4.1 Încercări și rezultate
23
Graficele au fost generate folosind TensorBoard, care citește datele de antrenare
salvate și poate afișa istoricul tuturor antrenărilor făcute. În figura 4.1 am afișat
progresul agentului în funcție de numărul de pași, în figura din stânga este afișat
progresul recompensei cumulative, în centru este afișat progresul duratei unui episod,
iar în dreapta este afișat progresul nivelului de dificultate. Aceasta a fost cea mai
performantă antrenare folosind modulul de antrenare “Curriculum”. Agentul a fost
supus la 6 nivele de dificultate pe parcursul la un maxim de 70 de milioane de pași și
o durată totală de o zi, 16 ore și 8 minute. Agentul nu a avut timp să parcurgă toate
nivelele de dificultate, iar progresul acestuia de-a lungul antrenării a fost instabil (pe
parcursul nivelului 5, a avut o creștere a recompensei cumulative medii până la
valoarea 0.6, dar mai târziu a scăzut până la un minim de -0.8, crescând înapoi și
trecând de pragul pentru avansarea la următorul nivel abia la sfârșitul procesului de
antrenare). În concluzie, diferența de complexitate de la primul nivel (parcare doar pe
stânga fără obstacole) până la ultimul (parcare pe ambele părți cu obstacole) este prea
mare, iar o posibilă problemă ar putea fi rata de învățare care scade liniar pe parcursul
învățării indiferent de progresul nivelelor (o rată de învățare constantă a dus la o
creștere instabilă a recompensei cumulative).
În figura 4.2 am arătat progresul agentului de-a lungul mai multor serii de
antrenament, fiecare având un nivel de dificultate diferit. Durata totală a tuturor
antrenărilor afișate în figura 4.2 este de 3 zile 19 ore și 10 minute. Fiecare agent
începând de la 4.2.b este inițializat cu modelul antrenarea precedentă. Procesul de
antrenare se împarte în mai multe secțiuni:
Figura 4.2.a
24
• Figura 4.2.a
o Parcare fără obstacole, doar un loc din partea stângă
o Recompensa cumulativă maximă: 0.5
Figura 4.2.b
• Figura 4.2.b
o Parcare fără obstacole, pe toate locurile din partea stânga
o Recompensă cumulativă maximă: 1.0
o Progresul trecerii de la o dificultate la alta a fost foarte bun continuând
cu rețeaua antrenată de la 4.2.a așa că am decis să continui dificultatea
deși antrenarea devine ușor instabilă spre sfârșit
Figura 4.2.c
25
• Figura 4.2.c
o Parcare fără obstacole, doar un loc din partea dreaptă
o Recompensă cumulativă maximă: 0.5
Figura 4.2.d
• Figura 4.2.d
o Parcare fără obstacole, pe toate locurile din partea dreaptă
o Recompensă cumulativă maximă: 1.0
Figura 4.2.e
26
• Figura 4.2.e
o Parcare fără obstacole, pe toate locurile de parcare
o Recompensă cumulativă maximă: 1.08
Figura 4.2.f
• Figura 4.2.f
o Parcare cu obstacole, pe toate locurile de parcare
o Recompensă cumulativă maximă: 1.15
Figura 4.2.g
• Figura 4.2.g
o Parcare cu obstacole, pe toate locurile de parcare
o Recompensă cumulativă maximă: 1.11
27
o Această antrenare a fost făcută cu o rată de învățare mai mică pentru o
învățare mai stabilă și pentru a ajunge la un model cu performanță
maximă pentru această configurație. Deși recompensa cumulativă
maximă este puțin mai mică decât 4.2.f, performanța agentului într-o
demonstrație este puțin mai mare
Figura 4.3.a
Figura 4.3.b
28
Antrenarea agentului a fost făcută direct într-un mediu cu toate obstacolele,
toate locurile de parcare și poziția inițială variabilă a mașinii. Durata totală a
antrenării a fost de 12 ore și 23 de minute, iar recompensa cumulativă finală este de
aproximativ 1.2 cu o rată de parcare reușită de aproximativ 98% (calculată prin
testare). Prima antrenare (4.3.a) a fost făcută cu parametri descriși în secțiunea 3.5 și a
durat 8 ore și 4 minute, iar pentru a doua antrenare (4.3.b) am scăzut rata de învățare
și parametrul “strength” al modulului GAIL pentru a influența agentul să
maximizeze recompensa primită din mediu și nu cea de la modulul de imitare și a
durat 4 ore și 19 minute.
a b c
d e f
29
5. Concluzii
30
Bibliografie
31
Lista contribuțiilor personale
Activitate Durată
[zile]
1 Familiarizarea cu Unity3D 2
2 Documentare și cercetare în domeniul inteligenței 4
artificiale
3 Familiarizarea cu ML-Agents 2
4 Construirea mediului de simulare și antrenare a 7
agentului
5 Alegerea parametrilor și hiperparametrilor inițiali 2
pentru antrenare
6 Antrenare și ajustarea parametrilor și 35
hiperparametrilor în funcție de rezultatele obținute
la antrenare
7 Refacerea și perfecționarea agentului cu 3
parametrilor și hiperparametrilor optimi
8 Finalizare proiect și pregătire pentru prezentare 2
9 Redactarea lucrării de licență 10
Total 67
32