Tecnologia Científica

Rumo a modelos de aprendizado profundo que podem raciocinar sobre o código mais como humanos
Como resultado, os desenvolvedores de software estão em maior demanda do que nunca, e isso está impulsionando a automação de algumas das tarefas mais fáceis que ocupam seu tempo.
Por Kim Martineau - 16/04/2021


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

Qualquer que seja o negó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ão em maior demanda do que nunca, e isso está impulsionando a automação de algumas das tarefas mais fáceis que ocupam seu tempo.

Ferramentas de produtividade como Eclipse e Visual Studio sugerem trechos de có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 có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 explícitas, os modelos de linguagem projetados para processamento de código têm vulnerabilidades embutidas.

“A menos que você seja realmente cuidadoso, um hacker pode manipular sutilmente as entradas desses modelos para fazê-los prever qualquer coisa”, diz Shashank Srikant, um estudante graduado do Departamento de Engenharia Elé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 método automatizado para encontrar pontos fracos em modelos de processamento de código e retreiná-los para serem mais resilientes contra ataques. É parte de um esforç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 apresentará seus resultados no próximo mê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 fazê-los prever qualquer coisa”, diz Shashank Srikant, um estudante graduado do Departamento de Engenharia Elétrica e Ciência da Computação do MIT. "Estamos tentando estudar e prevenir isso."


Uma máquina capaz de se programar já parecia ficção científica. Mas um aumento exponencial no poder da computação, avanços no processamento de linguagem natural e um excesso de có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 có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 farão em seguida e oferecendo uma assistência. Eles podem sugerir programas adequados à tarefa em questão ou gerar resumos de programas para documentar como o software funciona. Os modelos de processamento de có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ão apenas começando a descobrir.
 
Srikant e seus colegas descobriram que os modelos de processamento de código podem ser enganados simplesmente renomeando uma variável, inserindo uma instrução de impressão falsa ou introduzindo outras operações cosméticas em programas que o modelo tenta processar. Esses programas sutilmente alterados funcionam normalmente, mas induzem o modelo a processá-los incorretamente, tornando a decisão errada.

Os erros podem ter consequências graves para modelos de processamento de có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 código pode ser enganado e oferecer sugestões erradas ou maliciosas. Em ambos os casos, os ví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 aviões e tartarugas com rifles, como outras pesquisas do MIT mostraram.

Como os melhores modelos de linguagem, os modelos de processamento de código têm uma falha crucial: eles são especialistas nas relações estatísticas entre palavras e frases, mas só 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 código não são diferentes. "Se eles estão realmente aprendendo as propriedades intrínsecas do programa, deve ser difícil enganá-los", diz Srikant. "Mas não são. Atualmente, são relativamente fáceis de enganar."

No artigo, os pesquisadores propõ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 ameaça.

O que a estrutura revela, dizem os pesquisadores, é o quão frágeis alguns modelos são. Seu modelo de sumarização de texto falhou um terç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 retreiná-lo nessas explorações específicas poderia ajudar os modelos de processamento de código a compreender melhor a intenção do programa", disse Liu, coautor sênior do estudo. "Essa é uma direção empolgante esperando para ser explorada."

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

 

.
.

Leia mais a seguir