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

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

Reproducible Research with R and RStudio – Livro sobre Pesquisa Reprodutível

Ainda sobre o assunto da reprodução de pesquisas, está em vias de ser lançado um livro sobre o assunto chamado Reproducible Research with R and RStudio escrito por Christopher Gandrud.

No enxerto do livro o autor disponibiliza 5 dicas práticas para criação/reprodução de pesquisas que são:

  1. Document everything!,
  2. Everything is a (text) file,
  3. All files should be human readable,
  4. Explicitly tie your files together,
  5. Have a plan to organize, store, and make your files available.

 

 

Reproducible Research with R and RStudio – Livro sobre Pesquisa Reprodutível

Replicação em Pesquisa Acadêmica em Mineração de Dados

Lendo este post do John Taylor sobre a replicação da pesquisa econômica publicada até em journals de alto impacto lembrei de uma prática bem comum em revistas acadêmicas da área de Engenharia de Produção e Mineração de Dados que é a irreprodutibilidade dos artigos publicados.

Essa irreprodutibilidade se dá na forma em que se conseguem os resultados, em especial, de técnicas como Clustering, Regras de Associação, e principalmente Redes Neurais.

Um trabalho acadêmico/técnico/experimental que não pode ser reproduzido é a priori 1) metodologicamente fraco, e 2) pessimamente revisado. Trabalhos com essas características tem tanto suporte para o conhecimento como a chamada evidência anedótica.

Depois de ler mais de 150 papers em 2012 (e rumo aos 300 em 2013) a estrutura não muda:

  • Introdução;
  • Revisão Bibliográfica;
  • Aplicação da Técnica;
  • Resultados; e
  • Discussão na qual fala que teve  ganho de 90% em redes neurais.

Há um check-list bem interessante para analisar um artigo acadêmico com um péssimo DOE, e mal fundamentado metologicamente:

Artigos de Clustering 

  • Qual foi o tamanho da amostra?;
  • Qual é o tamanho mínimo da amostra dentro da população estimada?
  • Foram realizados testes estatísticos sobre a população como teste-Z ou ANOVA?
  • Qual é o P-Valor?
  • Qual foi a técnica para a determinação da separação dos clusters?
  • Quais os parâmetros foram usados para a clusterização?
  • Porque foi escolhido o algoritmo Z?

Artigos de Regras de Associação

  • Qual foi o suporte mínimo?
  • Qual é o tamanho da amostra e o quanto ela é representativa estatisticamente de acordo com a população?
  • O quanto o SUPORTE representa a POPULAÇÃO dentro do seu estudo?
  • Como foi realizado o prunning as regras acionáveis?
  • A amostra é generalizável? Porque não foi realizado o experimento em TODA a população?

Redes Neurais

  • Qual é a arquitetura da rede?
  • Porque foi utilizada a função de ativação Tangente e não a Hiperbólica (ou vice-versa)?
  • A função de ativação é adequada para os dados que estão sendo estudados? Como foi feito o pré-processamento e a discretização dos dados?
  • Porque foi escolhida o número de camadas internas?
  • Tem taxa de aprendizado? Qual foi e porque foi determinada essa taxa?
  • Tem decaímento (Decay)? Porque?
  • E o momentum? Foi utilizado? Com quais parâmetros?
  • Qual estrutura de custos está vinculada nos resultados? Qual foi a quantidade de erros tipo I e II que foram realizados pela rede?
  • E o número de épocas? Como foi determinada e em qual momento a rede deixou de convergir? Você acha que é um erro mínimo global ou local? Como você explica isso no resultado do artigo

Pode parecer algo como o desconstrucionismo acadêmico fantasiado de exame crítico em um primeiro momento mas para quem vive em um meio no qual estudos mais do que fraudulentos são pintados como revolucionários é um recurso como um escudo contra besteiras (Bullshit Shield).

Em suma, com 50% das respostas das perguntas acima o risco de ser um paper ruim com resultados do tipo “caixa-preta” já caí para 10% e aí entra o verdadeiro trabalho de análise para a reprodução do artigo.

Abaixo um vídeo bem interessante sobre papers que nada mais passam de evidência anedótica.

Replicação em Pesquisa Acadêmica em Mineração de Dados

Comparação das técnicas de aprendizado de máquina para previsão de sobrevivência em Câncer de Mama

Um ótimo estudo do BioDataMining que poderia ser reproduzido aqui em terra brasilis. Uma crítica que eu vejo nesse trabalho foi que a seleção de atributos como diria o Daniel Larose foi um pouco black-box e particularmente a abordagem em Algoritmos Genéticos não deve ser tão performática em relação a SVM (o ponto dos autores é que os dados tinha uma dimensionalidade razoável).

A comparison of machine learning techniques for survival prediction in breast cancer

Comparação das técnicas de aprendizado de máquina para previsão de sobrevivência em Câncer de Mama