IA com Python - Aprendizagem por Reforço

Neste capítulo, você aprenderá em detalhes sobre o aprendizado de reforço de conceitos em IA com Python.

Noções básicas de aprendizagem por reforço

Esse tipo de aprendizagem é usado para reforçar ou fortalecer a rede a partir de informações críticas. Ou seja, uma rede sendo treinada em aprendizagem por reforço, recebe algum feedback do ambiente. No entanto, o feedback é avaliativo e não instrutivo como no caso da aprendizagem supervisionada. Com base nesse feedback, a rede realiza os ajustes dos pesos para obter no futuro melhores informações críticas.

Este processo de aprendizado é semelhante ao aprendizado supervisionado, mas podemos ter muito menos informações. A figura a seguir apresenta o diagrama de blocos da aprendizagem por reforço -

Blocos de construção: ambiente e agente

Ambiente e Agente são os principais blocos de construção do aprendizado por reforço em IA. Esta seção os discute em detalhes -

Agente

Um agente é qualquer coisa que pode perceber seu ambiente por meio de sensores e atuar nesse ambiente por meio de efetores.

  • UMA human agent tem órgãos sensoriais, como olhos, ouvidos, nariz, língua e pele paralelos aos sensores, e outros órgãos, como mãos, pernas, boca, para efetores.

  • UMA robotic agent substitui câmeras e telêmetros infravermelhos para os sensores e vários motores e atuadores para efetores.

  • UMA software agent codificou cadeias de bits como seus programas e ações.

Terminologia do Agente

Os termos a seguir são usados ​​com mais frequência na aprendizagem por reforço em IA -

  • Performance Measure of Agent - São os critérios que determinam o grau de sucesso de um agente.

  • Behavior of Agent - É a ação que o agente realiza após uma determinada sequência de percepções.

  • Percept - São as entradas perceptivas do agente em uma determinada instância.

  • Percept Sequence - É a história de tudo que um agente percebeu até hoje.

  • Agent Function - É um mapa da sequência de preceitos a uma ação.

Meio Ambiente

Alguns programas operam de forma inteiramente artificial environment confinado à entrada de teclado, banco de dados, sistemas de arquivos de computador e saída de caracteres em uma tela.

Em contraste, alguns agentes de software, como robôs de software ou softbots, existem em domínios de softbot ricos e ilimitados. O simulador tem umvery detailed, e complex environment. O agente de software precisa escolher entre uma grande variedade de ações em tempo real.

Por exemplo, um softbot projetado para verificar as preferências online do cliente e exibir itens interessantes para o cliente trabalha no real bem como um artificial meio Ambiente.

Propriedades do ambiente

O ambiente tem propriedades múltiplas, conforme discutido abaixo -

  • Discrete/Continuous- Se houver um número limitado de estados distintos e claramente definidos do ambiente, o ambiente é discreto, caso contrário, é contínuo. Por exemplo, o xadrez é um ambiente discreto e dirigir é um ambiente contínuo.

  • Observable/Partially Observable- Se é possível determinar o estado completo do ambiente em cada ponto do tempo a partir das percepções, ele é observável; caso contrário, é apenas parcialmente observável.

  • Static/Dynamic- Se o ambiente não muda enquanto um agente está agindo, então ele é estático; caso contrário, é dinâmico.

  • Single agent/Multiple agents - O ambiente pode conter outros agentes que podem ser do mesmo tipo ou de tipo diferente do agente.

  • Accessible/Inaccessible- Se o aparelho sensorial do agente pode ter acesso ao estado completo do ambiente, então o ambiente é acessível a esse agente; caso contrário, fica inacessível.

  • Deterministic/Non-deterministic- Se o próximo estado do ambiente for completamente determinado pelo estado atual e pelas ações do agente, então o ambiente é determinístico; caso contrário, é não determinístico.

  • Episodic/Non-episodic- Em um ambiente episódico, cada episódio consiste no agente percebendo e então agindo. A qualidade de sua ação depende apenas do episódio em si. Os episódios subsequentes não dependem das ações dos episódios anteriores. Ambientes episódicos são muito mais simples porque o agente não precisa pensar no futuro.

Construindo um ambiente com Python

Para a construção do agente de aprendizagem por reforço, estaremos usando o OpenAI Gym pacote que pode ser instalado com a ajuda do seguinte comando -

pip install gym

Existem vários ambientes no ginásio OpenAI que podem ser usados ​​para vários fins. Poucos deles sãoCartpole-v0, Hopper-v1, e MsPacman-v0. Eles requerem motores diferentes. A documentação detalhada deOpenAI Gym pode ser encontrado em https://gym.openai.com/docs/#environments.

O código a seguir mostra um exemplo de código Python para o ambiente cartpole-v0 -

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
   env.render()
   env.step(env.action_space.sample())

Você pode construir outros ambientes de maneira semelhante.

Construindo um agente de aprendizagem com Python

Para a construção do agente de aprendizagem por reforço, estaremos usando o OpenAI Gym pacote como mostrado -

import gym
env = gym.make('CartPole-v0')
for _ in range(20):
   observation = env.reset()
   for i in range(100):
      env.render()
      print(observation)
      action = env.action_space.sample()
      observation, reward, done, info = env.step(action)
      if done:
         print("Episode finished after {} timesteps".format(i+1))
         break

Observe que o mastro da carroça pode se equilibrar.