Olá Habr! Apresento a você a tradução do artigo “Nunca Mais Ignore o Reforço Aprendendo Novamente”, de Michel Kana, Ph.D.
Aprender com um professor e aprender sem um professor não é tudo. Todo mundo sabe disso. Comece com o OpenAI Gym.
Você vai derrotar o campeão mundial de xadrez, gamão ou sair?Existe uma maneira de permitir que você faça isso - treinamento de reforço.
O que é aprendizado por reforço?
Aprendizado reforçado é aprender a tomar decisões consistentes em um ambiente com a recompensa máxima recebida que é dada para cada ação.
Não há professor nele, apenas um sinal de recompensa do meio ambiente. O tempo é importante e as ações afetam os dados subsequentes. Tais condições criam dificuldades para aprender com ou sem um professor.
No exemplo abaixo, o mouse tenta encontrar o máximo de comida possível e evita choques elétricos quando possível.
Um rato pode ser corajoso e ter uma descarga para chegar a um lugar com muito queijo. Será melhor do que ficar parado e não receber nada.
O mouse não deseja tomar as melhores decisões em cada situação específica. Isso exigiria um grande esforço mental dela, e não seria universal.
O aprendizado reforçado fornece alguns conjuntos mágicos de métodos que permitem ao mouse aprender a evitar o choque elétrico e obter o máximo de comida possível.
O mouse é um agente. Um labirinto com paredes, queijo e armas de choque é
o meio ambiente . O mouse pode se mover para a esquerda, direita, cima, baixo - essas são
ações .
O rato quer queijo, não um choque elétrico. O queijo é uma
recompensa . O mouse pode inspecionar o ambiente - estas são
observações .
Treinamento de reforço de gelo
Vamos deixar o mouse no labirinto e seguir para o gelo. “O inverno chegou. Você e seus amigos estavam jogando frisbee no parque quando de repente jogou frisbee no meio do lago. Basicamente, a água no lago estava congelada, mas havia alguns buracos onde o gelo derreteu. (
fonte )
“Se você pisar em um dos buracos, cairá na água gelada. Além disso, há uma enorme escassez de frisbee no mundo, por isso é absolutamente essencial que você vá ao redor do lago e encontre uma unidade. ”(
Fonte )
Como você se sente em uma situação semelhante?
Este é um desafio para o aprendizado por reforço. O agente controla os movimentos do personagem no mundo da grade. Alguns blocos de grade são aceitáveis, enquanto outros fazem com que o personagem caia na água. O agente recebe uma recompensa por encontrar um caminho aceitável para a meta.
Podemos simular esse ambiente usando o
OpenAI Gym - um kit de ferramentas para desenvolver e comparar algoritmos de aprendizado com reforços. Ele fornece acesso a um conjunto padronizado de ambientes, como em nosso exemplo, chamado
Lago Congelado . Este é um meio de texto que pode ser criado com algumas linhas de código.
import gym from gym.envs.registration import register
Agora precisamos de uma estrutura que nos permita abordar sistematicamente os problemas de aprender com reforço.
Processo de tomada de decisão Markov
Em nosso exemplo, o agente controla o movimento do personagem no mundo da grade, e esse ambiente é chamado de ambiente totalmente observável.
Como o bloco futuro não depende dos blocos anteriores, levando em consideração o bloco atual
(estamos lidando com uma sequência de estados aleatórios, isto é, com a
propriedade Markov ), portanto, estamos lidando com o chamado
processo Markov .
O estado atual encapsula tudo o que é necessário para decidir qual será o próximo passo; nada é necessário lembrar.
Em cada célula seguinte (ou seja, uma situação), o agente escolhe com alguma probabilidade a ação que leva à próxima célula, ou seja, a situação e o ambiente responde ao agente com observação e recompensa.
Adicionamos a função de recompensa e o coeficiente de desconto ao processo de Markov e obtemos o chamado
processo de recompensa de Markov . Adicionando um conjunto de ações, obtemos
o processo de tomada de decisão de Markov (
MDP ). Os componentes do MDP são descritos em mais detalhes abaixo.
Condição
Um estado é uma parte do ambiente, uma representação numérica do que o agente observa em um determinado momento no ambiente, o estado da grade do lago. S é o ponto de partida, G é o alvo, F é o gelo sólido no qual o agente pode repousar e H é o buraco no qual o agente cairá se pisar nele. Temos 16 estados em um ambiente de grade 4 por 4 ou 64 estados em um ambiente 8 por 8. Abaixo, desenharemos um exemplo de um ambiente 4 por 4 usando o OpenAI Gym.
def view_states_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.observation_space) print() env.env.s=random.randint(0,env.observation_space.n-1) env.render() view_states_frozen_lake()
Acções
O agente possui 4 ações possíveis, representadas no ambiente como 0, 1, 2, 3 para esquerda, direita, inferior, superior, respectivamente.
def view_actions_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.action_space) print("Possible actions: [0..%a]" % (env.action_space.n-1)) view_actions_frozen_lake()
Modelo de transição de estado
O modelo de transição de estado descreve como o estado do ambiente muda quando um agente executa uma ação com base em seu estado atual.
O modelo é geralmente descrito pela probabilidade de transição, que é expressa como uma matriz de transição quadrada de tamanho N x N, onde N é o número de estados de nosso modelo. A ilustração abaixo é um exemplo dessa matriz para condições climáticas.
No ambiente do lago congelado, assumimos que o lago não é escorregadio. Se dermos certo, definitivamente daremos certo. Portanto, todas as probabilidades são iguais.
"Esquerda" move a célula do agente 1 para a esquerda ou a deixa na mesma posição se o agente estiver na borda esquerda.
"Direita" move uma célula para a direita ou a deixa na mesma posição se o agente estiver na borda direita.
"Up" move a célula do agente 1 para cima ou o agente permanece no mesmo local se estiver no limite superior.
“Para baixo” move a célula do agente 1 para baixo ou permanece no mesmo lugar se estiver no limite inferior.
Remuneração
Em cada estado F, o agente recebe 0 recompensas; no estado H, ele recebe -1, pois, depois de passar para esse estado, o agente morre. E quando o agente atinge a meta, ele recebe uma recompensa +1.
Devido ao fato de que ambos os modelos, o modelo de transição e o modelo de recompensa, são funções determinísticas, isso torna o ambiente determinístico. \
Desconto
O desconto é um parâmetro opcional que controla a importância de recompensas futuras. É medido no intervalo de 0 a 1. O objetivo deste parâmetro é impedir que a recompensa total vá para o infinito.
O desconto também modela o comportamento do agente quando ele prefere a recompensa imediata à recompensa que pode ser recebida no futuro.
Valor
O valor da fortuna é a renda esperada a longo prazo com um desconto para a fortuna.
Política (π)
A estratégia que o agente usa para selecionar a próxima ação é chamada de política. Entre todas as políticas disponíveis, a ideal é a que maximiza a quantidade de remuneração recebida ou esperada durante o episódio.
Episódio
O episódio começa quando o agente aparece na célula inicial e termina quando o agente cai no buraco ou atinge a célula alvo.
Vamos visualizar tudo
Após revisar todos os conceitos envolvidos no processo de tomada de decisão de Markov, agora podemos modelar várias ações aleatórias em um ambiente 16x16 usando o OpenAI Gym. Cada vez, o agente seleciona uma ação aleatória e a executa. O sistema calcula a recompensa e exibe o novo estado do ambiente.
def simulate_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0'), nb_trials=10): rew_tot=0 obs= env.reset() env.render() for _ in range(nb_trials+1): action = env.action_space.sample()
Conclusão
Neste artigo, revisamos brevemente os conceitos básicos do aprendizado por reforço. Nosso exemplo forneceu uma introdução ao kit de ferramentas OpenAI Gym, que facilita a experiência com ambientes pré-criados.
Na próxima parte, apresentaremos como projetar e implementar políticas que permitirão ao agente executar um conjunto de ações para atingir a meta e receber um prêmio como derrotar um campeão mundial.
Obrigado pela atenção.