Aprenentatge per reforç

Podríem descriure l’aprenentatge per reforç d’aquesta manera.

“Molt bé! Té, un caramel!”


D’aquesta manera, l’individu que rep el caramel sap que allò que ha fet està bé, i que els passos que l’han dut a fer allò també són bons ja que el permeten obtenir un benefici.

En el camp de la Intel·ligència Artificial també existeix aquest concepte manllevat del camp de la psicologia, i es fa servir en problemes que són massa complexos com per programar-los explícitament. Quan la casuística és molt gran, de vegades és millor deixar que l’agent (un robot, un jugador “màquina” en un joc, la intel·ligència que controla una planta hidroelèctrica…) trobi la millor solució per prova i error.

Q-Learning és una tècnica d’aprenentatge per reforç que treballa sobre el model de decisió de Markov. Aquesta tècnica s’estudia a l’assignatura d’Aprenentatge a la FIB, i de fet acostuma a entrar com a problema a l’examen final.

Els elements que componen un problema d’aprenentatge per reforç són un conjunt d’estats possibles, un conjunt d’accions que l’agent pot realitzar i una funció de reforç que informa l’agent dels resultats obtinguts després d’efectuar una acció a l’entorn.

Durant un procés d’entrenament generalment llarg, el robot prova diferents seqüències d’estats, canviant d’un al altre de manera aleatòria o prefixada, i va calculant el reforç que s’obté per cadascuna de les seves accions. Si s’arriba a un estat que proporciona un reforç, aquest es propaga pels estats anteriors que permeten arribar en aquest, de manera que el camí cap a l’èxit es va poc a poc definint.

Per provar de manera visual aquesta funció, vaig desempolsar el robot de Lego, i li vaig implementar Q-Learning. Aquí podeu veure el codi abans d’aplicar-lo al robot, de manera que el podeu provar sense tenir-ne. En aquest exemple els reforços són implícits en el codi, és a dir que per cada transició ja hi ha un esforç definit.

A la versió aplicada al robot, el reforç és obtingut quan aquest aconsegueix prémer el polsador. El diagrama de les accions que pot realitzar el robot és el següent:

Els dibuixets dels palets negres són el braç robòtic. Com podeu veure no hi ha cap reforç definit, i serà quan premi el polsador quan el rebrà. D’aquesta manera serà un robot molt dinàmic.

En aquest vídeo podeu observar-ne el comportament.

Els primers moviments que fa són d’entrenament. Un cop acabat l’entrenament i estudiat el reforç que ha obtingut, executa les accions que li proporcionen més reforç. Durant la primera part del video, el fet de prémer el botó li proporciona reforç, mentre que a la segona part del vídeo, figura que el botó li proporciona un càstig.

Podeu veure com a la primera part aprèn que ha de pitjar el botó, mentre que a la segona part aprèn que s’ha de quedar allunyat del botó.

Si teniu idees per fer seran benvingudes!

Fins la propera!

Clips Syntax Highlight

Si feu o fareu l’assignatura IA de la FIB i teniu un Mac, i feu servir l’aplicació Coda per escriure el codi de la pràctica d’IA, us pot ser útil aquest “Mode” de sintaxi, que ressalta les paraules pròpies del llenguatge, per fer més entenedor el codi. Donades les peculiaritats del  llenguatge Clips i  la seva semblança amb Lisp, és complicat trobar errors sintàctics en un codi escrit en text pla i sense colors.

Clips sense highlighting

No he definit tota la sintaxi de Clips, ja que l’he anat ampliant a mida que he anat fent servir noves funcions del llenguatge, però probablement pel nivell de detall a què s’arriba amb la pràctica de l’assignatura, n’hi ha prou.

Clips amb highlighting

Per tal d’instal·lar aquest “Mode”, heu de deixar la carpeta descomprimida que us podeu baixar d’aquest post, a la carpeta Modes dins de la carpeta Coda que trobareu a Usuari/Library/Application Support. Un cop instal·lat, podeu engegar Coda, i quan obriu un fitxer amb l’extensió “.clp” us reconeixerà automàticament que és Clips, i farà servir el ressaltador de sintaxi.

Descarrega Clips Mode

Espero que us serveixi!