Em 2014, as redes neurais de ponta tinham uma falha conhecida mas inexplicada: altere uma imagem com uma perturbação minúscula e deliberadamente de pior caso — muitas vezes pequena demais para o olho humano ver — e a rede a classifica errado com alta confiança. A mesma imagem ajustada tendia a enganar muitas arquiteturas diferentes treinadas com dados diferentes, o que sugeria que o defeito estava na própria receita de treinamento, e não em qualquer rede individual.
As primeiras explicações culpavam a suposta não linearidade extrema das redes profundas, além do sobreajuste, mas correções padrão como dropout, pré-treinamento e média de modelos não eliminaram a vulnerabilidade. Goodfellow, Shlens e Szegedy testaram a suposição oposta: as arquiteturas que treinam bem (ReLU, maxout, LSTM) são deliberadamente quase lineares, e em um espaço de entrada de alta dimensão a linearidade por si só basta. Com centenas de milhares de pixels, cada um ajustado por menos de um bit de precisão da imagem, os pequenos termos de um produto escalar somam-se em uma grande mudança na ativação da rede.
Essa visão produziu um ataque rápido: linearizar o custo em torno da entrada e perturbá-la pelo sinal do gradiente, o que custa uma única passagem de retropropagação. No MNIST, o método levou um modelo softmax raso a 99,9% de erro e uma rede maxout a 89,4% de classificação incorreta, ambos com alta confiança; no ImageNet, uma perturbação de apenas 0,007 por pixel transformou um panda em um gibão. A geração barata também mudou a defesa: o treinamento adversarial com esses exemplos proporcionou regularização além do dropout sozinho e reduziu o erro no conjunto de teste.
O trabalho também desmistificou a falha para engenheiros na prática. No final de dezembro de 2015, o Codewords do Recurse Center publicou o passo a passo ilustrado de Julia Evans reproduzindo o ataque ao GoogLeNet a partir de um notebook em Docker — uma imagem preta virou uma toalha de papel e um panda virou um abutre — e a thread no Hacker News atraiu 268 pontos e 66 comentários, com leitores observando que o artigo ainda se aplicava a ondas posteriores de redes neurais.
Assuma linearidade: perturbe ao longo do sinal do gradiente e depois treine com esses ataques
Tentativas anteriores culpavam a não linearidade e o sobreajuste; assumir o oposto tornou os exemplos adversariais previsíveis em vez de misteriosos
O mecanismo escala com a dimensão: perturbações abaixo da precisão de um sensor ainda se somam ao longo de centenas de milhares de pixels em uma mudança decisiva na saída
Uma passagem de retropropagação por ataque tornou o treinamento adversarial prático, convertendo um modo de falha em um regularizador que superou o dropout sozinho
Isso explicou a transferência: qualquer modelo que se comporte linearmente em altas dimensões compartilha o ponto cego, então um exemplo engana muitas arquiteturas e conjuntos de treinamento
Quando um modelo falha de uma forma que parece misteriosa, teste primeiro a explicação mais barata — se você pode gerar a falha de forma barata, também pode treinar contra ela de forma barata.
A primeira versão apareceu no arXiv em 20 de dezembro de 2014 e foi revisada em março de 2015; sua imagem de panda para gibão com uma perturbação de 0,007 tornou-se a imagem canônica de um exemplo adversarial. Um ano depois, o passo a passo de Julia Evans no Codewords permitiu aos leitores reproduzir o truque em um laptop sem GPU — um panda virou um abutre, uma tela preta virou uma toalha de papel — e atraiu 268 pontos e 66 comentários no Hacker News, onde um leitor disse que o artigo ainda era amplamente aplicável a ondas posteriores de redes neurais.
CONFIRA AS EVIDÊNCIAS
As fontes
- Explaining and Harnessing Adversarial Examples (arXiv:1412.6572) arXiv · arxiv.org ·
- How to trick a neural network into thinking a panda is a vulture Codewords (Recurse Center) · codewords.recurse.com
- How to trick a neural network into thinking a panda is a vulture — Hacker News discussion Hacker News · news.ycombinator.com ·