Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE DIPLOM
Conductor tiinific
Conf. Dr. Gabriela erban
Absolvent
Budurlean Adrian
2008
Cuprins
1.
Inteligena Artificial...........................................................................................................6
1.1
1.2
1.3
Teoria jocurilor.................................................................................................................. 15
2.1
2.2
2.3
2.4
Introducere.................................................................................................................. 32
4.2
TD-Gammon ............................................................................................................... 34
Concluzie .................................................................................................................... 39
Aplicaia X O .............................................................................................................. 41
5.1
Analiza ....................................................................................................................... 41
Implementarea ............................................................................................................ 47
6.
Concluzii ........................................................................................................................... 54
7.
Bibliografie ....................................................................................................................... 55
INTRODUCERE
Jocurile sunt fascinante, iar scrierea de programe care s le joace este chiar i mai
fascinant. Se poate spune c teoria jocurilor este pentru Inteligena Artificial cum este Grand
Prix-ul pentru constructorii de motoare.
n lucrarea de fa ne-am propus s facem o prezentare a nvrii prin ntrire ca
alternativ la abordarea tradiional a rezolvrii jocurilor prin metoda Minimax.
Minimax este considerat la scar larg ca fiind algoritmul de baz n rezolvarea jocurilor,
ns vom vedea c are o sumedenie de deficiene. n primul rnd complexitatea lui este una
exponenial ceea ce-l face greu de adaptat unui joc cu multe stri cum ar fi ahul sau tablele. Un
alt dezavantaj este acela c Minimax pleac mereu de la premisa c adversarul su face cea mai
bun mutare posibil, ceea ce n multe cazuri nu se ntmpl.
Alternativa pe care o propunem acestei abordri tradiionale este nvarea prin ntrire
bazat pe diferena ntre estimrile unor sri ale jocului n diferite momente. Vom ncerca s
proiectm un agent inteligent care cunoscnd doar regulile de baz ale jocului, s nvee s joace
la un nivel expert, fr a fi supravegheat de un om. Ne-am oprit la jocul Tic-Tac-Toe, unul tipic
pentru abordarea Minimax, i vom ncerca s artm c nvarea este intr-adevr o alternativ
viabil, cu cerine minime.
Capitolul I, prezint pe scurt domeniul Inteligenei Artificiale ca o ramur a tiinei
aflat n plin expansiune. Se ncearc o definire a termenului de Inteligen Artificial i se face
o scurt incursiune n istoria acestui domeniu din perioada antichitii i pn n zilele noastre.
Capitolul II, prezint aspecte legate de teoria jocurilor, i o integrare a acesteia n
Inteligena Artificial. Sunt clasificate jocurile dup mai multe criterii i este fcut o prezentare
a evoluiei lor.
Capitolul III, descrie metoda de rezolvare a jocurilor Minimax. Se vorbete despre
reprezentarea jocurilor ca probleme de cutare i un studiu al complexitii acestora. Apoi sunt
prezentate proprietile i paii algoritmului Minimax, dar i mbuntiri care pot fi aduse:
tietura alfa-beta.
Capitolul IV, prezint concepte ale nvrii prin ntrire mai exact a nvrii bazate pe
diferene temporare. Este descris programul lui Gerald Tesauro TD-Gammon i se ncearc o
analiz a modului n care acesta nva.
Capitolul V, face o prezentare amnunit a aplicaiei X-O. Este fcut mai nti o
analiz a topicului i descriere a avantajelor nvrii fa de abordarea tradiional, iar apoi se
face o trecere n revist a modului n care au fost implementate aceste metode. Ultima parte a
capitolului este un manual de utilizare al aplicaiei.
1. Inteligena Artificial
Omenirea s-a autodenumit homo sapiens omul nelept deoarece capacitile noastre
mentale sunt att de importante n viaa noastr de zi cu zi. Domeniul Inteligenei Artificiale, i
propune s neleag entitile inteligente, i unul dintre motivele studierii acestui domeniu este
acela de a nva mai multe despre noi nine. Inteligena Artificial este una dintre cele mai noi
discipline, a fost iniiat oficial in 1956, cnd numele a fost inventat. Dei la vremea respectiv
fusese subapreciat, odat cu genetica modern, a fost deseori numit de ctre oamenii de tiin
din alte domenii ca disciplina n care mi-ar plcea s lucrez.
Inteligena Artificial are o mare varietate de subdomenii, de la arii generale ca i
percepia, pana la teme specifice cum sunt jocul de ah, demonstrarea teoremelor matematice,
scrierea de poezii si diagnosticarea bolilor. De multe ori, cercettori din alte domenii, folosesc
Inteligena Artificial pentru a sistematiza i automatiza teme intelectuale la care au lucrat toat
viaa lor. Similar, cercettorii Inteligenei Artificiale pot sa aplice metodele lor fiecrei arii din
intelectul uman. Aadar, avem motive sa spunem c, ntr-adevr Inteligena Artificial este un
domeniu universal.
Tocmai datorit complexitii si universalitii acestui domeniu, este extrem de greu sa
formulm o definiie complet a Inteligenei Artificiale. Totui, de-a lungul anilor s-au ncercat
diferite definiii. Acestea variaz de-a lungul a dou dimensiuni principale: procese cognitive i
comportament. Aceste definiii pot fi grupate n 4 categorii:
1. Sisteme care gndesc ca i oamenii: Inteligena Artificial este studiul modului
n care calculatoarele pot fi fcute s gndeasc mainile care gndesc - (1).
2. Sisteme care gndesc raional: Inteligena Artificial este studiul modalitilor
de a face capabil un calculator s perceap, s raioneze i s acioneze inteligent
(2).
6
dintre ceilali doi juctori este maina, i nu poate s i vad sau s le vorbeasc direct.
Comunicarea se poate face n scris sau printr-un terminal. Scopul lui C este s deosebeasc
maina de om, pe baza rspunsurilor la orice fel de ntrebri. Dac C nu reuete, atunci maina
poate fi considerat inteligent.
Dei poate prea oarecum bizar, urme ale preocuprilor pentru inteligena artificial, se
pot ntlni nc din cele mai vechi timpuri, cnd omul, nc nu descoperise ce nseamn
electricitatea, cu att mai puin putea sa-i imagineze calculatoarele i sistemele expert, care
astzi ne sunt la ndemn i ne nsoesc la tot pasul.
1.3.1 Antichitatea
In Iliada lui Homer, in laboratorul lui Hefaistos, zeul focului, sunt prezentate primele
maini inteligente. Acestea erau nite dispozitive, care se roteau in jurul caierului de ln,
ajutndu-o astfel pe Afrodita, soia zeului, la tors.
Primul sistem expert, se consider a fi un papirus egiptean, datnd din mileniul III .Hr.,
care consta in 48 de observaii asupra diagnosticrii i tratrii rnilor la cap. Cunotinele erau
organizate sub form de reguli: dac exist un anumit simptom, atunci se recomand un anumit
tratament. Pe acelai principiu se bazeaz i sistemele expert folosite astzi n medicin, pentru
depistarea cancerului i a altor boli. Trebuie menionat c aceast realizare se bazeaz pe o alt
invenie extraordinar a omului, scrisul, prin intermediul cruia obiectele fizice ale lumii reale
pot fi reprezentate i manipulate n mod simbolic (7).
O alt mare descoperire a antichitii este logica silogistic a lui Aristotel, care dateaz
din secolul IV .Hr.,
1.3.2 Renaterea
n secolul al XVII-lea, Blaise Pascal, pune bazele primului calculator mecanic, capabil s
efectueze adunri i scderi. Maina a fost perfecionata apoi de Gottfried Wilhelm Leibnitz,
astfel nct s realizeze nmuliri i mpriri. Interesant c, acest calculator nu s-a bucurat de
mare succes. Leibnitz a rmas cunoscut n special ca inventator al analizei matematice, dei la
vremea respectiv nu era la fel de celebru, fiind eclipsat de Newton.
Primul calculator funcional programabil, numit Z3, a fost produs n Germania, n 1941,
de ctre Konrad Zuse. A fost distrus trei ani mai trziu n timpul celui de-al doilea rzboi
mondial si a fost reconstruit mai trziu ca pies de muzeu. n 1948, la Universitatea Manchester
din Marea Britanie s-a realizat Mark I, primul calculator valorificat din punct de vedere
comercial. Acesta a fost i primul calculator care a scris scrisori de dragoste.
Mark I se bazau pe tehnologia tubului vidat (a lmpii electronice).
10
Att Z3, ct i
Momentul de natere al Inteligenei Artificiale este legat de anul 1956, cnd la reuniunea
de la Dartmouth College a fost prezentat programul de demonstrare a logicii propoziiilor Logic
Theorist de ctre Newell, Shaw i Simon. Acesta este considerat de muli ca fiind primul
program de Inteligen Artificial. Tot atunci s-au pus probleme legate de rezolvarea de jocuri,
de activiti care necesit raionament, de prelucrare a limbajului natural, de recunoatere a
modelelor .a. Dei este chiar conferina la care s-a lansat termenul de Inteligen Artificial, la
vremea ei, nu a fost considerat un succes. Totui n anii care au urmat au aprut tot mai multe
laboratoare de cercetare n domeniul Inteligenei Artificiale.
n anul 1958, John McCarthy anuna limbajul LISP, destinat programrii declarative.
Acest limbaj, cu unele modificri se folosete i azi, dup 50 de ani.
11
1.3.6 Anii 60
La sfritul anilor 60 are loc un nou salt tehnologic, dnd startul generaiei a treia de
calculatoare, bazat pe circuitele integrate (chip-uri semiconductoare). De la inventarea acestora,
numrul de tranzistoare de pe un chip s-a dublat la fiecare doi ani. n 1967, Richard Greenblatt
inventeaz primul program de ah care nvinge un juctor profesionist: MacHack.
n 1970, a luat fiina limbajul Prolog, ca rezultat al cercetrilor lui Alain Colmerauer, de
la Universitatea din Marsilia, legate de formalizarea logic, pentru punerea bazelor unui limbaj
de prelucrare a limbajului natural. Prolog este i astzi, cel mai utilizat limbaj de programare
logic i declarativ i este intens utilizat n special la construirea sistemelor expert.
12
nceputul anilor 70, aduce pe lng, noiunea de algoritm genetic, introdus de John
Holland, i o nou etap tehnologic, cea a microprocesoarelor, care determin apariia
generaiei a patra de calculatoare, care continu pn n prezent.
Cercetrile n domeniul reelelor neuronale sunt revigorate la mijlocul anilor 80, cnd
devine cunoscut algoritmul delta generalizat (back-propagation). Aceast metod a fost propus
cu peste zece ani n urm, ns a fost practic ignorat, deoarece presupunea un volum de calcule
mult prea mare pentru perioada respectiv. Idee de baza este antrenarea percepronului multistrat,
prin gsirea minimului funciei de eroare n raport cu ponderile conexiunilor.
13
14
2. Teoria jocurilor
Jocurile sunt fascinante, iar scrierea de programe care s le joace este chiar i mai
fascinant. Se poate spune c teoria jocurilor este pentru Inteligena Artificial cum este Grand
Prix-ul pentru constructorii de motoare.
Dezvoltarea jocurilor i a domeniului multimedia, n general, este n plin expansiune, o
afacere de sute de milioane de dolari. La ora actual nu se mai poate concepe un joc fr a avea
n structur elemente de Inteligena Artificial. Implementat corect, aceasta garanteaz un
produs bine vndut, deci profit i satisfacie oferit juctorilor (9).
Teoria jocurilor de strategie, poate fi, pe scurt, caracterizat ca aplicarea analizei
matematice asupra modelelor abstracte de situaii conflictuale. Primele astfel de modele n care a
fost aplicat aceast teorie, au fost jocurile de societate ca ah, poker sau bridge. Apoi s-au
aplicat aceleai modele n domenii ca economia, sociologia sau tiinele politice. Teoria jocurilor
este folosit, sau se afl n strns legtur cu arii ca programare liniar, decizii statistice,
managementul tiinei, cercetare sau strategi militare, dei, uneori corespondenta matematic a
teoriei nu este valabil.
Participanii la un joc sunt numii juctori i n general sunt 2, dar exist i jocuri cu mai
muli. Exist de asemenea jocuri care implica elemente aleatoare numite i ans, care intervin
atunci cnd se arunc zarurile sau se extrage o carte. Toate aceste mutri sunt atribuite unui
juctor ans un juctor fictiv folosit doar pentru o bun abstractizare a jocului.
15
Spunem ca un joc este n forma extins, atunci cnd acesta este specificat de o list de
reguli. Pentru rezolvarea matematic a unui joc, avem ns nevoie de jocuri in forma
normalizat. Pentru aceasta este nevoie sa cunoatem o list complet cu toate combinaiile de
mutri legale posibile, pe care un juctor poate s le fac pentru fiecare situaie care apare pe
parcursul unui joc. Numrul acestor mutri poate fi astronomic, chiar i pentru un joc simplu
cum este Tic-Tac-Toe, deoarece aceasta list de mutri este mult mai mare dect ceea ce noi
numim strategie. Tocmai din acest motiv, aplicaiile teoriei jocurilor, chiar si pentru jocurile de
societate, sunt mult limitate de dificulti computaionale.
S presupunem acum c avem un joc, cu n juctori, fr juctorul ans, prezentat mai
sus. Notm cu s1, s2, , sn combinaiile de mutri posibile pentru toat durata jocului, specifice
juctorilor 1, 2, , n. Fiind date acestea, jocul trebuie jucat intr-un mod unic si va rezulta un
ctig unic. Fie Pi (s1, s2, , sn ) valoarea ctigului juctorului i pentru acest joc. Presupunem c
O1, O2, , Ok sunt venituri n urma unui eveniment aleator (de ans), i presupunem n
continuare c probabilitile de apariie a acestora sunt p1, p2, , pk cu pi > 0 i p1 + p2 + +
pk = 1. Probabilitatea matematic a evenimentului de ans este suma E = p1O1+ p2O2 + .. +
pkOk.
Dac exist aceste mutri aleatoare (de ans) este uor de intuit c un set de combinaii
de mutri posibile pentru fiecare juctor, nu va determina un venit unic al jocului, ci un set de
posibile venituri. Aceste venituri se vor exclude reciproc, i probabilitatea lor de apariie va
depinde de mutrile aleatoare asociate cu ansa lor de apariie. Prin urmare putem spune c Pi (s1,
s2, , sn ) este ctigul ateptat pentru fiecare juctor i = 1, 2, , n.
Acum putem defini forma normalizat a jocului, ca lista tuturor ctigurilor ateptate
pentru fiecare juctor, pentru fiecare combinaie posibil de mutri legale, de-a lungul jocului.
Pentru jocurile de 2 juctori, cea mai simpl metod de stocare a acestora este folosind matrice
bidimensionale (10).
16
Dup ce am vorbit mai sus despre jocuri n forma extins i jocuri n forma normalizat,
vom prezenta n continuare o clasificare a jocurilor n raport cu diverse criterii:
Jocuri dinamice;
evolueaz n timp.
c. Dup natura informaiei:
-
Jocul n informaie incomplet, este jocul n care cel puin unul dintre
juctori nu cunoate una sau mai multe funcii de ctig ale celorlali
juctori.
17
Joc dinamic n informaie imperfect, este acel joc n care cel puin
unul dintre juctori nu cunoate istoria jocului, cunoscnd ns
celelalte elemente.
Jocuri multi-persoan
Numim strategie a unui juctor, o aciune realizabila pe care juctorul o poate alege n
cadrul jocului. Mulimea strategiilor tuturor juctorilor formeaz mulimea strategiilor jocului pe
care o notm: S = S1 x S2 x x Sn , unde Si este strategia fiecruia din cei n juctori.
Funcie de ctig a jocului este funcia u = ( u1, u2, , un ) format din funciile de ctig
ale fiecrui juctor. Dac notm funcia de ctig a fiecrui juctor cu u i i funciile de ctig ale
celorlali juctori cu u-i, funcia de ctig a jocului va fi: u : S R, u = ( ui, u-i ) (10).
Spunem c un joc merge spre un Echilibru Nash (nume preluat de la creatorul su John
Nash), dac strategiile ambilor juctori, i vor duce pe acetia la acelai ctig, innd cont de
strategia adversarului.
18
Echilibrul Nash mai poate fi definit i ca o mulime de strategii ( s 1*, s2*, , sn* ) care
respect condiia:
ui ( s1*, s2*, , si*, , sn*) ui ( s1*, s2*, , si*, , sn*) pentru i = 1, n
sau
ui ( si*, s-i*) ui ( si*, s-i*) pentru i = 1, n (12).
Teoria jocurilor este unul dintre primele domenii ale Inteligenei Artificiale, astfel prin
1769 aprea deja, prima fraud odat cu apariia lui Turk, un presupus joc de ah automat,
despre care autorul spunea c ascunde un mic expert. Primele discuii serioase despre jocuri
inteligente au avut loc prin 1846, cnd Charles Babbage propunea proiectarea unui motor analitic
complet, care ar fi capabil s joace dame i ah. Babbage a proiectat i prima main care s
joace Tic-Tac-Toe, ns nu a reuit s o construiasc. Prima main pentru jocuri a fost proiectat
si realizat n 1890 de ctre Leonard Torres, i era capabil s joace sfritul unei partide de ah.
Tot n aceeai perioad, Ernest Zermelo venea cu ideea generrii ntregului arbore pentru jocul
de ah, in vederea gsirii unei strategii perfecte.
Totui, aceste cazuri au fost relativ izolate, adevratul nceput al jocurilor inteligente
avnd loc la mijlocul secolului XX, odat cu apariia primelor calculatoare electronice
programabile. Este perioada n care a fost prezentat teoria Minimax, de ctre von Neumann i
Morgenstern (1944). Pornind de la aceast idee s-au fcut mai multe ncercri de realizare a unui
program capabil s joace o partid ntreag de ah, la un nivel satisfctor.
n 1951, matematicianul englez Alan Turing, a scris primul program capabil s joace o
partid ntreag de ah. Publicat doar n 1953, programul nu a rulat pe un calculator, ci a fost
testat printr-o simulare manual mpotriva unui oponent uman slab, care l-a nvins. A urmat
dezvoltarea cutrii alfa-beta i odat cu ea dezvoltarea de alte programe dintre care
MacHack6, primul care concura cu succes mpotriva oamenilor. n 1982 Pearl a realizat o
19
analiz efectiv a factorului de ramificare i complexitii lui alfa-beta, artnd c este algoritmul
de cutare optimal pentru jocuri.
De-a lungul anilor, programele pentru jocuri s-au mbuntit gradual, ajungnd ca n
zilele noastre s concureze cu succes campionii mondiali. Cel mai elocvent exemplu este cel din
1997, n care campionul Garry Kasparov a fost ntrecut de un super-computer, Deep Blue, creat
de firma IBM. Obinut n ase partide, aceast victorie a nsemnat trecerea liniei Inteligenei
Artificiale dincolo de ce s-a realizat pn n acel moment. Din studiile efectuate, a reieit c n
creierul uman se afl aproximativ 100 miliarde de neuroni, fiecare capabil de 1000 de operaii pe
secund. n jur de 30 de miliarde de neuroni formeaz "materia cenuie", cea care gndete,
restul de 70 de miliarde constituind "materia alb", cea care face legtura ntre neuronii din
"materia cenuie". n contrast, Deep Blue coninea 480 de procesoare create special pentru jocul
de ah, fiecare dintre ele fiind capabil s gndeasc aproximativ 2 milioane de poziii pe secund.
Un computer actual poate realiza 10 la puterea 17 operaii pe secund (o operaie n timpul n
care lumina ar strbate un atom de hidrogen).
Este clar c viteza aparine mainii. i atunci ne punem ntrebarea: Ce atu mai are omul
? Cel mai important pare a fi elementul surpriz, omul este imprevizibil, gndirea sa nu respect
ntotdeauna un algoritm, aa cum l tie maina (9).
20
3. Metoda Minimax
21
Algoritmul Minimax este un algoritm de cutare ntr-un arbore. Acest algoritm urmrete
selectarea celei mai bune mutri pentru calculator, ntr-un joc cu doi juctori. Mai nti se
construiete arborele de joc cu toate mutrile posibile pentru ambii juctori, dup metoda
descris mai sus.
Acest algoritm este denumit Minimax, deoarece calculatorul face mutarea care-i ofer
ctigul maxim, n acelai timp asigurndu-se c oponentul face mutarea cea mai defavorabil
calculatorului. Deoarece mutrile alterneaz, i algoritmul alterneaz maximiznd i minimiznd
nivelele arborelui n mod recursiv.
ntruct, chiar i n cazul unui joc simplu, numrul mutrilor posibile crete exponenial,
i deoarece memoria unui calculator este limitat, de regul, algoritmul Minimax face cutarea
numai pe o adncime fix.
n continuare vom considera cazul unui joc simplu cu dou persoane, pe care le vom
numi sugestiv MAX i MIN. Primul care mut primul este MAX, apoi mut pe rnd, pn la
sfritul jocului, cnd unul este premiat iar cellalt penalizat.
MAX trebuie s gseasc o strategie care s l aduc la o stare terminal n care el este
ctigtorul, indiferent de mutrile pe care le face MIN. Strategia presupune c MAX face
mutrile corecte, indiferent de mutrile lui MIN. Ideea este de a arta cum se gsete o strategie
optim, chiar dac nu este timp suficient s o gsim (13).
22
3.2.1 Tic-Tac-Toe
n Figura 3-1 de mai sus este reprezentat jocul Tic-Tac-Toe(X i 0), sub form de arbore.
De la starea iniial, MAX are posibilitatea de a alege din 9 mutri posibile. Juctorii alterneaz
punnd X i 0 pn se ajunge la o stare terminal stare n care un juctor are 3 elemente pe o
linie, coloan sau diagonal, sau toate csuele au fost completate(egalitate). Numrul ataat
fiecrei frunze reprezint utilitatea strii terminale din punctul de vedere a lui MAX. Valorile
mari sunt considerate bune pentru MAX i proste pentru MIN, reciproca fiind valabil, de aici i
numele celor doi.
Sarcina lui MAX este s foloseasc acest arbore de cutare, i innd cont de utilitatea
strilor finale s determine cele mai bune mutri.
23
Algoritmul Minimax, care determin strategia optim pentru juctorul MAX, const n 5
pai:
1. Genereaz arborele de joc pn la strile terminale
2. Aplic funcia de utilitate pentru fiecare stare terminal, pentru a i determina
valoarea.
3. Folosete utilitatea strilor terminale pentru a determina utilitatea strilor de la un
nivel superior al arborelui.
4. Continu evaluarea utilitii nodurilor pn ajunge la rdcin.
5. Cnd se ajunge la rdcin, MAX alege nodul de pe nivelul inferior cu valoarea cea
mai mare.
n Figura 3-2 de mai jos este prezentat un exemplu pentru stabilirea utilitii din pasul 3
al algoritmului. Am luat n calcul un joc care se termin dup numai dou mutri (una MAX i
una MIN). Pentru MAX mutrile posibile sunt A1, A2 i A3, iar pentru MIN: A11, A12 etc., iar
valorile strilor terminale sunt ntre 2 i 14.
24
Alegerea pe care o va face MIN pentru nodul de deasupra va fi valoarea cea mai mic,
adic cea mai bun din punctul su de vedere. MAX va avea de ales ntre nodurile evaluate la 3,
2 i 2, de unde evident va opta pentru valoarea maxim.
Este bine de tiut c pentru un joc cum este ahul, factorul de ramificare este b 35, iar
adncimea arborelui m 100. Prin urmare algoritmul ar avea o complexitatea temporara uriaa
O(35100), iar noi am plecat de la presupunerea c programul are timp s caute pn la strile
terminale, ceea ce este impractic.
Shannon propunea ca n loc s se mearg pn la strile terminale i s se foloseasc
funcia de utilitate, cutarea s fie oprit mai devreme i s se aplice o funcie de evaluare
euristic noilor frunze ale arborelui.
Funcia de evaluare, ntoarce o estimare a utilitii ateptate pentru joc dintr-o stare dat.
Spre exemplu, n jocul de ah, aceast funcie se poate referi la valoarea material a fiecrei
piese: pion 1, nebun 3, tura 5, regina 9. Pe lng acestea ar fi bine s inem cont i de alte aspecte
cum ar fi aranjarea pionilor sau modul n care este protejat regele. Performana unui program
pentru jocuri depinde n mare msur de funcia de evaluare aleas. Dac aceasta nu este bine
definit, poate ghida programul spre stri care aparent sunt bune dar de fapt sunt dezastruoase.
25
Marele handicap al algoritmului Minimax este complexitatea, care-l face s nu fie optim.
Spre exemplu, pentru jocul de ah, un program bine scris poate cuta aproximativ 100 de poziii
pe secund. In turneele de ah, timpul pentru mutare este de 150 de secunde, deci programul ar
putea cuta 150 000 de poziii. Cum factorul de ramificare este de 35, programul va fi capabil s
26
mearg n avans cu doar 3-4 mutri, ceea ce l-ar face s joace la un nivel de nceptor. Chiar i
un juctor mediu poate vedea 6-7 mutri nainte, ceea ce l face pe program s fie uor de btut.
Aceast problem a complexitii, prezent mai sus, poate fi, din fericire, ajustat. Este
posibil a se calcula decizia Minimax fr a vizita fiecare nod din arborele de cutare. Procesul
const n retezarea unor ramuri ale arborelui i presupune neluarea n considerarea a acelor
ramuri. Aceast tehnic de reducere a arborelui se numete tietur . Atunci cnd se aplic
unui arbore, ea va ntoarce aceeai mutare ca i Minimax, ns elimin ramuri care nu pot
influena decizia final.
este valoarea celei mai bune alegeri gsite pn la momentul curent, la orice punct de-a
lungul unui drum, pentru MAX. Daca v este mai prost dect , MAX l va evita, prin eliminarea
acelei ramuri.
este definit n mod similar pentru MIN, adic cea mai mic valoare gsit de-a lungul
unui drum, pentru MIN.
Figurile 3-4, 3-5, 3-6, 3-7 i 3-8 reprezint o exemplificarea a modului n care tietura
se aplic unui arbore.
27
28
Figura 3-8
29
3.3.2 Proprieti
n continuare vom prezenta cteva dintre trsturile de baz ale algoritmului Minimax cu
tietur :
Reducerea nu afecteaz rezultatul final.
O bun ordonare a mutrilor mbuntete algoritmul de reducere.
Dac succesori sunt pui perfect n ordine (cei mai buni se afl primii), atunci
complexitatea temporar ar fi O(bd/2), n loc de O(bd) ct are Minimax.
o Deci , poate cuta de dou ori mai mult dect Minimax.
o Pentru jocul de ah, de exemplu, programul ar putea s se uite nainte 8
mutri n loc de 4.
Tratnd cu mare atenie calculele care afecteaz decizia, putem transforma un
program de nivel nceptor n expert (14).
Minimax are cteva aspecte care, chiar cu mbuntirile descrise, sunt problematice.
Spre exemplu, se bazeaz ntotdeauna pe premisa c adversarul va selecta cea mai bun mutare.
Aceast presupunere este acceptabil n situaii de ctig, n care poate fi gsit o situaie bun
pentru noi. Dar n situaiile de nfrngere ar putea fi mai bine s ne asumm riscul c adversarul
va face o greeal.
De exemplu, s presupunem c avem de ales ntre dou mutri, ambele conducnd la
situaii foarte proaste dac adversarul joac perfect, dar una dintre ele este mai puin proast
dect cealalt. S presupunem n continuare, c mutarea mai puin promitoare ar putea conduce
la o situaie foarte bun pentru noi dac adversarul ar face o singur greeal. Dei procedura
Minimax ar selecta mutarea mai bun, ar trebui s alegem cealalt mutare, care este probabil mai
proast, dar posibil mult mai bun. Pentru a putea lua astfel de decizii n cunotin de cauz
30
trebuie s avem acces la modelul stilului de joc al adversarului, astfel nct s poat fi estimat
posibilitatea apariiei diferitelor greeli. Dar o astfel de analiz este foarte greu de realizat (15).
31
4.1 Introducere
Idee de baz a nvrii prin ntrire este urmtoarea: agentul care nva observ nite
date sau un model de intrare, i produce un semnal de ieire (numit i aciune sau semnal de
control). Imediat, agentul primete de la mediu o recompens sau un feed-back de ntrire, care
i arat ct de bun sau ct de ru a fost semnalul de ieire. Scopul nvrii este de a genera cele
mai bune aciuni care duc la un ctig maxim. De multe ori aceast recompens este ntrziat, ea
vine la sfritul unei lungi secvene de intrri i ieiri. Astfel cel care nva, trebuie s figureze
32
modul n care distribuie ctigul i penalizrile pentru diferitele intrri, ieirile conducnd spre
semnalul final de recompens.
33
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.
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 TD34
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 .
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
35
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.
36
37
+1 = +1
=1
Alfa este o constant cu valoare mic numit de obicei coeficient de nvare, w este
vectorul ponderilor care parametrizeaz reeaua i este gradientul ieirii reelei.
Lambda este un parametru euristic menit s controleze ct de departe s mearg
recalcularea estimrilor precedente, n urma gsirii unei erori la un anumit pas de timp. La
sfritul fiecrui joc, se d o recompens final z (n forma descris mai sus). Ecuaia precedent
este folosit pentru schimbarea ponderilor, excepie fcnd diferena (z Y[f]) n locul diferenei
(Y[t+1] Y[t]) (16).
4.3.3 Rezultate
38
mai sofisticate au aprut dup cteva zeci de mii de jocuri. ncurajator a fost faptul c odat cu
creterea numrului de jocuri de antrenament se mbuntete si performana.
Cele mai bune rezultate au fost obinute cu o reea neuronal cu 40 de neuroni n startul
ascuns, care a fost antrenat 200 000 de partide. n aceste programul era capabil s joace foarte
bine la un nivel intermediar, ns foarte interesant s-a dovedit a fi organizarea spaial a
ponderilor reelei neuronale cu valori pozitive i negative (16).
Aceast prim versiune TD-Gammon 1.0 aprut n 1991, s-a dovedit a fi cel mai bun
program de table conceput pn la aceea dat, mai mult, era capabil s surclaseze toate
programele concurente. Programul a mai fost mbuntit n urmtorii ani, prin creterea
numrului de jocuri de nvare i adugarea unor strategii auxiliare, ajungnd sa joace de la egal
la egal cu maetri umani.
Programul
Jocuri de antrenament
TDG 1.0
300 000
TDG 2.0
800 000
Adversari
Rezultate
Robertie, Davis,
Magriel
(-0.25 ppj)
Goulding, Woolsey,
-7 puncte / 38 de jocuri
Snellings, Russell,
(-0.18 ppj)
Sylvester
TDG 2.1
1 500 000
Robertie
-1 punct / 40 de jocuri
(-0.02 ppj)
Tabel 4-1
4.4 Concluzie
39
Sunt multe aplicaii care aplic nvarea prin ntrire, din afara domeniului jocurilor,
cum ar fi controlul roboilor sau strategii financiare. Totui pentru acest tip de aplicaii pierdem
un mare avantaj pe care l avem n jocuri i anume posibilitatea de a genera i simula ntregul
mediu (17).
40
5. Aplicaia X O
5.1 Analiza
41
42
43
44
n timp ce jucm, schimbm valorile strilor n care ne aflm, ncercnd s facem nite
estimri ct mai precise asupra anselor de ctig din acele poziii. Pentru aceasta, facem un
back up al valorii strii dup fiecare mutare (mai puin cele de explorare), asupra strii
precedente ca n Figura 5-4. Mai precis, valoarea curent a strii precedente este ajustat s fie
ct mai apropiat de valoarea strii urmtoare. Aceast operaie se poate realiza schimbnd
valoarea strii anterioare cu o fracie din distana spre starea curent, ca n formula urmtoare:
+
unde s este starea curent, s este starea precedent, P(s) este estimarea valorii strii s, iar este
coeficientul de nvare.
45
dou momente de timp diferite. Dac coeficientul de nvare este redus corespunztor pe
parcursul jocurilor, metoda converge spre valorile corecte ale fiecrei stri, producnd astfel un
joc optim din partea juctorului nostru (18).
n elaborarea acestei aplicaii ne-am bazat pe ideile prezentate mai sus mbinate cu o reea
neuronal dup modelul lui Tesauro [] prezentat n (4.3.2). Aceast reea neuronal folosete o
arhitectur standard de perceptron cu straturi multiple, i poate fi privit ca un generator de
aproximri pentru funcii neliniare.
Datele de intrare pentru reeaua neuronal sunt de forma unui vector cu 6 componente
dup modelul:
1. Numrul de linii, coloane sau diagonale pe care juctorul are 1 X i poate ctiga
2. Numrul de linii, coloane sau diagonale pe care juctorul are 2 X i poate ctiga
3. Numrul de linii, coloane sau diagonale pe care juctorul are 3 X
4. - Numrul de linii, coloane sau diagonale pe care adversarul are 1 O i poate ctiga
5. - Numrul de linii, coloane sau diagonale pe care adversarul are 2 O i poate ctiga
6. - Numrul de linii, coloane sau diagonale pe care adversarul are 3 O
n timpul antrenamentului, reeaua primete cte o succesiune de astfel de input-uri
fiecare reprezentnd cte o stare a jocului ncepnd cu starea de start i terminnd cu cea final
cnd una dintre pri ctig sau jocul se termin la egalitate. Reeaua returneaz un output care
reprezint o estimare a valorii input-ului primit. n funcie de rezultat se primete o recompens:
1 pentru victorie, 0 pentru remiz i -1 pentru nfrngere. Aceast recompens este mai apoi
redistribuit pentru a schimba valorile ponderilor dintre straturile reelei (la nceputul nvrii au
fost iniializate cu valori mici aleatoare). Modificarea ponderilor se face dup fiecare pas prin
aplicarea algoritmului TD(lambda), descris n 4.2.1, dup formula:
46
+1 = +1
=1
5.2 Implementarea
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.
47
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
48
{
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;
}
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
49
{
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++;
}
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).
50
51
52
53
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.
54
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.
55
56