Estou construindo um carro autônomo com controle remoto para se divertir. Estou usando um Raspberry Pi como computador de bordo; e estou usando vários plug-ins, como uma câmera Raspberry Pi e sensores de distância, para obter feedback sobre os arredores do carro. Estou usando o OpenCV para transformar os quadros de vídeo em tensores e estou usando o TensorFlow do Google para criar uma rede neural complicada para aprender os limites e obstáculos da estrada. Minha principal pergunta é: devo usar o aprendizado supervisionado para ensinar o carro a dirigir ou devo fornecer objetivos e penalidades e fazer aprendizado por reforço (ou seja, chegar ao ponto B o mais rápido possível, sem bater em nada e permanecer dentro dos limites da estrada)? Abaixo está uma lista dos prós e contras que eu propus.
Profissionais de aprendizado supervisionado:
- As entradas para o algoritmo de aprendizado são bastante diretas. O carro aprende a associar as leituras de distância do sensor e do tensor do quadro de vídeo ao deslocamento para a frente, para trás e angular da roda
- Eu posso mais ou menos ensinar o carro a dirigir exatamente como eu quero (sem sobreajustar, é claro)
- Eu já fiz vários problemas de aprendizado supervisionado antes, e essa abordagem parece se encaixar confortavelmente no meu conjunto de habilidades existente
Contras de aprendizado supervisionado:
- Não está claro como ensinar velocidade, e a velocidade correta é bastante arbitrária, desde que o carro não corra tão rápido que saia da estrada. Suponho que eu poderia dirigir rápido durante o treinamento, mas isso parece uma abordagem grosseira. Talvez eu possa adicionar manualmente uma variável constante durante o treinamento que corresponda à velocidade da sessão de treinamento e, quando o algoritmo de aprendizado for implantado, defino essa variável de acordo com a velocidade que desejo?
Profissionais de aprendizado por reforço:
- Se eu construir meu carro com o objetivo específico de pilotar carros autônomos de outras pessoas, o aprendizado por reforço parece ser a maneira natural de dizer ao meu carro para "chegar o mais rápido possível"
- Eu li que o RL às vezes é usado para drones autônomos, então, em teoria, deve ser mais fácil nos carros, porque eu não preciso me preocupar em subir e descer
Contras de aprendizagem por reforço:
Sinto que o aprendizado por reforço exigiria muitos sensores adicionais e, francamente, meu carro de um metro de comprimento não tem muito espaço, considerando que ele também precisa instalar uma bateria, o Raspberry Pi e uma placa de ensaio
O carro se comportará de maneira muito irregular no início, tanto que talvez ele se destrua. Também pode levar um tempo excessivamente longo para aprender (por exemplo, meses ou anos)
- Não posso incorporar regras explícitas mais tarde, por exemplo, parar em um sinal vermelho de brinquedo. Com o aprendizado supervisionado, eu pude incorporar numerosos algoritmos SL (por exemplo, um classificador Haar Cascade para identificar sinais de trânsito) em um mecanismo de regras configurável que é avaliado entre cada quadro de vídeo. O mecanismo de regras seria capaz de substituir o algoritmo SL de direção se visse um semáforo vermelho, mesmo que o semáforo talvez não fizesse parte do treinamento do algoritmo de direção. RL parece contínuo demais para fazer isso (por exemplo, pare apenas no estado terminal)
- Eu não tenho muita experiência com o aprendizado por reforço aplicado, embora eu definitivamente queira aprender, independentemente