spinner

Adversarial Machine Learning (parte V): ataques de evasión

Quinta parte de la serie de Adversarial Machine Learning; en este post veremos cómo un adversario puede hacer que clasifique un modelo de forma incorrecta en fase de inferencia y cómo es posible protegerse frente a estos ataques.

Los ataques de evasión consisten en que un adversario inserta una pequeña perturbación (en forma de ruido) en la entrada de un modelo de machine learning para que clasifique de forma incorrecta. Estos ataques también se denominan ataques exploratorios y comprometen la disponibilidad del modelo atacado. Son similares a los ataques de envenenamiento, pero su principal diferencia radica en que los ataques de evasión tratan de explotar debilidades del modelo en la fase de inferencia, mientras que los ataques de envenenamiento se realizan durante la fase de entrenamiento tratando de contaminar el conjunto de entrenamiento. Los ataques de evasión son los más conocidos del Adversarial Machine Learning y los más estudiados y explotados durante los últimos años, siendo foco de interés por los investigadores más importantes en machine learning.

Estos ataques tratan de añadir una pequeña perturbación imperceptible en la entrada para que un modelo de machine learning (aunque los más atacados son los modelos de deep learning) clasifique de forma incorrecta. Típicamente, se emplean para evadir la predicción de un clasificador. Estas entradas maliciosas reciben el nombre de ejemplo adversario (adversarial example en inglés). La mayor cantidad de ataques usando ejemplos adversarios se han realizado sobre imágenes, pero se pueden realizar sobre audio, vídeo, etc. 

Dos ejemplos adversarios. En ambos casos se añade una pequeña perturbación en forma de ruido a la entrada. En la imagen superior se hace sobre una imagen y en la imagen inferior sobre un audio. Fuente: Yuan Gong y Christian Poellabauer.

Una propiedad deseada de los ejemplos adversarios es que sean imperceptibles por un humano en el caso de imágenes o no cambien el contexto o el significado en audio o texto. 

Este tipo de ataques se pueden realizar de forma dirigida o no dirigida. En el primer caso, el adversario desea que el modelo clasifique de acuerdo a una opción de su elección, y en la segunda el adversario quiere que el modelo clasifique mal, independientemente de las preferencias del adversario.

Ejemplo adversario dirigido sobre una señal de tráfico. El adversario quiere que el modelo clasifique de forma incorrecta y además, la salida sea como límite de velocidad de 100 km/h. Fuente: Jiefeng Chen, Xi Wu

Los ataques de evasión se pueden realizar tanto en caja blanca como en caja negra. En el escenario de caja blanca, el adversario tiene acceso al modelo y obtener una perturbación a través de calcular gradientes o resolver un problema de optimización. En caja negra, el adversario sólo tiene conocimiento limitado sobre la estructura interna del modelo, pudiendo realizar o bien, un ataque de extracción mediante un modelo sustituto y realizar un ataque de caja blanca o bien, estimar gradientes para buscar ejemplos adversarios.

Causas de los ejemplos adversarios

En [2] se dan algunas de las causas por las que producen los ejemplos adversarios. Entre ellas destacan:

Métodos de ataque

El proceso de explotación de los ataques de evasión se puede ver en la imagen inferior.

Proceso de un ataque de evasión. Fuente: [1]

Los ataques de caja negra resultan ser complicados de explotar en la práctica debido a las limitaciones de conocimiento interno que se tiene del modelo, por lo que se suele optar por realizar un ataque de extracción a través de un modelo sustituto (un modelo que imita al modelo objetivo entrenado a partir de entradas y salidas del mismo). Con este, se puede realizar un ataque de caja blanca. Otra opción en caja negra es estimar gradientes, aunque también requiere cierto número de peticiones al modelo objetivo y posteriormente, buscar ejemplos adversarios. En este sentido, se han propuesto distintos métodos entre los que destaca una técnica de búsqueda local para construir una aproximación de los gradientes de una red neuronal y, una técnica basada en la evolución natural que reduce entre 2 y 3 órdenes de magnitud el número de peticiones necesarias con respecto al estado del arte [1].

Los ataques de caja blanca son los ataques más estudiados y además, son necesarios en ataques de caja negra, por lo que pondremos foco en ellos. Los ataques de caja blanca son numerosos, pero la mayor parte se han centrado en la clasificación de imágenes.

Antes de describir los ataques, introducimos una notación para el resto del post. La función F: R -> {1,…k} define un clasificador de k clases. Z(·) es la salida de la segunda a la última capa, que indica una probabilidad. Z(·)t es la probabilidad de la t-ésima clase. Loss es la función de pérdida de la entrada y la salida. δ es la perturbación buscada. ||δ||p es la p-norma de δ. x = {x1, x2, …, xn} son las muestras originales, xi es el píxel o elemento i-ésimo de la muestra y xi es la muestra de la i-ésima iteración. 

Los métodos más utilizados para encontrar una perturbación consisten en resolver un problema de optimización y calcular gradientes del modelo.

El problema de optimización se puede plantear como un problema de optimización con restricciones, tanto para un ataque no dirigido como dirigido).

En el caso de un ataque dirigido, el problema de optimización es el siguiente:

De forma intuitiva, lo que se busca es la menor perturbación δ de tal forma que el resultado de introducir la perturbación en la entrada x produzca una clasificación distinta con sólo la entrada.

En el caso dirigido, el problema de optimización es el siguiente:

Aquí, se busca que la predicción de añadir la perturbación a la entrada x se corresponde con la etiqueta objetivo T del adversario.

A continuación, describimos algunos de los métodos más empleados de caja blanca en clasificación de imágenes, empleando tanto la técnica del problema de optimización como cálculo de gradientes.

  • Ataque L-BFGS: intenta encontrar un  que satisface F(x+δ) = T optimizando el problema de optimización con restricciones

Para minimizar la perturbación y la función de pérdida  Loss se usa L-BFGS, siendo c un hiperparámetro.

  • Ataque FGSM: este ataque busca ejemplos adversarios usando el gradiente de la entrada x. La dirección de la perturbación se determina con el cómputo del gradiente usando backpropagation. Cada píxel se mueve ε en la dirección del gradiente.

donde lx es la etiqueta correcta de la entrada x.

  • Ataque BIM: también conocido como I-FGSM. Realiza de forma iterativa este proceso:

donde Clip es una función que realiza clipping de la imagen por píxeles.

  • Ataque MI-FGSM: método basado en BIM añadiendo momentum, que se añade para escapar de los mínimos locales y mejorar con ello el óptimo obtenido. La función de optimización es 
  • Ataque JSMA: este ataque modifica unos píxeles en cada iteración. Cada iteración está descrita de la siguiente forma:

donde αpq representa el impacto del objetivo en la clasificación de los píxeles p, q y βpq representa el impacto en otras salidas. Valores altos de este valor significa que tienen mayores probabilidades de engañar a la red neuronal. El ataque se realiza con los píxeles (p*, q*).

  • Ataque NewtonFool: este método usa como salida un softmax Z(x). Se trata de encontrar δ tal que Z(x0 + δ) ≈ 0. Comenzando en x0, aproxima Z(xi)l usando una función lineal como sigue:

donde x0 es la entrada original, l = F(x0) y δi = xi+1 – xi.

  • Ataque Carlini & Wagner (C&W): trata de encontrar un pequeño δ en las normas L1, L2 y L. C&W optimiza la siguiente función:

donde c es un hiperparámetro y f se define como

f 0 si y sólo si el resultado de la clasificación es adversaria con la clase T. K garantiza que x+δ será clasificado como T con alta probabilidad.

  • Ataque EAD: EAD es un caso general de C&W. Añade funciones de penalización L1 y L2. f es la misma función que la definida en C&W.

  • Ataque OptMargin: extensión de C&W con norma L2, añadiendo muchas funciones objetivo alrededor de x. El problema de optimización es el siguiente: 

donde x0 es la muestra original, T es la etiqueta verdadera de x0 y vi son las perturbaciones a aplicadas a x = x0 + δ  y fi se define como 

OptMargin garantiza que no sólo que x engaña a una red neuronal, sino que además lo hacen sus vecinos x + vi.

  • Ataque UAP: genera perturbaciones universales que se adaptan a casi todas las muestras de un conjunto de datos.  El propósito es buscar δ que pueda engañar al modelo F en casi todo el conjunto de datos μ. El problema de optimización es:

donde 0 < ξ << 1.

Aparte de usar imágenes para generar ejemplos adversarios también se han aplicado a audio, texto,  vídeo y evasión de malware, entre otros. Otros ejemplos pueden verse en [2]. En audio, Adversarial Audio Examples puede convertir cualquier waveform en un objetivo deseado añadiendo pequeñas perturbaciones permitiendo evadir redes neuronales de voz a texto. En concreto, permite evadir el modelo DeepSpeech de Mozilla.

Ejemplo adversario generado con Adversarial Audio Examples sobre un audio que evade el modelo DeepSpeech. Fuente: Nicholas Carlini y David Wagner.

Con respecto a texto, FastWordBug permite generar ejemplos adversarios en texto, aunque existen otras alternativas.

Ejemplo adversario generado con FastWordBug. Fuente: Dou Goodman et al.

La imagen anterior muestra dos ejemplos adversarios en texto. En ambos textos, cambiar una letra (bien sea por intercambiar una letra o bien por eliminarla) crea ejemplos adversarios.

Con respecto al vídeo, se ha conseguido aplicar a la evasión de detección de deepfakes. Este es el caso de Adversarial DeepFakes, que permite evadir una de las mejores herramientas en detectar deepfakes, FaceForensics

Evasión de defensas de deepfakes mediante Adversarial DeepFakes. Fuente: Paarth Neekhara et al.

Adversarial DeepFakes añade un ejemplo adversario a cada cara que detecta para obtener un deepfake modificado que no es capaz de detectar FaceForensics++. Es posible evadir ataques tanto de caja blanca como de caja negra.

Por último, en cuanto a evasión de sistemas de detección de malware, se ha propuesto MalGAN, un modelo que permite generar muestras de malware adversario. MalGAN construye un modelo sustituto que simula el modelo objetivo para generar las muestras maliciosas para evadir la detección de malware.

Arquitectura de MalGAN. Fuente: Weiwei Hu, Ying Tan.

Defensas

En [1] se proponen algunas medidas de defensa frente a ataques de evasión. Entre ellas se incluyen:

  • Entrenamiento adversario, que consiste en emplear ejemplos adversarios durante el entrenamiento para que el modelo aprenda características de los ejemplos adversarios, haciendo más robusto el modelo ante este tipo de ataque. Esta defensa se ha utilizado con éxito por Huang et al. y Kurakin et al., entre otros.
  • Método basado en regiones: entender las propiedades de regiones adversarias y usar una clasificación robusta basada en regiones también puede ser una defensa para ataques adversarios. Cao et al. ha desarrollado clasificadores basados en regiones en vez de en puntos, prediciendo la etiqueta seleccionando varios puntos aleatoriamente de un hipercubo centrado en la entrada original.
  • Transformaciones: transformar las entradas pueden permitir la defensa frente a ejemplos adversarios. Song et al. demostraron que los ejemplos adversarios principalmente se encuentran en las regiones de baja probabilidad de las regiones de entrenamiento. Tian et al. encontró que los ejemplos adversarios (en imágenes) son más sensibles a cierto tipos de transformaciones como rotación y desplazamiento que las imágenes normales.
  • Enmascarado/regularización del gradiente: este método esconde los gradientes o reduce la sensibilidad de los modelos. En este sentido se han propuesto defensas como Madry et al., Song et al. o Ma et al., entre otras. Este tipo de defensas no parecen ser muy efectivas. De hecho, Athalye et al. son capaces de saltarse los mecanismos de defensa de todas estas defensas de forma muy eficaz (hasta la fecha de publicación del paper). La tendencia actual es que cada vez que se propone una defensa de este tipo, pasa poco tiempo hasta que se consigue romper. De hecho, se produce un tira y afloja entre atacantes y defensores, y los atacantes parecen ir por delante por el momento, aunque se siguen proponiendo defensas cada vez más difíciles de evadir.
  • Distillation: Papernot et al. propusieron esta defensa para evitar los ataques de los métodos FSGM y JSMA.
  • Redes de defensa: introducir otro tipo de redes neuronales para defenderse de este tipo de ataques. Por ejemplo, Gu et al. usa redes profundas contractivas con autoencoders contractivos y denoising autoencoders, que puede eliminar ruido de los ejemplos adversarios.
  • Defensas débiles: la defensa se basa en el hecho de que un ensemble de muchas defensas débiles, que no son suficientes por sí mismas. Un ejemplo de ello es Athena, framework para defender sistemas de deep learning frente a ejemplos adversarios en modelos basados en imágenes. Se basa en que la transformación (rotación, desplazamiento, etc.) de los datos de entrada entrenadas en conjuntos de datos disjuntos, previamente transformados supone una defensa frente a ataques adversarios.

    Athena emplea cinco estrategias de ensamblado de las defensas débiles:

    • Defensa aleatoria: selecciona una defensa débil aleatoriamente para que ella sea la que devuelva la predicción.
    • Mayoría de voto (MV): recolecta todas las clases de las etiquetas y devuelve la que con mayor frecuencia se ha devuelto por las defensas débiles.
    • Mayoría de votos del top 2: similar a MV, pero recolecta las etiquetas asociadas al top 2 con mayor probabilidad, y se realiza la mayoría del voto entre ellas.
    • Probabilidad media: produce la respuesta final como la media de las probabilidades de las defensas débiles.
    • Logits promedio: utiliza la información almacenada en los logits para devolver la etiqueta con la media de logits más altos.

Herramientas

Numerosas herramientas opensource se pueden encontrar que implementen ataques y defensas de evasión y permitan robustecer los modelos de machine learning.

Cleverhans

Cleverhans es una librería para construir ataques adversarios y medir cómo de robusto es un modelo de deep learning en modelos de imágenes. Está desarrollado en Python y se integra con los frameworks Tensorflow, Torch y JAX. Implementa numerosos ataques como L-BFGS, FSGM, JSMA, C&W, entre otros. Tiene pensado añadir en el futuro defensas, aunque a día de hoy no están implementadas en el proyecto.

Esta librería dispone de amplia documentación, tutoriales y ejemplos fáciles de entender. El proyecto se encuentra dentro de la organización de Tensorflow en GitHub, por lo que es esperable que se mantenga el soporte y se añadan nuevas funcionalidades, según vaya avanzando el estado del arte.   

Advertorch

Advertorch es una librería desarrollada en Python para comprobar la robustez de modelos de deep learning basados en imágenes frente a ataques con ejemplos adversarios. Esta librería solamente soporta PyTorch. Implementa numerosos ataques vistos anteriormente. Asimismo, implementa defensas basadas en la transformación de imágenes como compresión en JPEG (elimina ruido adversario en las imágenes) o distintos filtros que aplicar a las imágenes como filtros gaussianos o de suavizado.

Esta librería actualmente se encuentra en la versión 0.2 y parece muy prometedora. Es esperable que, si sigue con su desarrollo, se convierta en una de las librerías de referencia en este ámbito, aunque estará lastrada a sólo poder emplearse con modelos de PyTorch.

Ejemplos adversarios generados con Cleverhans y Advertorch, respectivamente sobre el conjunto de datos del MNIST.

Foolbox

Foolbox es un conjunto de herramientas para engañar redes neuronales usando ejemplos adversarios. Está implementada en Python y requiere Numpy y Scipy para funcionar. Soporta muchos frameworks de deep learning como Tensorflow, Keras, PyTorch, JAX, Theano, MXNet y Lasagne. Implementa muchos de los ataques descritos en la sección de ataques y dispone de una gran documentación con numerosos ejemplos.

IBM Adversarial Robustness Toolbox (ART)

ART es una librería desarrollada en Python para la defensa de algoritmos de machine learning. Permite la defensa de redes neuronales, SVM, árboles de decisión, regresión logística, etc. Además, es de propósito general, es decir, no se centra en ataques adversarios solamente sino también en el resto de ataques que pueden sufrir este tipo de algoritmos: evasión, envenenamiento, extracción e inversión. Implementa un gran número de ataques así como muchas defensas. Soporta muchos frameworks como Tensorflow, Keras, PyTorch, Scikit learn, etc. 

ART es un proyecto muy activo y con un continuo desarrollo. Esto hace que sea de las mejores herramientas actuales para comprobar la seguridad de modelos de machine learning.

Artificial Adversary

Artificial Adversary es una herramienta escrita en Python que genera ejemplos adversarios en texto y comprueba la robustez de los mismos. Desarrollado por Airbnb. Proporciona ataques en texto y algún ejemplo, aunque insuficiente documentación. El proyecto no parece estar activo ya que su último commit es de agosto de 2018.

AdvBox

AdvBox es un conjunto de herramientas escritas en Python para generar ejemplos adversarios para engañar redes neuronales desarrollada por Baidu. Soporta los frameworks como PaddlePaddle, PyTorch, Caffe2, MxNet, Keras y Tensorflow. AdvBox provee una CLI para generar ejemplos adversarios sin necesidad de escribir una sola línea de código. Implementa numerosos ataques y defensas. No cuenta con mucha documentación, pero parece suficiente para entender el funcionamiento de este proyecto.

DeepRobust

DeepRobust es una librería para Python de ataque y defensa de adversarios para imágenes y grafos para PyTorch. En cuanto a imágenes, implementa los ataques típicos como FGSM, L-BFGS y C&W, entre otros, y como defensa implementa diferentes técnicas de entrenamiento adversario. Lo más relevante de esta herramienta es que implementa ataques y defensas sobre grafos.

Los ejemplos adversarios sobre grafos tratan de modificar un grafo de entrada cambiando unas pocas aristas y características haciendo que se clasifique de forma incorrecta.

Ejemplo adversario sobre un grafo. Fuente: DeepRobust.

Los ataques y defensas que implementa DeepRobust se pueden encontrar descritos en los artículos de Jin et al. y Xu et al.

DeepRobust es una librería con un desarrollo activo y puede convertirse en una de las herramientas de referencia en la implementación de ataques y defensas sobre redes neuronales de grafos

Conclusiones

Los ataques de evasión permiten a un adversario que un modelo clasifique de forma incorrecta. La forma de conseguir esto es introducir pequeñas perturbaciones de ruido en la entrada. Estas entradas maliciosas se llaman ejemplos adversarios y existen muchos métodos para conseguir evadir los modelos de machine learning. Los más numerosos se han aplicado en la clasificación de imágenes, aunque también existen para audio, texto, vídeo, grafos o la evasión de sistemas de detección de malware, entre otros.

Por suerte, no todo está perdido y se han propuesto defensas para proteger los modelos frente a estos ataques. Entre las defensas más destacadas, se incluye el entrenamiento adversario, aplicar transformaciones a los datos de entrada o esconder los gradientes, entre muchas otras. Estas últimas son de las más numerosas, pero cada vez que aparece una defensa nueva, en poco tiempo es conseguida evadir, aunque los esfuerzos cada vez son mayores en conseguir defensas robustas y más difíciles de evadir.

Referencias

[1] He, Y., Meng, G., Chen, K., Hu, X., & He, J. (2019). Towards Privacy and Security of Deep Learning Systems: A Survey. Retrieved from http://arxiv.org/abs/1911.12562.

[2] Qiu, S., Liu, Q., Zhou, S., & Wu, C. (2019). Review of Artificial Intelligence Adversarial Attack and Defense Technologies. Applied Sciences, 9(5), 909. https://doi.org/10.3390/app9050909

 

Fuente Imagen destacada: Unsplash

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?