Mecanismos de Ataque em Deep Learning via Manipulação de Inputs

Vamos imaginar duas situações que não estão longe da nossa realidade prática: Situação 1 - Você tem um carro auto-dirigível que faz todo o mapeamento do itinerário verificando condições da estrada, coletando dados sobre o tráfego, e ao longo a viagem o seu carro através de câmeras vai realizando todo o mapeamento dos sinais de trânsito.

Até nesse ponto, você assiste tudo passivamente no banco do motorista e continua fazendo outras milhares de que você deixaria de fazer se estivesse perdendo tempo.

No entanto surge um problema: No momento em que a câmera do carro grava uma placa de “pare” ele entende que aquela placa de regulamentação é na verdade somente um inocente “dê a preferencia”. Se for a via que você estiver atravessando for de mão dupla, ele vai esperar somente uma faixa estar aparentemente vazia e vai continuar andando mesmo se tiver alguém vindo na outra faixa da mesma pista.

Situação 2 - Você está voando na última referência de aviação em que o fabricante da aeronave tem o prazer de falar que este modelo é o único que usa Deep Learning para realizar todo o percurso tornando o piloto um expectador passivo ao vôo.

Um dos trunfos dessa empresa é conseguir realizar vôos intercontinentais com uma máxima eficiência em termos de combustível, este que é um dos maiores custos das companhias aéreas.

Em vôos longos os pilotos ficam em grandes altitudes e deixam os motores em idle (i.e. quase em ponto morto). Isso se faz necessário para economizar combustível. Em grande parte das vezes as aeronaves chegam quase sem combustível (isso explica os mergulhos na hora do pouco em muitos trechos intercontinentais).

Até que surge um problema: Os pilotos não perceberam que não estavam em idle e acabaram com 25% do combustível sem perceber e o pior: estão ficando sem combustível sendo que estão no meio do oceano sem combustível para chegar em terra firme. Dessa forma os pilotos tem algumas opções (a) pouso forçado no mar, o que pode significar alguns dias para chegar um resgate, (b) tentar ir até o limite e correr um risco de uma pane e o avião cair em seguida.

Você pode pensar: “Mas Flavio isso são exemplos extremos, certo?!

Não tão extremos considerando esse evento com o carro da Google, e essa quasi-tragédia.

Mas qual é o ponto?

Muito do hype das redes Deep Learning dias de hoje é devido a sua ótima qualidade de realizar tarefas de classificação, reconhecimento de som e imagem, aproximação de funções, entre outros aspectos.

Contudo, pouco se fala de dois aspectos fundamentais de que sendo as redes do tipo Deep Learning um modelo tipicamente black -box, é virtualmente impossível decodificar o seu processamento, e caso não haja um bom trabalho de definição de arquitetura a tarefa simples de saber se o modelo está com overfitting torna-se algo hercúleo.

Esse paper de Papernot et. al. que tem como título “Practical Black-Box attacks against Deep Learning Systems using Adversarial Examples” expõe esses problemas e faz uma implementação de como uma rede Deep Learning adversária ofensora poderia alterar os resultados de rede Deep Learning tendo informações somente das entradas (input layer) e das saídas (output layer).

Veja esse exemplo de como eles conseguiram fazer isso com alguns sinais:

Fooled by sensros

Usando a base de dados de imagens de placas de trânsito, fica claro que as diferenças são gritantes e o risco de acidentes é alto, quando por exemplo troca-se uma placa de “obras na via” por um simples “dê a preferência”. No primeiro os erros são mais gritantes, em que um 0 vira um 5 ou um 3 vira um 8.

O ponto do artigo é que as redes Deep Learning são ótimas para as tarefas que elas são feitas para fazer, mas se tiver algum elemento no qual uma rede tenha (i) as suas informações de inputs públicas (e.g. dados da bolsa de valores, dados governamentais, sensores diversos, etc) e (ii) o resultado do seu output público (e.g. ordens de compra e venda, informações náuticas em tempo real, etc.) podem ser criadas redes Deep Learning ofensoras para manipulação dos resultados (outputs)  dessas redes.

Esse mecanismo funciona da seguinte forma: Através de pequenas e imperceptíveis manipulações dos sensores que alimentam a camada de entrada (input layer) a Deep Learning ofensora vai monitorando os resultados da Deep Learning atacada (output layer).

A rede ofensora vai colocando mais e mais elementos de manipulação nos sensores e a rede atacada vai perdendo o seu poder de generalização (aprendizado e ação) de forma imperceptível e modifica todo o seu output. O mecanismo responsável por isso é o que os autores chamam de Argumentação Jacobeana que vai de forma auto-recursiva refinando o modelo de ataque.

Ou seja: Esse artigo coloca que não basta somente saber se a rede Deep Learning está de fato aprendendo e generalizando a taxas altíssimas de acurácia, mas sim de saber se os inputs são genuínos e também se os resultados são de fato aquilo o que está sendo determinado.

É uma discussão excelente, e mesmo sabendo que a manipulação de inputs é algo velho nas dinâmicas de sistemas complexos, é interessante ver o mesmo pensamento a sistemas de aprendizado e decisão aplicados.

Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples