Unidade IBM de pesquisa de Inteligência Artificial (IA) apresentou um conjunto de dados de 14 milhões de amostras para desenvolver modelos de aprendizado de máquina que podem auxiliar em tarefas de programação. Um conjunto de dados chamado Projeto CodeNet, leva o nome de ImageNet, o famoso repositório de imagens que revolucionou a visão computacional e o aprendizado profundo.
Os programadores descobrem novos problemas e exploram diferentes soluções, usando muitos mecanismos de pensamento consciente e subconsciente. A maioria dos algoritmos de aprendizado de máquina requer tarefas bem definidas e grandes quantidades de dados anotados para desenvolver modelos que possam resolver os mesmos problemas.
Muito esforço foi feito para criar conjuntos de dados e benchmarks para o desenvolvimento e avaliação de sistemas AI-for-code pela comunidade de especialistas. Mas, dada a natureza criativa e aberta do desenvolvimento de software, é muito difícil criar o conjunto de dados perfeito para programação. Com o Project CodeNet, os pesquisadores da IBM tentaram criar um conjunto de dados multiuso que pode ser usado para treinar modelos de aprendizado de máquina em uma variedade de tarefas. Os criadores do CodeNet o descrevem como "um conjunto de dados de grande escala, diversificado e de alta qualidade para acelerar avanços algorítmicos em IA para código".
O conjunto de dados contém 14 milhões de exemplos de 500 milhões de linhas de código escritas em 55 linguagens de programação diferentes. Amostras de código foram obtidas de quase 4000 tarefas enviadas postadas nas plataformas de codificação online AIZU e AtCoder. Os exemplos de código incluem respostas corretas e incorretas para as tarefas fornecidas.
Também interessante:
- Hubble entrou em modo de segurança devido a um erro de software no computador de bordo
- Outro problema para a CD Projekt: Hackers ameaçam vazar os códigos-fonte dos jogos para a rede
Uma das principais características do CodeNet é a quantidade de anotações adicionadas aos exemplos. Cada uma das tarefas de codificação incluídas no conjunto de dados possui uma descrição textual, bem como o tempo de CPU e os limites de memória. Cada envio de código contém uma dúzia de informações, incluindo idioma, data de envio, tamanho, tempo de execução, aceitação e tipos de erro. Os pesquisadores da IBM também fizeram um grande esforço para garantir que o conjunto de dados fosse balanceado em uma variedade de parâmetros, incluindo linguagem de programação, aceitabilidade e tipos de erro.
O CodeNet não é o único conjunto de dados para treinar modelos de aprendizado de máquina em tarefas de programação. Mas há várias características que o diferenciam. A primeira é o tamanho do conjunto de dados, incluindo o número de amostras e a diversidade de idiomas. Mas talvez o mais importante sejam os metadados que acompanham os exemplos de código. As ricas anotações adicionadas ao CodeNet o tornam adequado para um conjunto diversificado de tarefas, ao contrário de outros conjuntos de dados de codificação especializados em tarefas de programação específicas.
Isso é alucinante.
Com o GPT-3, eu construí um gerador de layout onde você apenas descreve qualquer layout que quiser e ele gera o código JSX para você.
O QUE foto.twitter.com/w8JkrZO4lk
- Sharif Shameem (@sharifshameem) 13 de julho de 2020
Existem várias maneiras de usar o CodeNet. Uma delas é a tradução de idiomas. Como cada tarefa de codificação no conjunto de dados contém representações de diferentes linguagens de programação, os cientistas de dados podem usá-la para criar modelos de aprendizado de máquina que traduzem o código de uma linguagem para outra. Isso pode ser conveniente para organizações que desejam portar códigos antigos para novos idiomas e torná-los acessíveis a novas gerações de programadores.
Leia também:
- A IBM apresentou a primeira tecnologia de produção de chips de 2nm do mundo
- IBM está desenvolvendo inteligência artificial para inventar novos antibióticos
Tradições e hereditariedade devem jogar juntas com pensamento diferente, com as gerações mais jovens de algoritmos neurais e métodos de ML de propor problemas, melhorando-se mutuamente
Com o tempo, o nível dos programadores diminuirá ainda mais (comparado a agora). Ou seja, será possível escrever código torto e oblíquo na "linguagem de merda". E então a máquina irá otimizar, e será possível obter o código otimizado de um programador montador profissional (ou melhor ainda).