Programação competitiva com AlphaCode

Imagem CC0

Resolvendo novos problemas e estabelecendo um novo marco na programação competitiva.

Criar soluções para problemas imprevistos é uma segunda natureza da inteligência humana – resultado do pensamento crítico informado pela experiência.

A comunidade de aprendizado de máquina fez um tremendo progresso na geração e compreensão de dados textuais, mas os avanços na resolução de problemas permanecem limitados a problemas relativamente simples de matemática e programação, ou então recuperando e copiando soluções existentes. Como parte da missão da DeepMind de resolver a inteligência, criamos um sistema chamado AlphaCode que escreve programas de computador em um nível competitivo.

A AlphaCode alcançou uma classificação estimada entre os 54% melhores participantes em competições de programação, resolvendo novos problemas que exigem uma combinação de pensamento crítico, lógica, algoritmos, codificação e compreensão de linguagem natural.

Em nossa pré-impressão, detalhamos o AlphaCode, que usa modelos de linguagem baseados em transformadores para gerar código em uma escala sem precedentes e, em seguida, filtra de maneira inteligente para um pequeno conjunto de programas promissores.

Validamos nosso desempenho usando competições hospedadas no Codeforces, uma plataforma popular que hospeda competições regulares que atraem dezenas de milhares de participantes de todo o mundo que vêm testar suas habilidades de codificação. Selecionamos para avaliação 10 concursos recentes, cada um mais recente que nossos dados de treinamento.

A AlphaCode ficou aproximadamente no nível do concorrente mediano, marcando a primeira vez que um sistema de geração de código de IA atingiu um nível competitivo de desempenho em competições de programação.

Para ajudar outras pessoas a aproveitar nossos resultados, estamos lançando nosso conjunto de dados de problemas e soluções de programação competitivos no GitHub, incluindo testes extensivos para garantir que os programas que passam nesses testes estejam corretos – um recurso crítico que falta aos conjuntos de dados atuais. Esperamos que este benchmark leve a mais inovações na solução de problemas e geração de código.

O problema é do Codeforces, e a solução foi gerada pelo AlphaCode.

A programação competitiva é uma atividade popular e desafiadora; centenas de milhares de programadores participam de competições de codificação para ganhar experiência e mostrar suas habilidades de forma divertida e colaborativa.

Durante as competições, os participantes recebem uma série de longas descrições de problemas e algumas horas para escrever programas para resolvê-los.

Os problemas típicos incluem encontrar maneiras de colocar estradas e edifícios dentro de certas restrições ou criar estratégias para ganhar jogos de tabuleiro personalizados. Os participantes são então classificados principalmente com base em quantos problemas eles resolvem. As empresas usam essas competições como ferramentas de recrutamento e problemas semelhantes são comuns nos processos de contratação de engenheiros de software.

Posso dizer com segurança que os resultados do AlphaCode superaram minhas expectativas. Eu estava cético porque, mesmo em problemas competitivos simples, muitas vezes é necessário não apenas implementar o algoritmo, mas também (e essa é a parte mais difícil) inventá-lo. A AlphaCode conseguiu atuar no nível de um novo e promissor concorrente. Mal posso esperar para ver o que vem pela frente!

MIKE MIRZAYANOV

Fundador de Codeforces

As habilidades de resolução de problemas necessárias para se destacar nessas competições estão além das capacidades dos sistemas de IA existentes. No entanto, combinando avanços em modelos de transformadores em grande escala (que recentemente mostraram habilidades promissoras para gerar código) com amostragem e filtragem em grande escala, fizemos um progresso significativo no número de problemas que podemos resolver. Nós pré-treinamos nosso modelo em código público selecionado do GitHub e o ajustamos em nosso conjunto de dados de programação competitivo relativamente pequeno. No momento da avaliação, criamos uma enorme quantidade de programas C++ e Python para cada problema, ordens de magnitude maiores do que o trabalho anterior. Em seguida, filtramos, agrupamos e reclassificamos essas soluções em um pequeno conjunto de 10 programas candidatos que enviamos para avaliação externa. Esse sistema automatizado substitui o processo de tentativa e erro dos concorrentes de depuração, compilação, aprovação em testes e, eventualmente, envio.

Com a permissão da Codeforces, avaliamos o AlphaCode simulando a participação em 10 concursos recentes. O trabalho impressionante da comunidade de programação competitiva criou um domínio onde não é possível resolver problemas por meio de atalhos, como duplicar soluções vistas antes ou experimentar todos os algoritmos potencialmente relacionados. Em vez disso, nosso modelo deve criar soluções novas e interessantes. No geral, o AlphaCode ficou aproximadamente no nível do concorrente mediano. Embora longe de vencer competições, esse resultado representa um salto substancial nas capacidades de resolução de problemas de IA e esperamos que nossos resultados inspirem a comunidade de programação competitiva.

Resolver problemas de programação competitivos é uma coisa muito difícil de fazer, exigindo boas habilidades de codificação e criatividade na resolução de problemas em humanos. Fiquei muito impressionado que o AlphaCode pudesse progredir nessa área e animado para ver como o modelo usa seu entendimento de declaração para produzir código e guiar sua exploração aleatória para criar soluções.”

PETR MITRICHEV

ENGENHEIRO DE SOFTWARE, GOOGLE E PROGRAMADOR COMPETITIVO DE CLASSE MUNDIAL

Para que a inteligência artificial ajude a humanidade, nossos sistemas precisam ser capazes de desenvolver capacidades de resolução de problemas. O AlphaCode ficou entre os 54% melhores em competições de programação do mundo real, um avanço que demonstra o potencial dos modelos de aprendizado profundo para tarefas que exigem pensamento crítico. Esses modelos alavancam elegantemente o aprendizado de máquina moderno para expressar soluções para problemas como código, voltando à raiz do raciocínio simbólico da IA de décadas atrás. E isso é apenas um começo. Nossa exploração na geração de código deixa um amplo espaço para melhorias e sugere ideias ainda mais interessantes que podem ajudar os programadores a melhorar sua produtividade e abrir o campo para pessoas que atualmente não escrevem código. Continuaremos essa exploração e esperamos que mais pesquisas resultem em ferramentas para aprimorar a programação e nos aproximar de uma IA para solução de problemas.

Veja mais soluções da AlphaCode e mergulhe no modelo em alphacode.deepmind.com


Publicado em 06/02/2022 11h05

Artigo original: