Вы находитесь на странице: 1из 12

Relatrio - Projecto sobre Aprendizagem por Reforo Disciplina - Aprendizagem Automtica Docente - Paulo Urbano

Realizado por: Gustavo Martins - 36890 Joo Antnio - 41607

ndice

Introduo O Jogo Regras e Objectivos Processo de Deciso de Markov


Estados Aces Funo de Transio de Estado Funo Recompensa

3 4 5
5 7 7 7

Implementaes
Algoritmo Q Algoritmo de iterao Funo Valor Ficheiros

9
9 10 10

Concluses

11

Introduo
No contexto da Aprendizagem Automtica realizmos um projecto cujo objectivo era explorar as diversas tcnicas existentes, implementando-as e demonstrando o seu funcionamento. A partir do conhecido jogo do Pacman o desao era o de programar a personagem central de modo a que as suas aces fossem tomadas de forma autnoma. Para isso, admitindo um mundo Markoviano nas verses deterministas e no deterministas denimos representaes de estados, aces, transies de estados e recompensas. Partindo destes dados, implementmos o algoritmo de iterao Valor e da aprendizagem Q, tal como se detalha adiante neste documento. O software usado foi o Netlogo, que j possua uma implementao do jogo para um jogador humano. Assim, tendo todos os aspectos grcos assegurados, apenas tivemos de realizar alteraes ao nvel da tomada de deciso do Pacman, para passar a ser feita de forma autnoma, de acordo com as tcnicas usadas, e no dependesse da deciso de um jogador humano.

O Jogo Regras e Objectivos


Verso Original No formato original do jogo existe uma personagem principal o comilo que procura comer todas as migalhas existentes no tabuleiro labirntico. Alm das migalhas, existem tambm bolachas que conferem ao comilo poderes especiais e estrelas que permitem granjear pontuao extra. Alm do comilo existem ainda 4 personagens os fantasmas que o perseguem incessantemente, excepo dos momentos em que o comilo recebeu poderes especiais. Nestes casos, os fantasmas nada podem contra a personagem principal e, por essa razo, limitam-se a fugir tentando evit-la. A vitria alcanada quando o comilo come todas as migalhas e bolachas existentes inicialmente. Neste caso, ocorre uma passagem de nvel. Quando algum fantasma alcana o comilo retira-lhe uma vida e a derrota alcanada quando todas as vidas se esgotam. Neste caso o jogador impedido de continuar e o jogo reinicializado. Verso Usada no Projecto Para simplicao no contemplmos as bolachas nem as estrelas. Assim sendo, os algoritmos implementados apenas levam em conta a existncia de migalhas e fantasmas, pois so o essencial do jogo. Como consequncia, o comilo no pode receber os poderes especiais que levam os fantasmas a evit-lo. A vitria mantm-se tal como na verso original e pode ser alcanada comendo todas as migalhas enquanto a derrota passa a ser a perda de uma vida quando um dos fantasmas alcana o comilo. A passagem de nvel processa-se da mesma forma que na verso original, ou seja, ocorre quando todas as migalhas so comidas.

Processo de Deciso de Markov


O processo de deciso de Markov impe que o mundo a modelar tenha as seguintes caractersticas. Conjunto de Estados claramente denidos Conjunto de Aes possveis Funo de Transio de estado que s depende do estado e aco actuais Funo de Recompensa que s depende do estado ou estado e aco actuais

Estados Ao longo do projecto a representao do estado passou por vrias fases, incrementalmente mais complexas. Inicialmente contemplava apenas a vitria, a derrota e a existncia de migalhas nas imediaes do comilo: para cada direco possvel de seguir era calculado um ratio que traduz o nmero de migalhas e a distncia a percorrer. Numa fase posterior, foi includo no estado uma informao que procurava traduzir se o comilo tinha acabado de comer uma migalha. Com esta representao de estado efectumos alguns testes com resultados satisfatrios, em mapas sem fantasmas. Para incluirmos os fantasmas no jogo decidimos incluir na representao de estado as distncias at ao fantasma mais prximo para cada direco. Neste momento como o espao de estados estava a aumentar rapidamente decidimos simplicar a representao de estado e retirmos os ratios relativos s migalhas nas imediaes deixando apenas o melhor ratio e a respectiva direco. Finalmente, decidimos incluir na representao de estado a indicao se existia apenas uma migalha no mapa: em caso armativo ento o jogo encontrava-se num estado pr-nal pois bastaria comer uma migalha para alcanar a vitria. de notar que algumas das caractersticas da representao do estado dependem do valor do raio de viso, ou seja, dependem da distncia mxima que o comilo capaz de ver nas suas imediaes. Durante o desenvolvimento do projecto este valor, isto , o Raio de Viso, variou entre 8 e 22. Em suma, a representao nal do estado : fO,fS,fE,fN,UltimaMigalha,bestRacio,BestDir,comeuMigalha,V,D O signicado de cada caracterstica o que se apresenta na tabela. Caracterstica fO Descrio Valores Possveis Distncia do Comilo ao fantasma mais Nmero inteiro entre 0 e raio prximo se seguir caminho para Oeste de viso, em que 0 representa nenhum fantasma visvel Distncia do Comilo ao fantasma mais Nmero inteiro entre 0 e raio prximo se seguir caminho para Sul de viso, em que 0 representa nenhum fantasma visvel Distncia do Comilo ao fantasma mais Nmero inteiro entre 0 e raio prximo se seguir caminho para Este de viso, em que 0 representa nenhum fantasma visvel
5

fS

fE

fN

Distncia do Comilo ao fantasma mais Nmero inteiro entre 0 e raio prximo se seguir caminho para Norte de viso, em que 0 representa nenhum fantasma visvel UltimaMigalha Indica se s existe uma migalha no mapa1 (sim) ou 0 (no) bestRatio Melhor rcio relativo s migalhas que se Nmero decimal entre 0 e um encontram nas imediaes rcio mximo que depende do radio de viso, em que 0 signica nenhuma migalha visvel. bestDir Indica a direco associada ao bestRatio 0, 90, 180, 270 comeuMigalha Indica se o comilo acabou de comer 1 (sim) ou 0 (no) uma migalha V Representa um estado nal de vitria 1 (sim) ou 0 (no) D Representa um estado nal de derrota 1 (sim) ou 0 (no) Com a representao de estados apresentada, e com um raio de viso de 20, possvel obter-se vrias dezenas ou centenas de milhes de estados. Se tal nmero de estados fosse efectivamente atingido a aplicao, provavelmente, bloquearia. Contudo, na prtica, o nmero mximo de estados que atingimos foram cerca de 100 mil, aps uma semana de execuo quase ininterrupta. Isto signica que, apesar de haver muitos estados possveis, existe uma parte signicativa desses estados que o comilo nunca conheceu. medida que o tempo passava o aumento de estados conhecidos apenas se reectia numa maior lentido no carregamento e gravao do cheiro que ia armazenando esses estados. No cdigo fonte, a funo usada para realizar as representaes do estado denomina-se calculaEstadoV1. Mtodo de Clculo do BestRatio A implementao do clculo do bestRatio recursiva. A ideia era representar o potencial de migalhas a comer em cada direco. Assim, para cada direco que o comilo pode seguir chamada a funo que calcula o rcio, passando-lhe como argumento o raio de viso. medida que as invocaes recursivas vo sucedendo, este argumento vai sendo diminudo at atingir o valor 0. Nesta situao a recurso pra. A invocao recursiva desta funo contabiliza o nmero de migalhas encontradas (N) e a distncia total que necessrio percorrer para comer todas essas migalhas (D). Finalmente, o rcio calculado pela frmula: N / (D + 1) Note-se que o valor 1 somado a D para evitar divises por 0. de notar tambm que o rcio devolvido para cada direco no referente apenas a migalhas que se encontram nessa direco mas refere-se a todas as migalhas que podem ser alcanadas se inicialmente seguir nessa direco, ainda que posteriormente, o caminho seguido tome outra direco. No caso de existirem vrios caminhos possveis, aps iniciar caminho por determinada direco, devolvido o rcio referente ao melhor caminho de entre os vrios disponveis.

Mtodo de Clculo da Distncia aos Fantasmas Para calcular a distncia aos fantasmas a abordagem foi semelhante ao clculo do bestRatio. A diferena fundamental est em devolver directamente a distncia ao fantasma mais prximo se o comilo seguir caminho por cada uma das direces disponveis, em vez de devolver um rcio. Aces A cada momento, o comilo pode optar por virar-se nos sentidos dos pontos cardeais: Norte, Este, Sul e Oeste. Cada uma destas aces possveis tem correspondncia com um valor numrico, que respectivamente: 0, 90, 180, 270. No considermos as aces de parar ou avanar, pois as regras originais do jogo no o permitem. No cdigo fonte, a funo usada para determinar qual a aco a realizar denomina-se determinarAccao. Funo de Transio de Estado A funo de transio de estado tem como objectivo receber um estado e, mediante a execuo de uma aco, gerar o estado seguinte. Contudo, face diculdade de formalizar esta funo num mundo indeterminista decidimos utilizar o prprio jogo para determinar qual o estado seguinte. Ou seja, partindo do estado corrente do comilo quando este executava uma aco, seguida das aces dos fantasmas, obtnhamos o estado seguinte. Esta abordagem foi suciente para a implementao da aprendizagem pelo algoritmo Q. Para a implementao da iterao da Funo Valor, visto que no implica aprendizagem, ou por outra, no implica experincia de jogo para acumular conhecimento sobre os estados vimo-nos forados a formalizar uma funo de Transio de Estado. Esta obrigao constituiu um ponto de viragem signicativo no desenvolvimento do projecto, que at ento tinha milhes de estados possveis. Quando tentmos gerar todos estes estados possveis, e escrev-los num cheiro, obtivemos tempos inndveis de gerao de estados, usando um raio de viso de 20. Alm disso, ainda que diminussemos o raio de viso para 10 obtnhamos um cheiro com aproximadamente 1GB. Assim sendo, optmos por criar um modelo de aproximao e de armazenamento de estados possveis. O gerador de estados foi implementado em Java e pode ser encontrado no cheiro GeraEstados.java. No cdigo fonte, a funo usada para guardar os estados possveis denomina-se guardarEstadosPossiveis Funo Recompensa A funo recompensa associa um valor numrico a um estado. Este valor representa a valorizao que o comilo associa ao estado em que se encontra ou que se pode encontrar, caso execute determinada aco. A recompensa calculada multiplicando algumas das caractersticas da representao de estado por um valor denominado peso. Estes produtos so depois somados para se obter a recompensa associada a um estado. Os pesos usados na funo de recompensa so dinmicos podendo ser alterados pelo utilizador, atravs do interface no Netlogo.

O sistema de recompensa funciona dando recompensas positivas a: - Comer migalha. - Comer todas as migalhas (Estado nal).

E recompensas negativas, isto , punies a: - No comer migalha, valorizando uma estratgia onde existe um custo para cada passo dado. - Morrer, sendo comido por um fantasma (Estado nal). Os valores possveis de alterar encontram-se no lado direito do programa no Netlogo. recompensaVitoria - recompensa dada quando atinge um estado nal de vitria recompensaDerrota - recompensa dada quando morto por um fantasma recompensaMigalha - recompensa/punio dada por comer/no comer migalha No cdigo fonte, a funo usada para calcular a recompensa associada a um estado denomina-se calculaRecompensaV1

Implementaes
Foram implementadas as seguintes funcionalidades principais: - Modelo de deciso Markoviano completo para PacMan. - Aprendizagem por algoritmo Q, determinista e indeterminista. - Algoritmo de iterao de Funo Valor, determina a Funo valor ptima e pode jogar com a estratgia ptima, podendo ser escolhidas as quantidades de iteraes passo a passo. - Possibilidade de escolher determinados cenrios. - Guarda a informao referente personagem de modo a que possa continuar a aprender mais tarde do ponto em que cou. Algoritmo Q Por padro o jogo feito com o algoritmo Q, podendo ser seleccionado se de forma determinista ou indeterminista pelo chooser de tipoJogo. Para seleccionar se os fantasmas agiro de forma determinista ou indeterministica seleccionar a opo no chooser tipoFantasma. O algoritmo Q actualizado a cada jogada. Para inicializar um jogo: 1) Escolher tipo de jogo. 2) Escolher cenrios, pode percorrer todos os cenrios especcos para o tipo de jogo ou seleccionar um especico. 3) Pressionar Novo Jogo. 4) Pressionar automtico para visualizar jogo em continuo ou pressionar Passo-aPasso para ver jogada a jogada. Opcionais: nonStop - o jogo no parar aquando derrota ou vitria verboso - sero apresentadas no command center estatsticas e dados referentes ao algoritmo PercentagemExplorao determina qual a percentagem de aces que sero tomadas aleatoriamente; as restantes aces sero tomadas de acordo com o maior valor de Q disponvel raioVisaoInicial - profundidade de viso que o pacman ter para os fantasmas e migalhas gamma - inuenciar a importncia de estados futuros No cdigo fonte, as funes que actualizam os valores de Q so, actualizarQ-Determ e actualizarQ-Indeterm consoante o modo de jogo seja determinista ou indeterminista respectivamente.

Algoritmo de iterao Funo Valor Visto existir um espao muito grande de estados foi criada uma funo de aproximao. Para obter a Funo Valor usado um conjunto de estados conhecidos e de estados sucessivos tambm conhecidos, estreitando assim o conjunto de estados de milhes para milhares. Para calcular a Funo de Valor pressionar o boto Funo Valor (convm inicializar o programa antes carregando no Novo jogo assim como j ter um conjunto de estados conhecidos para poder-se usar na funo de aproximao). Pode-se denir quantas iteraes queremos no calculo denindo o valor no slide passositeracoes. Assim que o algoritmo atinja a exausto, no haja mais nenhuma valor a ser alterado, avisar (caso esteja a ser corrido em modo verboso). Para executar a estratgia ptima denir o switch jogarVoptimo para On e de seguida escolher jogar Automtico ou Passo-a-Passo, podendo ser vistos os valores no Command Center caso o modo verboso esteja On. No cdigo fonte, as funes que calculam o valor dos V e determinam a aco a levar a cabo consoante o valor de V associado so respectivamente calcularVs e determinarAccaoVoptimo. Ficheiros GeraEstados.java - cdigo java para gerar todos os estados possveis. memoria.txt - guarda os valores do algoritmo Q (determinista e indeterminista). estados.txt - guarda os valores da funo de valor. estadosseguintes.txt - guarda a funo de transio (usando um modelo de funo de aproximao). pacman[n].csv - cenrios do jogo.

10

Concluses
Conseguiu-se realizar com sucesso a implementao de algoritmos de aprendizagem reforada (Algoritmo Q tanto determinista como indeterminista). Partindo de recompensas e punies maximizando a recompensa acumulada ao longo do tempo. Foi implementado tambm com sucesso o clculo da Funo de Valor ptima e a execuo da sua estratgia. Notamos que o Algoritmo Q converge mais lentamente do que a Funo Valor, mas assim que o ambiente se torna mais complexo tira vantagens por adaptar-se melhor que a melhor poltica gerada pela Funo de Valor. Usando a funo Valor para gerar uma estratgia ptima nota-se que os agentes tornam-se simplesmente reactivos. Quanto s estratgias de seleco de aco compreende-se que em situaes onde os estados ainda so desconhecidos, isto , no se explorou, convm escolher uma estratgia probabilistica a uma gananciosa. Muitas vezes escolhendo uma estratgia gananciosa a poltica resultante era pior que a poltica encontrada com uma aprendizagem com estratgia de seleco de aco probabilistica. Referente importncia da escolha das recompensas, achamos que se trata do ponto crucial para o sucesso dos algoritmos. A escolha das recompensas assim como o balano correcto entre estas pode denir uma boa estratgia de uma m. Das situaes que ns deparmos seguem as seguintes como exemplo: Caso a penalidade de derrota (ser comido por um fantasma), seja mais pequena do que a soma das penalidades por no comer migalhas, ento o Pacman escolher o fantasma, morrendo! Foi necessrio encontrar um equilbrio no valor da penalidade de morrer e a penalidade de no comer migalhas. O mesmo se passa com a recompensa por comer a ltima migalha, se for inferior soma de o Pacman andar pelo mapa ento este nunca a comer, dai a importncia da recompensa por vitria, comer a ltima migalha. De notar tambm a importncia do valor gamma, este descreve a importncia para o Pacman das recompensas imediatas sobre as futuras. Quando o gamma tem um valor perto de 0 as recompensas de futuro so vistas como insignicativas. Quando se aproxima de 1 os descontos nas recompensas tornam-se equivalentes s recompensas aditivas. O valor que empiricamente encontrmos de maior eccia, anda nos valores aproximados de 0.15 . Infelizmente no foi possvel testar com o BehaviourSpace devido complexidade do cdigo fonte. Uma vez que os estados podero chegar aos milhes, foi necessrio uma escolha minimalista nos estados e nas combinaes possveis que estes possam gerar. Quanto maior for a possibilidade do estado, maior ser o tempo para a convergncia. Quando tentmos calcular a funo de valor, gerou-se a impossibilidade de computar todos os estados possveis. Crimos eventualmente um algoritmo que calcula todos os estados, pode ser visto em: GeraEstados.java. No entanto devido ao pouco poder de computao presente, decidimos usar uma funo de aproximao que usa os estados j conhecidos e armazenados. Tendo a noo que uma vez que usamos uma funo de aproximao para achar uma poltica ptima, esta torna-se menos dedigna, notando-se
11

que medida que a complexidade aumenta o rudo intensicasse e a poltica deixa de ter eccia. De salientar que a performance dos algoritmos em estados deterministicos superior a indeterministicos, pois os ltimos resultam num conjunto de estados superiores e exigem um conjunto de experincias maior. Notando-se, por exemplo, que os algoritmos convergem mais rapidamente quando os fantasmas agem de forma determinista. Presumimos que no caso dos fantasmas possurem uma aprendizagem reforada, ento o Pacman teria muitas diculdades em nalizar com sucesso com dois fantasmas no jogo, uma vez que estes aprenderiam em conjunto uma forma de derrotar o Pacman, possivelmente encurralar-lo-iam.

12

Вам также может понравиться