Aprendizado por Reforço com Inteligência Artificial
- Hobbert Evergreen
- 16 de abr. de 2022
- 4 min de leitura
Atualizado: 5 de mai. de 2022
O aprendizado por reforço é uma área de pesquisa de Psicologia muito conhecida por um dos seus principais pesquisadores como Pavlov e B. F. Skinner!
Ela possui uma ideia central de que nosso aprendizado ocorre através de recompensas (reforços) que recebemos que estimulam ou dimuem nossas ações quando estamos diante de estímulos perceptivos!
Pesquisadores da área de inteligência artificial utilizaram estes conceitos para criar programas capazes de aprender com base nestas ideias!
Neste artigo vamos comentar e discutir como a inteligência artificial tem utilizado o aprendizado por reforço em seus algoritmos.
O principal modelo segue como na imagem abaixo:

Temos o nosso cachorrinho que é um Agente! Ele faz uma ação no Ambiente! Essa ação gera uma recompensa que pode ser boa ou ruim e é feita uma nova observação do Ambiente! Isso porque a Ação muda o ambiente! E então o Agente aprende qual ação é a melhor ou pior para determinado ambiente!
Podemos ter muitos ambientes, com muitos objetos. E o agente pode ter diversas ações possíveis como abrir, pegar, levantar, apertar um botão.
Tudo isso será programado, por exemplo em Python, e vamos gerando um agente cada vez mais complexo com mais ações possíveis em lugares diferentes.
Vamos estudar maneiras de implementar códigos que realizem este tipo de aprendizado.
A Comunicação entre Agentes
Um ponto importante a se considerar quando falamos de agentes, são o meio de comunicação que eles terão.
Por exemplo, nossos agentes podem ser programas de computador na mesma linguagem ou em linguagens diferentes, ou podem ser robôs físicos no mundo caminhando.

Para cada caso podemos explorar uma forma de comunicação
Na mesma linguagem: Se os agentes são programas de computador na mesma linguagem, a forma de comunicação entre eles podem ser simplesmente uma variável colocada na memória do computador que os dos agentes conseguem ler.
Em linguagens diferentes: Quando as linguagens são diferentes, por exemplo java e python, não será possível compartilhar uma variável diretamente e neste caso teremos que usar algum protocoloca de comunicação. Via socket, via MQTT ou algum protocolo fixo já estabelecido que possa enviar e receber informações entre um agente e outro.
Em computadores diferentes: Neste caso podemos utilizar uma comunicação padrão via Wifi, podemos usar o som através de microfones e auto falantes. E aqui há um ponto especial. Se usarmos Wifi, estaremos no mesmo caso anterior em que podemos trocar informações via algum protocolo. Porém neste cenário podemos criar linguagem! Usando o microfone e o auto- falante, podemos fazer um agente poliglota que fala a lingua de vários agentes e é capaz de criar ou de aprender novos idiomas! Isso porque o meio de transmissão de dados, no caso o ar, é tão aberto que deixa livre para modificar a forma de transmitir a informação.
Onde está o reforçamento?
Interessante que uma boa parte dos modelos compreende que a recompensa vem do ambiente.

Porém se pararmos para analisar, o reforço acontece no próprio agente!
Vamos supor que uma pessoa gosta de banana e não de maça! E outra ao contrário, gosta de maçã e não de banana! Se a recompensa estivesse no ambiente, as duas pessoas seriam recompensadas positivamente quando comessem tanto banana quanto maça! Mas na prática, enquanto uma sente prazer com maçã e não com banana, a outra é o contrário! Isso quer dizer que o reforçamento acontece no agente!

Na hora de programa isso muda tudo! O reforçamento deve ser programado dentro do agente e não como uma variável que vem do ambiente!!
O que está achando? Faz sentido?
A ação modifica o ambiente! Dentro do agente está programado se ele será recompensado ou não!!
Reforço Secundário
Uma ideia importante que se fala pouco está relacionado com o reforçamento secundário!! Em geral se explora apenas o reforçamento direto que é quando a ação está diretamente envolvida com a recompensa. Por exemplo, apertar um botão e acender a luz.
Porém muitas vezes a recompensa que queremos pode não estar diretamente relacionada. Por exemplo, trabalhar para ganhar dinheiro e com o dinheiro comprar uma comida gostosa (recompensa). Nosso agente precisa estar "aberto" para aprender conexões distantes e este tipo de programação é bastante desafiador!
A relação entre sensoreamento e inteligência
Imagine que nosso agente tem um sensor que percebe LIGADO e DESLIGADO e tem apenas uma ação que é APERTAR BOTÃO.
Quando ele aperta o botão e está ligado recebe uma recompensa, quando aperta o botão e está desligado não recebe nada.
Por outro lado, um ser humano que pode ver, ouvir, tatear, cheirar, pensar! Isso significa que a relação entre o que ele percebe e o que faz será muito mais complexo! Ele pode ver e ouvir algo para que decida agir! E a ação dele pode ser pegar alguma coisa, falar, observar e tantas outras.
Isso significa que a quantidade de sensores e atuadores por essência já limitam a capacidade da inteligência do nosso agente
Por outro lado, quando se fala em CODIFICAÇÃO, ela pode amplificar qualquer sensor simples à um aprendizado infinito.
Por exemplo, apenas com um BIP, sinal auditivo, é possível gerar uma conversa via código morse! Isso porque não é o sensor que está limitando a capacidade de pensar. Mas a capacidade do agente de interpretar o sinal! Isso significa que nosso agente inicial, que só consegue apertar um botão e perceber um sensor, pode falar em código morse! Ele só precisa, paralelamente ao sensor, ter uma capacidade de pensar sobre que o perceber e o que atua!
Continua...
Comentarios