Documente Academic
Documente Profesional
Documente Cultură
S,
unde S este mulimea strilor posibile, i pe baza acestei informaii selecteaz aciunea a
t
A(s
t
)
unde A(s
t
) este mulimea de aciuni disponibile din starea s
t
. La urmtorul pas, n parte ca o
consecin a aciunii efectuate, agentul primete o recompens numeric r
t+1
R, i se afl ntr-o
nou stare s
t+1
(17).
nvarea prin ntrire a atras de-a lungul timpului un foarte mare interes datorit acestei
paradigme a agentului inteligent care nva singur din propria experien, fr ajutorul unui
profesor inteligent. n contrast, pentru nvarea supervizat, este nevoie de un profesor, care
pentru fiecare set de date de intrare, sa-i explice agentului care este output-ul corect.
34
Din pcate, cu toat atenia care a fost acordat acestui tip de nvare de-a lungul anilor,
pn acum s-au realizat destul de puine succese practice n rezolvarea la scar larg a
problemelor complexe din lumea real. Una dintre deficiene a fost aceea c n cazul nvrii
prin ntrire cu ntrziere, problema distribuirii ctigului temporal a rmas extrem de dificil. O
alt problem ar fi aceea c cele mai multe abordrii ale nvrii prin ntrire au fost limitate s
nvee folosind tabele de cutare sau funcii liniare de evaluare, nici una dintre acestea ne fiind
adecvate pentru cele mai multe clase de probleme din lumea real.
4.2.1 nvarea bazat pe Diferene Temporare
n ultimii ani s-au iniiat mai multe concepte menite s ntmpine deficienele descrise
mai sus. Unul dintre acestea a fost prezentat de Sutton i denumit Temporal Difference learning
- bazat pe Diferene Temporare (sau simplu TD). Ideea principal a metodei TD este nvarea
pe baza diferenei ntre prediciile temporale succesive. Cu alte cuvinte, scopul nvrii este de a
aduce predicia curent a agentului, pentru datele de intrare curente, ct mai aproape de
urmtoarea predicie, de la urmtorul pas.
Cea mai recent astfel de metod, este un algoritm conceput pentru a antrena reele
neuronale cu mai multe straturi, i este denumit TD(lambda). Acesta are la baz un semnal
euristic de eroare pentru fiecare pas, calculat ca diferena dintre dou predicii succesive, care
deviaz nvarea. Apoi, dup ce o eroare de predicie a fost gsit la un anumit pas (de timp), se
ia n calcul deprecierea exponenial pe care eroarea o produce n timp, i estimrile precedente,
pentru strile precedente sunt corectate. Durata de timp a deprecierii exponeniale este ajustat de
parametrul lambda (18).
4.3 TD-Gammon
Dac n materie de ah, Deep Blue este considerat naul maetrilor, fiind primul
program care a nvins un campion mondial, n materie de table meritul i revine programului TD-
35
Gammon. Prima versiune a acestui program a fost realizat n anul 1991 de ctre Gerald Tesauro,
care civa ani mai trziu, a participat i la proiectarea lui Deep Blue. TD-Gammon a fost
conceput ca o cale de a explora capabilitatea unei reele neuronale multistrat antrenat cu
TD(lambda), de a nva funcii complexe neliniare. A fost de asemenea conceput pentru a
realiza o comparaie detaliat ntre conceptul de nvare bazat pe diferene temporare i
alternativa acestei idei: nvarea supervizat pe un set de exemple provenite de la maetri .
4.3.1 Prezentarea jocului de table
Table este un joc antic, pentru doi juctori, care fascineaz datorit faptului c implic
ansa. ntre dou mutri fiecare juctor trebuie s arunce zarurile. Nu vom insista n cele ce
urmeaz asupra detaliilor de joc, ci ne vom referi mai degrab la problemele pe care le implic
implementarea unui astfel de joc.
De-a lungul anilor s-a dovedit extrem de dificil realizarea unui program care s joace
table la nivel de expert. Dac privim o reprezentare simpl doar a finalului de joc, este posibil s
concepem un program care pe baza unei cutri s joace perfect. Oricum, aceast abordare nu
poate fi adaptat la ntregul joc, datorit numrului imens de stri posibile (aproximativ 10
20
).
Mai mult, fora brut a cutrii n adncime, care a dat rezultate foarte bune pentru jocuri ca ah,
dame sau Othello, nu este mai este posibil datorit factorului uria de ramificare, provocat de
implicarea zarurilor. Pentru fiecare mutare, sunt 21 de combinaii posibile de zaruri, fiecare
dintre acestea putnd fi jucat n aproximativ 20 de moduri, rezultnd astfel o rat de ramificare
de ordinul sutelor. Aceasta este mult mai mare dect la dame sau ah ( n general pentru aceste
jocuri factorul este 8-10 pentru dame i 30-40 pentru ah), i mult prea mare pentru a atinge o
adncime semnificativ chiar i cu cele mai rapide super-computere existente.
n absena unei cutri n adncime, programele de table trebuie s se bazeze pe o analiz
a poziionrii pieselor. Abordarea tipic a acestei probleme a constat n a lucra ndeaproape cu
experi umani o lung perioad de timp, i a ncerca conceperea unei funcii de evaluare euristice
care s imite ct se poate de bine poziionarea, cunotinele i judecata experilor. Folosind
aceast tehnic s-au obinut rezultate bune (programul Neurogammon al lui Tesauro), dar a
36
rmas i un decalaj serios ntre modul de joc al celor mai buni oameni, i abilitatea
programatorilor de a ncapsula judecata uman ntr-o funcie de evaluare.
O alt problem este faptul c expertiza uman care este emulat, nu este infailibil. n
jocuri ca Othello sau table, n ultimii 20 de ani, s-a produs o schimbare substanial asupra
modului n care experii evalueaz poziiile. Referitor la multe convingeri ale trecutului, despre
care experii aveau o prere unanim, se crede astzi c sunt cu siguran greite, i innd cont
de aceasta, programatorii nu sunt ferm convini s accepte nici actualele preri.
4.3.2 Modul de nvare
TD-Gammon reprezint o abordare radical diferit asupra implementrii unui program
capabil de o sofisticat analiz a poziionrii pieselor. Contrar ncercrii de a imita oamenii, TD-
Gammon folosete propriu mod de joc, nvnd din experienele jocului mpotriva lui nii.
Dei pare un evident handicap, lipsa tutelajului unui maestru uman, i ofer libertate, n sensul c
nu este influenat de anumite prejudecai umane, care pot fi greite sau nesigure.
La baza lui TD-Gammon este o reea neuronal, ilustrat n Figura 4-2, organizat ca o
arhitectur standard de perceptron multistrat (MLP) (19). Aceast arhitectur, folosit de
asemenea n algoritmul de propagare napoi (backpropagation) pentru nvarea supervizat,
poate fi privit ca un aproximator generic de funcii neliniare. Fiecare neuron din stratul de
neuronal de intrare are o valoare de activare care reprezint un stimul extern. Acesta trimite
valoarea de activare fiecrui neuron din stratul ascuns cu care este conectat. Fiecare neuron al
stratului ascuns calculeaz propria sa valoare de activare, depinznd de valorile de activare pe
care le primete de la neuronii de intrare. Acest semnal este apoi trimis neuronilor din stratul de
ieire sau urmtorului strat ascuns, de neuroni, n cazul n care exist mai multe straturi ascunse.
Aceti neuroni din stratul ascuns calculeaz valorile de activare n acelai fel i le trimit mai
departe vecinilor. n cele din urm semnalul provenit de la neuronii de intrare se propag prin
reea pentru a determina valorile de activare pentru toi neuronii de ieire (17).
37
Figura 4-2 Structura reelei neuronale cu trei straturi
Procedura de nvare pentru TD-Gammon este urmtoarea: reeaua observ o secven
de poziii ale tablei de joc, ncepnd cu poziia de start i terminnd cu poziia final, n care unul
dintre juctori i-a scos toate piesele. Poziiile sunt reprezentate ca vectori x[1], x[2], , x[f],
date de intrare pentru reeaua neuronal. La fiecare pas de timp din secven corespunde unei
mutri fcute de unul dintre juctori. Pentru fiecare vector de intrare x[t] exist un vector de
ieire Y[t] care reprezint o estimare a calitii acestuia. Pentru acest joc, Y[t] este un vector cu 4
componente corespunztor celor 4 posibile rezultate: ctig Albul, ctig Negrul, victorie
normal sau mar.
La fiecare pas de timp este aplicat algoritmul TD(lambda) pentru a schimba ponderile
reelei, dup urmtoarea formul:
38
+1
=
+1
=1
Alfa este o constant cu valoare mic numit de obicei coeficient de nvare, w este
vectorul ponderilor care parametrizeaz reeaua i
+1
=
+1
=1
Pentru jocurile de antrenament reeaua neuronal joac mpotriva ei nii. Pentru o
mutare joac din perspectiva lui X, iar pentru urmtoarea din perspectiva lui O. n timpul acestor
partide 10% dintre mutri sunt de explorare, iar coeficientul de nvare este setat la valoarea
iniial = 0.1.
Dup cteva mii de jocuri de antrenament, reeaua ajunge la un nivel ridicat de joc,
ajungnd s fie nvins numai n situaii izolate. Este de asemenea interesant de vzut cum
decurge nvarea dup un numr mai mic de jocuri sau schimbnd coeficientul de nvare.
5.2 Implementarea
5.2.1 Mediul de programare
Aplicaia X-O este realizat n limbajul de programare C# i platforma .Net 2.0.
Interfaa grafic a fost realizat folosind componentele grafice ale platformei, direct din
namespace-ul System.Windows.Forms.
Tabla de joc este format din 9 csue, fiecare dintre ele fiind implementat folosind
clasa Ptrat, care motenete System.Windows.Forms.UserControl. Metoda principal a acestei
clase este protected override void OnPaint(PaintEventArgs pea), care suprascrie metoda
OnPaint, fiind cea care deseneaz pe tabla de joc X sau O n urma unei mutri.
Aplicaia are la baz doi algoritmi, folosii n jocul Tic-Tac-Toe, pe de o parte algoritmul
Minimax, iar pe de alt parte, nvarea prin ntrire mbinat cu o reea neuronal.
48
5.2.2 Minimax
Datorit faptului c jocul are o complexitate relativ redus, am reuit implementarea unui
algoritm care s poat cuta n adncime pn n strile terminale, astfel nemaiavnd nevoie de o
funcie de evaluare. Pentru strile finale am folosit o funcie de utilitate care ofer recompensa 1
pentru victorie, 0 pentru egalitate i -1 pentru nfrngere. n continuare vom ilustra procedura
recursiv, care gsete cea mai bun mutare pentru juctorul Minimax:
private MMove GetCeaMaiBunaMutare(MTabla tabla, int JucatorCurent)
{
MMove best = null;
int MutariPosibile = tabla.PozitiiLibere;
int i = r.Next(3); //incepem pe o pozitie aleatoare
int j = r.Next(3);
while (MutariPosibile > 0)
{
do
{
if (i < 2)
i++;
else
if (j < 2)
{
i = 0;
j++;
}
else
{
i = 0;
j = 0;
}
}
while (tabla.Table[i][j] != 0);
MMove noua = new MMove(i, j);
MutariPosibile--;
MTabla NewTabla = new MTabla(tabla);
NewTabla.FaMutare(JucatorCurent, noua);
NewTabla.VerificCastigator();
if (NewTabla.Stare == 2)//joc in progres
{
MMove temp = GetCeaMaiBunaMutare(NewTabla, -
JucatorCurent, alfa, beta);
noua.valoare = temp.valoare;
}
else //joc in stare finala
49
{
noua.valoare = NewTabla.Stare;
}
//daca e noua cea mai buna mutare de pana acum
if (best == null || (JucatorCurent == pc && noua.valoare <
best.valoare) ||
(JucatorCurent == om && noua.valoare > best.valoare))
{
best = noua;
}
}
return best;
}
5.2.3 nvare prin ntrire i reea neuronal
n elaborarea acestei pri a aplicaiei am folosit mai multe clase, dintre care, cele mai
importante ar fi urmtoarele: ReeaNeuronal, Joc, AgentInteligent, JuctorOm. Tabla de joc a
fost codificat intr-o matrice de 3 x 3 iniializat cu valoarea 0. Pe parcursul jocului se
completeaz cu valori: -1 pentru X i 1 pentru O.
Vom prezenta n continuare procedura care st la baza antrenrii reelei neuronale:
public void trainNet(int Player)
{
int[][] table = new int[3][];
for (int i = 0; i < 3; i++)
table[i] = new int[3];
int[][] BestTable = new int[3][];
for (int i = 0; i < 3; i++)
BestTable[i] = new int[3];
double Recompensa = 0.0;
int MoveNum = 0;
bool MuatreDeExplorare;
while (true)
{
MuatreDeExplorare = getBestTable(table, BestTable, Player,
true);
copyTable(BestTable, table);
if (win(table)) //jocul s-a terminat cu victorie
{
Recompensa = Player * -1;
}
else
50
{
Recompensa = 0.0;
}
if (!MuatreDeExplorare) //daca nu e mutare de explorare
{
ReteaN.updateWeights(0.0, (double[])prepareInputVector(-
1, table).Clone());
}
if (Recompensa != 0)
{
break;
}
else if (MoveNum == 8)
{
break;
}
MoveNum++;
Player *= -1; // schimba jucatorul
}
ReteaN.finishUpdateWeights(reward); //face update la ponderile
retelei
NrJocuri++;
}
5.3 Manual de utilizare
Pentru rularea aplicaia X-O avem nevoie de un computer echipat cu un sistem de operare
Microsoft Windows i .Net Framework 2.0. La lansarea n execuie apare tabla de joc, i implicit
este pornit un joc mpotriva lui Minimax (Figura 5-5). Apoi juctorul (uman) poate da click pe
una dintre csuele libere pentru a o marca. Imediat calculatorul va rspunde cu o mutare i cei
doi i succed mutrile pn cnd jocul se ncheie, cu remiz sau victoria unuia dintre ei. n
Figura 5-6 este ilustrat tabla de joc dup terminarea partidei, n acest caz fiind egalitate ntre
juctorul uman i Minimax. Titlul iniial al ferestrei a fost OM vs PC(Minimax), iar la
ncheierea partidei se va schimba n funcie de rezultat. n cazul de fa va deveni Remiz !
(Figura 5-6).
51
Figura 5-5 Tabl de joc goal
Figura 5-6 Joc terminat la egalitate
52
Meniul aplicaiei are urmtoarele componente:
1. Fiier, cu urmtoarele opiuni (Figura 5-7):
a. Joc nou, cu opiunile de a ncepe un joc nou mpotriva lui Minimax, sau
mpotriva reelei neuronale instruit cu TD. n cazul n care este selectat cea
de-a doua opiune, va mai aprea o fereastr de unde se pot selecta detalii
despre modul de nvare: valoarea coeficientului alfa i numrul de jocuri de
antrenament. Opiunea de joc nou poate fi accesat n orice moment, chiar
dac un joc se afl deja n desfurare.
b. Ieire, se produce nchiderea aplicaiei, fr a mai fi solicitat nici un mesaj de
confirmare. Se poate apela i prin combinaia de taste CTRL+I.
2. Opiuni, cu urmtoarele componente (Figura 5-8):
a. Omul mut primul, seteaz ca juctorul care face prima mutare s fie omul.
b. PC mut primul, ca juctorul care face prima mutare s fie computerul.
Opiunile a i b autoexclud n mod reciproc.
c. Omul e cu X, juctorul uman este cel care folosete X.
d. PC e cu X, computerul este cel acre folosete X.
Opiunile c i d autoexclud n mod reciproc.
Acest sub meniu este funcionabil numai dup terminarea jocului n curs.
Modificrile fcute n timpul unui joc nu sunt luate n calcul.
53
Figura 5-7 Meniu Fiier
Figura 5-8 Meniu Opiuni
54
6. Concluzii
n lucrarea de fa, ne-am propus s prezentm nvarea prin ntrire, mai exact nvarea
bazat pe diferene temporare, ca o alternativ la abordarea tradiionala a jocurilor, folosind
metoda Minimax.
Mai nti am prezentat abordarea tradiional a jocului Tic-Tac-Toe, folosind metoda
Minimax. Juctorul inteligent rezultat joac ntr-adevr perfect acest joc (nu pierde niciodat),
dar folosete o cutare n adncime costisitoare din punct de vedere al complexitii. Pentru un
joc mai complex cum ar fi tablele sau ahul, folosind Minimax nu am reui s construim un
juctor inteligent imbatabil, ci cel mult unul de nivel mediu.
n paralel, am reuit realizarea unui sistem avnd la baz o reea neuronal care nva s
joace Tic-Tac-Toe, fr a avea nici un fel de cunotine iniiale. Reeaua se autoinstruiete jucnd
un set de jocuri mpotriva ei nii i acordndu-i recompense dup fiecare partid. Este practic
o nvare din interaciunea cu mediul, reprezentat n acest caz de oponent. Dup cteva mii de
jocuri de antrenament ajunge s joace la un nivel foarte bun, fiind un adversar veritabil pentru
juctorul uman.
n jocurile de instruire, am pus reeaua s joace mpotriva ei nii, dar ar fi interesant de
vzut cum decurge nvarea dac partenerul de antrenament este juctorul Minimax. De
asemenea, pstrndu-i structura, acest sistem ar putea fi extins s joace table sau orice alt joc care
se desfoar pe o tabl.
Exemplul prezentat este destul de simplu i d impresia c nvarea prin ntrire este
limitat, ceea ce este departe de a fi adevrat. Ea poate fi aplicat nu numai n jocuri ci i ntr-o
mulime de alte domenii ale Inteligenei Artificiale, n rezolvarea multor probleme din lumea
real pentru care nc nu avem soluii concrete.
55
7. Bibliografie
1. Haugeland, John. Artificial Intelligence: The Very Idea. s.l. : MIT Press, 1989.
2. Winston, Patrick Henry. Artificial intelligence (3rd ed.). Boston : Addison-Wesley Longman
Publishing Co., Inc , 1992.
3. Rich, Elaine i Knight, Kevin. Artificial intelligence 2nd ed. New York : McGraw-Hill,
1991.
4. Kurzweil, Ray. The Age of Intelligent Machines. Cambridge : MIT Press, 1990.
5. Luger, G.F i Stubbliefeld, W.A. rtificial Intelligence : Structures and Strategies for
Complex Problem Solving. Redwood City : s.n., 1993.
6. Inteligena Artificial. Vasilescu, Raluca. 1996.
7. Dumitrescu, Dan. Principiile Inteligenei Artificiale. Cluj-Napoca : Ed. Albastr, 1999.
8. Glea, Dan i Leon, Florin. Curs de Inteligen Artificial: Universitatea Tehnic Gh.
Asachi Iai. [Interactiv] http://eureka.cs.tuiasi.ro/~fleon/curs_ia.htm.
9. Ghionea, Ionu. Inteligena Artificial. [Interactiv] http://www.catia.ro/articole/ai/ai.htm.
10. Wiens, Elmer G. Operations Research - Game Theory . [Interactiv]
http://www.egwald.ca/operationsresearch/gameintroduction.php.
11. Weiss, Adrienne J. Educational board game . s.l. : Buchanan Ingersoll Professional Corp. ,
1998.
12. Rosenthal, R. W. A class of games possessing pure-strategy, Nash equilibrium. s.l. :
International Jounal of Game Theory 2, 1973.
13. Minimax reference point approach and its application for multiobjective optimisation .
Yang, Jian-Bo. 3, Manchester : European Journal of Operational Research Manchester School
of Management, 2000, Vol. 126.
56
14. Stoean, Ctlin. Teoria Jocurilor. [Interactiv] http://inf.ucv.ro/~cstoean.
15. Pop, Horia F. i erban, Gabriela. Inteligena Artificial. Cluj-Napoca : UBB Cluj-
Napoca, 2004.
16. Temporal Difference Learning and TD-Gammon. Tesauro, Gerald. 3, s.l. : Communications
of the ACM, 1995, Vol. 38.
17. erban, Gabriela. Sisteme multiagent n Inteligena Artificial distribuit. Cluj-Napoca :
Editura Risoprint, 2006.
18. Sutton, Richard i Barto, Andrew. Reinforcement Learning: An Introduction. s.l. : MIT
Press, 1998.
19. Dumitrescu, Dan. Reele neuronale. Teorii i aplicaii. Bucureti : Teora, 1996.