Nunca ignore o treinamento de reforço novamente.

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.

imagem

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.

imagem

No exemplo abaixo, o mouse tenta encontrar o máximo de comida possível e evita choques elétricos quando possível.

imagem

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 .

imagem

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 )

imagem

“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 # load 4x4 environment if 'FrozenLakeNotSlippery-v0' in gym.envs.registry.env_specs: del gym.envs.registry.env_specs['FrozenLakeNotSlippery-v0'] register(id='FrozenLakeNotSlippery-v0', entry_point='gym.envs.toy_text:FrozenLakeEnv', kwargs={'map_name' : '4x4', 'is_slippery': False}, max_episode_steps=100, reward_threshold=0.8196 ) # load 16x16 environment if 'FrozenLake8x8NotSlippery-v0' in gym.envs.registry.env_specs: del gym.envs.registry.env_specs['FrozenLake8x8NotSlippery-v0'] register( id='FrozenLake8x8NotSlippery-v0', entry_point='gym.envs.toy_text:FrozenLakeEnv', kwargs={'map_name' : '8x8', 'is_slippery': False}, max_episode_steps=100, reward_threshold=0.8196 ) 

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() 

imagem

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.

imagem

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() # select a random action obs, rew, done, info = env.step(action) # perform the action rew_tot = rew_tot + rew # calculate the total reward env.render() # display the environment print("Reward: %r" % rew_tot) # print the total reward simulate_frozen_lake(env = gym.make('FrozenLake8x8NotSlippery-v0')) 

imagem

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.

Source: https://habr.com/ru/post/pt475236/


All Articles