Desenvolvimento

3 abr, 2018

VINE: uma ferramenta de visualização de dados interativa de código aberto para Neuroevolução

Publicidade

Na escala da Uber, os avanços em machine learning podem melhorar significativamente as tecnologias que fornecem soluções de transporte mais seguras e confiáveis. Um desses avanços anunciados recentemente pela Uber AI Labs é a neuroevolução profunda, em que algoritmos evolutivos, como estratégias de evolução (ES) e algoritmos genéticos (GA), ajudam a treinar redes neurais profundas para resolver problemas difíceis de aprendizagem por reforço (RL).

O interesse pela neuroevolução profunda vem crescendo recentemente, com importantes contribuições também do OpenAI, DeepMind, Google Brain e Sentient, o que, por sua vez, cria uma crescente demanda por ferramentas para ajudar os pesquisadores na área.

Em particular, muitas vezes é difícil observar a dinâmica subjacente do processo de aprendizagem na neuroevolução e na otimização da rede neural. Para resolver essa lacuna e abrir o processo para observação, apresentamos o Visual Inspector for Neuroevolution/Inspetor Visual para Neuroevolução (VINE), uma ferramenta de visualização de dados interativa de código aberto que visa ajudar os interessados ​​em neuroevolução a entender e explorar melhor essa família de algoritmos. Esperamos que esta tecnologia inspire novas inovações e aplicações da neuroevolução no futuro.

VINE pode iluminar as abordagens ao estilo ES e GA. Neste artigo, nos concentramos em visualizar o resultado da aplicação do ES na tarefa de Locomoção Humanoide de Mujoco como nosso exemplo.

Na aplicação convencional do ES (popularizada pelo OpenAI), um grupo de redes neurais chamadas de nuvem de pseudo descendência é otimizado contra um objetivo ao longo de gerações. Os parâmetros de cada rede neural individual na nuvem são gerados perturbando aleatoriamente os parâmetros de uma única rede neural “mãe”.

Cada rede neural pseudo-descendente é, então, avaliada contra o objetivo: na Tarefa Locomoção Humanoide, cada rede neural pseudo-descendente controla o movimento de um robô e ganha uma pontuação, chamada sua aptidão, baseada em quão bem ele anda.

ES constrói a próxima mãe agregando os parâmetros de pseudo-descendência com base nesses escores de aptidão (quase como uma sofisticada de cruzamento de múltiplas mães, e também reminiscente de diferenças finitas estocásticas). O ciclo, então, se repete.

 

Legenda: Robôs simulados, treinados para andar com algoritmos genéticos (primeiro) e estratégias evolutivas (segundo).

Usando VINE

Para tirar proveito do VINE, caracterizações de comportamento (BCs) para cada mãe e todas as pseudo-descendentes são registradas durante a avaliação. Aqui, uma BC pode ser qualquer indicador do comportamento do agente ao interagir com seu ambiente. Por exemplo, em Mujoco, simplesmente usamos o local {x, y} final do agente como a BC, pois ela indica o quanto o agente se afastou da origem e para qual localização.

A ferramenta de visualização, em seguida, mapeia mães e pseudo-descendentes em planos 2D de acordo com suas BCs. Para isso, invoca uma interface gráfica de usuário (GUI), cujos componentes principais consistem em dois tipos de gráficos inter-relacionados: um ou mais gráficos de nuvens pseudo-descendentes (em planos 2D separados) e um gráfico de aptidão.

Ilustrado na Figura 2, abaixo, um gráfico de nuvem de pseudo descendência exibe as BCs para as mães e pseudo descendentes na nuvem para cada geração, enquanto um gráfico de aptidão exibe a curva de pontuação de aptidão das mães como um indicador-chave do progresso ao longo de gerações.

Exemplos de um gráfico de nuvem de pseudo descendência e um gráfico de aptidão.

Os usuários, então, interagem com esses gráficos para explorar a tendência geral da nuvem de pseudo descendência, bem como os comportamentos individuais de qualquer mãe ou pseudo-descendência ao longo do processo evolucionário: (1) os usuários podem visualizar mães, melhores desempenhos e/ou toda nuvem de pseudo descendência de qualquer geração e explorar a distribuição quantitativa e espacial no plano BC 2D de pseudo-descendentes com diferentes pontuações de aptidão; (2) os usuários podem comparar gerações, navegar através de gerações para visualizar como a nuvem mãe e/ou a nuvem pseudo-descendente está se movendo no plano BC 2D e como esses movimentos se relacionam com a curva de pontuação de aptidão (como demonstrado na Figura 3), um clipe de filme completo da nuvem em movimento pode ser gerado automaticamente); (3) clicar em qualquer ponto no gráfico de nuvem revela informações comportamentais e a pontuação de aptidão da pseudo-descendência correspondente.

Visualizando a evolução dos comportamentos ao longo de gerações. A cor muda em cada geração. Dentro de uma geração, a intensidade de cor de cada pseudo-descendência é baseada no percentil de sua pontuação de aptidão naquela geração (agregada em cinco compartimentos).

Casos de uso adicionais

A ferramenta também suporta opções avançadas e visualizações personalizadas além dos recursos padrão. Por exemplo, em vez de apenas um único ponto {x, y} final, a BC poderia ser a trajetória completa de cada agente (por exemplo, o {x, y} concatenado por 1.000 intervalos de tempo).

Nesse caso, onde a dimensionalidade da BC está acima de dois, técnicas de redução de dimensionalidade (como PCA ou t-SNE) são necessárias para reduzir a dimensionalidade dos dados de BC para 2D. Nossa ferramenta automatiza esses procedimentos.

GUI é capaz de carregar vários conjuntos de BCs 2D (talvez gerados por diferentes técnicas de redução) e também de exibi-los em gráficos de nuvem simultâneos e conectados, conforme está demonstrado na Figura 4. Esse recurso fornece uma maneira conveniente para os usuários explorarem diferentes opções de BC e métodos de redução de dimensionalidade.

Além disso, os usuários também podem estender a visualização básica com funcionalidade personalizada. “A Figura 4 exibe um gráfico de nuvem personalizado que pode exibir certos tipos de BCs de alta dimensionalidade de domínio específico (neste caso, a trajetória completa de um agente) juntamente com os BCs 2D reduzidos correspondentes. Outro exemplo de um gráfico de nuvem personalizado, na Figura 5, permite ao usuário reproduzir o comportamento determinístico e estocástico do agente que se produz ao interagir com um ambiente.

Visualização de múltiplos BCs 2D e uma BC de alta dimensão, juntamente com um gráfico de aptidão.

 

O VINE permite que os usuários visualizem vídeos dos comportamentos determinísticos e estocásticos de qualquer agente.

A ferramenta também é projetada para trabalhar com outros domínios além das tarefas de locomoção. A Figura 6, abaixo, demonstra um gráfico em nuvem que visualiza agentes de treinamento ES para jogar Frostbite, um dos jogos do Atari 2600, onde usamos o estado final da emulação de RAM (vetores com valores inteiros de comprimento 128 que capturam todas as variáveis de estado em um jogo ) como a BC e aplicamos o PCA para mapear a BC em um plano 2D.

Visualizando agentes aprendendo a jogar Frostbite.

A partir do enredo, podemos observar que à medida que a evolução progride, a nuvem de pseudo descendência se desloca para a esquerda e se aglomera ali. A capacidade de ver o vídeo correspondente de cada um desses agentes jogando o jogo nos permite inferir que cada cluster corresponde a estados finais distintos, semanticamente significativos.

VINE também funciona perfeitamente com outros algoritmos de neuroevolução, como os AGs, que mantêm uma população de descendentes ao longo de gerações. De fato, a ferramenta funciona independentemente de qualquer algoritmo específico de neuroevolução.

Os usuários só precisam modificar um pouco seu código de neuroevolução para salvar as BCs escolhidas por seus problemas específicos. No lançamento do código, fornecemos essas modificações para nossas implementações de ES e GA como exemplos.

Próximos passos

Como os métodos evolutivos operam sobre um conjunto de pontos, eles apresentam uma oportunidade para novos tipos de visualização. Tendo implementado uma ferramenta que fornece visualizações que consideramos úteis, queremos compartilhá-la com a comunidade de aprendizagem de máquina para que todos possam se beneficiar.

À medida em que a neuroevolução se expande para redes neurais com milhões ou mais conexões, a obtenção de uma visão adicional por meio de ferramentas como o VINE é cada vez mais valiosa e importante para um progresso adicional.

O VINE pode ser encontrado neste link. É leve, portátil e implementado em Python.

Agradecimentos

Agradecemos ao Uber AI Labs, em particular a Joel Lehman, Xingwen Zhang, Felipe Petroski Such e Vashisht Madhavan, pelas valiosas sugestões e discussões úteis.

Crédito do primeiro GIF: Felipe Petroski Tal.

***

Este artigo é do Uber Engineering. Ele foi escrito por Rui Wang, Jeff Clune e Kenneth O. Stanley. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/vine/