Métodos de programação dinâmica para solução de problemas de
planejamento probabilístico
• M2 - Um estado inicial s0 ∈ S 1
Renato Schattan Pereira Coelho e
Leliane Nunes de Barros (Orientadora)
• M3 - Um conjunto não vazio de estados meta,
SG ⊆ S
Universidade de São Paulo (USP), Brasil
[email protected], [email protected]
• M4 - Os estados em SG são absorventes, ou seja,
as ações tomadas nestes estados não têm custo
e não levam para estados fora deste conjunto
1. Introdução
• M5 - Um conjunto de ações A e subconjuntos
de ações A(s) denidos para todos os estados
s∈S
Quando estudamos a tomada automática de decisão
um problema comum é o de ir de uma conguração inicial do mundo para uma conguração desejada com o menor custo esperado. Se queremos
resolver um problema deste tipo costumamos usar
um modelo chamado de caminho estocástico mínimo (Shortest Stochastic Path - SSP). Este modelo é baseado nos Processos markovianos de decisão
(Markov Decision Processes - MDP), com algumas
diferenças que o tornam mais interessante computacionalmente e mais natural para modelar este tipo
de problema.
Neste artigo revisaremos os algoritmos que representam 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 algoritmos é 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 RealTime Dynamic Programming (LRTDP), que apresenta uma maneira interessante de marcar os estados
para aumentar a velocidade de convergência do algoritmo e o Bounded Real-Time Dynamic Programming (BRTDP), que utiliza duas heurísticas para
ajudar na escolha dos estados que devem ser atualizados e para saber quando a política convergiu.
• 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. Também é importante, para garantir propriedades dos
algoritmos, que todos os estados tenham uma probabilidade não nula de alcançar algum estado meta.
Dado este modelo, o objetivo do agente é escolher, 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 podemos calcular recursivamente o custo esperado da execução de uma política a partir de um estado até a
meta (V π (s))2 como:
V π (s) = c(π(s), s) +
2. Caminho estocástico mínimo
X
P (s0 |s, π(s)) ∗ V π (s0 )
s0 ∈S
O valor ótimo de um estado (V ∗ (s)) é o único ponto
xo da equação de Bellman [9]:
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]:
V (s) = min (c(a, s) +
a∈A(s)
X
P (s0 |s, a) ∗ V (s0 ))
s∈S 0
1 Podemos estender a denição para um conjunto não vazio
de estados S0 ⊆ S , sem grandes mudanças nos algoritmos.
2 Neste texto, para simplicar, chamaremos o custo esperado de um caminho a partir de um estado até a meta de valor
de um estado.
• M1 - Um conjunto de estados (S ) nito ou con-
tável
95
Assim, a política ótima (π ∗ (s)) é dada por:
π ∗ (s) = argmin(c(a, s) +
X
a∈A(s)
s∈S 0
• 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).
P (s0 |s, a) ∗ V ∗ (s0 ))
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 algoritmos, considera-se que o algoritmo pára quando
o estado inicial já convergiu. A convergência de um
estado será discutida adiante.
Pela denição, V π (s) = V ∗ (s) = 0, para todo estado pertencente a SG . Este valor pode ser usado
como base da recursão no cálculo dos valores dos outros estados. Abaixo veremos os algoritmos que são
considerados como estado da arte para a resolução
de problemas neste modelo. Todos eles
4. Programação dinâmica em tempo
real com marcações
3. Programação dinâmica em tempo
real
O que torna o RTDP tão poderoso é também sua
grande falha. Escolher o estado que terá seu valor atualizado de acordo com P (·|s, a) faz com que o valor
de V π (s) se aproxime rapidamente de V ∗ (s). Entretanto, 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 atualizado e, consequentemente, demoram para convergir.
A maneira encontrada pelo Labeled Real-Time Dynamic Programming (LRTDP) [2] para aumentar a
velocidade de convergência do RTDP é marcar como
resolvidos os estados que já tenham um valor sucientemente próximo ao valor ótimo. Para isto utilizamos o erro de Bellman, denido como:
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 eciente de atualizar os valores dos estados de maneira
assíncrona. Como utilizaremos os valores dos estados muitas vezes, todos os algoritmos utilizam a técnica de programação dinâmica, armazenando o último 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 estados ao mesmo tempo em que a política é atualizada.
A política escolhida pelos algoritmos é a política gulosa (πV ), dada por:
πV := argmin(c(a, s) +
a∈A(s)
X
P (s0 |s, a) ∗ V π (s0 ))
E(s) := |V π (s)− min (c(a, s)+
a∈A(s)
s∈S 0
X
P (s0 |s, a)∗V π (s0 ))|
s0 ∈S
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 >
0 para 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 resolvidos quando os seus sucessores já tiverem sido marcados, 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
Cada simulação começa no estado inicial e pára
quando chega a algum estado meta. Dado um estado, o próximo estado a ser visitado é dado diretamente por P (·|s, πV (s)). O valor de V π (s) é atualizado de acordo com a nova política antes de se passar para o próximo estado.
Esta maneira de escolher quais estados terão seu
valor atualizado é muito poderosa porque os estados que inuenciam mais no valor da esperança são
atualizados mais vezes.
Este algoritmo tem algumas propriedades interessantes [1]:
• Cada uma das simulações termina em um
número nito de passos.
• Se os valores de V π (s) forem monotônicos e admissí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).
96
faz uma busca em profundidade nos estados que podem ser alcançados, através da política gulosa, a partir 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 estado 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 visitados 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 atualizados na ordem reversa em que foram visitados, 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 simplesmente chamando a função checkSolved para o
estado inicial até que ele tenha P
convergido. Este
método não fará mais do que −1 s∈S V ∗ (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 simulações realizadas pelo RTDP. Existem duas diferenç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 estados, enquanto eles são desempilhados. Quando algum 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 probabilidade 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.
1 resposta = verdadeiro
2 aberto = P ilhaV azia
3 f echado = P ilhaV azia
4 se ¬s.M arcado então aberto.push(s)
5 enquanto aberto 6= P ilhaV azia faça
6
s = aberto.pop()
7
f echado.push(s)
8
//verica o erro de Bellman
9
se s.erro(a) > então
10
resposta = f also
11
continue
12
m se
13
//expande o estado
14
a = s.acaoGulosa()
15
para todo s0 tal que P (s0 |s, a) > 0 faça
16
se ¬s0 .M arcado e ¬Em(s0 , aberto ∪
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
97
f echado) então
aberto.push(s0 )
m se
m para todo
se resposta = verdadeiro então
//marca os estados alcançáveis a partir
da política gulosa
para todo s ∈ f echado faça
s.M arcado = verdadeiro
m para todo
m se
senão
enquanto f echado 6= P ilhaV azia faça
s = f echado.pop()
s.update()
m enqto
m se
m enqto
Resultado: resposta
Algoritmo 2: RTDPTrial
Entrada: Um SSP, ,s
1 visitados = P ilhaV azia
2 enquanto ¬s.M eta() faça
3
//põe o estado na pilha
4
visitados.push(s)
5
//simula a execução da política
6
7
8
9
10
11
12
13
atualiza o estado
V U (s) = min (c(a, s) +
a∈A(s)
V L (s) = min (c(a, s) +
a∈A(s)
gulosa e
m enqto
enquanto visitados 6= P ilhaV azia faça
m enqto
P (s0 |s, a) ∗ V U (s0 ))
s0 ∈S
X
P (s0 |s, a) ∗ V L (s0 ))
s0 ∈S
Assim como no RTDP e no LRTDP as atualizações dos estados preservam a monotonicidade e a admissibilidade das heurísticas, o que nos mostra que
o algoritmo pára após um número nito de simulações e que ele não precisa visitar todos os estados
em S e, muitas vezes, também não precisa visitar todos os estados alcançáveis a partir de s0 seguindo a
política gulosa (principalmente quando há uma probabilidade muito baixa de transição para estes estados) [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 calcular uma heurística superior é maior do que os ganhos
de se utilizar o BRTDP.
a = s.acaoGulosa()
s.update()
s = s.escolhaP roximoEstado(a)
s = visitados.pop()
se ¬checkSolved(s, )
X
então break
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 (V L (s),
similar à V π (s)) e uma superior (V U (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 atualizados, 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 simulação da execução da política gulosa (em relação à
heurística inferior). Entretanto, a escolha do próximo estado a ser atualizado é feita através do valor
normalizado de P (s0 |s, a)∗(V U (s0 )−V L (s0 )) e a simulaçã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 estado inicial já convergiu, ou seja, V U (s0 )−V L (s0 ) <
.
As atualizações de V U (s) e V L (s) são feitas da
mesma maneira que as atualizações de V π (s), isto é:
6. Considerações nais
Neste artigo mostramos um modelo muito interessante, o SSP, que modela de maneira eciente os
problemas nos quais queremos ir de uma conguração inicial a uma conguraçã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 resolvedores de MDPs. Entretanto, frequentemente temos
diculdades em modelar um problema com probabilidades precisas de transição. Por isso, nesta iniciação
cientíca o aluno está estudando um modelo recentemente criado [5] que estende o SSP ao possibilitar que sejam fornecidos intervalos de probabilidade
para as transições entre estados. Durante a iniciaçã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 convergência demorada. Assim, se quisermos impor um
limite curto de tempo para processamento, o RTDP
pode nos dar uma resposta melhor que os outros algoritmos, mas se quisermos uma resposta ótima (ou
98
sub-ótima) o RTDP levará mais tempo do que os
outros algoritmos.
O LRTDP se aproveita da técnica do RTDP e implementa 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 convergê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 visitados (mesmo quando comparado com o RTDP e o
LRTDP que também não precisam visitar todo o espaç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 alcanç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.
[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.
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 Programming, Articial Intelligence 72 (1995), 81138.
[2] Blai Bonet and Héctor Gener, Labeled RTDP: Improv-
ing the Convergence of Real-Time Dynamic Programming, 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 Intelligence Research 11 (1999), 194.
[4] Dana S. Nau, Malik Ghallab, and Paolo Traverso, Automated Planning: Theory and Practice, Morgan Kaufmann 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 planejamento sob incerteza, Instituto de Matemática e Estatística, São Paulo, 2006.
[7] Martin L. Puterman, Markov Decision Processes - Discrete 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 Learning, 2005, pp. 569576.
99
Download

Métodos de programação dinâmica para solução de problemas de