IA aprende a escrever código de computador com “impressionante” avanço
14 de janeiro de 2023O software roda o mundo. Ele controla os smartphones, as armas nucleares e os motores de automóveis. Mas há uma escassez global de programadores. Não seria bom se alguém pudesse explicar o que quer que um programa faça, e um computador pudesse traduzir isso em linhas de código?
Um novo sistema de inteligência artificial (IA) chamado AlphaCode está trazendo a humanidade um passo mais perto dessa visão, de acordo com um novo estudo. Os pesquisadores dizem que o sistema, pode um dia ajudar codificadores experientes, mas provavelmente não pode substituí-los.
“É muito impressionante, o desempenho que eles são capazes de alcançar em alguns problemas bastante desafiadores”, diz Armando Solar-Lezama, chefe do grupo de programação assistida por computador do Massachusetts Institute of Technology.
O AlphaCode vai além do porta-estandarte anterior na escrita do código AI: Codex, um sistema lançado em 2021 pelo laboratório de pesquisa sem fins lucrativos OpenAI. O laboratório já havia desenvolvido o GPT-3, um “modelo de linguagem grande” que é hábil em imitar e interpretar texto humano após ter sido treinado em bilhões de palavras de livros digitais, artigos da Wikipedia e outras páginas de texto da Internet. Ao afinar o GPT-3 em mais de 100 gigabytes de código do Github, um repositório de software online, o OpenAI criou o Codex. O software pode escrever código quando solicitado com uma descrição diária do que é suposto fazer – por exemplo, contando as vogais em uma sequência de texto. Mas ele tem um desempenho ruim quando é encarregado de problemas complicados.
Os criadores do AlphaCode se concentraram em resolver esses problemas difíceis. Como os pesquisadores do Codex, eles começaram alimentando um grande modelo de linguagem muitos gigabytes de código do GitHub, apenas para familiarizá-lo com a sintaxe e convenções de codificação. Depois, eles o treinaram para traduzir as descrições dos problemas em código, usando milhares de problemas coletados em competições de programação. Por exemplo, um problema pode pedir um programa para determinar o número de cadeias binárias (sequências de zeros e uns) de comprimento n que não tenham zeros consecutivos.
Quando apresentado com um novo problema, o AlphaCode gera soluções de código candidato (em Python ou C++) e filtra as más soluções. Mas enquanto os pesquisadores já haviam utilizado modelos como o Codex para gerar dezenas ou centenas de candidatos, o DeepMind fez com que o AlphaCode gerasse até mais de 1 milhão.
Para filtrá-los, o AlphaCode primeiro mantém apenas 1% dos programas que passam nos casos de teste que acompanham os problemas. Para estreitar ainda mais o campo, ele agrupa os mantenedores com base na similaridade de suas saídas com as entradas inventadas. Depois, ele submete programas de cada agrupamento, um por um, começando pelo maior agrupamento, até chegar a um bem sucedido ou chegar a 10 submissões (sobre o máximo que os humanos submetem nas competições). A submissão de diferentes clusters permite que ele teste uma ampla gama de táticas de programação. Essa é a etapa mais inovadora no processo do AlphaCode, diz Kevin Ellis, um cientista da Universidade de Cornell que trabalha com codificação de IA.
Após o treinamento, o AlphaCode resolveu cerca de 34% dos problemas designados. (Em referências semelhantes, o Codex alcançou sucesso de um dígito por cento).
Para testar ainda mais suas proezas, o DeepMind inscreveu o AlphaCode em competições de codificação on-line. Em competições com pelo menos 5000 participantes, o sistema superou 45,7% dos programadores. Os pesquisadores também compararam seus programas com os do banco de dados de treinamento e descobriram que ele não duplicou grandes seções de código ou lógica. Ele gerou algo novo, uma criatividade que surpreendeu Ellis.
“Continua a ser impressionante o quão bem os métodos de aprendizagem por máquina funcionam quando você os amplia”, diz ele. Os resultados são “impressionantes”, acrescenta Wojciech Zaremba, um co-fundador do OpenAI e co-autor de seu trabalho sobre o Codex.
O Codex AI pode ter aplicações além das competições vencedoras, diz Yujia Li, uma cientista da computação do DeepMind e co-autora do papel. Ela poderia fazer trabalho de grunt de software, liberando os desenvolvedores para trabalhar em um nível mais alto, ou mais abstrato, ou poderia ajudar os não-codificadores a criar programas simples.
David Choi, outro autor de estudo no DeepMind, imagina executar o modelo ao contrário: traduzir o código em explicações do que está fazendo, o que poderia beneficiar os programadores que tentam entender o código dos outros. “Há muito mais coisas que você pode fazer com modelos que entendem o código em geral”, diz ele.
Por enquanto, o DeepMind quer reduzir os erros do sistema. Li diz que mesmo que o AlphaCode gere um programa funcional, às vezes ele comete erros simples, como criar uma variável e não usá-la.
Existem outros problemas. O AlphaCode requer dezenas de bilhões de trilhões de operações por potência de computação de problemas que só as maiores empresas de tecnologia têm. E os problemas que ele resolveu a partir das competições de programação on-line foram estreitos e autocontidos. Mas a programação do mundo real muitas vezes requer o gerenciamento de grandes pacotes de código em vários lugares, o que requer um entendimento mais holístico do software, diz Solar-Lezama.
O estudo também observa o risco a longo prazo do software que se melhora de forma recorrente. Alguns especialistas dizem que tal aperfeiçoamento poderia levar a uma IA superinteligente que se apodera do mundo. Embora esse cenário possa parecer remoto, os pesquisadores ainda querem que o campo da codificação de IA institua guardrails, controles e balanços embutidos.
“Mesmo que este tipo de tecnologia se torne super bem sucedida, você gostaria de tratá-la da mesma forma que trata um programador dentro de uma organização”, diz Solar-Lezama. “Você nunca quer uma organização onde um único programador possa derrubar toda a organização”.