El Adversarial Machine Learning es la rama del machine learning que trata de averiguar los ataques que puede sufrir un modelo en la presencia de un adversario malicioso y cómo protegerse de ellos.
El Adversarial Machine Learning establece que existen 4 tipos de ataque que pueden sufrir los modelos de ML.
-
Extracción (o robo de modelos): permiten a un adversario robar los parámetros de un modelo de machine learning.
-
Inversión: tienen como objetivo invertir el flujo de información de un modelo de machine learning. Permiten a un adversario tener un conocimiento del modelo que no pretendía ser compartido de forma explícita.
-
Envenenamiento: buscan corromper el conjunto de entrenamiento haciendo que un modelo de machine learning reduzca su precisión. Pueden añadir puertas traseras en el modelo.
-
Evasión: 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 (ejemplo adversario).
-
Adversarial Robustness Toolkit (ART): es una librería opensource de Adversarial Machine Learning que permite comprobar la robustez de los modelos de machine learning. Está desarrollada en Python e implementa ataques y defensas de extracción, inversión, envenenamiento y evasión. ART soporta los frameworks más populares: Tensorflow, Keras, PyTorch, MxNet, ScikitLearn, entre muchos otros). Además, no está limitada al uso de modelos que emplean imágenes como entrada, sino que soporta otros tipos de datos como audio, vídeo, datos tabulares, etc.
-
Counterfit es una CLI escrita en Python y desarrollada por Microsoft. Desarrollada para auditorías de seguridad sobre modelos de ML. Implementa algoritmos de evasión de caja negra. Se basa en los ataques de las herramientas ART y TextAttack.
Todos los notebooks se pueden ejecutar más rápidamente empleando una GPU. Se recomienda el uso de Colab, que permite emplear GPUs de forma gratuita y no tener que instalar nada en el equipo.
La carpeta notebooks
contiene 5 notebooks que cubren ataques de extracción, inversión, envenenamiento y evasión en ART.
art_install.ipynb
: contiene la instalación de ART y verificar que todo funciona correctamente.evasion.ipynb
: contiene cómo realizar ejemplos adversarios (no dirigidos y no dirigidos) y cómo proteger los modelos frente a ellos.inversion.ipynb
: contiene un ataque de inversión, que permite inferir datos de entrenamiento.poisoning.ipynb
: contiene cómo generar una puerta trasera en un modelo y cómo defenderse de ella.extraction.ipynb
: contiene cómo robar un modelo y aplicar defensas para minimizar el robo.
El orden en el que se ejecuten los notebooks es irrelevante, pero es recomendable comenzar por art_install
.
En el mismo directorio, se encuentra el fichero counterfit.md
, que muestra cómo instalar counterfit
en una máquina local y el uso básico de la CLI.
-
Entrar en Google Colab, iniciando sesión con una cuenta de
Google
. -
Importar todos los notebooks de este repositorio usando la pestaña
GitHub
, copiando la url de este repositorio.
- Cambiar el entorno de ejecución a
GPU
. Se realiza desde el menúEntorno de ejecución
>Cambiar entorno de ejecución
. Esto acelera la ejecución de los notebooks.
Los notebooks de inversión y envenenamiento se basan en los ejemplos y notebooks proporcionados por ART.