Zephyrnet-logotyp

Vi presenterar Fortuna: Ett bibliotek för kvantifiering av osäkerhet

Datum:

Korrekt uppskattning av prediktiv osäkerhet är grundläggande i tillämpningar som involverar kritiska beslut. Osäkerhet kan användas för att bedöma tillförlitligheten av modellförutsägelser, utlösa mänskligt ingripande eller avgöra om en modell säkert kan användas i naturen.

Vi introducerar Fortuna, ett bibliotek med öppen källkod för kvantifiering av osäkerhet. Fortuna tillhandahåller kalibreringsmetoder, såsom konforma förutsägelser, som kan tillämpas på alla utbildade neurala nätverk för att erhålla kalibrerade osäkerhetsuppskattningar. Biblioteket stöder vidare ett antal Bayesianska slutledningsmetoder som kan tillämpas på djupa neurala nätverk skrivna i Lin. Biblioteket gör det enkelt att köra benchmarks och kommer att göra det möjligt för utövare att bygga robusta och pålitliga AI-lösningar genom att dra fördel av avancerade kvantifieringstekniker för osäkerhet.

Problemet med övertro på djupinlärning

Om du någonsin har tittat på klasssannolikheter som returnerats av en tränad klassificerare för djupt neurala nätverk, kanske du har observerat att sannolikheten för en klass var mycket större än de andra. Något så här, till exempel:

p = [0.0001, 0.0002, …, 0.9991, 0.0003, …, 0.0001]

Om detta är fallet för majoriteten av förutsägelserna kan din modell vara övermodig. För att utvärdera giltigheten av sannolikheterna som returneras av klassificeraren, kan vi jämföra dem med den faktiska noggrannheten som uppnåtts över en datauppsättning som lagras. Det är faktiskt naturligt att anta att andelen korrekt klassificerade datapunkter ungefär bör matcha den uppskattade sannolikheten för den förutsagda klassen. Detta koncept är känt som kalibrering [Guo C. et al., 2017].

Tyvärr är många tränade djupa neurala nätverk felkalibrerade, vilket innebär att den uppskattade sannolikheten för den förutsagda klassen är mycket högre än andelen korrekt klassificerade indatapunkter. Klassificeraren är med andra ord översäker.

Att vara översäker kan vara problematiskt i praktiken. En läkare kanske inte beställer relevanta ytterligare tester, som ett resultat av en översäker hälsodiagnos producerad av en AI. En självkörande bil kan besluta att inte bromsa eftersom den med säkerhet bedömt att föremålet framför inte var en person. En guvernör kan besluta att evakuera en stad eftersom sannolikheten för en framstående naturkatastrof som uppskattas av en AI är för hög. I dessa och många andra applikationer är kalibrerade osäkerhetsuppskattningar avgörande för att bedöma tillförlitligheten hos modellförutsägelser, falla tillbaka till en mänsklig beslutsfattare eller avgöra om en modell kan användas säkert.

Fortuna: Ett bibliotek för kvantifiering av osäkerhet

Det finns många publicerade tekniker för att antingen uppskatta eller kalibrera osäkerheten i förutsägelser, t.ex. Bayesiansk slutledning [Wilson AG, 2020], temperaturskalning [Guo C. et al., 2017], och konform förutsägelse [Angelopoulos AN et al., 2022] metoder. Befintliga verktyg och bibliotek för kvantifiering av osäkerhet har dock en snäv räckvidd och erbjuder inte en bredd av tekniker på en enda plats. Detta resulterar i en betydande omkostnad, vilket hindrar införandet av osäkerhet i produktionssystemen.

För att fylla denna lucka lanserar vi Fortuna, ett bibliotek för kvantifiering av osäkerhet som samlar framstående metoder i litteraturen och gör dem tillgängliga för användare med ett standardiserat och intuitivt gränssnitt.

Som ett exempel, anta att du har tränings-, kalibrerings- och testdataladdare i tensorflow.Tensor format, nämligen train_data_loader, calib_data_loader och test_data_loader. Vidare har du en djupinlärningsmodell inskriven Lin, nämligen modell. Då kan du använda Fortuna för att:

  1. passa en bakre fördelning;
  2. kalibrera modellutgångarna;
  3. göra kalibrerade förutsägelser;
  4. uppskattningar av osäkerhet;
  5. beräkna utvärderingsmått.

Följande kod gör allt detta åt dig.

from fortuna.data import DataLoader
from fortuna.prob_model.classification import ProbClassifier
from fortuna.metric.classification import expected_calibration_error # convert data loaders
train_data_loader = DataLoader.from_tensorflow_data_loader(train_data_loader)
calib_data_loader = DataLoader.from_tensorflow_data_loader(calib_data_loader)
test_data_loader = DataLoader.from_tensorflow_data_loader(test_data_loader) # define and train a probabilistic model
prob_model = ProbClassifier(model=model)
train_status = prob_model.train(train_data_loader=train_data_loader, calib_data_loader=calib_data_loader) # make predictions and estimate uncertainty
test_inputs_loader = test_data_loader.to_inputs_loader()
test_means = prob_model.predictive.mean(inputs_loader=test_inputs_loader)
test_modes = prob_model.predictive.mode(inputs_loader=test_inputs_loader, means=test_means) # compute the expected calibration error and plot a reliability diagram
test_targets = test_data_loader.to_array_targets()
ece = expected_calibration_error(preds=test_modes, probs=test_means, targets=test_targets)

Koden ovan använder sig av flera standardval, inklusive SWAG [Maddox WJ et al., 2019] som en bakre inferensmetod, temperaturskalning [Guo C. et al., 2017] för att kalibrera modellutgångarna och en standard Gaussisk förfördelning, såväl som konfigurationen av den bakre anpassningen och kalibreringsprocesserna. Du kan enkelt konfigurera alla dessa komponenter, och du uppmuntras starkt att göra det om du letar efter en specifik konfiguration eller om du vill jämföra flera.

Användningslägen

Fortuna erbjuder tre användningslägen: 1/ Med utgångspunkt från linmodeller, 2 / Med utgångspunkt från modellutgångar, och 3/ Utgående från osäkerhetsuppskattningar. Deras rörledningar avbildas i följande figur, var och en med start från en av de gröna panelerna. Kodavsnittet ovan är ett exempel på att använda Fortuna med utgångspunkt från Flax-modeller, vilket gör det möjligt att träna en modell med Bayesianska slutledningsprocedurer. Alternativt kan du börja antingen med modellutgångar eller direkt från dina egna osäkerhetsuppskattningar. Båda dessa senare lägen är ramoberoende och hjälpa dig att få kalibrerade osäkerhetsuppskattningar med början från a utbildad modell.

1/ Utgående från osäkerhetsuppskattningar

Att utgå från osäkerhetsuppskattningar har minimala kompatibilitetskrav, och det är den snabbaste nivån av interaktion med biblioteket. Detta användningsläge erbjuder konforma prediktionsmetoder för både klassificering och regression. Dessa tar in osäkerhetsuppskattningar numpy.ndarray formatera och returnera rigorösa uppsättningar av förutsägelser som behåller en användargiven sannolikhetsnivå. I endimensionella regressionsuppgifter kan konforma uppsättningar ses som kalibrerade versioner av konfidens eller trovärdiga intervall.

Tänk på att om osäkerhetsuppskattningarna som du tillhandahåller i indata är felaktiga, kan konforma uppsättningar vara stora och oanvändbara. Av denna anledning, om din ansökan tillåter det, vänligen överväga Med utgångspunkt från modellutgångar och Med utgångspunkt från linmodeller användningslägen som beskrivs nedan.

2/ Med utgångspunkt från modellutgångar

Detta läge förutsätter att du redan har tränat en modell i något ramverk och kommer till Fortuna med modellutgångar i numpy.ndarray format för varje indatapunkt. Detta användningsläge låter dig kalibrera dina modellutgångar, uppskatta osäkerhet, beräkna mätvärden och få konforma uppsättningar.

Jämfört med Utgående från osäkerhetsuppskattningar användningsläge, Med utgångspunkt från modellutgångar ger bättre kontroll, eftersom det kan säkerställa att osäkerhetsuppskattningar har kalibrerats på lämpligt sätt. Men om modellen hade tränats med klassiska metoder, kan den resulterande kvantifieringen av modellosäkerheten (alias epistemisk) vara dålig. För att lindra detta problem, vänligen överväga Med utgångspunkt från linmodeller användningsläge.

3/ Med utgångspunkt från linmodeller

Att utgå från Flax-modeller har högre kompatibilitetskrav än Utgående från osäkerhetsuppskattningar och Med utgångspunkt från modellutgångar användningslägen, eftersom det kräver modeller för djupinlärning skrivna i Lin. Det gör det dock möjligt för dig att ersätta standardmodellutbildning med skalbara Bayesianska slutledningsprocedurer, vilket avsevärt kan förbättra kvantifieringen av prediktiv osäkerhet.

Bayesianska metoder fungerar genom att representera osäkerhet om vilken lösning som är korrekt, givet begränsad information, genom osäkerhet över modellparametrar. Denna typ av osäkerhet kallas "epistemisk" osäkerhet. Eftersom neurala nätverk kan representera många olika lösningar, motsvarande olika inställningar av deras parametrar, kan Bayesianska metoder vara särskilt effektiva vid djupinlärning. Vi tillhandahåller många skalbara Bayesianska slutledningsprocedurer, som ofta kan användas för att tillhandahålla osäkerhetsuppskattningar, såväl som förbättrad noggrannhet och kalibrering, i princip utan träningstid.

Slutsats

Vi tillkännagav den allmänna tillgängligheten av Fortuna, ett bibliotek för kvantifiering av osäkerhet inom djupinlärning. Fortuna samlar framstående metoder i litteraturen, t.ex. konforma metoder, temperaturskalning och Bayesiansk slutledning, och gör dem tillgängliga för användare med ett standardiserat och intuitivt gränssnitt. För att komma igång med Fortuna kan du konsultera följande resurser:

Testa Fortuna och låt oss veta vad du tycker! Du uppmuntras att bidra till biblioteket eller lämna dina förslag och bidrag – skapa bara en fråga eller öppna en dra förfrågan. På vår sida kommer vi att fortsätta att förbättra Fortuna, öka dess täckning av metoder för kvantifiering av osäkerhet och lägga till ytterligare exempel som visar dess användbarhet i flera scenarier.


Om författarna

 

Gianluca Detommaso är tillämpad forskare vid AWS. Han arbetar för närvarande med kvantifiering av osäkerhet inom djupinlärning. På fritiden gillar Gianluca att utöva sport, äta god mat och lära sig nya färdigheter.

Alberto Gasparin är en tillämpad forskare inom Amazon Community Shopping sedan juli 2021. Hans intressen inkluderar naturlig språkbehandling, informationsinhämtning och kvantifiering av osäkerhet. Han är en mat- och vinentusiast.

Michele Donini är Sr Applied Scientist vid AWS. Han leder ett team av forskare som arbetar med ansvarsfull AI och hans forskningsintressen är Algorithmic Fairness och Explainable Machine Learning.

Matthias Seeger är Principal Applied Scientist vid AWS.

Cedric Archambeau är en Principal Applied Scientist vid AWS och fellow vid European Lab for Learning and Intelligent Systems.

Andrew Gordon Wilson är docent vid Courant Institute of Mathematical Sciences och Center for Data Science vid New York University, och en Amazon Visiting Academic vid AWS. Han är särskilt engagerad i att bygga metoder för Bayesiansk och probabilistisk djupinlärning, skalbara Gaussiska processer, Bayesiansk optimering och fysikinspirerad maskininlärning.

plats_img

Senaste intelligens

plats_img