Învățare automată adversară: Cum să atacați și să apărați modelele ML

Publicat: 2022-03-11

În zilele noastre, modelele de învățare automată în viziunea computerizată sunt folosite în multe aplicații din lumea reală, cum ar fi mașinile cu conducere autonomă, recunoașterea feței, diagnosticarea cancerului sau chiar în magazinele de ultimă generație pentru a urmări ce produse scot clienții de la raft, astfel încât creditul lor. cardul poate fi încărcat la plecare.

Precizia tot mai mare a acestor sisteme de învățare automată este destul de impresionantă, așa că a condus în mod natural la un adevărat flux de aplicații care le folosesc. Deși fundamentele matematice din spatele lor au fost deja studiate cu câteva decenii în urmă, apariția relativ recentă a GPU-urilor puternice a oferit cercetătorilor puterea de calcul necesară pentru a experimenta și a construi sisteme complexe de învățare automată. Astăzi, modelele de ultimă generație pentru viziunea computerizată se bazează pe rețele neuronale profunde cu până la câteva milioane de parametri și se bazează pe hardware care nu era disponibil cu doar un deceniu în urmă.

În 2012, Alex Krizhevsky et alții au devenit primul care a arătat cum să implementeze o rețea convoluțională profundă, care la acea vreme a devenit modelul de ultimă generație în clasificarea obiectelor. De atunci, au fost publicate multe îmbunătățiri ale modelului lor original, fiecare dintre ele oferind o creștere a preciziei (VGG, ResNet, Inception, etc). În ultimul timp, modelele de învățare automată au reușit să atingă o acuratețe umană și chiar peste umană în multe sarcini de viziune pe computer.

În urmă cu câțiva ani, obținerea de predicții greșite dintr-un model de învățare automată era obișnuit norma. În zilele noastre, aceasta a devenit excepția și ne-am așteptat să funcționeze impecabil, mai ales atunci când sunt implementate în aplicații din lumea reală.

Până de curând, modelele de învățare automată erau de obicei antrenate și testate într-un mediu de laborator , cum ar fi competițiile de învățare automată și lucrările academice. În zilele noastre, pe măsură ce sunt implementate în scenarii din lumea reală, vulnerabilitățile de securitate care provin din erorile de model au devenit o preocupare reală.

Ideea acestui articol este de a explica și de a demonstra modul în care rețelele neuronale profunde de ultimă generație utilizate în recunoașterea imaginilor pot fi păcălite cu ușurință de un actor rău intenționat și astfel pot fi făcute să producă predicții greșite. Odată ce ne familiarizăm cu strategiile obișnuite de atac, vom discuta despre cum să ne apărăm modelele împotriva lor.

Exemple de învățare automată adversară

Să începem cu o întrebare de bază: Ce sunt exemplele de învățare automată adversară?

Exemplele adverse sunt intrări rău intenționate concepute pentru a păcăli un model de învățare automată.

În acest articol, ne vom limita atenția la modelele de învățare automată care efectuează clasificarea imaginilor. Prin urmare, exemplele adverse vor fi imagini de intrare create de un atacator pe care modelul nu le poate clasifica corect.

Ca exemplu, să luăm un GoogLeNet instruit pe ImageNet pentru a realiza clasificarea imaginilor ca model de învățare automată. Mai jos aveți două imagini cu un panda care nu se pot distinge pentru ochiul uman. Imaginea din stânga este una dintre imaginile curate din setul de date ImageNet, folosită pentru a antrena modelul GoogLeNet. Cea din dreapta este o ușoară modificare a primei, creată prin adăugarea vectorului de zgomot în imaginea centrală. Prima imagine este prezisă de model a fi un panda, așa cum era de așteptat. Al doilea, în schimb, este prezis (cu foarte mare încredere) a fi un gibon.

Două imagini una lângă alta ale unui panda. A doua imagine arată identică cu prima, dar este etichetată ca un animal diferit. O a treia imagine a ceea ce pare a fi static aleatoriu este între ei, demonstrând stratul care a fost adăugat la cea de-a doua imagine a panda pentru a deruta modelul.

Zgomotul adăugat primei imagini nu este aleatoriu, ci rezultatul unei optimizări atente de către atacator.

Ca un al doilea exemplu, putem arunca o privire asupra modului de sinteză a exemplelor adverse 3D folosind o imprimantă 3D. Imaginea de mai jos arată diferite vederi ale unei broaște țestoase 3D tipărite de autori și clasificările greșite ale modelului Google Inception v3.

O imagine care arată o rețea de imagini cu broaște țestoase, dintre care unele sunt clasificate corect ca broaște țestoase, dintre care unele sunt clasificate ca puști și unele dintre ele sunt clasificate ca alte

Cum pot modelele de ultimă generație, care au o precizie de clasificare mai mare decât cea umană, să facă astfel de greșeli aparent stupide?

Înainte de a explora punctele slabe pe care tind să le aibă modelele de rețele neuronale, să ne amintim că noi, oamenii, avem propriul nostru set de exemple adverse. Aruncă o privire la imaginea de mai jos. Ce vezi? O spirală sau o serie de cercuri concentrice?

O imagine care arată o iluzie optică.

Ceea ce dezvăluie aceste exemple diferite este că modelele de învățare automată și viziunea umană trebuie să folosească reprezentări interne destul de diferite atunci când înțelegem ce este acolo într-o imagine.

În secțiunea următoare, vom explora strategii pentru a genera exemple contradictorii.

Cum se generează exemple adverse

Să începem cu o întrebare simplă: Ce este un exemplu contradictoriu?

Exemplele adverse sunt generate prin luarea unei imagini curate pe care modelul o clasifică corect și găsirea unei mici perturbări care face ca noua imagine să fie clasificată greșit de modelul ML.

Să presupunem că un atacator are informații complete despre modelul pe care vrea să-l atace. Acest lucru înseamnă în esență că atacatorul poate calcula funcția de pierdere a modelului $J(\theta, X, y)$ unde $X$ este imaginea de intrare, $y$ este clasa de ieșire și $\theta$ sunt imaginea internă. parametrii modelului. Această funcție de pierdere este de obicei probabilitatea de pierdere negativă pentru metodele de clasificare.

În acest scenariu cutie albă, există mai multe strategii de atac, fiecare dintre ele reprezentând diferite compromisuri între costul de calcul pentru a le produce și rata de succes. Toate aceste metode încearcă, în esență, să maximizeze modificarea funcției de pierdere a modelului, menținând în același timp perturbarea imaginii de intrare mică. Cu cât dimensiunea spațiului imaginii de intrare este mai mare, cu atât este mai ușor să generați exemple contradictorii care nu se pot distinge de imaginile curate de către ochiul uman.

Metoda L-BFGS

Am găsit ${x}'$ din exemplul advers rezolvând următoarea problemă de optimizare cu restricții de casete:

$$ \begin{matrice} \text{minimize } c \cdot \left \| x - {x}' \right \|^2_2 + \text{pierdere}_{f,1} {x}' \\ \text{astfel încât } {x}' \epsilon \left [0, 1 \right ]^n \end{matrice} $$

unde $c > 0$ este un parametru care trebuie de asemenea rezolvat. În mod intuitiv, căutăm imagini adverse ${x}'$ astfel încât suma ponderată a distorsiunii față de imaginea curată ( $\left | x - {x}' \right |$ ) și pierderea față de clasa greșită este minimul posibil.

Pentru modele complexe, cum ar fi rețelele neuronale profunde, problema de optimizare nu are o soluție în formă închisă și, prin urmare, trebuie utilizate metode numerice iterative. Din această cauză, această metodă L-BFGS este lentă. Cu toate acestea, rata de succes este mare.

Semn de gradient rapid (FGS)

Cu metoda semnului de gradient rapid (FGS), facem o aproximare liniară a funcției de pierdere în jurul punctului inițial, dată de vectorul imagine curată $X$ și clasa adevărată $y$ .

În această ipoteză, gradientul funcției de pierdere indică direcția în care trebuie să schimbăm vectorul de intrare pentru a produce o modificare maximă a pierderii. Pentru a menține dimensiunea mică a perturbației, extragem doar semnul gradientului, nu norma sa reală, și o scalam cu un factor mic epsilon.

În acest fel ne asigurăm că diferența în funcție de pixeli dintre imaginea inițială și cea modificată este întotdeauna mai mică decât epsilon (această diferență este norma L_infinity).

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

Gradientul poate fi calculat eficient folosind retropropagarea. Această metodă este una dintre cele mai rapide și mai ieftine din punct de vedere computațional de implementat. Cu toate acestea, rata de succes este mai mică decât metodele mai scumpe precum L-BFGS.

Autorii cărții Adversarial Machine Learning at Scale au spus că are o rată de succes între 63% și 69% la predicția de top-1 pentru setul de date ImageNet, cu epsilon între 2 și 32. Pentru modelele liniare, cum ar fi regresia logistică, metoda semnului de gradient rapid. este exact. În acest caz, autorii unei alte lucrări de cercetare privind exemplele contradictorii raportează o rată de succes de 99%.

Semn de gradient rapid iterativ

O extensie evidentă a metodei anterioare este să o aplicați de mai multe ori cu o dimensiune alfa de pas mai mică și să tăiați lungimea totală a pasului pentru a vă asigura că distorsiunea dintre imaginile curate și cele adverse este mai mică decât epsilon.

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

Alte tehnici, precum cele propuse în lucrarea lui Nicholas Carlini sunt îmbunătățiri față de L-BFGS. Ele sunt, de asemenea, costisitoare de calculat, dar au o rată de succes ridicată.

Cu toate acestea, în majoritatea situațiilor din lumea reală, atacatorul nu cunoaște funcția de pierdere a modelului vizat. În acest caz, atacatorul trebuie să folosească o strategie cutie neagră.

Atacul cutie neagră

Cercetătorii au observat în mod repetat că exemplele adverse se transferă destul de bine între modele, ceea ce înseamnă că pot fi proiectate pentru un model țintă A, dar ajung să fie eficiente împotriva oricărui alt model antrenat pe un set de date similar.

Aceasta este așa-numita proprietate de transferabilitate a exemplelor adverse, pe care atacatorii o pot folosi în avantajul lor atunci când nu au acces la informații complete despre model. Atacatorul poate genera exemple adverse urmând acești pași:

  1. Interogați modelul vizat cu intrări $X_i$ pentru $i=1…n$ și stocați ieșirile $y_i$ .
  2. Cu datele de antrenament $(X_i, y_i)$ , construiți un alt model, numit model substitut.
  3. Utilizați oricare dintre algoritmii cutie albă prezentate mai sus pentru a genera exemple contradictorii pentru modelul de înlocuire. Multe dintre ele se vor transfera cu succes și vor deveni exemple contradictorii și pentru modelul țintă.

O aplicare cu succes a acestei strategii împotriva unui model comercial de învățare automată este prezentată în această lucrare a Fundației Computer Vision.

Apărări împotriva exemplelor adversare

Atacatorul organizează atacul, exploatând toate informațiile pe care le dețin despre model. Evident, cu cât modelul oferă mai puține informații la momentul predicției, cu atât este mai greu pentru un atacator să creeze un atac de succes.

O primă măsură ușoară pentru a vă proteja modelul de clasificare într-un mediu de producție este de a evita afișarea scorurilor de încredere pentru fiecare clasă prezisă. În schimb, modelul ar trebui să furnizeze numai primele $N$ (de exemplu, 5) cele mai probabile clase. Când scorurile de încredere sunt furnizate utilizatorului final, un atacator rău intenționat le poate folosi pentru a estima numeric gradientul funcției de pierdere. În acest fel, atacatorii pot crea atacuri în cutie albă folosind, de exemplu, metoda semnelor cu gradient rapid. În lucrarea Computer Vision Foundation pe care am citat-o ​​mai devreme, autorii arată cum să faceți acest lucru în raport cu un model comercial de învățare automată.

Să ne uităm la două apărări care au fost propuse în literatura de specialitate.

Distilarea defensivă

Această metodă încearcă să genereze un nou model ai cărui gradienți sunt mult mai mici decât modelul original neapărat. Dacă gradienții sunt foarte mici, tehnici precum FGS sau Iterative FGS nu mai sunt utile, deoarece atacatorul ar avea nevoie de distorsiuni mari ale imaginii de intrare pentru a obține o modificare suficientă a funcției de pierdere.

Distilarea defensivă introduce un nou parametru $T$ , numit temperatură, în ultimul strat softmax al rețelei:

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

Rețineți că, pentru T=1, avem funcția obișnuită softmax. Cu cât valoarea lui $T$ este mai mare, cu atât gradientul pierderii este mai mic în raport cu imaginile de intrare.

Distilarea defensivă se desfășoară după cum urmează:

  1. Antrenează o rețea, numită rețea profesorului, cu o temperatură $T » 1$ .
  2. Utilizați rețeaua de profesori instruiți pentru a genera etichete soft pentru fiecare imagine din setul de instruire. O etichetă soft pentru o imagine este setul de probabilități pe care modelul le atribuie fiecărei clase. De exemplu, dacă imaginea de ieșire este un papagal, modelul profesorului poate scoate etichete soft precum (90% papagal, 10% papagayo).
  3. Antrenează o a doua rețea, rețeaua distilata , pe etichetele soft, folosind din nou temperatura $T$ . Antrenamentul cu etichete soft este o tehnică care reduce supraadaptarea și îmbunătățește acuratețea în afara eșantionului a rețelei distilate.
  4. În cele din urmă, la momentul predicției, rulați rețeaua distilata cu temperatura $T=1$ .

Distilarea defensivă protejează cu succes rețeaua împotriva setului de atacuri încercate în Distillation ca apărare împotriva perturbațiilor adverse împotriva rețelelor neuronale profunde .

Imagine a unui tabel care arată rata de succes bazată pe temperatura de distilare. În general, cu cât temperatura este mai mare, cu atât rata de succes este mai mică, atât pentru probele adverse MNIST, cât și pentru CIFAR10.

Din păcate, o lucrare ulterioară a cercetătorilor de la Universitatea din California, Berkeley a prezentat un nou set de metode de atac care înfrânge distilarea defensivă. Aceste atacuri sunt îmbunătățiri față de metoda L-BFGS care demonstrează că distilarea defensivă nu este o soluție generală împotriva exemplelor adverse.

Antrenamentul adversarului

În zilele noastre, antrenamentul adversar este cea mai eficientă strategie de apărare. Exemple adverse sunt generate și utilizate la antrenamentul modelului. Intuitiv, dacă modelul vede exemple adverse în timpul antrenamentului, performanța sa la momentul predicției va fi mai bună pentru exemplele adverse generate în același mod.

În mod ideal, am dori să folosim orice metodă de atac cunoscută pentru a genera exemple adverse în timpul antrenamentului. Cu toate acestea, pentru un set de date mare cu dimensionalitate mare (cum ar fi ImageNet), metodele robuste de atac precum L-BFGS și îmbunătățirile descrise în lucrarea Berkeley sunt prea costisitoare din punct de vedere computațional. În practică, ne putem permite doar să folosim o metodă rapidă cum ar fi FGS sau poate fi folosit FGS iterativ.

Antrenamentul adversar folosește o funcție de pierdere modificată, care este o sumă ponderată a funcției de pierdere obișnuită pe exemplele curate și o funcție de pierdere din exemplele adverse.

$$ Pierdere = \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) $$

În timpul antrenamentului, pentru fiecare lot de $m$ imagini curate generăm $k$ imagini adverse folosind starea curentă a rețelei. Transmitem rețeaua atât pentru exemple curate, cât și pentru cele contradictorii și calculăm pierderea cu formula de mai sus.

O îmbunătățire a acestui algoritm prezentată în această lucrare de conferință se numește antrenament adversar de ansamblu. În loc să folosiți rețeaua actuală pentru a genera exemple contradictorii, sunt folosite mai multe modele pre-antrenate pentru a genera exemple contradictorii. Pe ImageNet, această metodă crește robustețea rețelei la atacurile cutie neagră. Această apărare a fost câștigătoarea rundei I în competiția NIPS 2017 privind Apărarea împotriva atacurilor adverse .

Concluzii și pași ulterioare

Începând de astăzi, atacarea unui model de învățare automată este mai ușor decât apărarea acestuia. Modelele de ultimă generație implementate în aplicațiile din lumea reală sunt ușor păcălite de exemple contradictorii dacă nu este folosită nicio strategie de apărare, deschizând ușa către probleme de securitate potențial critice. Cea mai fiabilă strategie de apărare este antrenamentul advers, unde exemplele adverse sunt generate și adăugate la exemplele curate în timpul antrenamentului.

Dacă doriți să evaluați robustețea modelelor dvs. de clasificare a imaginilor la diferite atacuri, vă recomand să utilizați biblioteca open-source Python cleverhans. Multe metode de atac pot fi testate împotriva modelului dvs., inclusiv cele menționate în acest articol. De asemenea, puteți utiliza această bibliotecă pentru a efectua antrenament în contradicție a modelului dvs. și pentru a crește robustețea acestuia la exemplele adverse.

Găsirea de noi atacuri și strategii de apărare mai bune este un domeniu activ de cercetare. Sunt necesare atât lucrări teoretice, cât și empirice pentru a face modelele de învățare automată mai robuste și mai sigure în aplicațiile din lumea reală.

Încurajez cititorul să experimenteze aceste tehnici și să publice noi rezultate interesante. Mai mult, orice feedback cu privire la acest articol este foarte binevenit de către autor.

Legate de:
  • Sunet logic și modele AI monotone
  • Multe aplicații ale coborârii gradientului în TensorFlow