Métodos de programação dinâmica para solução de problemas de
planejamento probabilístico
Renato Schattan Pereira Coelho e Leliane Nunes de Barros (Orientadora) Universidade de São Paulo (USP), Brasil
fena@cecm.usp.br, leliane@ime.usp.br
1. Introdução
Quando estudamos a tomada automática de decisão um problema comum é o de ir de uma congu-ração inicial do mundo para uma congucongu-ração de-sejada com o menor custo esperado. Se queremos resolver um problema deste tipo costumamos usar um modelo chamado de caminho estocástico mín-imo (Shortest Stochastic Path - SSP). Este mod-elo é baseado nos Processos markovianos de decisão (Markov Decision Processes - MDP), com algumas diferenças que o tornam mais interessante computa-cionalmente e mais natural para modelar este tipo de problema.
Neste artigo revisaremos os algoritmos que re-presentam o estado da arte na resolução deste tipo de problema e apontaremos o caminho que está sendo seguido nesta pesquisa. A base para os algorit-mos é o Real-Time Dynamic Programming (RTDP), que apresenta uma tática eciente para atualização assíncrona do valor dos estados. A partir desta tática, surgem dois algoritmos: o Labeled Real-Time Dynamic Programming (LRTDP), que apre-senta uma maneira interessante de marcar os estados para aumentar a velocidade de convergência do al-goritmo e o Bounded Real-Time Dynamic Program-ming (BRTDP), que utiliza duas heurísticas para ajudar na escolha dos estados que devem ser atual-izados e para saber quando a política convergiu.
2. Caminho estocástico mínimo
Baseado em um modelo muito conhecido, o dos MDPs (uma boa descrição deste modelo pode ser encontrada em [7]), foi criado um modelo chamado SSP, que nos dá uma base formal para os problemas em que estamos interessados (ir de um conjunto de estados a outro com o menor custo esperado). Este modelo tem as seguintes características [2]:
• M1 - Um conjunto de estados (S) nito ou con-tável
• M2 - Um estado inicial s0∈ S1
• M3 - Um conjunto não vazio de estados meta, SG⊆ S
• M4 - Os estados em SGsão absorventes, ou seja,
as ações tomadas nestes estados não têm custo e não levam para estados fora deste conjunto • M5 - Um conjunto de ações A e subconjuntos
de ações A(s) denidos para todos os estados s ∈ S
• M6 - Distribuições de probabilidades P (·|s, a) sobre os estados pertencentes a S dado que uma ação a ∈ A(s) foi tomada no estado s ∈ S. • M7 - Um custo, c(a, s), não negativo associado
a se executar a ação a no estado s
• M8 - Os estados são totalmente observáveis Neste modelo, o tempo é discreto e o agente deve escolher uma ação em cada instante do tempo. Tam-bém é importante, para garantir propriedades dos algoritmos, que todos os estados tenham uma pro-babilidade não nula de alcançar algum estado meta. Dado este modelo, o objetivo do agente é esco-lher, para cada estado alcançável a partir dos estados iniciais, a ação que minimiza o valor esperado dos caminhos até algum estado meta. Isto equivale a criar uma política, ou seja, uma função π : S → A que associa a cada estado a melhor ação.
Dado um problema modelado desta maneira pode-mos calcular recursivamente o custo esperado da ex-ecução de uma política a partir de um estado até a meta (Vπ(s))2como:
Vπ(s) = c(π(s), s) +X
s0∈S
P (s0|s, π(s)) ∗ Vπ(s0)
O valor ótimo de um estado (V∗(s)) é o único ponto
xo da equação de Bellman [9]: V (s) = min
a∈A(s)(c(a, s) +
X
s∈S0
P (s0|s, a) ∗ V (s0))
1Podemos estender a denição para um conjunto não vazio
de estados S0⊆ S, sem grandes mudanças nos algoritmos. 2Neste texto, para simplicar, chamaremos o custo
espera-do de um caminho a partir de um estaespera-do até a meta de valor de um estado.
Assim, a política ótima (π∗(s)) é dada por: π∗(s) = argmin a∈A(s) (c(a, s) + X s∈S0 P (s0|s, a) ∗ V∗(s0))
Pela denição, Vπ(s) = V∗(s) = 0, para todo
es-tado pertencente a SG. Este valor pode ser usado
como base da recursão no cálculo dos valores dos out-ros estados. Abaixo veremos os algoritmos que são considerados como estado da arte para a resolução de problemas neste modelo. Todos eles
3. Programação dinâmica em tempo
real
A base para os algoritmos que representam o estado da arte na resolução de SSPs é o Real-Time Dynamic Programming (RTDP) [1], que é uma maneira e-ciente de atualizar os valores dos estados de maneira assíncrona. Como utilizaremos os valores dos esta-dos muitas vezes, toesta-dos os algoritmos utilizam a téc-nica de programação dinâmica, armazenando o úl-timo valor calculado para um estado em Vπ(s).
A idéia básica do RTDP é fazer várias simulações da execução da política e atualizar o valor dos esta-dos ao mesmo tempo em que a política é atualizada. A política escolhida pelos algoritmos é a política gu-losa (πV), dada por:
πV := argmin a∈A(s)
(c(a, s) +X
s∈S0
P (s0|s, a) ∗ Vπ(s0))
Cada simulação começa no estado inicial e pára quando chega a algum estado meta. Dado um es-tado, o próximo estado a ser visitado é dado direta-mente por P (·|s, πV(s)). O valor de Vπ(s)é
atua-lizado de acordo com a nova política antes de se pas-sar para o próximo estado.
Esta maneira de escolher quais estados terão seu valor atualizado é muito poderosa porque os esta-dos que inuenciam mais no valor da esperança são atualizados mais vezes.
Este algoritmo tem algumas propriedades interes-santes [1]:
• Cada uma das simulações termina em um número nito de passos.
• Se os valores de Vπ(s)forem monotônicos e
ad-missíveis (menores que V∗(s)) quando
inicial-izados, essas propriedades se mantêm ao longo das atualizações dos valores de Vπ(s).
• As atualizações de um estado não diminuem o valor de Vπ(s).
• Se os valores dos estados forem inicializados de maneira correta, um número sucientemente grande de simulações nos deixará com Vπ(s) =
V∗(s).
No artigo original [1] não se deniu uma condição de parada para esta técnica, entretanto, para que pudessem ser realizadas comparações com outros al-goritmos, considera-se que o algoritmo pára quando o estado inicial já convergiu. A convergência de um estado será discutida adiante.
4. Programação dinâmica em tempo
real com marcações
O que torna o RTDP tão poderoso é também sua grande falha. Escolher o estado que terá seu valor at-ualizado de acordo com P (·|s, a) faz com que o valor de Vπ(s) se aproxime rapidamente de V∗(s).
En-tretanto, a convergência do algoritmo é muito lenta, dado que os estados que têm pouca probabilidade de serem alcançados demoram para ter seu valor atual-izado e, consequentemente, demoram para convergir. A maneira encontrada pelo Labeled Real-Time Dy-namic Programming (LRTDP) [2] para aumentar a velocidade de convergência do RTDP é marcar como resolvidos os estados que já tenham um valor su-cientemente próximo ao valor ótimo. Para isto uti-lizamos o erro de Bellman, denido como:
E(s) := |Vπ(s)− min
a∈A(s)
(c(a, s)+X
s0∈S
P (s0|s, a)∗Vπ(s0))| que representa a diferença entre o valor armazenado para um estado e o novo valor que será obtido através da escolha gulosa de ação.
Embora para SSPs não haja uma maneira fácil de calcular a distância entre o valor ótimo de um estado e o valor atual a partir do erro de Bellman, ele nos indica quando a função não está variando muito. Assim, o LRTDP marca os estados como resolvidos quando o erro de Bellman é menor do que algum > 0para o estado e para todos os estados alcançáveis a partir dele através da política gulosa. Se, ao nal da execução do algoritmo, o valor encontrado para os estados estiver muito longe do valor ótimo, podemos rodar novamente o algoritmo com um menor que o inicial.
A existência de loops impossibilita uma tática mais intuitiva, que marque os estados como resolvi-dos quando os seus sucessores já tiverem sido mar-cados, uma vez que este esquema deixaria de marcar alguns estados que já tivessem convergido.
Para tentar marcar um estado como resolvido o LRTDP usa o método checkSolved 1. Esse método
faz uma busca em profundidade nos estados que po-dem ser alcançados, através da política gulosa, a par-tir do estado que se está testando. Quando visitamos um estado temos três situações possíveis: o estado pode ser um estado meta, o erro de Bellman do es-tado pode ser menor ou igual a ou o erro de Bellman pode ser maior do que . Quando a busca encontra um estado meta ela termina a busca naquele ramo e muda de ramo. Quando a busca encontra estados que tenham o erro de Bellman menor ou igual a ela põe seus sucessores em uma pilha e continua a busca naquele ramo. E quando a busca encontra um estado que tenha o erro de Bellman maior do que o algoritmo sabe que o estado estudado não convergiu, mas por questões de eciência ele continua a busca em outro ramo.
Assim, após uma chamada à checkSolved temos duas possibilidades: ou nenhum dos estados visita-dos tinha o erro de Bellman maior do que e então, por denição, o estado e todos os seus sucessores convergiram e podem ser marcados ou existia pelo menos um estado com erro de Bellman maior do que e, quando os valores dos estados forem atualiza-dos na ordem reversa em que foram visitaatualiza-dos, pelo menos um estado (o que tinha erro de Bellman maior do que ) terá seu valor modicado em mais do que .
Dessa maneira, podemos resolver um SSP sim-plesmente chamando a função checkSolved para o estado inicial até que ele tenha convergido. Este método não fará mais do que −1P
s∈SV
∗(s) − h(s)
chamadas à função checkSolved, em que h(s) é a heurística utilizada para inicializar os valores de Vπ(s).
Entretanto, como o estado inicial está muito longe da meta, ele demora para convergir e não podemos marcar os outros estados como resolvidos até que ele tenha convergido. Assim, não aproveitamos o esquema de rotulação dos estados.
Por esta razão o LRTDP implementa um outro método (LRTDPTrial 2) que é muito similar às sim-ulações realizadas pelo RTDP. Existem duas difer-enças: os estados visitados são guardados em uma pilha e, quando a simulação atinge um estado meta ou um estado que já tenha convergido,a simulação pára e chama-se o método checkSolved para os esta-dos, enquanto eles são desempilhados. Quando al-gum estado retorna falso outra simulação é iniciada. Utilizando estes dois métodos temos uma maneira eciente de vericar se os estados já convergiram e conseguimos aumentar a velocidade de convergência do algoritmo, já que os estados com pouca prob-abilidade de serem alcançados serão visitados nas chamadas à checkSolved.
Algoritmo 1: checkSolved Entrada: Um SSP, ,s
Saída: Verdadeiro se s tiver convergido, falso c.c.
resposta = verdadeiro
1
aberto = P ilhaV azia
2
f echado = P ilhaV azia
3
se ¬s.Marcado então aberto.push(s)
4
enquanto aberto 6= P ilhaV azia faça
5
s = aberto.pop()
6
f echado.push(s)
7
//verica o erro de Bellman
8 se s.erro(a) > então 9 resposta = f also 10 continue 11 m se 12 //expande o estado 13 a = s.acaoGulosa() 14
para todo s0 tal que P (s0|s, a) > 0faça 15
se ¬s0.M arcadoe ¬Em(s0, aberto ∪ 16 f echado)então aberto.push(s0) 17 m se 18 m para todo 19
se resposta = verdadeiro então
20
//marca os estados alcançáveis a partir
21
da política gulosa
para todo s ∈ fechado faça
22 s.M arcado = verdadeiro 23 m para todo 24 m se 25 senão 26
enquanto fechado 6= P ilhaV azia faça
27 s = f echado.pop() 28 s.update() 29 m enqto 30 m se 31 m enqto 32 Resultado: resposta
Algoritmo 2: RTDPTrial Entrada: Um SSP, ,s visitados = P ilhaV azia
1
enquanto ¬s.Meta() faça
2
//põe o estado na pilha
3
visitados.push(s)
4
//simula a execução da política gulosa e
5 atualiza o estado a = s.acaoGulosa() 6 s.update() 7 s = s.escolhaP roximoEstado(a) 8 m enqto 9
enquanto visitados 6= P ilhaV azia faça
10
s = visitados.pop()
11
se ¬checkSolved(s, ) então break
12
m enqto
13
5. Programação dinâmica em tempo
real com limitantes
A principal característica do Bounded Real-Time Dynamic Programming (BRTDP) [8] é manter duas heurísticas do valor do estado, uma inferior (VL(s),
similar à Vπ(s)) e uma superior (VU(s)). Utilizando
estas duas heurísticas e analisando a diferença entre elas o algoritmo consegue: melhorar a maneira de selecionar os estados que terão seus valores atualiza-dos, facilitar a vericação da distância entre o valor da heurística e o valor ótimo do estado e diminuir o número de estados que precisam ser visitados.
Neste algoritmo o conceito de convergência de um estado é diferente do utilizado no LRTDP. Neste caso, consideramos que um estado convergiu quando a diferença entre a heurística superior e a inferior é menor do que algum > 0. Neste caso sabemos que quando um estado convergiu a nossa estimativa do valor do estado não tem um erro maior do que em relação ao valor ótimo.
O BRTDP utiliza um algoritmo muito parecido com o do RTDP. A sua principal função é uma sim-ulação da execução da política gulosa (em relação à heurística inferior). Entretanto, a escolha do próx-imo estado a ser atualizado é feita através do valor normalizado de P (s0|s, a)∗(VU(s0)−VL(s0))e a
sim-ulação pára quando se atinge um estado meta ou quando se atinge um estado que já tenha convergido. O algoritmo pára de fazer simulações quando o es-tado inicial já convergiu, ou seja, VU(s
0) − VL(s0) <
.
As atualizações de VU(s) e VL(s) são feitas da
mesma maneira que as atualizações de Vπ(s), isto é:
VU(s) = min a∈A(s) (c(a, s) +X s0∈S P (s0|s, a) ∗ VU(s0)) VL(s) = min a∈A(s)(c(a, s) + X s0∈S P (s0|s, a) ∗ VL(s0))
Assim como no RTDP e no LRTDP as atualiza-ções dos estados preservam a monotonicidade e a ad-missibilidade das heurísticas, o que nos mostra que o algoritmo pára após um número nito de simu-lações e que ele não precisa visitar todos os estados em S e, muitas vezes, também não precisa visitar to-dos os estato-dos alcançáveis a partir de s0 seguindo a
política gulosa (principalmente quando há uma prob-abilidade muito baixa de transição para estes esta-dos) [8].
O ponto fraco deste algoritmo é o cálculo da heurística superior. É muito fácil calcular uma heurística inferior para V∗(s), por exemplo, tomando
h(s) = 0 ou h(s) = mina∈A(s)c(a, s). Entretanto, o
cálculo de uma heurística superior pode fazer com que o algoritmo tenha que visitar todo o espaço de estados [8]. Assim, muitas vezes o custo de se calcu-lar uma heurística superior é maior do que os ganhos de se utilizar o BRTDP.
6. Considerações nais
Neste artigo mostramos um modelo muito interes-sante, o SSP, que modela de maneira eciente os problemas nos quais queremos ir de uma congu-ração inicial a uma congucongu-ração nal do mundo com o menor custo esperado. Modelar o problema desta maneira possibilita que, muitas vezes, nem todos os estados do mundo sejam visitados, gerando uma grande economia de tempo em relação aos resolve-dores de MDPs. Entretanto, frequentemente temos diculdades em modelar um problema com probabil-idades precisas de transição. Por isso, nesta iniciação cientíca o aluno está estudando um modelo recen-temente criado [5] que estende o SSP ao possibili-tar que sejam fornecidos intervalos de probabilidade para as transições entre estados. Durante a inici-ação cientíca pretendemos adaptar o LRTDP para que ele resolva problemas deste novo modelo SSPST (Shortest Stochastic Path with Set Transitions).
O RTDP apresenta uma técnica muito importante e atualmente bastante difundida para escolher quais estados devem ter seu valor atualizado. Entretanto, esta mesma tática faz com que ele tenha uma con-vergência demorada. Assim, se quisermos impor um limite curto de tempo para processamento, o RTDP pode nos dar uma resposta melhor que os outros al-goritmos, mas se quisermos uma resposta ótima (ou
sub-ótima) o RTDP levará mais tempo do que os outros algoritmos.
O LRTDP se aproveita da técnica do RTDP e im-plementa uma função que marca os estados como resolvidos para que eles não precisem ser visitados novamente. Essa função gera um pequeno overhead e, por isso, o LRTDP costuma devolver políticas um pouco piores do que o RTDP, quando o tempo de execução é curto. Entretanto, a velocidade de con-vergência é extremamente maior do que a do RTDP. O BRTDP tem três propriedades interessantes: a facilidade de vericar se um estado convergiu ou não; o número reduzido de estados que precisam ser vis-itados (mesmo quando comparado com o RTDP e o LRTDP que também não precisam visitar todo o es-paço de estados); e a técnica aprimorada de seleção de estados que devem ser atualizados, que favorece os estados sobre os quais se tem pouca informação, além dos que têm grande probabilidade de serem al-cançados.
Apesar destas propriedades, o custo de se calcular uma heurística superior pode facilmente fazer com que o algoritmo deixe de ser interessante quando comparado com os outros.
Esta pesquisa conta com o apoio da FAPESP através do processo 2008/04728-0.
Referências
[1] Andrew G. Barto, Steven J. Bradtke, and Satinder P. Singh, Learning to Act Using Real-Time Dynamic Pro-gramming, Articial Intelligence 72 (1995), 81138. [2] Blai Bonet and Héctor Gener, Labeled RTDP:
Improv-ing the Convergence of Real-Time Dynamic Program-ming, International Conference on Automated Planning and Scheduling, 2003, pp. 1221.
[3] Craig Boutilier, Thomas Dean, and Steve Hanks, Decision-Theoretic Planning: Structural Assumptions and Computational Leverage, Journal of Articial Intel-ligence Research 11 (1999), 194.
[4] Dana S. Nau, Malik Ghallab, and Paolo Traverso, Au-tomated Planning: Theory and Practice, Morgan Kauf-mann Publishers, 2004.
[5] Felipe W. Trevizan, Fabio G. Cozman, and Leliane N. Barros, Planning under Risk and Knightian Uncertainty, International Joint Conference on Articial Intelligence, 2007, pp. 20232028.
[6] Felipe W. Trevizan, Um modelo unicado para planeja-mento sob incerteza, Instituto de Matemática e Estatís-tica, São Paulo, 2006.
[7] Martin L. Puterman, Markov Decision Processes - Dis-crete Stochastic Dynamic Programming, John, Wyley and Sons, Inc., 1994.
[8] H. Brendan McMahan, Maxim Likhachev, and Georey J. Gordon, Bounded Real-Time Dynamic Programming: RTDP with monotone upper bounds and performance guarantees, International Conference on Machine Learn-ing, 2005, pp. 569576.
[9] Richard E. Bellman, Dynamic Programming, Princeton University Press, 1957.
[10] Stuart Russel and Peter Norvig, Articial Intelligence: A Modern Approach, Prentice Hall, Englewood Clis, New Jersey, 1995.