SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Universidade Federal do Rio Grande do Sul - UFRGS
Programa de Pós-Graduação em Computação
Mestrado em Ciência da Computação
Disciplina: Aprendizagem de Máquina
Professor: Paulo Engel
Aluno: Mauricio Volkweis Astiazara
Comparação de Algoritmos Baseados em Q-Learning
Para comparar dois algoritmos de aprendizagem baseados em Q-Learning foi utilizado o
problema do “Penhasco” (Cliff-walking). Neste problema, um agente situado numa grade deve
aprender a sair de uma célula inicial e chegar a uma célula final utilizando quatro ações possível:
mover-se para cima, mover-se para baixo, mover-se para direita e mover-se para esquerda. No
caminho existem alguma células que presentam um penhasco. Caso o agente “caia” no penhasco,
ele volta a célula inicial. A medida que o agente atua no ambiente, recebe recompensas (ou
reforços). As recompensas negativas podem ser interpretadas como punições. O agente recebe como
recompensa por chegar a célula final o valor zero. Por andar em outras células sem cair no penhasco
recebe -1. Por cair no penhasco, -100. Se o agente tentar sair dos limites da grade, ele recebe o
reforço mas fica na mesma célula. Existe um limite de passos que o agente pode dar: 100. Depois
disso, ele volta ao início. Os algoritmos implementados para serem comparados neste problema de
aprendizagem foram o Q-Learning tradicional e a derivação Q-Lambda de Watkins.
A linguagem de programação selecionada para a implementação foi C-Sharp. Foi realizada
uma modelagem conceitual da aplicação produzindo o seguinte diagrama de classes em notação
UML:
Na implementação, além dos parâmetros dos referidos algoritmos, foram tornados parâmetros
todas as especificações do problema do penhasco, tornando possível alterar valores de recompensas,
limites e também a própria grade, possibilitando assim a criação de mapas diferentes.
A seleção da ação a ser executada foi implementada em ambos os algoritmos utilizando uma
política épsilon-gulosa, onde épsilon representa a probabilidade do agente executar uma ação
randômica com objetivo exploratório em detrimento de uma ação gulosa (com a maior recompensa
conhecida). Se épsilon for zero o agente é totalmente guloso. Se épsilon for 1, o agente é
totalmente randômico. O código-fonte abaixo implementa esta seleção de ação.
public Acao ObterAcao(int pEstado)
{
ItensQ itens = ObterItensQ(pEstado);
ItemQ item;
if (_sorteador.NextDouble() < _epsilon)
{
item=itens.Item(_sorteador.Next(itens.Total));
}
else
{
item=itens.ObterMelhor();
}
_ultimoSelecionado = item;
return item.Acao;
}
Para o algoritmo Q-Learning, a atualização da tabela Q foi implementada através do código-
fonte abaixo:
public void ReceberRecompensa(double pRecompensa, int pNovoEstado)
{
ItensQ futuro = ObterItensQ(pNovoEstado);
_ultimoSelecionado.Recompensa = _ultimoSelecionado.Recompensa
+ _alfa *
(pRecompensa
+ _gama * futuro.ObterMelhor().Recompensa
- _ultimoSelecionado.Recompensa);
}
Para o algoritmo Q-Lambda, a atualização da tabela Q foi implementada através do código-
fonte abaixo:
public void ReceberRecompensa(double pRecompensa, int pNovoEstado)
{
_proximoEstado = pNovoEstado;
// a = _ultimoSelecionado
// a' = aLinha
// a* = aOtimo
ItemQ aLinha = ObterAcaoPolitica(pNovoEstado);
ItensQ futuro = _q.Item(pNovoEstado);
ItemQ aOtima = futuro.ObterMelhor();
double Sigma = pRecompensa
+ _gama * aOtima.Recompensa
- _ultimoSelecionado.Recompensa;
_ultimoSelecionado.Erro++;
foreach (ItensQ itens in _q)
{
foreach (ItemQ item in itens)
{
item.Recompensa = item.Recompensa
+ _alfa * Sigma * item.Erro;
if (aLinha == aOtima)
{
item.Erro = _gama * _lambda * item.Erro;
}
else
{
item.Erro = 0;
}
}
}
_proximaAcao = aLinha;
}
Foram realizadas 10 execuções dos algoritmos com as seguintes configurações: Q-Learning,
Q-Lambda com lambda = 1, Q-Lambda com lambda = 3 e Q-Lambda com lambda = 7. Os demais
parâmetros foram iguais para todas as execuções, com os valores épsilon=0,001, alfa=0,5 e
gama=0,5. O total de recompensa e o episódio médio de convergência para cada configuração são
mostrados na tabela abaixo:
Configuração Total de
Recompensa
Episódio Médio de
Convergência
Q-Learning -65858 77,6
Q-Lambda com lambda = 0 -61401 78,1
Q-Lambda com lambda = 0.5 -62510 41,7
Q-Lambda com lambda = 1 -60950 29,1
Estes mesmos dados são exibidos nos gráficos abaixo:
Q-Learning Q-Lambda (0) Q-Lambda (0.5) Q-Lambda (1)
-42000
-41000
-40000
-39000
-38000
-37000
-36000
-35000
-34000
Total de Recompensa em 10 Episódios
Com essa amostragem, que é muito baixa (apenas 10 execuções), aparentemente pode-se
concluir que o algoritmo Q-Lambda com o parâmetro lambda = 0 possui um desempenho muito
semelhante ao Q-Learning tradicional. Mas a medida que o parâmetro lambda é aumentado, o
desempenho melhora. Com lambda = 1, o desempenho do Q-Lambda é muito superior ao Q-
Learning tradicional.
Q-Learning Q-Lambda (0) Q-Lambda (0.5) Q-Lambda (1)
0
10
20
30
40
50
60
70
80
90
Episódio Médio de Convergência em 10 Episódios

Mais conteúdo relacionado

Mais de Mauricio Volkweis Astiazara

Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Mauricio Volkweis Astiazara
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Mauricio Volkweis Astiazara
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeMauricio Volkweis Astiazara
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeMauricio Volkweis Astiazara
 

Mais de Mauricio Volkweis Astiazara (20)

Como Programar Melhor em Java
Como Programar Melhor em JavaComo Programar Melhor em Java
Como Programar Melhor em Java
 
Sistemas Imunológicos Artificiais
Sistemas Imunológicos ArtificiaisSistemas Imunológicos Artificiais
Sistemas Imunológicos Artificiais
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Classificador de Documentos Naïve Bayes
Classificador de Documentos Naïve BayesClassificador de Documentos Naïve Bayes
Classificador de Documentos Naïve Bayes
 
Visão Computacional
Visão ComputacionalVisão Computacional
Visão Computacional
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre Saúde
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre Saúde
 
Processamento de Imagens
Processamento de ImagensProcessamento de Imagens
Processamento de Imagens
 
Percepção, Movimento e Ação
Percepção, Movimento e AçãoPercepção, Movimento e Ação
Percepção, Movimento e Ação
 
Memória e Aprendizagem
Memória e AprendizagemMemória e Aprendizagem
Memória e Aprendizagem
 
Gerência de Requisitos
Gerência de RequisitosGerência de Requisitos
Gerência de Requisitos
 
Testes de Sistema
Testes de SistemaTestes de Sistema
Testes de Sistema
 
Telefonia Móvel
Telefonia MóvelTelefonia Móvel
Telefonia Móvel
 
Telefonia Móvel
Telefonia MóvelTelefonia Móvel
Telefonia Móvel
 
Realidade Virtual
Realidade VirtualRealidade Virtual
Realidade Virtual
 
Protótipo de Simulador de Elevadores
Protótipo de Simulador de ElevadoresProtótipo de Simulador de Elevadores
Protótipo de Simulador de Elevadores
 
Protótipo de Simulador de Elevadores
Protótipo de Simulador de ElevadoresProtótipo de Simulador de Elevadores
Protótipo de Simulador de Elevadores
 
Planejamento de Informática
Planejamento de InformáticaPlanejamento de Informática
Planejamento de Informática
 
Planejamento de Informática
Planejamento de InformáticaPlanejamento de Informática
Planejamento de Informática
 

Comparação de Algoritmos Baseados em Q-Learning

  • 1. Universidade Federal do Rio Grande do Sul - UFRGS Programa de Pós-Graduação em Computação Mestrado em Ciência da Computação Disciplina: Aprendizagem de Máquina Professor: Paulo Engel Aluno: Mauricio Volkweis Astiazara Comparação de Algoritmos Baseados em Q-Learning Para comparar dois algoritmos de aprendizagem baseados em Q-Learning foi utilizado o problema do “Penhasco” (Cliff-walking). Neste problema, um agente situado numa grade deve aprender a sair de uma célula inicial e chegar a uma célula final utilizando quatro ações possível: mover-se para cima, mover-se para baixo, mover-se para direita e mover-se para esquerda. No caminho existem alguma células que presentam um penhasco. Caso o agente “caia” no penhasco, ele volta a célula inicial. A medida que o agente atua no ambiente, recebe recompensas (ou reforços). As recompensas negativas podem ser interpretadas como punições. O agente recebe como recompensa por chegar a célula final o valor zero. Por andar em outras células sem cair no penhasco recebe -1. Por cair no penhasco, -100. Se o agente tentar sair dos limites da grade, ele recebe o reforço mas fica na mesma célula. Existe um limite de passos que o agente pode dar: 100. Depois disso, ele volta ao início. Os algoritmos implementados para serem comparados neste problema de aprendizagem foram o Q-Learning tradicional e a derivação Q-Lambda de Watkins. A linguagem de programação selecionada para a implementação foi C-Sharp. Foi realizada uma modelagem conceitual da aplicação produzindo o seguinte diagrama de classes em notação UML: Na implementação, além dos parâmetros dos referidos algoritmos, foram tornados parâmetros todas as especificações do problema do penhasco, tornando possível alterar valores de recompensas, limites e também a própria grade, possibilitando assim a criação de mapas diferentes. A seleção da ação a ser executada foi implementada em ambos os algoritmos utilizando uma
  • 2. política épsilon-gulosa, onde épsilon representa a probabilidade do agente executar uma ação randômica com objetivo exploratório em detrimento de uma ação gulosa (com a maior recompensa conhecida). Se épsilon for zero o agente é totalmente guloso. Se épsilon for 1, o agente é totalmente randômico. O código-fonte abaixo implementa esta seleção de ação. public Acao ObterAcao(int pEstado) { ItensQ itens = ObterItensQ(pEstado); ItemQ item; if (_sorteador.NextDouble() < _epsilon) { item=itens.Item(_sorteador.Next(itens.Total)); } else { item=itens.ObterMelhor(); } _ultimoSelecionado = item; return item.Acao; } Para o algoritmo Q-Learning, a atualização da tabela Q foi implementada através do código- fonte abaixo: public void ReceberRecompensa(double pRecompensa, int pNovoEstado) { ItensQ futuro = ObterItensQ(pNovoEstado); _ultimoSelecionado.Recompensa = _ultimoSelecionado.Recompensa + _alfa * (pRecompensa + _gama * futuro.ObterMelhor().Recompensa - _ultimoSelecionado.Recompensa); } Para o algoritmo Q-Lambda, a atualização da tabela Q foi implementada através do código- fonte abaixo: public void ReceberRecompensa(double pRecompensa, int pNovoEstado) { _proximoEstado = pNovoEstado; // a = _ultimoSelecionado // a' = aLinha // a* = aOtimo ItemQ aLinha = ObterAcaoPolitica(pNovoEstado); ItensQ futuro = _q.Item(pNovoEstado); ItemQ aOtima = futuro.ObterMelhor(); double Sigma = pRecompensa + _gama * aOtima.Recompensa - _ultimoSelecionado.Recompensa; _ultimoSelecionado.Erro++; foreach (ItensQ itens in _q) { foreach (ItemQ item in itens) { item.Recompensa = item.Recompensa + _alfa * Sigma * item.Erro; if (aLinha == aOtima) { item.Erro = _gama * _lambda * item.Erro; } else { item.Erro = 0; } }
  • 3. } _proximaAcao = aLinha; } Foram realizadas 10 execuções dos algoritmos com as seguintes configurações: Q-Learning, Q-Lambda com lambda = 1, Q-Lambda com lambda = 3 e Q-Lambda com lambda = 7. Os demais parâmetros foram iguais para todas as execuções, com os valores épsilon=0,001, alfa=0,5 e gama=0,5. O total de recompensa e o episódio médio de convergência para cada configuração são mostrados na tabela abaixo: Configuração Total de Recompensa Episódio Médio de Convergência Q-Learning -65858 77,6 Q-Lambda com lambda = 0 -61401 78,1 Q-Lambda com lambda = 0.5 -62510 41,7 Q-Lambda com lambda = 1 -60950 29,1 Estes mesmos dados são exibidos nos gráficos abaixo: Q-Learning Q-Lambda (0) Q-Lambda (0.5) Q-Lambda (1) -42000 -41000 -40000 -39000 -38000 -37000 -36000 -35000 -34000 Total de Recompensa em 10 Episódios
  • 4. Com essa amostragem, que é muito baixa (apenas 10 execuções), aparentemente pode-se concluir que o algoritmo Q-Lambda com o parâmetro lambda = 0 possui um desempenho muito semelhante ao Q-Learning tradicional. Mas a medida que o parâmetro lambda é aumentado, o desempenho melhora. Com lambda = 1, o desempenho do Q-Lambda é muito superior ao Q- Learning tradicional. Q-Learning Q-Lambda (0) Q-Lambda (0.5) Q-Lambda (1) 0 10 20 30 40 50 60 70 80 90 Episódio Médio de Convergência em 10 Episódios