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.
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.
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
Publicado em 06/02/2022 11h05
Artigo original: