Forskning under de senaste åren har visat att maskininlärningsmodeller (ML) är sårbara för motstridiga ingångar, där en motståndare kan skapa input för att strategiskt ändra modellens output (i bildklassificering, taligenkänning, eller spårning av bedrägerier). Tänk dig till exempel att du har implementerat en modell som identifierar dina anställda baserat på bilder av deras ansikten. Som framgår av vitboken Accessorize to a Crime: Real and Stealthy Attacks on State-of-the-Art ansiktsigenkänning, kan illvilliga anställda tillämpa subtila men noggrant designade ändringar på sin bild och lura modellen att autentisera dem som andra anställda. Uppenbarligen kan sådana kontradiktoriska insatser – särskilt om det finns en betydande mängd av dem – ha en förödande affärseffekt.
Helst vill vi upptäcka varje gång en kontradiktorisk input skickas till modellen för att kvantifiera hur kontradiktorisk input påverkar din modell och verksamhet. För detta ändamål analyserar en bred klass av metoder individuella modellingångar för att kontrollera om det finns kontradiktoriskt beteende. Aktiv forskning inom kontradiktorisk ML har dock lett till allt mer sofistikerade motstridiga indata, av vilka många är kända för att göra upptäckt ineffektiv. Anledningen till denna brist är att det är svårt att dra slutsatser från en enskild input om huruvida det är kontradiktoriskt eller inte. För detta ändamål fokuserar en ny klass av metoder på kontroller på distributionsnivå genom att analysera flera indata samtidigt. Nyckeltanken bakom dessa nya metoder är att att överväga flera indata samtidigt möjliggör mer kraftfull statistisk analys som inte är möjlig med individuella input. Men inför en bestämd motståndare med djup kunskap om modellen kan även dessa avancerade detektionsmetoder misslyckas.
Men vi kan besegra även dessa beslutsamma motståndare genom att förse försvarsmetoderna med ytterligare information. Specifikt, istället för att bara analysera modellingångarna, stärker analysen av de latenta representationerna som samlas in från de mellanliggande lagren i ett djupt neuralt nätverk avsevärt försvaret.
I det här inlägget går vi igenom hur du upptäcker kontradiktoriska ingångar med hjälp av Amazon SageMaker modellmonitor och Amazon SageMaker Debugger för en bildklassificeringsmodell som finns på Amazon SageMaker.
För att återskapa de olika stegen och resultaten som anges i det här inlägget, klona förvaret upptäcka-motstridiga-prover-använda-sagemaker i din Amazon SageMaker-anteckningsbokinstans och kör anteckningsboken.
Upptäcker kontradiktoriska ingångar
Vi visar dig hur du upptäcker motstridiga ingångar med hjälp av representationer som samlats in från ett djupt neuralt nätverk. Följande fyra bilder visar den ursprungliga träningsbilden till vänster (tagen från Tiny ImageNet-datasetet) och tre bilder producerade av PGD-attacken (Projected Gradient Descent) [1] med olika störningsparametrar ϵ. Modellen som användes här var ResNet18. Parametern ϵ definierar mängden motstridigt brus som läggs till bilderna. Originalbilden (vänster) är korrekt förutspådd som klass 67 (goose
). De motstridiga modifierade bilderna 2, 3 och 4 förutspås felaktigt som klass 51 (mantis
) av ResNet18-modellen. Vi kan också se att bilder som genereras med litet ϵ är perceptuellt omöjliga att skilja från den ursprungliga ingångsbilden.
Därefter skapar vi en uppsättning normala och motstridiga bilder och använder dem t-Distribuerad Stokastisk granninbäddning (t-SNE [2]) för att visuellt jämföra deras distributioner. t-SNE är en dimensionsreduktionsmetod som mappar högdimensionell data till ett 2- eller 3-dimensionellt utrymme. Varje datapunkt i följande bild presenterar en ingångsbild. Orange datapunkter visar de normala indata från testsetet, och blå datapunkter indikerar motsvarande motstridiga bilder genererade med en epsilon på 0.003. Om normala och motstridiga ingångar kan särskiljas, skulle vi förvänta oss separata kluster i t-SNE-visualiseringen. Eftersom båda tillhör samma kluster, betyder det att en detektionsteknik som enbart fokuserar på förändringar i modellinmatningsfördelningen inte kan särskilja dessa indata.
Låt oss ta en närmare titt på lagerrepresentationerna som produceras av olika lager i ResNet18-modellen. ResNet18 består av 18 lager; i följande bild visualiserar vi t-SNE-inbäddningarna för representationerna för sex av dessa lager.
Som föregående figur visar blir naturliga och motstridiga ingångar mer särskiljbara för djupare lager av ResNet18-modellen.
Utifrån dessa observationer använder vi en statistisk metod som mäter särskiljbarhet med hypotesprövning. Metoden består av en tvåprovstest med hjälp av maximal medelavvikelse (MMD). MMD är ett kärnbaserat mått för att mäta likheten mellan två distributioner som genererar data. Ett tvåprovstest tar två uppsättningar som innehåller indata från två distributioner och avgör om dessa distributioner är desamma. Vi jämför fördelningen av indata som observerats i träningsdata och jämför den med fördelningen av indata som tagits emot under slutledning.
Vår metod använder dessa indata för att uppskatta p-värdet med hjälp av MMD. Om p-värdet är större än ett användarspecifikt signifikansgränsvärde (5 % i vårt fall), drar vi slutsatsen att båda fördelningarna är olika. Tröskeln ställer in avvägningen mellan falska positiva och falska negativa. En högre tröskel, till exempel 10 %, minskar andelen falskt negativa (det finns färre fall när båda fördelningarna var olika men testet inte visade det). Men det resulterar också i fler falska positiva (testet visar att båda fördelningarna är olika även när så inte är fallet). Å andra sidan ger en lägre tröskel, som 1 %, färre falskt positiva men fler falskt negativa.
Istället för att tillämpa denna metod enbart på råmodellingångarna (bilder), använder vi de latenta representationerna som produceras av de mellanliggande lagren i vår modell. För att ta hänsyn till dess probabilistiska natur, tillämpar vi hypotestestet 100 gånger på 100 slumpmässigt valda naturliga indata och 100 slumpmässigt valda motstridiga indata. Sedan rapporterar vi detektionsfrekvensen som procentandelen av tester som resulterade i en detektionshändelse enligt vår signifikans på 5 %. Den högre detektionshastigheten är en starkare indikation på att de två fördelningarna är olika. Denna procedur ger oss följande upptäcktshastigheter:
- Lager 1: 3 %
- Lager 4: 7 %
- Lager 8: 84 %
- Lager 12: 95 %
- Lager 14: 100 %
- Lager 15: 100 %
I de initiala lagren är detektionshastigheten ganska låg (mindre än 10%), men ökar till 100% i de djupare lagren. Med hjälp av det statistiska testet kan metoden med säkerhet upptäcka motstridiga indata i djupare lager. Det räcker ofta med att helt enkelt använda representationerna som genereras av det näst sista lagret (det sista lagret före klassificeringslagret i en modell). För mer sofistikerade motstridiga indata är det användbart att använda representationer från andra lager och aggregera upptäcktshastigheterna.
Lösningsöversikt
I föregående avsnitt såg vi hur man upptäcker motstridiga ingångar med hjälp av representationer från det näst sista lagret. Därefter visar vi hur man automatiserar dessa tester på SageMaker genom att använda Model Monitor och Debugger. För det här exemplet tränar vi först en bildklassificering ResNet18-modell på den lilla ImageNet-datauppsättningen. Därefter distribuerar vi modellen på SageMaker och skapar ett anpassat Model Monitor-schema som kör det statistiska testet. Efteråt kör vi slutsatser med normala och motstridiga ingångar för att se hur effektiv metoden är.
Fånga tensorer med Debugger
Under modellträning använder vi Debugger för att fånga representationer som genereras av det näst sista lagret, som senare används för att härleda information om fördelningen av normala indata. Debugger är en funktion i SageMaker som gör att du kan fånga och analysera information som modellparametrar, gradienter och aktiveringar under modellträning. Dessa parameter-, gradient- och aktiveringstensorer laddas upp till Amazon enkel lagringstjänst (Amazon S3) medan träningen pågår. Du kan konfigurera regler som analyserar dessa för frågor som övermontering och försvinnande gradienter. För vårt användningsfall vill vi bara fånga det näst sista lagret av modellen (.*avgpool_output
) och modellutgångarna (förutsägelser). Vi specificerar en Debugger-hook-konfiguration som definierar ett reguljärt uttryck för lagerrepresentationerna som ska samlas in. Vi anger också a save_interval
som instruerar Debugger att samla in denna data under valideringsfasen var 100:e vidarebefordran. Se följande kod:
Kör SageMaker utbildning
Vi skickar Debugger-konfigurationen till SageMakers estimator och startar utbildningen:
Distribuera en bildklassificeringsmodell
Efter att modellutbildningen är klar distribuerar vi modellen som en slutpunkt på SageMaker. Vi specificerar en slutledningsskrift som definierar model_fn
och transform_fn
funktioner. Dessa funktioner specificerar hur modellen laddas och hur inkommande data måste förbehandlas för att utföra modellinferensen. För vårt användningsfall aktiverar vi Debugger för att fånga relevant data under slutledning. I den model_fn
funktion, anger vi en Debugger hook och en save_config
som anger att för varje slutledningsbegäran registreras modellindata (bilder), modellutgångar (förutsägelser) och det näst sista lagret (.*avgpool_output
). Vi registrerar sedan kroken på modellen. Se följande kod:
Nu distribuerar vi modellen, vilket vi kan göra från den bärbara datorn på två sätt. Vi kan antingen ringa pytorch_estimator.deploy()
eller skapa en PyTorch-modell som pekar på modellartefaktfilerna i Amazon S3 som har skapats av SageMaker-utbildningsjobbet. I det här inlägget gör vi det senare. Detta tillåter oss att skicka in miljövariabler till Docker-behållaren, som skapas och distribueras av SageMaker. Vi behöver miljövariabeln tensors_output
för att tala om för skriptet var de ska ladda upp tensorerna som samlas in av SageMaker Debugger under slutledning. Se följande kod:
Därefter distribuerar vi prediktorn på en ml.m5.xlarge-instanstyp:
Skapa ett anpassat Model Monitor-schema
När slutpunkten är igång skapar vi ett anpassat Model Monitor-schema. Det här är en SageMaker bearbetningsjobb som körs med ett periodiskt intervall (som varje timme eller dagligen) och analyserar slutledningsdata. Model Monitor tillhandahåller en förkonfigurerad behållare som analyserar och detekterar datadrift. I vårt fall vill vi anpassa den för att hämta felsökningsdata och köra MMD-testet med två prov på de hämtade lagerrepresentationerna.
För att anpassa det definierar vi först Model Monitor-objektet, som anger på vilken instanstyp dessa jobb ska köras och platsen för vår anpassade Model Monitor-behållare:
Vi vill köra det här jobbet på timbasis, så vi specificerar CronExpressionGenerator.hourly()
och utdataplatserna där analysresultaten laddas upp till. För det måste vi definiera ProcessingOutput
för SageMaker-bearbetningsutgången:
Låt oss titta närmare på vad vår anpassade Model Monitor-behållare kör. Vi skapar en utvärderingsmanus, som laddar data som fångas av Debugger. Vi skapar också en försöksobjekt, vilket gör att vi kan komma åt, fråga och filtrera data som Debugger sparade. Med testobjektet kan vi iterera över de steg som sparats under slutlednings- och träningsfaserna trial.steps(mode)
.
Först hämtar vi modellutgångarna (trial.tensor("ResNet_output_0")
) samt det näst sista lagret (trial.tensor_names(regex=".*avgpool_output")
). Vi gör detta för slutlednings- och valideringsfaserna av utbildning (modes.EVAL
och modes.PREDICT
). Tensorerna från valideringsfasen fungerar som en uppskattning av normalfördelningen, som vi sedan använder för att jämföra fördelningen av slutledningsdata. Vi skapade en klass LADIS (Detektera motstridiga indatadistributioner via lagervis statistik). Den här klassen tillhandahåller relevanta funktioner för att utföra tvåprovstestet. Den tar listan över tensorer från slutlednings- och valideringsfaserna och kör tvåprovstestet. Den returnerar en detektionsgrad, som är ett värde mellan 0–100 %. Ju högre värde, desto mer sannolikt är att slutledningsdata följer en annan fördelning. Dessutom beräknar vi en poäng för varje prov som indikerar hur sannolikt ett prov är kontradiktoriskt och de 100 bästa proverna registreras, så att användare kan inspektera dem ytterligare. Se följande kod:
Testa mot kontradiktoriska ingångar
Nu när vårt anpassade Model Monitor-schema har distribuerats kan vi producera några slutledningsresultat.
Först kör vi med data från holdout-uppsättningen och sedan med motstridiga ingångar:
Vi kan sedan kontrollera modellmonitorns display Amazon SageMaker Studio eller användning amazoncloudwatch loggar för att se om ett problem hittades.
Därefter använder vi de kontradiktoriska ingångarna mot modellen som finns på SageMaker. Vi använder testdatauppsättningen från Tiny ImageNet-datauppsättningen och tillämpar PGD-attacken, som introducerar störningar på pixelnivå så att modellen inte känner igen korrekta klasser. På följande bilder visar den vänstra kolumnen två originaltestbilder, den mellersta kolumnen visar deras motstridiga versioner och den högra kolumnen visar skillnaden mellan de båda bilderna.
Nu kan vi kontrollera modellmonitorns status och se att några av slutledningsbilderna har hämtats från en annan distribution.
Resultat och användaråtgärder
Det anpassade modellövervakningsjobbet bestämmer poängen för varje slutledningsbegäran, vilket indikerar hur sannolikt provet är kontradiktoriskt enligt MMD-testet. Dessa poäng samlas in för alla slutledningsförfrågningar. Deras poäng med motsvarande Debugger-stegnummer registreras i en JSON-fil och laddas upp till Amazon S3. Efter att modellövervakningsjobbet är klart laddar vi ner JSON-filen, hämtar stegnummer och använder Debugger för att hämta motsvarande modellindata för dessa steg. Detta gör att vi kan inspektera bilderna som upptäcktes som motstridiga.
Följande kodblock plottar de två första bilderna som har identifierats som de mest sannolika att vara kontradiktoriska:
I vårt exempel testkörning får vi följande utdata. Manetbilden förutspåddes felaktigt som en apelsin och kamelbilden som en panda. Uppenbarligen misslyckades modellen på dessa ingångar och förutspådde inte ens en liknande bildklass, som guldfisk eller häst. Som jämförelse visar vi även motsvarande naturliga prover från testsetet på höger sida. Vi kan observera att de slumpmässiga störningarna som angriparen introducerade är mycket synliga i bakgrunden av båda bilderna.
Det anpassade Model Monitor-jobbet publicerar upptäcktsfrekvensen till CloudWatch, så att vi kan undersöka hur denna frekvens förändrades över tiden. En betydande förändring mellan två datapunkter kan indikera att en motståndare försökte lura modellen vid en viss tidsram. Dessutom kan du också plotta antalet slutledningsbegäranden som bearbetas i varje modellövervakningsjobb och baslinjedetekteringshastigheten, som beräknas över valideringsdataset. Baslinjefrekvensen är vanligtvis nära 0 och fungerar endast som ett jämförelsemått.
Följande skärmdump visar mätvärdena som genereras av våra testkörningar, som körde tre modellövervakningsjobb under 3 timmar. Varje jobb behandlar cirka 200–300 slutledningsförfrågningar åt gången. Detekteringsgraden är 100 % mellan 5:00 och 6:00 och sjunker efteråt.
Dessutom kan vi också inspektera fördelningarna av representationer som genereras av modellens mellanskikt. Med Debugger kan vi komma åt data från valideringsfasen av träningsjobbet och tensorerna från slutledningsfasen, och använda t-SNE för att visualisera deras distribution för vissa förutsagda klasser. Se följande kod:
I vårt testfall får vi följande t-SNE-visualisering för den andra bildklassen. Vi kan observera att de kontradiktoriska proverna är grupperade annorlunda än de naturliga.
Sammanfattning
I det här inlägget visade vi hur man använder ett tvåprovstest med maximal medelavvikelse för att upptäcka kontradiktoriska indata. Vi visade hur du kan distribuera sådana upptäcktsmekanismer med hjälp av Debugger och Model Monitor. Detta arbetsflöde låter dig övervaka dina modeller som finns på SageMaker i stor skala och upptäcka motstridiga ingångar automatiskt. För att lära dig mer om det, kolla in vår GitHub repo.
Referensprojekt
[1] Aleksander Madry, Aleksandar Makelov, Ludwig Schmidt, Dimitris Tsipras och Adrian Vladu. Mot djupinlärningsmodeller som är resistenta mot fientliga attacker. I Internationell konferens om läranderepresentationer2018
[2] Laurens van der Maaten och Geoffrey Hinton. Visualisera data med t-SNE. Journal of Machine Learning Research, 9:2579–2605, 2008. URL http://www.jmlr.org/papers/v9/vandermaaten08a.html.
Om författarna
Nathalie Rauschmayr är Senior Applied Scientist på AWS, där hon hjälper kunder att utveckla applikationer för djupinlärning.
Yigitcan Kaya är en doktorand på femte året vid University of Maryland och en tillämpad vetenskapsman praktikant vid AWS, som arbetar med säkerhet för maskininlärning och tillämpningar av maskininlärning för säkerhet.
Bilal Zafar är en tillämpad vetenskapsman på AWS, som arbetar med rättvisa, förklarlighet och säkerhet i maskininlärning.
Sergul Aydore är senior tillämpad forskare på AWS och arbetar med integritet och säkerhet i maskininlärning
- Myntsmart. Europas bästa bitcoin- och kryptobörs.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. FRI TILLGÅNG.
- CryptoHawk. Altcoin radar. Gratis provperiod.
- Källa: https://aws.amazon.com/blogs/machine-learning/detect-adversarial-inputs-using-amazon-sagemaker-model-monitor-and-amazon-sagemaker-debugger/
- "
- 10
- 100
- 67
- 9
- Om oss
- tillgång
- Enligt
- Konto
- aktiv
- Annat
- avancerat
- Alla
- amason
- mängd
- analys
- tillämpningar
- Tillämpa
- cirka
- AWS
- bakgrund
- Baslinje
- grund
- blir
- Där vi får lov att vara utan att konstant prestera,
- Blockera
- företag
- Ring
- fånga
- fall
- byta
- Kontroller
- klass
- klasser
- klassificering
- närmare
- koda
- samla
- Kolumn
- Compute
- Konferens
- konfiguration
- Behållare
- bidra
- skapas
- Brott
- beställnings
- Kunder
- datum
- djupare
- Försvar
- demonstreras
- distribuera
- utplacerade
- detekterad
- Detektering
- utveckla
- olika
- svårt
- Visa
- fördelning
- Hamnarbetare
- inte
- Effektiv
- anställda
- möjliggöra
- Slutpunkt
- Miljö
- uppskatta
- händelse
- exempel
- förvänta
- Ansikte
- ytorna
- Leverans
- Figur
- Förnamn
- fokuserar
- efter
- Framåt
- hittade
- RAM
- full
- fungera
- ytterligare
- generera
- kommer
- större
- hjälper
- här.
- högre
- Hur ser din drömresa ut
- How To
- HTTPS
- Tanken
- bild
- Inverkan
- index
- individuellt
- informationen
- ingång
- undersöka
- fråga
- problem
- IT
- Jobb
- Lediga jobb
- tidskriften
- Nyckel
- kunskap
- känd
- Etiketter
- Large
- LÄRA SIG
- inlärning
- Led
- Nivå
- sannolikt
- Lista
- Noterade
- läge
- platser
- Maskinen
- maskininlärning
- kartor
- Maryland
- Metrics
- MIT
- ML
- modell
- modeller
- Övervaka
- övervakning
- mer
- mest
- multipel
- Natural
- Natur
- nät
- Brus
- normala
- anteckningsbok
- antal
- nummer
- Övriga
- procentuell
- fas
- Punkt
- möjlig
- den mäktigaste
- förutse
- förutsägelse
- Förutsägelser
- presentera
- privatpolicy
- Integritet och säkerhet
- processer
- producera
- producerad
- ger
- tillhandahålla
- rates
- Raw
- känner igen
- registrera
- regelbunden
- relevanta
- rapport
- Repository
- begära
- förfrågningar
- forskning
- Resultat
- återgår
- regler
- Körning
- rinnande
- Skala
- Forskare
- säkerhet
- vald
- in
- signifikant
- liknande
- Enkelt
- SEX
- Small
- So
- några
- sofistikerade
- Utrymme
- specifikt
- starta
- state-of-the-art
- statistisk
- statistik
- statistik
- status
- förvaring
- student
- testa
- Testning
- tester
- Genom
- tid
- topp
- mot
- Utbildning
- rättegång
- universitet
- us
- användning
- användare
- vanligen
- värde
- synlig
- visualisering
- Sårbara
- Vad
- om
- medan
- whitepaper
- wikipedia
- arbetssätt
- skulle
- år
- år