Depois de adicionar fatores aleatórios a uma simulação relativamente simples, o robô da OpenAI aprendeu a executar operações complexas do computador de mão

Operações portáteis - essa é uma daquelas ações que estão no topo da lista de "habilidades que não exigem esforços das pessoas e são extremamente difíceis para os robôs". Sem hesitar, somos capazes de controlar adaptativamente os dedos da mão, opondo-os com o polegar e a palma da mão, levando em consideração o atrito e a gravidade, manipulando objetos com uma mão, sem usar a outra - você provavelmente já fez esse truque muitas vezes hoje, pelo menos com o telefone.
As pessoas levam anos de treinamento para aprender a trabalhar de maneira confiável com os dedos, mas os robôs não têm muito tempo para aprender. Essas tarefas complexas ainda estão sendo resolvidas por meio de treinamento prático e ganho de experiência, e a tarefa é encontrar uma maneira de treinar o robô com mais rapidez e eficiência do que apenas dar ao braço robótico algo que possa ser manipulado repetidamente até que perceba que funciona e o que não funciona; pode levar cem anos.
Em vez de esperar cem anos, os pesquisadores da
OpenAI usaram treinamento de reforço para treinar uma
rede convolucional de nêutrons para controlar a mão de cinco dedos do robô Shadow para manipular objetos - e em apenas 50 horas. Eles conseguiram fazer isso através de uma simulação, uma técnica famosa como "condenada ao sucesso" - no entanto, eles introduziram cuidadosamente fatores aleatórios para aproximá-lo da variabilidade do mundo real. A mão Shadow real foi capaz de realizar com sucesso manipulações portáteis com objetos reais, sem qualquer treinamento.
Idealmente, todos os robôs devem ser treinados em simulações, porque as simulações podem ser dimensionadas sem a criação de muitos robôs reais. Deseja treinar dofigilhões de robôs dofigilhões de horas em uma fração de dofigilhão de segundos? Isso pode ser feito - se você receber uma quantidade suficiente de poder de computação. Mas tente pôr em marcha no mundo real - e o problema de ninguém saber exatamente quanto será, "dofigilhão", será o menor dos seus problemas.
O problema com o treinamento de robôs em simulações é que o mundo real não pode ser simulado com precisão - e é ainda mais difícil simular com precisão problemas menores, como atrito, ductilidade e interação de vários objetos. Portanto, é geralmente aceito que a simulação é maravilhosa, mas existe uma grande e terrível lacuna entre o sucesso da simulação e o sucesso no mundo real, o que de alguma forma reduz o valor da simulação. O fato de que exatamente aquelas coisas que seria bom simular (por exemplo, manipulações de mão) ao mesmo tempo são as mais difíceis para simulações precisas não melhora a situação, devido à sua sofisticação física.
Uma abordagem comum para esse problema é tentar tornar a simulação o mais precisa possível e esperar que ela se aproxime o suficiente do mundo real, para que você possa extrair algum comportamento útil dela. Em vez disso, o OpenAI não coloca precisão em primeiro lugar, mas variabilidade, fornecendo suas simulações moderadamente realistas com muitos pequenos ajustes, para que o comportamento resultante seja confiável o suficiente para trabalhar fora da simulação.
O processo de randomização é a chave para o que torna o sistema (chamado Dactyl) capaz de efetivamente passar da simulação para o mundo real. A OpenAI sabe que as simulações usadas não são complexas o suficiente para simular uma montanha das coisas mais importantes, do atrito ao desgaste na ponta dos dedos de um braço de robô real. Para que o robô possa generalizar o que está aprendendo, o OpenAI introduz variáveis aleatórias em todos os aspectos possíveis da simulação, a fim de tentar cobrir toda a variabilidade do mundo que não pode ser bem modelada. Isso inclui a massa, todas as medições do objeto, o atrito de sua superfície e os dedos do robô, amortecimento dos dedos do robô, força dos motores, limitação de juntas, folga e ruído do motor e assim por diante. Pequenas influências aleatórias são aplicadas ao objeto para que a simulação lide com dinâmicas que não podem ser modeladas. E este é apenas o próprio processo de manipulação - no trabalho de câmeras RGB que avaliam a posição de um objeto, também existem muitas variáveis aleatórias, que, no entanto, são um pouco mais fáceis de visualizar.
As linhas mostram fotos da mesma câmera. As colunas correspondem a imagens com alterações aleatórias - todas são alimentadas simultaneamente por redes neurais.A OpenAI chama isso de "randomização do ambiente" e, no caso de manipulações portáteis, eles "queriam ver se o aumento da escala de randomização do ambiente poderia resolver um problema que não está disponível nas técnicas de robótica atuais". E assim, o que aconteceu como resultado de dois sistemas treinados independentemente (um visual, o segundo para manipulações) que reconhecem visualmente a posição do cubo e o rotacionam para posições diferentes.
Todas essas rotações de cubos (e o sistema é capaz de pelo menos 50 manipulações bem-sucedidas consecutivas) foram possíveis graças a 6144 processadores e 8 GPUs que ganharam 100 anos de experiência de robô simulado em apenas 50 horas. O único feedback disponível para o sistema (na simulação e na realidade) é a localização do cubo e dos dedos, enquanto o sistema foi iniciado sem um entendimento definido de como segurar ou girar o cubo. Ela teve que lidar com tudo isso de forma independente - incluindo a rotação dos dedos, a coordenação simultânea de vários dedos, o uso da gravidade, a coordenação da aplicação de forças. O robô inventou as mesmas técnicas que as pessoas usam, no entanto, com pequenas (e interessantes) modificações:
Para capturar claramente um objeto, o robô geralmente usa o dedo mindinho em vez do indicador ou do meio. Provavelmente, isso se deve à presença da Mão Destreza das Sombras com um grau adicional de liberdade em comparação com os dedos indicador, médio e anelar, o que a torna mais móvel. Nos seres humanos, os dedos indicador e médio são geralmente mais móveis. Isso significa que nosso sistema é capaz de inventar independentemente a técnica de agarrar disponível para as pessoas, mas é melhor adaptá-la às suas próprias limitações e possibilidades.
Os diferentes tipos de alças que o sistema aprendeu. Da esquerda para a direita e de cima para baixo: segure com as pontas dos dedos, punho na palma da mão, punho com três dedos, punho com quatro, cinco dedos e punho poderoso.Observamos outro paralelo interessante no trabalho dos dedos das pessoas e do nosso robô. De acordo com essa estratégia, a mão segura um objeto com dois dedos e gira em torno desse eixo. Verificou-se que, em crianças pequenas, essa motilidade ainda não tem tempo para se desenvolver, de modo que geralmente giram objetos usando a
falange proximal ou média
dos dedos . E somente mais tarde na vida eles mudam para falanges distais, como a maioria dos adultos. Curiosamente, nosso robô geralmente depende de falanges distais quando necessário para girar um objeto.
A vantagem da tecnologia é que, como se viu, os robôs ainda podem ser treinados em ações físicas complexas em simulações e, em seguida, usar imediatamente as habilidades acumuladas na realidade - e isso é realmente uma grande conquista, pois o treinamento em simulações é muito mais rápido do que na realidade .
Entramos em contato com Jonas Schneider, membro da equipe técnica da OpenAI, para obter mais informações sobre esse projeto.
Editorial : Por que a manipulação portátil na robótica é uma tarefa tão difícil?
Jonas Schneider : As manipulações ocorrem em um espaço muito limitado e um grande número de graus de liberdade está disponível para o robô. Estratégias de manipulação bem-sucedidas requerem coordenação adequada em todos esses graus de liberdade, e isso reduz o tamanho do erro permitido em comparação às interações convencionais com objetos, como, por exemplo, captura simples. Durante manipulações de mão, é gravado muito contato com o objeto. Modelar esses contatos é uma tarefa difícil, propensa a erros. Erros durante a execução devem ser controlados durante o trabalho da mão, o que causa problemas na abordagem tradicional com base nos movimentos de planejamento antecipados. Por exemplo, um problema pode surgir quando você tem
um feedback
linear que não registra a dinâmica não linear do que está acontecendo.
Aparentemente, variáveis aleatórias são a chave para garantir que as habilidades adquiridas na simulação possam ser aplicadas de maneira confiável na realidade. Como você decide quais parâmetros tornar aleatórios e exatamente?Durante a calibração, estimamos aproximadamente quais parâmetros podem variar e depois decidimos quais deles serão mais importantes para reproduzir na simulação. Em seguida, definimos os valores desses parâmetros iguais aos da calibração e adicionamos variações aleatórias na região do valor médio. A amplitude das variações depende de nossa confiança - por exemplo, o tamanho do objeto em que não variamos muito, porque podemos medi-lo com precisão.
Algumas variações aleatórias foram baseadas em observações empíricas. Por exemplo, observamos como nosso robô às vezes soltava um objeto, abaixando o pincel e não tendo tempo para levantá-lo até o objeto sair dele. Descobrimos que, devido a problemas com o controlador de baixo nível, a execução de nossas ações às vezes podia ser atrasada em várias centenas de milissegundos. E, claro, poderíamos colocar nossa energia para tornar o controlador mais confiável, mas adicionamos a randomização ao tempo de resposta de cada controlador. Parece-nos que, em um nível superior, isso pode se tornar uma abordagem interessante para o desenvolvimento de robôs do futuro; para algumas tarefas, o desenvolvimento de equipamentos muito precisos pode ser inaceitavelmente caro, e demonstramos como essas falhas de equipamento podem ser corrigidas usando algoritmos mais avançados.
Como você acha que seus resultados melhorariam se você não esperasse 100 anos de tempo simulado, mas, por exemplo, 1000?Para um exemplo de uma tarefa específica, isso é difícil de avaliar, pois nunca testamos mais de 50 turnos. Ainda não está claro exatamente como é a curva de características assintóticas, mas consideramos nosso projeto concluído, porque mesmo uma virada bem-sucedida está muito além das capacidades dos melhores métodos de ensino existentes hoje. De fato, escolhemos o número de 50 voltas, porque decidimos que 25 voltas definitivamente demonstrariam que o problema estava resolvido e adicionamos outras 25, com margem de 100%. Se sua tarefa é otimizar sequências de ações muito longas e alta confiabilidade, provavelmente um aumento no treinamento ajudará. Mas, em algum momento, como pensamos, o robô começará a se adaptar mais à simulação e a funcionar pior no mundo real, e você precisará adicionar ainda mais randomizações para complicar a simulação, o que, por sua vez, aumentará a confiabilidade do sistema final.
Quão bem os seus resultados podem generalizar? Por exemplo, quanto esforço você gastaria em exercícios repetidos para girar um cubo menor, ou um cubo macio ou escorregadio? Que tal um arranjo de câmera diferente?A propósito, por uma questão de interesse,
tentamos manipular cubos macios e cubos menores, e a qualidade do trabalho não diminui muito em comparação com a rotação de um cubo sólido. Na simulação, também experimentamos cubos de tamanhos diferentes, e isso também funcionou bem (embora não tenhamos tentado isso com um robô real). Na simulação, também usamos variações aleatórias no tamanho do cubo. Não tentamos fazer exatamente isso, mas acho que, se simplesmente aumentarmos a dispersão de variações aleatórias no tamanho do cubo na simulação, a mão poderá manipular os cubos de tamanhos diferentes.
Quanto às câmeras, o modelo visual treinado separadamente, e até agora estamos fazendo apenas pequenas variações aleatórias na posição das câmeras, portanto, a cada alteração na posição da câmera, iniciamos o treinamento novamente. Um de nossos estagiários, Xiao-Yu Fish Tan, está apenas trabalhando para tornar o modelo visual completamente independente da localização das câmeras, usando a mesma técnica básica de variar aleatoriamente a posição e a orientação da câmera, além de grandes limites.
Como o treinamento em simulação difere da abordagem da força bruta , que usa vários robôs reais?Curiosamente, nosso projeto começou com o fato de questionarmos a idéia de usar simulações para promover a robótica. Há muitos anos,
observamos como a robótica alcança resultados impressionantes em simulações usando aprendizado reforçado. No entanto, em conversas com pesquisadores envolvidos na robótica clássica, somos constantemente confrontados com a falta de confiança de que esses métodos funcionem no mundo real. O principal problema é que os simuladores não são completamente precisos do ponto de vista físico (mesmo que pareçam bons para o olho humano). Adiciona problemas e o fato de simulações mais precisas exigirem mais poder de computação. Por isso, decidimos estabelecer um novo padrão que exige trabalhar com uma plataforma muito complexa em termos de equipamentos, na qual temos que enfrentar todas as limitações das simulações.
Quanto à abordagem da “fazenda carpal”, a principal limitação no treinamento de robôs físicos é a pequena escalabilidade das habilidades adquiridas para tarefas mais complexas. Isso pode ser feito organizando tudo para que você tenha muitos objetos em um ambiente autoestabilizador que não possua estados diferentes (por exemplo, uma cesta de bolas). Mas será muito difícil fazer da mesma maneira a tarefa de montar algo, quando, após cada execução, seu sistema estiver em um novo estado. Novamente, em vez de configurar o sistema inteiro uma vez, é necessário configurá-lo N vezes e mantê-lo operacional depois de, por exemplo, um robô varrer e quebrar algo. Tudo isso é muito mais simples e fácil de fazer em simulações com poder computacional elástico.
Como resultado, nosso trabalho apóia a idéia de treinamento em simulações, pois mostramos como resolver o problema de transferência, mesmo no caso de robôs muito complexos. No entanto, isso não nega a ideia de treinar um robô real; seria muito difícil contornar as limitações das simulações ao trabalhar com objetos e fluidos deformáveis.
Onde seu sistema é o local mais fino?No momento, são variações aleatórias, desenvolvidas manualmente e aprimoradas para uma tarefa específica. No futuro, pode ser possível tentar aprender essas variações adicionando outra camada de otimização, que é o processo que estamos fazendo hoje manualmente (“tente algumas randomizações e veja se elas ajudam”). Você também pode ir ainda mais longe e usar o jogo entre o agente de aprendizado e o oponente, tentando impedir (mas não muito) o progresso dele. Essa dinâmica pode levar ao surgimento de conjuntos de regras muito confiáveis para o trabalho dos robôs, porque quanto melhor o agente fica, mais astuto o oponente deve ser para interferir com ele, o que melhora ainda mais o trabalho do agente e assim por diante. Essa ideia já foi
estudada por outros pesquisadores.
Você diz que seu principal objetivo é criar robôs para o mundo real. O que mais precisa ser feito antes que isso se torne possível?Estamos tentando expandir os recursos dos robôs para trabalhar em um ambiente sem restrições estritas. Em tais ambientes, é impossível prever tudo com antecedência e preparar um modelo para cada objeto. Também pode ser inconveniente colocar marcas em objetos fora do laboratório. Acontece que nossos robôs terão que aprender a agir em muitas situações, como fazer uma escolha razoável em uma situação que eles nunca encontraram antes.
No que você vai trabalhar a seguir?Continuaremos a criar robôs com comportamento cada vez mais sofisticado. É muito cedo para dizer qual. A longo prazo, esperamos dar aos robôs a capacidade geral de manipular objetos, para que eles possam aprender a interagir com o ambiente como um bebê - brincando com objetos próximos, não necessariamente sob a supervisão de adultos. Pensamos que a inteligência está ligada à interação com o mundo real e, para cumprir nossa tarefa de criar inteligência artificial de propósito geral segura, precisamos ser capazes de aprender tanto com dados sensoriais do mundo real quanto com simulações.