Machine Learning Adversarial: como atacar e defender modelos de ML
Publicados: 2022-03-11Hoje em dia, os modelos de aprendizado de máquina em visão computacional são usados em muitas aplicações do mundo real, como carros autônomos, reconhecimento facial, diagnóstico de câncer ou até mesmo em lojas de última geração para rastrear quais produtos os clientes tiram da prateleira para que seu crédito cartão pode ser cobrado ao sair.
A crescente precisão desses sistemas de aprendizado de máquina é bastante impressionante, por isso, naturalmente, levou a uma verdadeira enxurrada de aplicativos que os utilizam. Embora os fundamentos matemáticos por trás deles já tenham sido estudados algumas décadas atrás, o advento relativamente recente de GPUs poderosas deu aos pesquisadores o poder computacional necessário para experimentar e construir sistemas complexos de aprendizado de máquina. Hoje, modelos de última geração para visão computacional são baseados em redes neurais profundas com até vários milhões de parâmetros e contam com hardware que não estava disponível apenas uma década atrás.
Em 2012, Alex Krizhevsky et altri se tornaram os primeiros a mostrar como implementar uma rede convolucional profunda, que na época se tornou o modelo de última geração na classificação de objetos. Desde então, muitas melhorias em seu modelo original foram publicadas, cada uma delas aumentando a precisão (VGG, ResNet, Inception, etc). Ultimamente, os modelos de aprendizado de máquina conseguiram alcançar precisão humana e até acima da humana em muitas tarefas de visão computacional.
Alguns anos atrás, obter previsões erradas de um modelo de aprendizado de máquina costumava ser a norma. Hoje em dia, isso se tornou a exceção, e esperamos que eles funcionem perfeitamente, especialmente quando implantados em aplicativos do mundo real.
Até recentemente, os modelos de aprendizado de máquina geralmente eram treinados e testados em um ambiente de laboratório , como competições de aprendizado de máquina e trabalhos acadêmicos. Atualmente, à medida que são implantados em cenários do mundo real, as vulnerabilidades de segurança provenientes de erros de modelo se tornaram uma preocupação real.
A ideia deste artigo é explicar e demonstrar como as redes neurais profundas de última geração usadas no reconhecimento de imagens podem ser facilmente enganadas por um agente malicioso e, portanto, feitas para produzir previsões erradas. Assim que nos familiarizarmos com as estratégias usuais de ataque, discutiremos como defender nossos modelos contra elas.
Exemplos de Aprendizado de Máquina Adversarial
Vamos começar com uma pergunta básica: o que são exemplos de aprendizado de máquina adversários?
Exemplos adversos são entradas maliciosas projetadas propositadamente para enganar um modelo de aprendizado de máquina.
Neste artigo, vamos restringir nossa atenção aos modelos de aprendizado de máquina que realizam classificação de imagens. Portanto, exemplos adversários serão imagens de entrada criadas por um invasor que o modelo não consegue classificar corretamente.
Como exemplo, vamos pegar um GoogLeNet treinado no ImageNet para realizar a classificação de imagens como nosso modelo de aprendizado de máquina. Abaixo você tem duas imagens de um panda que são indistinguíveis ao olho humano. A imagem à esquerda é uma das imagens limpas no conjunto de dados ImageNet, usado para treinar o modelo GoogLeNet. O da direita é uma ligeira modificação do primeiro, criado pela adição do vetor de ruído na imagem central. A primeira imagem é prevista pelo modelo para ser um panda, como esperado. O segundo, em vez disso, é previsto (com confiança muito alta) para ser um gibão.
O ruído adicionado à primeira imagem não é aleatório, mas o resultado de uma otimização cuidadosa do invasor.
Como segundo exemplo, podemos dar uma olhada em como sintetizar exemplos de adversários 3D usando uma impressora 3D. A imagem abaixo mostra diferentes visualizações de uma tartaruga 3D que os autores imprimiram e as classificações incorretas do modelo Google Inception v3.
Como os modelos de última geração, que têm uma precisão de classificação acima da humana, podem cometer erros aparentemente estúpidos?
Antes de nos aprofundarmos nas fraquezas que os modelos de redes neurais tendem a ter, lembremos que nós, humanos, temos nosso próprio conjunto de exemplos adversários. Dê uma olhada na imagem abaixo. O que você vê? Uma espiral ou uma série de círculos concêntricos?
O que esses diferentes exemplos também revelam é que os modelos de aprendizado de máquina e a visão humana devem usar representações internas bastante diferentes ao entender o que há em uma imagem.
Na próxima seção, vamos explorar estratégias para gerar exemplos adversários.
Como gerar exemplos adversários
Vamos começar com uma pergunta simples: O que é um exemplo contraditório?
Exemplos de adversários são gerados pegando uma imagem limpa que o modelo classifica corretamente e encontrando uma pequena perturbação que faz com que a nova imagem seja classificada incorretamente pelo modelo de ML.
Vamos supor que um invasor tenha informações completas sobre o modelo que deseja atacar. Isso significa essencialmente que o invasor pode calcular a função de perda do modelo $J(\theta, X, y)$ onde $X$ é a imagem de entrada, $y$ é a classe de saída e $\theta$ são a imagem interna parâmetros do modelo. Esta função de perda é tipicamente a probabilidade de perda negativa para métodos de classificação.
Nesse cenário de caixa branca, existem várias estratégias de ataque, cada uma delas representando diferentes compensações entre o custo computacional para produzi-las e sua taxa de sucesso. Todos esses métodos essencialmente tentam maximizar a mudança na função de perda do modelo, mantendo a perturbação da imagem de entrada pequena. Quanto maior a dimensão do espaço da imagem de entrada, mais fácil é gerar exemplos adversários que são indistinguíveis de imagens limpas pelo olho humano.
Método L-BFGS
Encontramos o ${x}'$ do exemplo adversário resolvendo o seguinte problema de otimização com restrição de caixa:
onde $c > 0$ é um parâmetro que também precisa ser resolvido. Intuitivamente, procuramos imagens adversárias ${x}'$ tais que a soma ponderada da distorção em relação à imagem limpa ( $\left | x - {x}' \right |$ ) e a perda em relação à imagem classe errada é o mínimo possível.
Para modelos complexos, como redes neurais profundas, o problema de otimização não possui uma solução de forma fechada e, portanto, métodos numéricos iterativos devem ser usados. Por causa disso, esse método L-BFGS é lento. No entanto, sua taxa de sucesso é alta.
Sinal de gradiente rápido (FGS)
Com o método do sinal de gradiente rápido (FGS), fazemos uma aproximação linear da função de perda em torno do ponto inicial, dado pelo vetor de imagem limpa $X$ e a classe verdadeira $y$ .
Sob essa suposição, o gradiente da função de perda indica a direção na qual precisamos mudar o vetor de entrada para produzir uma mudança máxima na perda. Para manter o tamanho da perturbação pequeno, apenas extraímos o sinal do gradiente, não sua norma real, e o dimensionamos por um pequeno fator épsilon.
Dessa forma, garantimos que a diferença de pixel entre a imagem inicial e a modificada seja sempre menor que epsilon (essa diferença é a norma L_infinity).
O gradiente pode ser calculado de forma eficiente usando retropropagação. Este método é um dos mais rápidos e computacionalmente mais baratos de implementar. No entanto, sua taxa de sucesso é menor do que métodos mais caros, como L-BFGS.
Os autores do Adversarial Machine Learning at Scale disseram que tem entre 63% e 69% de taxa de sucesso na previsão top-1 para o conjunto de dados ImageNet, com epsilon entre 2 e 32. Para modelos lineares, como regressão logística, o método de sinal de gradiente rápido é exato. Nesse caso, os autores de outro trabalho de pesquisa sobre exemplos adversários relatam uma taxa de sucesso de 99%.

Sinal de gradiente rápido iterativo
Uma extensão óbvia do método anterior é aplicá-lo várias vezes com um alfa de tamanho de passo menor e recortar o comprimento total do passo para garantir que a distorção entre as imagens limpa e adversária seja menor que epsilon.
Outras técnicas, como as propostas no artigo de Nicholas Carlini, são melhorias em relação ao L-BFGS. Eles também são caros para computar, mas têm uma alta taxa de sucesso.
No entanto, na maioria das situações do mundo real, o invasor não conhece a função de perda do modelo de destino. Nesse caso, o invasor deve empregar uma estratégia de caixa preta.
Ataque Caixa Preta
Os pesquisadores observaram repetidamente que os exemplos adversários se transferem muito bem entre os modelos, o que significa que eles podem ser projetados para um modelo de destino A, mas acabam sendo eficazes contra qualquer outro modelo treinado em um conjunto de dados semelhante.
Essa é a chamada propriedade de transferibilidade de exemplos adversários, que os invasores podem usar a seu favor quando não têm acesso a informações completas sobre o modelo. O invasor pode gerar exemplos contraditórios seguindo estas etapas:
- Consulte o modelo de destino com entradas $X_i$ para $i=1…n$ e armazene as saídas $y_i$ .
- Com os dados de treinamento $(X_i, y_i)$ , construa outro modelo, chamado modelo substituto.
- Use qualquer um dos algoritmos de caixa branca mostrados acima para gerar exemplos adversários para o modelo substituto. Muitos deles serão transferidos com sucesso e se tornarão exemplos adversários também para o modelo de destino.
Uma aplicação bem-sucedida dessa estratégia em um modelo comercial de aprendizado de máquina é apresentada neste artigo da Computer Vision Foundation.
Defesas Contra Exemplos Adversários
O invasor cria o ataque, explorando todas as informações que possui sobre o modelo. Obviamente, quanto menos informações o modelo produzir no momento da previsão, mais difícil será para um invasor criar um ataque bem-sucedido.
Uma primeira medida fácil para proteger seu modelo de classificação em um ambiente de produção é evitar a exibição de pontuações de confiança para cada classe prevista. Em vez disso, o modelo deve fornecer apenas as principais classes $N$ (por exemplo, 5) mais prováveis. Quando as pontuações de confiança são fornecidas ao usuário final, um invasor mal-intencionado pode usá-las para estimar numericamente o gradiente da função de perda. Dessa forma, os invasores podem criar ataques de caixa branca usando, por exemplo, o método de sinal de gradiente rápido. No artigo da Computer Vision Foundation que citamos anteriormente, os autores mostram como fazer isso em um modelo comercial de aprendizado de máquina.
Vejamos duas defesas que foram propostas na literatura.
Destilação defensiva
Este método tenta gerar um novo modelo cujos gradientes são muito menores do que o modelo original sem defesa. Se os gradientes forem muito pequenos, técnicas como FGS ou FGS Iterativo não são mais úteis, pois o invasor precisaria de grandes distorções da imagem de entrada para obter uma mudança suficiente na função de perda.
A destilação defensiva introduz um novo parâmetro $T$ , chamado temperatura, para a última camada softmax da rede:
Observe que, para T=1, temos a função softmax usual. Quanto maior o valor de $T$ , menor o gradiente da perda em relação às imagens de entrada.
A destilação defensiva procede da seguinte forma:
- Treine uma rede, chamada rede de professores, com uma temperatura $T » 1$ .
- Use a rede de professores treinados para gerar rótulos virtuais para cada imagem no conjunto de treinamento. Um soft-label para uma imagem é o conjunto de probabilidades que o modelo atribui a cada classe. Por exemplo, se a imagem de saída for um papagaio, o modelo do professor pode gerar rótulos suaves como (90% papagaio, 10% papagayo).
- Treine uma segunda rede, a rede destilada , nos soft-labels, usando novamente a temperatura $T$ . O treinamento com rótulos suaves é uma técnica que reduz o overfitting e melhora a precisão fora da amostra da rede destilada.
- Finalmente, no momento da previsão, execute a rede destilada com temperatura $T=1$ .
A destilação defensiva protege com sucesso a rede contra o conjunto de ataques tentados na destilação como defesa contra perturbações adversas contra redes neurais profundas .
Infelizmente, um artigo posterior da Universidade da Califórnia, pesquisadores de Berkeley, apresentou um novo conjunto de métodos de ataque que derrotam a destilação defensiva. Esses ataques são melhorias em relação ao método L-BFGS que provam que a destilação defensiva não é uma solução geral contra exemplos adversários.
Treinamento Adversário
Atualmente, o treinamento contraditório é a estratégia de defesa mais eficaz. Exemplos adversários são gerados e usados ao treinar o modelo. Intuitivamente, se o modelo vir exemplos adversários durante o treinamento, seu desempenho no momento da previsão será melhor para exemplos adversários gerados da mesma forma.
Idealmente, gostaríamos de empregar qualquer método de ataque conhecido para gerar exemplos adversários durante o treinamento. No entanto, para um grande conjunto de dados com alta dimensionalidade (como ImageNet), métodos de ataque robustos como L-BFGS e as melhorias descritas no artigo de Berkeley são muito caros computacionalmente. Na prática, só podemos nos dar ao luxo de usar um método rápido como FGS ou FGS iterativo pode ser empregado.
O treinamento adversário usa uma função de perda modificada que é uma soma ponderada da função de perda usual em exemplos limpos e uma função de perda de exemplos adversários.
Durante o treinamento, para cada lote de $m$ imagens limpas, geramos $k$ imagens adversárias usando o estado atual da rede. Encaminhamos a propagação da rede para exemplos limpos e adversários e calculamos a perda com a fórmula acima.
Uma melhoria neste algoritmo apresentada neste documento de conferência é chamada de treinamento de adversários em conjunto. Em vez de usar a rede atual para gerar exemplos adversários, vários modelos pré-treinados são usados para gerar exemplos adversários. No ImageNet, esse método aumenta a robustez da rede contra ataques de caixa preta. Essa defesa foi a vencedora da 1ª rodada da competição NIPS 2017 sobre Defesas contra Ataques Adversários .
Conclusões e Passos Adicionais
A partir de hoje, atacar um modelo de aprendizado de máquina é mais fácil do que defendê-lo. Modelos de última geração implantados em aplicativos do mundo real são facilmente enganados por exemplos de adversários se nenhuma estratégia de defesa for empregada, abrindo a porta para problemas de segurança potencialmente críticos. A estratégia de defesa mais confiável é o treinamento contraditório, onde exemplos contraditórios são gerados e adicionados aos exemplos limpos na hora do treinamento.
Se você deseja avaliar a robustez de seus modelos de classificação de imagens para diferentes ataques, recomendo que você use a biblioteca Python de código aberto smarthans. Muitos métodos de ataque podem ser testados em seu modelo, incluindo os mencionados neste artigo. Você também pode usar essa biblioteca para realizar treinamento contra adversários de seu modelo e aumentar sua robustez a exemplos contraditórios.
Encontrar novos ataques e melhores estratégias de defesa é uma área ativa de pesquisa. É necessário um trabalho mais teórico e empírico para tornar os modelos de aprendizado de máquina mais robustos e seguros em aplicativos do mundo real.
Eu encorajo o leitor a experimentar essas técnicas e publicar novos resultados interessantes. Além disso, qualquer feedback sobre o presente artigo é muito bem-vindo pelo autor.
- Modelos de lógica sonora e IA monotônica
- As muitas aplicações da descida de gradiente no TensorFlow