Tecnologia Científica

Rumo a modelos de aprendizado profundo que podem raciocinar sobre o ca³digo mais como humanos
Como resultado, os desenvolvedores de software estãoem maior demanda do que nunca, e isso estãoimpulsionando a automaa§a£o de algumas das tarefas mais fa¡ceis que ocupam seu tempo.
Por Kim Martineau - 16/04/2021


Uma estrutura construa­da por pesquisadores do MIT e da IBM encontra e corrige pontos fracos em ferramentas de programação automatizadas que os deixam vulnera¡veis ​​a ataques. Uma ferramenta (na foto) acompanha enquanto os programadores escrevem e sugerem o ca³digo. Aqui, ele escolhe uma função entre milhares de opções na biblioteca NumPy do Python que melhor se adapta a  tarefa em questão. Crédito: Shashank Srikant

Qualquer que seja o nega³cio em que uma empresa esteja, o software desempenha um papel cada vez mais vital, desde o gerenciamento de estoque atéa interface com os clientes. Como resultado, os desenvolvedores de software estãoem maior demanda do que nunca, e isso estãoimpulsionando a automação de algumas das tarefas mais fa¡ceis que ocupam seu tempo.

Ferramentas de produtividade como Eclipse e Visual Studio sugerem trechos de ca³digo que os desenvolvedores podem inserir facilmente em seu trabalho enquanto escrevem. Esses recursos automatizados são alimentados por modelos de linguagem sofisticados que aprenderam a ler e escrever ca³digo de computador depois de absorver milhares de exemplos. Mas, como outros modelos de aprendizado profundo treinados em grandes conjuntos de dados sem instruções expla­citas, os modelos de linguagem projetados para processamento de ca³digo tem vulnerabilidades embutidas.

“A menos que vocêseja realmente cuidadoso, um hacker pode manipular sutilmente as entradas desses modelos para fazaª-los prever qualquer coisa”, diz Shashank Srikant, um estudante graduado do Departamento de Engenharia Elanãtrica e Ciência da Computação do MIT. "Estamos tentando estudar e prevenir isso."

Em um novo artigo, Srikant e o MIT-IBM Watson AI Lab revelam um manãtodo automatizado para encontrar pontos fracos em modelos de processamento de ca³digo e retreina¡-los para serem mais resilientes contra ataques. a‰ parte de um esfora§o mais amplo do pesquisador do MIT Una-May O'Reilly e da pesquisadora afiliada da IBM Sijia Liu para aproveitar a IA para tornar as ferramentas de programação automatizadas mais inteligentes e seguras. A equipe apresentara¡ seus resultados no pra³ximo maªs na Conferência Internacional sobre Representações de Aprendizagem.

“A menos que vocêseja realmente cuidadoso, um hacker pode manipular sutilmente as entradas desses modelos para fazaª-los prever qualquer coisa”, diz Shashank Srikant, um estudante graduado do Departamento de Engenharia Elanãtrica e Ciência da Computação do MIT. "Estamos tentando estudar e prevenir isso."


Uma ma¡quina capaz de se programar já parecia ficção cienta­fica. Mas um aumento exponencial no poder da computação, avanços no processamento de linguagem natural e um excesso de ca³digo livre na Internet tornaram possí­vel automatizar pelo menos alguns aspectos do design de software.

Treinados no GitHub e em outros sites de compartilhamento de programas , os modelos de processamento de ca³digo aprendem a gerar programas da mesma forma que outros modelos de linguagem aprendem a escrever novas histórias ou poesia. Isso permite que eles atuem como um assistente inteligente, prevendo o que os desenvolvedores de software fara£o em seguida e oferecendo uma assistaªncia. Eles podem sugerir programas adequados a  tarefa em questãoou gerar resumos de programas para documentar como o software funciona. Os modelos de processamento de ca³digo também podem ser treinados para localizar e corrigir bugs. Mas, apesar de seu potencial para aumentar a produtividade e melhorar a qualidade do software, eles representam riscos de segurança que os pesquisadores estãoapenas comea§ando a descobrir.
 
Srikant e seus colegas descobriram que os modelos de processamento de ca³digo podem ser enganados simplesmente renomeando uma varia¡vel, inserindo uma instrução de impressão falsa ou introduzindo outras operações cosmanãticas em programas que o modelo tenta processar. Esses programas sutilmente alterados funcionam normalmente, mas induzem o modelo a processa¡-los incorretamente, tornando a decisão errada.

Os erros podem ter consequaªncias graves para modelos de processamento de ca³digo de todos os tipos. Um modelo de detecção de malware pode ser induzido a confundir um programa malicioso com benigno. Um modelo de preenchimento de ca³digo pode ser enganado e oferecer sugestaµes erradas ou maliciosas. Em ambos os casos, os va­rus podem se infiltrar pelo programador desavisado. Um problema semelhante aflige os modelos de visão computacional: edite alguns pixels-chave em uma imagem de entrada e o modelo pode confundir porcos com aviaµes e tartarugas com rifles, como outras pesquisas do MIT mostraram.

Como os melhores modelos de linguagem, os modelos de processamento de ca³digo tem uma falha crucial: eles são especialistas nas relações estata­sticas entre palavras e frases, mas são compreendem vagamente seu verdadeiro significado. O modelo de linguagem GPT-3 da OpenAI, por exemplo, pode escrever prosa que vai do eloquente ao sem sentido, mas apenas um leitor humano pode dizer a diferença.

Os modelos de processamento de ca³digo não são diferentes. "Se eles estãorealmente aprendendo as propriedades intra­nsecas do programa, deve ser difa­cil engana¡-los", diz Srikant. "Mas não são. Atualmente, são relativamente fa¡ceis de enganar."

No artigo, os pesquisadores propaµem uma estrutura para alterar programas automaticamente para expor pontos fracos nos modelos que os processam. Ele resolve um problema de otimização em duas partes; um algoritmo identifica sites em um programa onde adicionar ou substituir texto faz com que o modelo cometa os maiores erros. Ele também identifica quais tipos de edição representam a maior ameaa§a.

O que a estrutura revela, dizem os pesquisadores, éo quanto fra¡geis alguns modelos são. Seu modelo de sumarização de texto falhou um tera§o das vezes quando uma única edição foi feita em um programa; falhou mais da metade das vezes quando cinco edições foram feitas, eles relatam. Por outro lado, eles mostram que o modelo écapaz de aprender com seus erros e, no processo, potencialmente obter uma compreensão mais profunda da programação.

"Nossa estrutura para atacar o modelo e retreina¡-lo nessas explorações especa­ficas poderia ajudar os modelos de processamento de ca³digo a compreender melhor a intenção do programa", disse Liu, coautor saªnior do estudo. "Essa éuma direção empolgante esperando para ser explorada."

No fundo, uma questãomaior permanece: o que exatamente esses modelos de aprendizagem profunda caixa preta estãoaprendendo? "Eles raciocinam sobre o ca³digo da mesma forma que os humanos, e se não, como podemos fazaª-los?" diz O'Reilly. "Esse éo grande desafio que temos pela frente."

 

.
.

Leia mais a seguir