Atacar una red neuronal con Python: Parte 1.

Articulo-Jorge-Calvo

En 2014, Ian Goodfellow publicó un artículo titulado Explicación y aprovechamiento de ejemplos adversarios [1], que mostraba una propiedad intrigante de las redes neuronales profundas: es posible perturbar deliberadamente una imagen de entrada de modo que la red neuronal la clasifique erróneamente. Este tipo de perturbación se denomina ataque adversario.

Los ataques adversarios no es un campo nuevo, ni estos ataques son específicos de las redes neuronales profundas. En 2006 se publicó un artículo titulado ¿Puede el aprendizaje automático ser seguro? Este documento discutió los ataques adversarios, incluidas las defensas propuestas contra ellos. Los mejores modelos de aprendizaje automático de última generación incluían Support Vector Machines (SVM) y Random Forest (RF); se demostró que ambos tipos de modelos eran susceptibles a este tipo de ataques.

Con el aumento de la popularidad de las redes neuronales profundas a partir de 2012, se esperaba que estos modelos altamente no lineales fueran menos susceptibles a los ataques; sin embargo, Goodfellow, entre otros frustraron estas esperanzas. Se ha demostrado que las redes neuronales profundas son susceptibles a ataques adversarios, al igual que sus predecesoras.

Fig 1 Perturbación de una imagen mediante ruido. Fuente propia

Antes de entrar en más detalle de cómo funcionan estos ataques adversarios podemos hacer una simple clasificación de los tres tipos de ataques que se contemplan hoy en día según su modelo de amenaza.

Los ataques adversarios existentes pueden clasificarse en ataques de caja blanca, caja gris y caja negra.

La diferencia entre los tres modelos radica en el conocimiento de los adversarios. En el modelo de amenaza de los ataques de caja blanca, los adversarios tienen pleno conocimiento de su objetivo, incluida la arquitectura y los parámetros del modelo. Por lo tanto, se puede crear directamente imágenes adversas en el modelo de destino mediante cualquier medio.

En el modelo de amenaza de caja gris, el conocimiento de los adversarios se limita a la estructura del modelo de destino.

En la caja negra modelo de amenaza, los adversarios solo pueden recurrir a la consulta que da como salida el modelo para generar muestras imágenes adversas.

En el marco de estos modelos de amenazas, hay una serie de algoritmos de ataque para generar nuestras imágenes adversas, como, por ejemplo:

  • Algoritmo de Broyden-Fletcher-Goldfarb-Shanno (L-BFGS)
  • El método de signo de gradiente rápido (FGSM)
  • El método iterativo básico (BIM) / descenso de gradiente proyectado (PGD)

Estos algoritmos de ataque están diseñados en el modelo de amenazas de caja blanca. Sin embargo, también son efectivos en muchas cajas grises y negras, ajustando la transferibilidad de las muestras adversas entre modelos.

Métodos de ataques

Estos ataques usan una técnica utilizada para modificar una imagen o un texto de manera sutil, de tal forma que el resultado sea difícil de detectar para un humano, pero que cause una gran diferencia en la salida de un modelo de aprendizaje automático. Estos ataques se basan en el hecho de que los modelos de aprendizaje automático a menudo tienen dificultad para generalizar bien, lo que significa que pueden ser altamente sensibles a pequeñas perturbaciones en los datos de entrada.

Por ejemplo, si se utiliza un modelo de reconocimiento de imagen para identificar diferentes objetos en una imagen, es posible que un ataque adversario por medio del rápido gradiente modifique ligeramente los pixels de la imagen de manera que el modelo de reconocimiento de imagen lo confunda con otro objeto. Estos ataques son especialmente relevantes en contextos de seguridad, ya que pueden ser utilizados para engañar a sistemas de vigilancia o para evitar que los modelos de aprendizaje automático tomen decisiones correctas.

Estos métodos tienen como objetivo atacar modelos Deep Learning de clasificación de imágenes, pero también se podrían aplicar a otros modelos.

Los ataques más exitosos son métodos basados en gradientes. Es decir, los atacantes modifican la imagen en la dirección del gradiente de la función de pérdida con respecto a la imagen de entrada. Hay dos enfoques principales para realizar tales ataques: ataques no iterativos, en los que el atacante da un solo paso en la dirección del gradiente, y ataques iterativos donde en lugar de un solo paso, se toman varios pasos.

Para entender de forma correcta esta metodología del ataque es fundamental tener claro el concepto de Gradiente Descendente, el cual explicamos a continuación de una forma sencilla.

Gradiente Descendente

El gradiente es un cálculo que permite saber cómo ajustar los parámetros de la red de tal forma que se minimice su desviación a la salida. Es el algoritmo más utilizado para entrenar redes neuronales

Para explicar este algoritmo puede ayudar del símil de la montaña, imaginar que se está en la cima de una montaña. y el objetivo es llegar abajo, pero hay un problema: estás ciego. ¿Cómo puedes encontrar una solución? Se tendrás que dar pequeños pasos y mover hacia la dirección contraria de la pendiente más alta, haciendo esto de forma iterativa, avanzando un paso a la vez hasta que finalmente alcanzas el objetivo.

Eso es exactamente lo que hace el Gradiente Descendente. Su objetivo es llegar al punto más bajo de la montaña. La montaña son los datos graficados en un espacio, el tamaño del paso que mueves es la tasa de aprendizaje (learning rate) y decidir la inclinación mayor a tu alrededor es calcular el gradiente de un conjunto de valores de parámetros, lo cual se realiza de forma iterativa. La dirección elegida es donde se reduce la función de costo (la dirección opuesta del gradiente).

Descenso del gradiente en f(x)

Fig 2 Descenso del gradiente en f(x). Fuente propia

El ejemplo clásico de un ataque adversario FGSM se puede ver en la Figura 3. Donde se muestra una imagen de entrada que una red neuronal clasifica correctamente como “Vaso de Cerveza” con un 71.60% de confianza.

ataque adversario FGSM

Fig 3 ataque adversario FGSM. Fuente propia

En la figura 4, se puede observar un vector de ruido, que para el ojo humano parece ser aleatorio. Sin embargo, está lejos de serlo.

Los píxeles en el vector de ruido son “iguales al signo de los elementos del gradiente de la función de coste, con respecto a la imagen de entrada”.

Fig 4 Matriz de ruido o perturbación. Fuente propia 

Finalmente se agrega este vector de ruido a la imagen de entrada, que produce la salida de la Figura 5. Esta imagen parece idéntica a la entrada; sin embargo, la red neuronal ahora clasifica la imagen como un “violín” (un instrumento musical) con un 76% de eficacia.

Imagen adversaria creada por FGSM

Fig 5 Imagen adversaria creada por FGSM. Fuente propia

Referencias

[1] Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., & Bengio, Y. (2020). Generative adversarial networks. Communications of the ACM, 63(11), 139–144. https://doi.org/10.1145/3422622.

Sobre el autor

Jorge Calvo Martín  es Ingeniero Informático – Ciberseguridad & Criptografía,  Master Datascience & AI Education y Director de Innovación y Analítica en Colegio Europeo de Madrid; además es Profesor de Matemáticas en secundaria.

Puedes encontrarlo en:

Su blog https://www.europeanvalley.es/noticias

LinkedIn https://www.linkedin.com/in/jorgecalvomartin/

Y como @jorgemcalvo en las Redes Sociales.


You May Also Like