Tänapäeval kasutatakse arvutinägemise masinõppemudeleid paljudes reaalsetes rakendustes, näiteks isesõitvad autod, näotuvastus, vähidiagnostika või isegi järgmise põlvkonna kauplustes, et jälgida, millised tooted kliendid riiulilt maha võtavad, et nende krediit lahkumisel saab kaarti laadida.
Nende masinõppesüsteemide kasvav täpsus on üsna muljetavaldav, nii et see tõi loomulikult kaasa nende rakenduste tõelise tulva. Kuigi nende taga olevaid matemaatilisi aluseid uuriti juba paar aastakümmet tagasi, andis võimsate GPU-de suhteliselt hiljutine tulek teadlastele arvutusvõimsuse, mis on vajalik keeruliste masinõppesüsteemide katsetamiseks ja ülesehitamiseks. Tänapäeval põhinevad arvutinägemise tipptasemel mudelid kuni mitme miljoni parameetriga sügavatel närvivõrkudel ja tuginevad riistvarale, mida polnud veel kümmekond aastat tagasi saadaval.
2012. aastal näitasid Alex Krizhevsky et altri esimesena, kuidas rakendada sügavat konvolutsioonilist võrgustikku, millest sel ajal sai objektide klassifitseerimisel tipptasemel mudel. Sellest ajast alates on nende originaalmudelis avaldatud palju täiustusi, millest igaüks annab täpsust (VGG, ResNet, Inception jne). Hilise seisuga on masinõppemudelitel õnnestunud paljude arvutinägemisülesannetega saavutada inimlik ja isegi inimesest kõrgem täpsus.
Mõni aasta tagasi oli masinõppemudelilt valede ennustuste saamine tavapärane. Tänapäeval on sellest saanud erand ja oleme eeldanud, et nad toimivad laitmatult, eriti kui neid kasutatakse reaalsetes rakendustes.
Kuni viimase ajani koolitati ja testiti masinõppemudeleid tavaliselt a laboratoorium nagu masinõppevõistlused ja akadeemilised tööd. Tänapäeval, kui neid kasutatakse reaalsetes stsenaariumides, on mudeli vigadest tulenevad turvanõrkused muutunud tõeliseks mureks.
Selle artikli mõte on selgitada ja demonstreerida, kuidas pildituvastuses kasutatavaid tipptasemel sügavaid närvivõrke saab pahatahtlik näitleja hõlpsasti petta ja seeläbi panna valesid ennustusi tegema. Kui oleme harjunud tavapäraste rünnakustrateegiatega, arutame, kuidas oma mudeleid nende eest kaitsta.
Alustame põhiküsimusest: Millised on võistleva masinõppe näited?
Võistlusnäited on pahatahtlikud sisendid, mis on mõeldud masinõppemudeli petmiseks.
Selles artiklis piirame oma tähelepanu masinate õppemudelitele, mis teostavad piltide klassifitseerimist. Seega on võistlevateks näideteks ründaja loodud sisepildid, mida mudel ei suuda õigesti klassifitseerida.
Võtame näiteks a GoogLeNet koolitas ImageNeti pildi klassifitseerimine meie masinõppemudelina. Allpool on teil kaks pilti pandast, mida inimese silm ei erista. Vasakpoolne pilt on üks puhastest piltidest ImageNeti andmekogumis, mida kasutatakse GoogLeNeti mudeli koolitamiseks. Parempoolne on esimese väike modifikatsioon, mis on loodud müra vektori lisamisega kesksele pildile. Esimesele pildile ennustab mudel ootuspäraselt pandat. Selle asemel ennustatakse teisele (väga suure enesekindlusega) gibbonit.
Esimesele pildile lisatud müra pole juhuslik, vaid ründaja hoolika optimeerimise tulemus.
Teise näitena võime heita pilgu sellele, kuidas sünteesida 3D võistlevaid näiteid 3D-printeri abil. Alloleval pildil on autorite trükitud 3D-kilpkonna erinevad vaated ja Google Inception v3 mudeli valed klassifikatsioonid.
Kuidas saavad tipptasemel mudelid, millel on inimesest kõrgem klassifitseerimistäpsus, teha nii näiliselt rumalaid vigu?
Enne kui süveneme nõrkustesse, mis närvivõrgu mudelitel kipuvad olema, pidagem meeles, et meil inimestel on oma võistlevate näidete kogum. Heitke pilk allpool olevale pildile. Mida sa näed? Spiraal või kontsentriliste ringide jada?
Need erinevad näited paljastavad ka selle, et masinõppemudelid ja inimese nägemus peavad pildil oleva sisu mõistmisel kasutama üsna erinevaid sisemisi esitusi.
Järgmises jaotises uurime strateegiaid võistlevate näidete loomiseks.
Alustame lihtsa küsimusega: Mis on võistlev näide?
Võistlusnäited genereeritakse puhta pildi tegemisega, mille mudel õigesti klassifitseerib, ja leitakse väike häiritus, mis põhjustab uue mudeli ML-mudeli klassifitseerimise.
Oletame, et ründajal on täielik teave mudeli kohta, mida nad tahavad rünnata. See tähendab sisuliselt seda, et ründaja saab arvutada mudeli kadumisfunktsiooni$ J ( teeta, X, y) $kus$ X $on sisendkujutis,$ ja $on väljundklass ja$ theta $on mudeli sisemised parameetrid. See kahjumi funktsioon on klassifitseerimismeetodite puhul tavaliselt negatiivse kahju tõenäosus.
Selle valge kasti stsenaariumi kohaselt on mitu rünnakustrateegiat, millest igaüks esindab erinevaid kompromisse nende tootmiseks vajalike arvutuskulude ja edukuse määra vahel. Kõik need meetodid püüavad sisuliselt maksimeerida mudeli kadumise funktsiooni muutust, hoides sisendkujutise häiret väikesena. Mida suurem on sisendkujutusruumi mõõde, seda lihtsam on luua võistlevaid näiteid, mida inimese silm ei erista puhastest piltidest.
Leidsime võistleva näite$ {x} 'lahendades järgmise kastiga piiratud optimeerimisprobleemi:
$$ begin {matrix} text {minimeeri} c cdot left | x - {x} ' right | ^ 2_2 + text {loss} _ {f, 1} {x}' \ text {such that} {x} ' epsilon left [0, 1 right ] ^ n end {maatriks} $$kus$ c> $ 0on parameeter, mis vajab ka lahendamist. Intuitiivselt otsime võistluspilte$ {x} 'nii, et moonutuse kaalutud summa puhta pildi suhtes ($ vasakule | x - {x} ’ right | $) ja kaotus vale klassi suhtes on minimaalne võimalik.
Selliste keerukate mudelite puhul nagu sügavad närvivõrgud, pole optimeerimisprobleemil suletud vormis lahendust ja seetõttu tuleb kasutada iteratiivseid numbrilisi meetodeid. Selle tõttu see L-BFGS meetod on aeglane. Kuid selle edukuse määr on kõrge.
Koos kiire gradientmärgi (FGS) meetod , teeme kaotusfunktsiooni lineaarse lähenduse algpunkti ümber, mille annab puhta pildivektor$ X $ja tõeline klass$ ja $.
Selle eelduse kohaselt näitab kadumisfunktsiooni gradient suunda, milles peame sisendivektorit muutma, et tekitada kao maksimaalne muutus. Häirituse suuruse hoidmiseks eraldame ainult gradiendi märgi, mitte selle tegeliku normi, ja skaleerime selle väikese teguri epsiloniga.
Nii tagame, et algkujutise ja muudetud kujutise pikslitevaheline erinevus on alati väiksem kui epsilon (see erinevus on L_infinity norm).
$$ X ^ {adv} = X + epsilon text {sign} left ( bigtriangledown_x J left (X, y_ {true} right) right) $$Gradiendi saab tõhusalt arvutada, kasutades backpropagation. See meetod on üks kiiremini ja arvutuslikult kõige odavam rakendada. Kuid selle edukuse määr on madalam kui kallimatel meetoditel nagu L-BFGS.
Raamatu autorid Võistluslik masinõpe skaalal ütles, et ImageNeti andmekogumi top-1 prognoosimise edukuse määr on vahemikus 63% kuni 69%, epsilon on vahemikus 2 kuni 32. Lineaarsete mudelite puhul, nagu ka logistiline regressioon, on kiire gradientmärgi meetod täpne. Sel juhul teise autorid uurimistöö võistlevate näidete kohta eduprotsent 99%.
Ilmselge eelmise meetodi pikendamine on rakendada seda mitu korda väiksema astmesuuruse alfaga ja klammerdada kogu sammu pikkus, et veenduda, et moonutus puhta ja võistleva pildi vahel on väiksem kui epsilon.
$$ X ^ {adv} _0 = X, X ^ {adv} _ {N + 1} = Clip_ {X, epsilon} left {X ^ {adv} _ {N} + alfa text {märk } left ( bigtriangledown_X J left (X ^ {adv} _N, y_ {true} right) right) right } $$Muud tehnikad, näiteks need, mis on välja pakutud Nicholas Carlini paber on L-BFGS-i täiustused. Nende arvutamine on samuti kallis, kuid nende edukuse protsent on kõrge.
Kuid enamikus reaalsetes olukordades ei tea ründaja suunatud mudeli kaotamise funktsiooni. Sel juhul peab ründaja kasutama musta kasti strateegiat.
Teadlased on korduvalt täheldanud, et võistlusnäited kanduvad mudelite vahel üsna hästi, mis tähendab, et neid saab kujundada sihtmudeli A jaoks, kuid need on tõhusad mis tahes muu sarnase andmekogumi koolitatud mudeli suhtes.
See on võistlevate näidete niinimetatud ülekantavusomadus, mida ründajad saavad kasutada oma eeliseks, kui neil pole täielikku teavet mudeli kohta. Ründaja saab luua võistlevaid näiteid, järgides neid samme:
Selle strateegia edukat rakendamist kaubandusliku masinõppemudeli vastu esitatakse aastal see Computer Vision Foundationi paber .
Ründaja meisterdab rünnaku, kasutades ära kogu teabe, mis tal mudeli kohta on. Ilmselt on nii, et mida vähem teavet mudel prognoosimise ajal väljastab, seda raskem on ründajal edukat rünnakut koostada.
Esimene lihtne meede oma klassifikatsioonimudeli kaitsmiseks tootmiskeskkonnas on vältida iga prognoositud klassi usalduskoori näitamist. Selle asemel peaks mudel pakkuma ainult tippu$ N $(nt 5) kõige tõenäolisemalt klassid. Kui lõppkasutajale antakse usalduse skoore, saab pahatahtlik ründaja neid kasutada kaotuse funktsiooni gradiendi numbriliseks hindamiseks. Nii saavad ründajad meisterdada valgete kastide rünnakuid, kasutades näiteks kiiret gradientmärgi meetodit. Varem tsiteeritud Computer Vision Foundationi dokumendis näitavad autorid, kuidas seda teha kaubandusliku masinõppemudeli vastu.
Vaatame kahte kirjanduses välja pakutud kaitset.
See meetod üritab genereerida uut mudelit, mille gradient on algsest kaitsmata mudelist palju väiksem. Kui kalle on väga väike, ei ole sellised meetodid nagu FGS või itteratiivsed FGS enam kasulikud, kuna ründajal oleks vaja kaotamisfunktsiooni piisava muutuse saavutamiseks sisendkujutise suuri moonutusi.
Kaitsev destilleerimine võtab kasutusele uue parameetri$ T $, mida nimetatakse temperatuuriks, kuni võrgu viimase softmax-kihini:
$$ text {softmax} left (x, T right) _i = frac {e ^ {x_i / T}} { Sigma_j e ^ {x_j / T}} $$Pange tähele, et T = 1 korral on meil tavaline funktsioon softmax. Mida suurem on väärtus$ T $, seda väiksem on kaotuse gradient sisendkujutiste suhtes.
Kaitsev destilleerimine toimub järgmiselt:
Kaitsev destilleerimine kaitseb võrku edukalt rünnakute eest Destilleerimine kaitsena võistlevatele perforatsioonidele sügavate närvivõrkude vastu .
Kahjuks a hilisem Berkeley California ülikooli ülikooli artikkel esitas uue rünnakumeetodite komplekti, mis alistab kaitsva destilleerimise. Need rünnakud on L-BFGS-meetodi täiustused, mis tõestavad, et kaitsev destilleerimine ei ole võistlevate näidete vastu üldine lahendus.
Tänapäeval on võistlusõpe kõige tõhusam kaitsestrateegia. Mudeli koolitamisel genereeritakse ja kasutatakse võistlevaid näiteid. Intuitiivselt, kui mudel näeb võistlusnäited koolituse ajal, selle toimimine ennustusajal on parem samamoodi loodud võistlevate näidete jaoks.
Ideaalis tahaksime treeningul võistlevate näidete loomiseks kasutada mis tahes teadaolevat rünnakumeetodit. Suure suure mõõtmetega andmekogumi (nagu ImageNet) jaoks on aga tugevad rünnakumeetodid, nagu L-BFGS, ja Berkeley dokumendis kirjeldatud täiustused liiga arvutuslikult kulukad. Praktikas saame endale lubada ainult sellise kiire meetodi kasutamist nagu FGS või saab kasutada iteratiivset FGS-i.
Võistluskoolitus kasutab modifitseeritud kaotuse funktsiooni, mis on kaalutud summa tavalistest kahjude funktsioonist puhtate näidete korral ja võistlusnäidete kaotusfunktsioon.
$$ Loss = frac {1} { left (m - k right)} left ( sum_ {i epsilon CLEAN} y_i right) + lambda sum_ {i epsilon ADV} {L left (X * {adv} _i | y_i right)} right) $$Koolituse ajal iga partii kohta$ m $meie loodud puhtad pildid$ k $võistluspildid, kasutades võrgu praegust olekut. Edastame võrgu levitamist nii puhaste kui ka võistlevate näidete jaoks ja arvutame kaotuse ülaltoodud valemiga.
Selles esitatud algoritmi täiustus konverentsi ettekanne nimetatakse ansambli võistluskoolituseks. Võistlusnäidete genereerimise asemel kasutatakse praegust võrku, kuid võistlevate näidete loomiseks kasutatakse mitut eelnevalt koolitatud mudelit. ImageNetis suurendab see meetod võrgu vastupidavust mustade kastide rünnakutele. See kaitse oli I vooru võitja NIPS 2017 võistlus võistlusrünnakute vastu .
Alates tänasest on masinõppemudeli ründamine lihtsam kui selle kaitsmine. Reaalsetes rakendustes kasutatavad tipptasemel mudelid saab võistlusnäidete abil lihtsalt petta, kui kaitsestrateegiat ei kasutata, mis avab ukse potentsiaalselt kriitilistele julgeolekuküsimustele. Kõige usaldusväärsem kaitsestrateegia on võistlusõpe, kus võistlusnäited genereeritakse ja lisatakse treeningu ajal puhastesse näidetesse.
Kui soovite hinnata oma piltide klassifitseerimise mudelite vastupidavust erinevatele rünnakutele, soovitan teil kasutada avatud lähtekoodiga Pythoni teeki nutikad . Teie mudeli järgi saab testida paljusid rünnakumeetodeid, sealhulgas ka neid, mida selles artiklis mainitakse. Võite seda raamatukogu kasutada ka oma mudeli võistluskoolituse läbiviimiseks ja selle võistlusnäidete usaldusväärsuse suurendamiseks.
Uute rünnakute ja paremate kaitsestrateegiate leidmine on aktiivne uurimisvaldkond. Masinõppemudelite reaalsetes rakendustes tugevamaks ja ohutumaks muutmiseks on vaja nii teoreetilisemat kui ka empiirilisemat tööd.
Julgustan lugejat neid tehnikaid katsetama ja uusi huvitavaid tulemusi avaldama. Pealegi on autor selle artikli kohta väga teretulnud.
Seotud:Võistlusnäide on sisend (nt pilt, heli), mille eesmärk on panna masinõppemudel valesti ennustama. See on loodud puhtast näitest, lisades väikese häiringu, mis on inimestele märkamatu, kuid piisavalt tundlik, et mudel saaks oma ennustust muuta.
Kõik reaalses stsenaariumis kasutatavad masinõppemudelid on võistlevate rünnakute all. Siia kuuluvad isejuhtivates autodes kasutatavad arvutinägemudelid, lennujaamades kasutatavad näotuvastussüsteemid või kõnetuvastustarkvara teie mobiiltelefoni assistendis.
Võistlusrünnak on strateegia, mille eesmärk on panna masinõppemudel valesti ennustama. See seisneb väikese ja hoolikalt kujundatud häiringu lisamises puhtale pildile, mis on inimsilmale märkamatu, kuid mida mudel peab asjakohaseks ja muudab oma ennustust.