Apprendimento automatico contraddittorio: come attaccare e difendere i modelli ML

Pubblicato: 2022-03-11

Al giorno d'oggi, i modelli di apprendimento automatico nella visione artificiale sono utilizzati in molte applicazioni del mondo reale, come le auto a guida autonoma, il riconoscimento facciale, la diagnosi del cancro o persino nei negozi di nuova generazione per tenere traccia dei prodotti che i clienti prendono dallo scaffale in modo che il loro credito la carta può essere addebitata al momento della partenza.

La crescente precisione di questi sistemi di apprendimento automatico è piuttosto impressionante, quindi ha portato naturalmente a un vero e proprio flusso di applicazioni che li utilizzano. Sebbene le basi matematiche dietro di loro fossero già state studiate alcuni decenni fa, l'avvento relativamente recente di potenti GPU ha fornito ai ricercatori la potenza di calcolo necessaria per sperimentare e costruire complessi sistemi di apprendimento automatico. Oggi, i modelli all'avanguardia per la visione artificiale si basano su reti neurali profonde con un massimo di diversi milioni di parametri e si basano su hardware che non era disponibile solo un decennio fa.

Nel 2012, Alex Krizhevsky et altri sono stati i primi a mostrare come implementare una rete convoluzionale profonda, che all'epoca divenne il modello all'avanguardia nella classificazione degli oggetti. Da allora, sono stati pubblicati molti miglioramenti al loro modello originale, ognuno dei quali ha migliorato la precisione (VGG, ResNet, Inception, ecc.). Negli ultimi tempi, i modelli di apprendimento automatico sono riusciti a ottenere una precisione umana e persino superiore a quella umana in molte attività di visione artificiale.

Alcuni anni fa, ottenere previsioni sbagliate da un modello di apprendimento automatico era la norma. Al giorno d'oggi, questa è diventata l'eccezione e ci aspettiamo che funzionino in modo impeccabile, specialmente quando vengono implementati in applicazioni del mondo reale.

Fino a poco tempo, i modelli di machine learning venivano solitamente addestrati e testati in un ambiente di laboratorio , come concorsi di machine learning e documenti accademici. Al giorno d'oggi, poiché vengono implementati in scenari del mondo reale, le vulnerabilità della sicurezza derivanti da errori di modello sono diventate una vera preoccupazione.

L'idea di questo articolo è di spiegare e dimostrare come le reti neurali profonde all'avanguardia utilizzate nel riconoscimento delle immagini possono essere facilmente ingannate da un attore malintenzionato e quindi indotte a produrre previsioni errate. Una volta acquisita familiarità con le consuete strategie di attacco, discuteremo come difendere i nostri modelli contro di esse.

Esempi di apprendimento automatico contraddittorio

Iniziamo con una domanda di base: quali sono gli esempi di apprendimento automatico contraddittorio?

Gli esempi contraddittori sono input dannosi progettati appositamente per ingannare un modello di apprendimento automatico.

In questo articolo, limiteremo la nostra attenzione ai modelli di apprendimento automatico che eseguono la classificazione delle immagini. Pertanto, gli esempi contraddittori saranno immagini di input create da un utente malintenzionato che il modello non è in grado di classificare correttamente.

Ad esempio, prendiamo un GoogLeNet addestrato su ImageNet per eseguire la classificazione delle immagini come nostro modello di machine learning. Sotto hai due immagini di un panda che sono indistinguibili dall'occhio umano. L'immagine a sinistra è una delle immagini pulite nel set di dati ImageNet, utilizzata per addestrare il modello GoogLeNet. Quella a destra è una leggera modifica della prima, creata aggiungendo il vettore del rumore nell'immagine centrale. La prima immagine è prevista dal modello per essere un panda, come previsto. Il secondo, invece, è previsto (con altissima confidenza) un gibbone.

Due immagini affiancate di un panda. La seconda immagine sembra identica alla prima, ma è etichettata come un animale diverso. Una terza immagine di ciò che sembra essere statico casuale è tra di loro, a dimostrazione del livello che è stato aggiunto alla seconda immagine del panda per confondere il modello.

Il rumore aggiunto alla prima immagine non è casuale ma frutto di un'attenta ottimizzazione da parte dell'attaccante.

Come secondo esempio, possiamo dare un'occhiata a come sintetizzare esempi contraddittori 3D utilizzando una stampante 3D. L'immagine sotto mostra diverse viste di una tartaruga 3D stampata dagli autori e le classificazioni errate del modello Google Inception v3.

Un'immagine che mostra una griglia di immagini di tartarughe, alcune delle quali sono classificate correttamente come tartarughe, alcune delle quali sono classificate come fucili e alcune delle quali sono classificate come altre

Come possono i modelli all'avanguardia, che hanno un'accuratezza di classificazione superiore a quella umana, fare errori così apparentemente stupidi?

Prima di approfondire le debolezze che tendono ad avere i modelli di rete neurale, ricordiamo che noi umani abbiamo la nostra serie di esempi contraddittori. Dai un'occhiata all'immagine qui sotto. Cosa vedi? Una spirale o una serie di cerchi concentrici?

Un'immagine che mostra un'illusione ottica.

Ciò che rivelano anche questi diversi esempi è che i modelli di apprendimento automatico e la visione umana devono utilizzare rappresentazioni interne abbastanza diverse per comprendere cosa c'è in un'immagine.

Nella prossima sezione, esploreremo le strategie per generare esempi contraddittori.

Come generare esempi contraddittori

Cominciamo con una semplice domanda: cos'è un esempio contraddittorio?

Gli esempi contraddittori vengono generati prendendo un'immagine pulita che il modello classifica correttamente e trovando una piccola perturbazione che causa la classificazione errata della nuova immagine dal modello ML.

Supponiamo che un utente malintenzionato abbia informazioni complete sul modello che vuole attaccare. Ciò significa essenzialmente che l'attaccante può calcolare la funzione di perdita del modello $J(\theta, X, y)$ dove $X$ è l'immagine di input, $y$ è la classe di output e $\theta$ è la classe interna parametri del modello. Questa funzione di perdita è tipicamente la probabilità di perdita negativa per i metodi di classificazione.

In questo scenario white-box, ci sono diverse strategie di attacco, ognuna delle quali rappresenta un diverso compromesso tra il costo computazionale per produrle e la loro percentuale di successo. Tutti questi metodi cercano essenzialmente di massimizzare il cambiamento nella funzione di perdita del modello mantenendo piccola la perturbazione dell'immagine di input. Maggiore è la dimensione dello spazio dell'immagine di input, più facile è generare esempi contraddittori che sono indistinguibili da immagini pulite dall'occhio umano.

Metodo L-BFGS

Abbiamo trovato ${x}'$ dell'esempio contraddittorio risolvendo il seguente problema di ottimizzazione con vincoli di casella:

$$ \begin{matrice} \text{riduci a icona } c \cdot \left \| x - {x}' \right \|^2_2 + \text{perdita}_{f,1} {x}' \\ \text{tale che } {x}' \epsilon \left [0, 1 \right ]^n \end{matrice} $$

dove $c > 0$ è un parametro che deve essere risolto. Intuitivamente, cerchiamo immagini contraddittorie ${x}'$ tali che la somma ponderata della distorsione rispetto all'immagine pulita ( $\left | x - {x}' \right |$ ) e la perdita rispetto all'immagine la classe sbagliata è il minimo possibile.

Per modelli complessi come le reti neurali profonde il problema di ottimizzazione non ha una soluzione in forma chiusa e quindi devono essere utilizzati metodi numerici iterativi. Per questo motivo, questo metodo L-BFGS è lento. Tuttavia, la sua percentuale di successo è alta.

Segno di gradiente veloce (FGS)

Con il metodo del segno di gradiente veloce (FGS), facciamo un'approssimazione lineare della funzione di perdita attorno al punto iniziale, data dal vettore di immagine pulita $X$ e dalla classe vera $y$ .

Sotto questa ipotesi, il gradiente della funzione di perdita indica la direzione in cui dobbiamo cambiare il vettore di input per produrre una variazione massima della perdita. Per mantenere piccola la dimensione della perturbazione, estraiamo solo il segno del gradiente, non la sua norma effettiva, e lo ridimensioniamo di un piccolo fattore epsilon.

In questo modo ci assicuriamo che la differenza in termini di pixel tra l'immagine iniziale e quella modificata sia sempre minore di epsilon (questa differenza è la norma L_infinity).

$$ X^{adv} = X + \epsilon \text{ segno} \left( \bigtriangledown_x J \left( X, y_{true} \right) \right) $$

Il gradiente può essere calcolato in modo efficiente utilizzando la backpropagation. Questo metodo è uno dei più veloci e computazionalmente più economici da implementare. Tuttavia, la sua percentuale di successo è inferiore rispetto a metodi più costosi come L-BFGS.

Gli autori di Adversarial Machine Learning at Scale hanno affermato che ha una percentuale di successo compresa tra il 63% e il 69% sulla previsione top-1 per il set di dati ImageNet, con epsilon tra 2 e 32. Per i modelli lineari, come la regressione logistica, il metodo del segno del gradiente veloce è esatto. In questo caso, gli autori di un altro documento di ricerca sugli esempi contraddittori riportano una percentuale di successo del 99%.

Segno di gradiente veloce iterativo

Un'ovvia estensione del metodo precedente consiste nell'applicarlo più volte con una dimensione del passo alfa più piccola e ritagliare la lunghezza del passo totale per assicurarsi che la distorsione tra l'immagine pulita e quella contraddittoria sia inferiore a quella di epsilon.

$$ X^{adv}_0 = X, X^{adv}_{N + 1} = Clip_{X, \epsilon} \left\{ X^{adv}_{N} + \alpha \text{ segno } \left( \bigtriangledown_X J \left( X^{adv}_N, y_{true} \right) \right) \right\} $$

Altre tecniche, come quelle proposte nell'articolo di Nicholas Carlini, sono miglioramenti rispetto all'L-BFGS. Sono anche costosi da calcolare, ma hanno un alto tasso di successo.

Tuttavia, nella maggior parte delle situazioni reali, l'attaccante non conosce la funzione di perdita del modello preso di mira. In questo caso, l'attaccante deve utilizzare una strategia di scatola nera.

Attacco a scatola nera

I ricercatori hanno ripetutamente osservato che gli esempi contraddittori si trasferiscono abbastanza bene tra i modelli, il che significa che possono essere progettati per un modello target A, ma finiscono per essere efficaci contro qualsiasi altro modello addestrato su un set di dati simile.

Questa è la cosiddetta proprietà di trasferibilità degli esempi contraddittori, che gli aggressori possono utilizzare a proprio vantaggio quando non hanno accesso a informazioni complete sul modello. L'attaccante può generare esempi contraddittori seguendo questi passaggi:

  1. Interroga il modello di destinazione con gli input $X_i$ per $i=1…n$ e archivia gli output $y_i$ .
  2. Con i dati di addestramento $(X_i, y_i)$ , costruisci un altro modello, chiamato modello sostitutivo.
  3. Utilizzare uno qualsiasi degli algoritmi white-box mostrati sopra per generare esempi contraddittori per il modello sostitutivo. Molti di loro si trasferiranno con successo e diventeranno anche esempi contraddittori per il modello target.

Un'applicazione di successo di questa strategia rispetto a un modello di apprendimento automatico commerciale è presentata in questo documento della Computer Vision Foundation.

Difese contro esempi contraddittori

L'attaccante crea l'attacco, sfruttando tutte le informazioni che ha sul modello. Ovviamente, meno informazioni emette il modello al momento della previsione, più difficile sarà per un attaccante realizzare un attacco riuscito.

Una prima semplice misura per proteggere il modello di classificazione in un ambiente di produzione consiste nell'evitare di mostrare i punteggi di confidenza per ciascuna classe prevista. Invece, il modello dovrebbe fornire solo le prime classi $N$ (ad esempio 5) più probabili. Quando i punteggi di affidabilità vengono forniti all'utente finale, un malintenzionato può utilizzarli per stimare numericamente il gradiente della funzione di perdita. In questo modo, gli aggressori possono creare attacchi white-box utilizzando, ad esempio, il metodo del segno del gradiente veloce. Nel documento della Computer Vision Foundation che abbiamo citato in precedenza, gli autori mostrano come farlo rispetto a un modello di apprendimento automatico commerciale.

Esaminiamo due difese che sono state proposte in letteratura.

Distillazione difensiva

Questo metodo tenta di generare un nuovo modello i cui gradienti sono molto più piccoli del modello originale non difeso. Se i gradienti sono molto piccoli, tecniche come FGS o Iterative FGS non sono più utili, poiché l'attaccante avrebbe bisogno di grandi distorsioni dell'immagine in ingresso per ottenere un cambiamento sufficiente nella funzione di perdita.

La distillazione difensiva introduce un nuovo parametro $T$ , chiamato temperatura, nell'ultimo strato softmax della rete:

$$ \text{softmax} \left( x, T \right)_i = \frac{e^{x_i/T}}{\Sigma_j e^{x_j/T}} $$

Si noti che, per T=1, abbiamo la solita funzione softmax. Maggiore è il valore di $T$ , minore è il gradiente della perdita rispetto alle immagini di input.

La distillazione difensiva procede come segue:

  1. Addestrare una rete, chiamata rete insegnanti, con una temperatura $T » 1$ .
  2. Utilizza la rete di insegnanti qualificati per generare etichette software per ciascuna immagine nel set di formazione. Una soft-label per un'immagine è l'insieme di probabilità che il modello assegna a ciascuna classe. Ad esempio, se l'immagine di output è un pappagallo, il modello dell'insegnante potrebbe produrre etichette morbide come (90% pappagallo, 10% papagayo).
  3. Addestrare una seconda rete, la rete dei distillati , sulle soft-label, utilizzando nuovamente la temperatura $T$ . L'allenamento con etichette morbide è una tecnica che riduce l'overfitting e migliora la precisione fuori campione della rete distillata.
  4. Infine, al momento della previsione, eseguire la rete distillata con temperatura $T=1$ .

La distillazione difensiva protegge con successo la rete dall'insieme di attacchi tentati in Distillazione come difesa dalle perturbazioni contraddittorie contro le reti neurali profonde .

Immagine di una tabella che mostra la percentuale di successo in base alla temperatura di distillazione. In genere, maggiore è la temperatura, minore è la percentuale di successo, sia per i campioni contraddittori MNIST che CIFAR10.

Sfortunatamente, un documento successivo dell'Università della California, i ricercatori di Berkeley hanno presentato una nuova serie di metodi di attacco che sconfiggono la distillazione difensiva. Questi attacchi sono miglioramenti rispetto al metodo L-BFGS che dimostrano che la distillazione difensiva non è una soluzione generale contro esempi contraddittori.

Formazione in contraddittorio

Al giorno d'oggi, l'addestramento del contraddittorio è la strategia di difesa più efficace. Gli esempi contraddittori vengono generati e utilizzati durante l'addestramento del modello. Intuitivamente, se il modello vede esempi contraddittori durante l'addestramento, le sue prestazioni al momento della previsione saranno migliori per esempi contraddittori generati allo stesso modo.

Idealmente, vorremmo utilizzare qualsiasi metodo di attacco noto per generare esempi contraddittori durante l'addestramento. Tuttavia, per un grande set di dati con un'elevata dimensionalità (come ImageNet), metodi di attacco robusti come L-BFGS e i miglioramenti descritti nel documento di Berkeley sono troppo costosi dal punto di vista computazionale. In pratica, possiamo solo permetterci di utilizzare un metodo veloce come FGS o può essere impiegato FGS iterativo.

L'addestramento contraddittorio utilizza una funzione di perdita modificata che è una somma ponderata della normale funzione di perdita su esempi chiari e una funzione di perdita da esempi contraddittori.

$$ Perdita = \frac{1}{\left( m - k \right)} \left( \sum_{i \epsilon CLEAN} {L \left( X_i | y_i \right) + \lambda} \sum_{i \epsilon ADV} {L \left( X*{adv}_i | y_i \right)} \right) $$

Durante la formazione, per ogni batch di $m$ immagini pulite generiamo $k$ immagini contraddittorie utilizzando lo stato corrente della rete. Inoltriamo la rete sia per esempi puliti che contraddittori e calcoliamo la perdita con la formula sopra.

Un miglioramento a questo algoritmo presentato in questo documento della conferenza è chiamato formazione contraddittoria d'insieme. Invece di utilizzare la rete attuale per generare esempi contraddittori, vengono utilizzati diversi modelli pre-addestrati per generare esempi contraddittori. Su ImageNet, questo metodo aumenta la robustezza della rete agli attacchi black-box. Questa difesa è stata la vincitrice del 1° round della competizione NIPS 2017 sulle difese contro gli attacchi avversari .

Conclusioni e ulteriori passaggi

Ad oggi, attaccare un modello di machine learning è più facile che difenderlo. I modelli all'avanguardia implementati nelle applicazioni del mondo reale sono facilmente ingannati da esempi contraddittori se non viene utilizzata alcuna strategia di difesa, aprendo la porta a problemi di sicurezza potenzialmente critici. La strategia di difesa più affidabile è l'addestramento del contraddittorio, in cui gli esempi del contraddittorio vengono generati e aggiunti agli esempi puliti al momento dell'addestramento.

Se vuoi valutare la robustezza dei tuoi modelli di classificazione delle immagini a diversi attacchi, ti consiglio di utilizzare la libreria Python open source cleverhans. Molti metodi di attacco possono essere testati contro il tuo modello, inclusi quelli menzionati in questo articolo. Puoi anche utilizzare questa libreria per eseguire l'addestramento in contraddittorio del tuo modello e aumentarne la robustezza rispetto agli esempi contraddittori.

Trovare nuovi attacchi e migliori strategie di difesa è un'area di ricerca attiva. È necessario un lavoro più teorico ed empirico per rendere i modelli di apprendimento automatico più robusti e sicuri nelle applicazioni del mondo reale.

Incoraggio il lettore a sperimentare queste tecniche e pubblicare nuovi interessanti risultati. Inoltre, qualsiasi feedback in merito al presente articolo è molto gradito dall'autore.

Imparentato:
  • Logica sonora e modelli di intelligenza artificiale monotona
  • Le molte applicazioni della discesa graduale in TensorFlow