MIT apresenta Gen, um sistema inovador de programação probabilística com alto desempenho

Uma das ferramentas teóricas disponíveis aos desenvolvedores de algoritmos de inteligência artificial é a modelagem probabilística. Nessa modalidade, os modelos correspondem a distribuições de probabilidade, e os algoritmos de inferência realizam operações padronizadas nessas distribuições. Essa abordagem tem aplicação em várias áreas como estatística, machine learning, visão computacional, ciência cognitiva, robótica e processamento de linguagem natural. Para atender as necessidades de cada aplicação específica, os programadores têm a sua disposição uma grande variedade de técnicas de modelagem, mas a implementação de algoritmos de inferência é geralmente difícil e passível de erros. Sistemas de programação probabilística ajudam nessa tarefa ao fornecer linguagens de modelagem, onde os usuários podem expressar com facilidade modelos e os construtos necessários, o que automatiza alguns aspectos da inferência. Entretanto, os sistemas disponíveis não são recomendados para aplicação genérica: enquanto alguns disponibilizam linguagens muito específicas para algum campo, outras, ainda que implementem linguagens universais para modelagem, são mais limitadas quanto aos algoritmos de inferência, e os que existem são lentos e ineficientes.

Buscando resolver essa carência, uma equipe do Instituto de Tecnologia de Massachusetts (MIT) publicou no final de junho seu trabalho no desenvolvimento do Gen, um novo sistema de programação probabilística construído sobre a linguagem Julia, com inferência programável, adequado para aplicações genéricas. Os dois grandes desafios nesse desenvolvimento eram garantir a eficiência do algoritmo de inferência (ou seja, em quantas iterações o algoritmo passa a produzir resultados precisos) e a eficiência de implementação (o tempo necessário para uma iteração). Para tanto, eles introduziram uma nova arquitetura para sistemas de programação probabilística. Essa arquitetura conta com o que eles chamaram de funções generativas, capazes de representar modelos, ao invés de na forma de código explícito, como caixas pretas que aceitam múltiplas linguagens de modelagem interoperáveis. Na prática, é possível usar uma gama de linguagens de modelagem na construção do algoritmo final, o que expande sua aplicabilidade. Outra novidade é a inclusão de uma biblioteca de alto nível para a programação inferencial, que interage com os modelos apenas através de uma interface especificamente desenvolvida, garantindo um grau de flexibilidade inédito.

No trabalho publicado, os autores avaliaram o desempenho do sistema em cinco problemas desafiadores de inferência, em comparação com outros cinco sistemas disponíveis. As tarefas eram: (1) uma regressão bayesiana robusta, onde o objetivo era inferir a inclinação e o intercepto de dados lineares ruidosos contendo vários outliers; (2) a inferência da função de covariância de uma série temporal de dados de viagens aéreas, que pode então ser usada para fazer previsões; (3) a inferência do destino de um agente que se locomove em um espaço bidimensional com obstáculos coletando informações ambientais ruidosas usando sensores; (4) o acompanhamento da trajetória de um objeto se locomovendo de forma ruidosa numa trajetória pré-definida; e (5) uma tarefa de visão computacional, onde a pose de um modelo virtual humano deveria ser inferida a partir de imagens. O Gen teve desempenho superior a três dos sistemas (Venture, Turing e Anglican) em todas as tarefas, frequentemente por várias ordens de magnitude. Seu desempenho foi similar ao de dois sistemas (Stan e Edward), mas esses sistemas só conseguiram resolver o primeiro dos cinco problemas propostos. Os ganhos de eficiência do Gen se devem à maior flexibilidade na programação inferencial e à operabilidade da arquitetura do sistema.

Os autores esperam que sua contribuição seja um passo significativo para tornar a programação probabilística disponível para usos genéricos, o que é bem-vindo tanto para pesquisadores quanto para praticantes. A implementação da interface de funções generativas também deve ajudar usuários iniciantes, já que eles podem usar modelos prontos ao invés de escreverem eles mesmos as funções necessárias, ao mesmo tempo em que permite a experts pularem etapas e avançarem na área. O sistema já está sendo usado, por exemplo, pela Intel, para estimar a pose tridimensional a partir de suas câmeras usadas em robótica e sistemas de realidade aumentada. O Laboratório Lincoln do MIT está colaborando em aplicações do Gen na robótica aérea para alívio humanitário e resposta a desastres. E o projeto Busca por Inteligência, também do MIT, que busca modelar o senso comum humano no nível de uma criança de 18 meses, também está começando a usar o sistema.

Em outras palavras, o Gen está fazendo o que o TensorFlow fez em 2015 para a área de deep learning, mas num escopo bem maior, integrando uma gama de outros métodos de modelagem e inferência. A programação probabilística é uma das áreas mais promissoras na fronteira da inteligência artificial desde o advento do deep learning. O sistema está disponível para consulta e utilização em https://probcomp.github.io/Gen.