Programação de uma linha após o robô com aprendizado por reforço


15

Estou pensando em programar uma linha após o robô usando algoritmos de aprendizado por reforço. A questão que estou pensando é como posso obter o algoritmo para aprender a navegar por qualquer caminho arbitrário?

Depois de seguir o livro de Sutton & Barto para aprender reforço, resolvi um problema de exercício envolvendo uma pista de corrida onde o agente do carro aprendia a não sair da pista e regular sua velocidade. No entanto, esse problema de exercício levou o agente a aprender a navegar na pista em que treinou.

Está no escopo do aprendizado por reforço conseguir que um robô navegue por caminhos arbitrários? O agente precisa absolutamente ter um mapa do circuito ou caminho da corrida? Quais parâmetros eu poderia usar para meu espaço de estado?


11
Não sei como, mas tenho certeza de que é possível ensiná-lo a se manter dentro de um caminho, independentemente de sua forma. O objetivo do ensino nesse caso deve ser a decisão local que o robô toma com base em suas informações imediatas (ou talvez em alguma história). Dessa forma, não importa qual é a forma do caminho, pois todas as decisões são locais.
precisa

@ Shahbaz - O que você sugere que eu use para o espaço de estado?
Senhor Loh.

Na verdade, não tenho certeza. Mesmo tendo estudado IA na universidade, esse nunca foi o meu campo de trabalho / pesquisa. A resposta que você aceitou parece razoável!
Shahbaz

Você está usando uma resposta para testar o Markdown? Você pode simplesmente escrever o que deseja e ver a renderização imediata abaixo dela e depois não publicá-la.
precisa

Respostas:


8

Uma das principais medidas de qualquer algoritmo de aprendizado de máquina é sua capacidade de generalizar (ou seja, aplicar o que aprendeu para desvendar cenários anteriormente). Os alunos de reforço (RL) podem generalizar bem, mas essa capacidade é em parte uma função da formulação do espaço de estados na minha experiência. Isso significa que, se você encontrar a configuração correta, o aluno da RL não precisará de um mapa do circuito de corrida.

Isso deixa a questão de quais parâmetros usar. Sem saber mais sobre os sensores disponíveis no seu robô, só posso especular. Minha primeira inclinação é tentar codificar a orientação relativa da linha e do robô (ou seja, o robô está tendendo para a direita, esquerda ou simplesmente se movendo paralelamente à linha). Fazer isso resultaria em um espaço de estado pequeno e agradável. Embora não seja estritamente necessário, seria uma implementação rápida e simples. Além disso, se o robô não se mover a uma taxa constante, poderá ajudar a codificar a velocidade dos robôs, pois ele precisará reagir mais rapidamente ao se mover em velocidades mais altas.


Sem o mapa, o espaço de estados é exatamente o que o robô pode sentir em sua posição imediata. Então, até certo ponto, o mapa é apenas uma maneira de "olhar para o futuro". O comportamento aprendido no cenário sem mapa será essencialmente "faça o mesmo que antes, mas vá mais devagar porque não sabemos onde estão as curvas desta vez". (Presumivelmente, você será capaz de dizer onde estão as bordas da pista.) #
317 de Ian

Uma política nos diz qual controle aplicar, dado um estado. Se o espaço de estado for bem formulado para o agente RL, os cenários distintamente diferentes podem ter a mesma aparência no espaço de estado e produzir o mesmo comportamento. Isso é chamado de generalização e é desejável quando feito corretamente. O robô terá uma velocidade máxima com base na velocidade do loop de controle. O comportamento aprendido não será necessariamente diminuir a velocidade. Se a recompensa estiver inversamente relacionada ao tempo de execução, o agente estará inclinado a maximizar sua velocidade em relação à velocidade do loop de controle.
DaemonMaker

0

Não tenho certeza de que tipo de robô você tem, mas eu tenho feito a linha de resgate robocup há alguns anos. Eu percebi que se você deseja seguir uma linha bem usando PID é uma boa opção. Deixe-me expandir sobre isso. Se você imaginar dois sensores de luz em ambos os lados da linha, gostaria que eles tivessem o mesmo valor para que a linha ficasse no meio. Você pode usar a diferença entre o valor dos dois sensores para alterar a porcentagem de rotação do robô. Com esta técnica, é possível fazer com que um robô siga uma linha em velocidades extraordinárias. exatamente como você está pensando em fazer o robô aprender a melhorar suas habilidades de rastreamento de linha. O que eu vim foi começar com os valores iniciais do PID mais altos do que você deseja que eles sejam e usar um sensor giroscópico para medir a frequência de oscilação do robô enquanto ele segue a linha. A partir daí, você pode criar sua própria função para determinar quanto diminuir seus valores para obter um sistema estável. Isso não é exatamente inteligência artificial, mais como um algoritmo de otimização automática, mas ei, tenho 18 anos e aprendi a codificar a partir do Internet. Eu espero que isso ajude. Se você tiver alguma dúvida envie-me um e-mail, este não é o meu endereço de e-mail principal, portanto não o verifico regularmente. 69darkeagle@sigaint.org

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.