För att dela magin i DALL E 2 med en bred publik behövde vi minska riskerna förknippade med kraftfulla bildgenereringsmodeller. För detta ändamål sätter vi olika skyddsräcken på plats för att förhindra att genererade bilder bryter mot vår innehållspolicy. Det här inlägget fokuserar på begränsningar före träning, en delmängd av dessa skyddsräcken som direkt modifierar data som DALL·E 2 lär sig av. I synnerhet är DALL·E 2 tränad på hundratals miljoner bildtexter från internet, och vi tar bort och viktar om några av dessa bilder för att ändra vad modellen lär sig.
Det här inlägget är organiserat i tre sektioner, som var och en beskriver olika åtgärder före träning:
- I det första avsnittet beskriver vi hur vi filtrerade bort våldsamma och sexuella bilder från DALL·E 2:s träningsdatauppsättning. Utan denna begränsning skulle modellen lära sig att producera grafiska eller explicita bilder när de uppmanades att göra dem, och kanske till och med returnera sådana bilder oavsiktligt som svar på till synes ofarliga uppmaningar.
- I det andra avsnittet finner vi att filtrering av träningsdata kan förstärka fördomar och beskriver vår teknik för att mildra denna effekt. Till exempel, utan denna begränsning, märkte vi att modeller som tränats på filtrerad data ibland genererade fler bilder som föreställer män och färre bilder som visar kvinnor jämfört med modeller som tränats på den ursprungliga datamängden.
- I det sista avsnittet går vi över till frågan om memorering och finner att modeller som DALL·E 2 ibland kan återskapa bilder som de tränats på snarare än att skapa nya bilder. I praktiken fann vi att detta bilduppstötningar orsakas av bilder som replikeras många gånger i datamängden och mildrar problemet genom att ta bort bilder som visuellt liknar andra bilder i datamängden.
Minska grafiska och explicita träningsdata
Eftersom träningsdata formar kapaciteten hos alla inlärda modeller är datafiltrering ett kraftfullt verktyg för att begränsa oönskade modellfunktioner. Vi tillämpade detta tillvägagångssätt på två kategorier – bilder som visar grafiskt våld och sexuellt innehåll – genom att använda klassificerare för att filtrera bilder i dessa kategorier ur datamängden innan vi tränade DALL·E 2. Vi utbildade dessa bildklassificerare internt och fortsätter att studera effekter av datauppsättningsfiltrering på vår utbildade modell.
För att träna våra bildklassificerare återanvände vi ett tillvägagångssätt som vi tidigare hade använt för att filtrera träningsdata för GLIDA. De grundläggande stegen för detta tillvägagångssätt är följande: först skapar vi en specifikation för de bildkategorier vi skulle vilja märka; för det andra samlar vi några hundra positiva och negativa exempel för varje kategori; för det tredje använder vi en aktiv inlärningsprocedure för att samla in mer data och förbättra avvägningen mellan precision och återkallelse; och slutligen kör vi den resulterande klassificeraren på hela datasetet med en konservativ klassificeringströskel för att gynna återkallelse framför precision. För att ställa in dessa trösklar prioriterade vi att filtrera bort alla illa data över att lämna i alla god data. Det beror på att vi alltid kan finjustera vår modell med mer data senare för att lära den nya saker, men det är mycket svårare att få modellen att glömma något som den redan har lärt sig.
Under den aktiva inlärningsfasen förbättrade vi iterativt våra klassificerare genom att samla mänskliga etiketter för potentiellt svåra eller felklassificerade bilder. Noterbart använde vi två aktiva inlärningstekniker för att välja bilder från vår datauppsättning (som innehåller hundratals miljoner omärkta bilder) att presentera för människor för märkning. För det första, för att minska vår klassificerares falska positiva frekvens (dvs. frekvensen med vilken den felklassificerar en godartad bild som våldsam eller sexuell), tilldelade vi mänskliga etiketter till bilder som den nuvarande modellen klassificerade som positiva. För att det här steget skulle fungera bra justerade vi vår klassificeringströskel för nästan 100 % återkallelse men en hög andel falskt positiva; På detta sätt märkte våra etiketterare mestadels verkligt negativa fall. Även om den här tekniken hjälper till att minska falska positiva resultat och minskar behovet av etiketter att titta på potentiellt skadliga bilder, hjälper det inte att hitta fler positiva fall som modellen saknas för närvarande.
För att minska vår klassificerares falska negativa frekvens använde vi en andra aktiv inlärningsteknik: sökning efter närmaste granne. I synnerhet körde vi mångfaldig korsvalidering för att hitta positiva prover i vår nuvarande märkta datauppsättning som modellen tenderade att felklassificera som negativa (för att göra detta tränade vi bokstavligen hundratals versioner av klassificeraren med olika tågvalideringsdelningar). Vi skannade sedan vår stora samling av omärkta bilder efter närmaste grannar till dessa prover i ett perceptuellt utrymme och tilldelade mänskliga etiketter till de upptäckta bilderna. Tack vare vår beräkningsinfrastruktur var det trivialt att skala upp både klassificeringsträning och närmaste grannsökning till många GPU:er, vilket gjorde att det aktiva inlärningssteget kunde ske under ett antal minuter snarare än timmar eller dagar.
För att verifiera effektiviteten av våra datafilter tränade vi två GLIDE-modeller med samma hyperparametrar: en på ofiltrerad data och en på datamängden efter filtrering. Vi hänvisar till den tidigare modellen som ofiltrerad modell, och den senare som filtrerad modell. Som förväntat fann vi att den ofiltrerade modellen i allmänhet producerade mindre explicit eller grafiskt innehåll som svar på förfrågningar om denna typ av innehåll. Men vi hittade också en oväntad bieffekt av datafiltrering: den skapade eller förstärkte modellens fördomar mot viss demografi.
Åtgärda bias introducerad av datafilter
Generativa modeller försöker matcha fördelningen av deras träningsdata, inklusive eventuella fördomar däri. Som ett resultat har filtrering av träningsdata potential att skapa eller förstärka fördomar i nedströmsmodeller. I allmänhet är att fixa fördomar i den ursprungliga datamängden en svår socioteknisk uppgift som vi fortsätter att studera, och som ligger utanför ramen för detta inlägg. Problemet vi tar upp här är förstärkningen av fördomar som orsakas specifikt av själva datafiltreringen. Med vårt tillvägagångssätt strävar vi efter att förhindra att den filtrerade modellen existerar mer partisk än den ofiltrerade modellen, vilket i huvudsak minskar distributionsförskjutningen som orsakas av datafiltrering.
Som ett konkret exempel på biasförstärkning på grund av filtrering, överväg uppmaningen "en vd". När vår ofiltrerade modell genererade bilder för denna prompt, tenderade den att producera fler bilder av män än kvinnor, och vi förväntar oss att det mesta av denna fördom är en återspegling av våra nuvarande träningsdata. Men när vi körde samma prompt genom vår filtrerade modell verkade biasen förstärkas; generationerna var nästan uteslutande bilder av män.
Vi antar att detta speciella fall av biasförstärkning kommer från två ställen: för det första, även om kvinnor och män har ungefär lika representation i den ursprungliga datamängden, kan datasetet vara partiskt mot att presentera kvinnor i mer sexualiserade sammanhang; och för det andra kan våra klassificerare själva vara partiska antingen på grund av implementering eller klassdefinition, trots våra ansträngningar att säkerställa att detta inte var fallet under datainsamlings- och valideringsfaserna. På grund av båda dessa effekter kan vårt filter ta bort fler bilder på kvinnor än män, vilket ändrar könsförhållandet som modellen observerar under träning.
För att undersöka filterinducerad bias mer ingående, ville vi ha ett sätt att mäta hur mycket våra datafilter påverkade biasen mot olika koncept. Särskilt är våra filter för våld och sexuellt innehåll rent bildbaserade, men vår datauppsättnings multimodala karaktär tillåter oss att direkt mäta effekterna av dessa filter på text. Eftersom varje bild åtföljs av en textbild, kunde vi titta på den relativa frekvensen av handvalda nyckelord över den filtrerade och ofiltrerade datamängden för att uppskatta hur mycket filtren påverkade ett givet koncept.
För att omsätta detta i praktiken använde vi Apache Spark för att beräkna frekvenserna för en handfull nyckelord (t.ex. "förälder", "kvinna", "barn") över alla bildtexter i både våra filtrerade och ofiltrerade datamängder. Även om vår datauppsättning innehåller hundratals miljoner text-bildpar, tog beräkningen av dessa sökordsfrekvenser bara några minuter med vårt beräkningskluster.
Efter att ha beräknat sökordsfrekvenser kunde vi bekräfta att våra datauppsättningsfilter verkligen hade snedställt frekvenserna för vissa sökord mer än andra. Till exempel minskade filtren frekvensen av ordet ”kvinna” med 14 %, medan frekvensen av ordet ”man” endast minskade med 6 %. Detta bekräftade, i stor skala, vad vi redan hade observerat anekdotiskt genom sampling från GLIDE-modeller tränade på båda datamängderna.
Nu när vi hade en proxy för att mäta filterinducerad bias behövde vi ett sätt att mildra det. För att ta itu med detta problem siktade vi på att vikta om den filtrerade datamängden så att dess distribution bättre matchade distributionen av ofiltrerade bilder. Som ett leksaksexempel för att illustrera denna idé, anta att vår datauppsättning består av 50 % kattfoton och 50 % hundfoton, men våra datafilter tar bort 75 % av hundarna men bara 50 % av katterna. Den slutliga datamängden skulle vara ⅔ katter och ⅓ hundar, och en sannolikhetsbaserad generativ modell som tränas på denna datauppsättning skulle sannolikt generera fler bilder av katter än hundar. Vi kan fixa denna obalans genom att multiplicera träningsförlusten för varje bild av en hund med 2, och emulera effekten av att upprepa varje hundbild två gånger. Det visar sig att vi kan skala det här tillvägagångssättet till våra verkliga datauppsättningar och modeller på ett sätt som till stor del är automatiskt – det vill säga vi behöver inte handvälja de funktioner som vi vill väga om.
Vi beräknar vikter för bilder i den filtrerade datamängden med hjälp av sannolikheter från en speciell klassificerare, liknande tillvägagångssättet som används av Choi et al. (2019). För att träna denna klassificerare samplar vi bilder från båda datauppsättningarna enhetligt och förutsäger vilken datauppsättning bilden kom från. I synnerhet förutspår denna modell P(ofiltrerad|bild), givet en förhand P(ofiltrerad) = 0.5. I praktiken vill vi inte att den här modellen ska vara för kraftfull, annars kan den lära sig den exakta funktionen som implementeras av våra filter i första hand. Istället vill vi att modellen ska vara smidigare än våra ursprungliga datafilter, och fånga breda kategorier som påverkas av filtren samtidigt som vi är osäker på om en viss bild skulle filtreras eller inte. För detta ändamål tränade vi en linjär sond ovanpå en liten KLÄMMA modell.
När vi väl har en klassificerare som förutsäger sannolikheten att en bild kommer från den ofiltrerade datamängden, måste vi fortfarande konvertera denna förutsägelse till en vikt för bilden. Anta till exempel det P(ofiltrerad|bild) = 0.8. Detta innebär att det är fyra gånger större sannolikhet att provet återfinns i den ofiltrerade datan än den filtrerade datan, och en vikt på 4 bör korrigera obalansen. Mer generellt kan vi använda vikten P(ofiltrerad|bild)/P(filtrerad|bild).[1]
Hur väl mildrar detta omviktningsschema den förstärkta biasen? När vi finjusterade vår tidigare filtrerade modell med det nya viktningsschemat, matchade den finjusterade modellens beteende mycket mer den ofiltrerade modellen på de partiska exemplen vi tidigare hittat. Även om detta var uppmuntrande ville vi också utvärdera denna begränsning mer grundligt med hjälp av vår sökordsbaserade biasheuristik. För att mäta sökordsfrekvenser samtidigt som vi tar hänsyn till vårt nya viktningsschema kan vi helt enkelt väga varje instans av ett nyckelord i den filtrerade datamängden med vikten av provet som innehåller det. Genom att göra detta får vi en ny uppsättning nyckelordsfrekvenser som återspeglar provvikterna i den filtrerade datamängden.
För de flesta av sökorden vi kontrollerade minskade omviktningsschemat frekvensförändringen som inducerades av filtrering. För våra tidigare exempel på "man" och "kvinna" blev de relativa frekvensminskningarna 1 % och –1 %, medan deras tidigare värden var 14 % respektive 6 %. Även om detta mått bara är en proxy för faktisk filtreringsbias, är det betryggande att vårt bildbaserade omviktningsschema faktiskt förbättrar ett textbaserat mått så avsevärt.
Vi fortsätter att undersöka kvarvarande fördomar i DALL·E 2, delvis genom större utvärderingar av modellens beteende och undersökningar av hur filtrering påverkade bias och förmågasutveckling.
Förhindra bilduppstötningar
Vi observerade att våra interna föregångare till DALL·E 2 ibland återgav träningsbilder ordagrant. Detta beteende var oönskat, eftersom vi skulle vilja att DALL·E 2 skapar original, unika bilder som standard och inte bara "häftar ihop" delar av befintliga bilder. Dessutom kan reproducering av träningsbilder ordagrant väcka juridiska frågor kring upphovsrättsintrång, ägande och integritet (om människors foton fanns i utbildningsdata).
För att bättre förstå problemet med bildåteruppstötning samlade vi in en datauppsättning med uppmaningar som ofta resulterade i dubblerade bilder. För att göra detta använde vi en tränad modell för att ta prov på bilder för 50,000 50 uppmaningar från vår träningsdatauppsättning och sorterade proverna efter perceptuell likhet med motsvarande träningsbild. Slutligen inspekterade vi de bästa matchningarna för hand och hittade bara några hundra äkta dubblettpar av de 1 0 totala uppmaningarna. Även om uppstötningsfrekvensen verkade vara mindre än XNUMX %, ansåg vi att det var nödvändigt att pressa ner frekvensen till XNUMX av de skäl som anges ovan.
När vi studerade vår datauppsättning av uppstötade bilder, märkte vi två mönster. För det första var bilderna nästan alla enkel vektorgrafik, som sannolikt var lätta att memorera på grund av deras låga informationsinnehåll. För det andra, och ännu viktigare, alla bilder hade många nästan dubbletter i träningsdatauppsättningen. Det kan till exempel finnas en vektorgrafik som ser ut som en klocka som visar klockan 1—men då skulle vi upptäcka ett träningsprov som innehåller samma klocka som visar klockan 2 och sedan klockan 3 osv. En gång vi insåg detta, vi använde en distribuerad närmaste grannesökning för att verifiera att alla de uppstötade bilderna verkligen hade perceptuellt liknande dubbletter i datasetet. Övriga fungerar har observerat ett liknande fenomen i stora språkmodeller och upptäckt att dataduplicering är starkt kopplat till memorering.
Ovanstående fynd antydde att om vi deduplicerade vår datauppsättning skulle vi kunna lösa uppstötningsproblemet. För att uppnå detta planerade vi att använda ett neuralt nätverk för att identifiera grupper av bilder som såg likadana ut, och sedan ta bort alla utom en bild från varje grupp.[2] Detta skulle dock kräva att man kontrollerar, för varje bild, om det är en dubblett av varannan bild i datamängden. Eftersom hela vår datauppsättning innehåller hundratals miljoner bilder, skulle vi naivt behöva kontrollera hundratals kvadrilljoner bildpar för att hitta alla dubbletter. Även om detta är tekniskt inom räckhåll, särskilt på ett stort datorkluster, hittade vi ett mycket effektivare alternativ som fungerar nästan lika bra till en liten bråkdel av kostnaden.
Tänk på vad som händer om vi grupperar vår datauppsättning innan vi utför deduplicering. Eftersom närliggande prov ofta faller in i samma kluster, skulle de flesta av dubblettparen inte korsa klusterbeslutsgränser. Vi kunde sedan deduplicera prover inom varje kluster utan att kontrollera efter dubbletter utanför klustret, medan vi bara saknade en liten del av alla duplikatpar. Detta är mycket snabbare än det naiva tillvägagångssättet, eftersom vi inte längre behöver kontrollera varenda bildpar.[3] När vi testade det här tillvägagångssättet empiriskt på en liten delmängd av våra data, fann den 85 % av alla dubblettpar när vi använde K = 1024 kluster.
För att förbättra framgångsfrekvensen för ovanstående algoritm utnyttjade vi en viktig observation: när du klusterar olika slumpmässiga delmängder av en datauppsättning är de resulterande klustrets beslutsgränser ofta helt olika. Därför, om ett dubblettpar korsar en klustergräns för en klustring av data, kan samma par falla inuti ett enda kluster i ett annat kluster. Ju fler klustringar du försöker, desto mer sannolikt är det att du upptäcker ett givet dubblettpar. I praktiken bestämde vi oss för att använda fem kluster, vilket innebär att vi söker efter dubbletter av varje bild i föreningen av fem olika kluster. I praktiken hittade detta 97 % av alla dubbletter av par på en delmängd av vår data.
Överraskande nog togs nästan en fjärdedel av vår datauppsättning bort genom deduplicering. När vi tittade på de nästan dubblerade paren som hittades, innehöll många av dem meningsfulla förändringar. Kom ihåg klockexemplet från ovan: datasetet kan innehålla många bilder av samma klocka vid olika tider på dagen. Även om dessa bilder sannolikt kommer att få modellen att memorera just den här klockans utseende, kan de också hjälpa modellen att lära sig att skilja mellan tider på dygnet på en klocka. Med tanke på hur mycket data som togs bort var vi oroliga för att ta bort bilder som denna kan ha skadat modellens prestanda.
För att testa effekten av deduplicering på våra modeller tränade vi två modeller med identiska hyperparametrar: en på hela datasetet och en på den deduplicerade versionen av datamängden. För att jämföra modellerna använde vi samma mänskliga utvärderingar som vi använde för att utvärdera vår ursprungliga GLIDE-modell. Överraskande fann vi att mänskliga utvärderare något föredragen modellen tränade på deduplicerad data, vilket tyder på att den stora mängden redundanta bilder i datasetet faktiskt skadade prestandan.
När vi hade en modell tränad på deduplicerad data, körde vi om uppstötningssökningen som vi tidigare hade gjort över 50 50 uppmaningar från träningsdatauppsättningen. Vi fann att den nya modellen aldrig återuppstod en träningsbild när den fick den exakta uppmaningen till bilden från träningsdatauppsättningen. För att ta det här testet ytterligare ett steg längre, utförde vi också en närmaste grannesökning över hela träningsdatauppsättningen för var och en av de XNUMX XNUMX genererade bilderna. På det här sättet trodde vi att vi kunde fånga modellen med en annan bild än den som är kopplad till en given prompt. Även med denna mer noggranna kontroll hittade vi aldrig ett fall av bilduppstötningar.
Nästa steg
Även om alla begränsningar som diskuterats ovan representerar betydande framsteg mot vårt mål att minska riskerna förknippade med DALL·E 2, har varje begränsning fortfarande utrymme att förbättra:
- Bättre förträningsfilter skulle kunna göra det möjligt för oss att träna DALL·E 2 på mer data och eventuellt ytterligare minska bias i modellen. Våra nuvarande filter är inställda för en låg missfrekvens på bekostnad av många falska positiva. Som ett resultat av detta filtrerade vi bort ungefär 5 % av hela vår datauppsättning även om de flesta av dessa filtrerade bilder inte bryter mot vår innehållspolicy alls. Om vi förbättrar våra filter kan vi få tillbaka en del av denna träningsdata.
- Bias introduceras och förstärks potentiellt i många stadier av systemutveckling och distribution. Att utvärdera och mildra partiskheten i system som DALL·E 2 och skadan som orsakas av denna fördom är ett viktigt tvärvetenskapligt problem som vi fortsätter att studera vid OpenAI som en del av vårt bredare uppdrag. Vårt arbete med detta inkluderar att bygga utvärderingar för att bättre förstå problemet, kurera nya datauppsättningar och tillämpa tekniker som mänsklig feedback och finjustering för att bygga mer robusta och representativa teknologier.
- Det är också avgörande att vi fortsätter att studera memorering och generalisering i system för djupinlärning. Även om deduplicering är ett bra första steg mot att förhindra memorering, berättar det inte allt som finns att lära oss om varför eller hur modeller som DALL·E 2 memorerar träningsdata.
- 000
- 2019
- a
- Om oss
- Konto
- Uppnå
- tvärs
- aktiv
- adress
- påverkar
- algoritm
- Alla
- tillåta
- tillåter
- redan
- alternativ
- alltid
- mängd
- Annan
- syntes
- tillämpas
- Tillämpa
- tillvägagångssätt
- runt
- delad
- associerad
- publik
- därför att
- innan
- Där vi får lov att vara utan att konstant prestera,
- Bättre
- mellan
- Bortom
- SLUTRESULTAT
- Byggnad
- kapacitet
- texter
- Vid
- fall
- brottning
- Kategori
- orsakas
- vissa
- byta
- kontroll
- Välja
- klass
- klassificering
- klassificerad
- klocka
- samling
- jämfört
- Compute
- databehandling
- begrepp
- Tänk
- innehåller
- innehåll
- kontexter
- fortsätta
- upphovsrätt
- upphovsrättsintrång
- Motsvarande
- kunde
- skapa
- skapas
- Skapa
- avgörande
- Aktuella
- För närvarande
- datum
- dag
- Dagar
- Beslutet
- djup
- Demografi
- utplacering
- beskriva
- Trots
- Utveckling
- olika
- svårt
- direkt
- Upptäck
- upptäckt
- avstånd
- distribueras
- fördelning
- ner
- dubbletter
- under
- varje
- effekt
- effektivt
- effektivitet
- effekter
- effektiv
- ansträngningar
- uppmuntra
- speciellt
- väsentligen
- uppskatta
- etc
- utvärdera
- allt
- exempel
- exempel
- uteslutande
- befintliga
- förvänta
- förväntat
- snabbare
- Leverans
- Funktioner
- återkoppling
- Figur
- filtrering
- filter
- Slutligen
- finna
- Förnamn
- Fast
- fokuserar
- följer
- hittade
- från
- full
- fungera
- ytterligare
- samla
- Kön
- Allmänt
- allmänhet
- generera
- genereras
- generering
- generationer
- generativ
- Målet
- god
- GPUs
- grafik
- Grupp
- Gruppens
- garanterat
- näve
- hjälpa
- hjälper
- här.
- Hög
- Hur ser din drömresa ut
- Men
- HTTPS
- humant
- Människa
- Hundratals
- Tanken
- identifiera
- bild
- bilder
- genomförande
- genomföras
- med Esport
- förbättra
- förbättras
- förbättra
- innefattar
- ingår
- innefattar
- Inklusive
- informationen
- Infrastruktur
- exempel
- Internet
- undersöka
- fråga
- IT
- sig
- Nyckel
- etikett
- märkning
- Etiketter
- språk
- Large
- större
- LÄRA SIG
- lärt
- inlärning
- Adress
- sannolikt
- se
- såg
- göra
- markera
- Match
- meningsfull
- betyder
- mäta
- mätning
- Män
- kanske
- Militär
- miljoner
- Mission
- modell
- modeller
- mer
- mest
- multiplicerande
- Natur
- nödvändigt för
- negativ
- nät
- antal
- beställa
- Organiserad
- ursprungliga
- Övriga
- ägande
- del
- särskilt
- prestanda
- utför
- fas
- bitar
- planeras
- policy
- positiv
- möjlig
- potentiell
- den mäktigaste
- praktiken
- förutse
- förutsägelse
- presentera
- förebyggande
- föregående
- privatpolicy
- sond
- Problem
- process
- producera
- producerad
- protester
- ombud
- Kvartal
- höja
- nå
- insåg
- skäl
- minska
- Minskad
- reducerande
- reflektera
- reflektion
- Återstående
- bort
- representerar
- representation
- representativ
- förfrågningar
- kräver
- Kräver
- respons
- resulterande
- avkastning
- risker
- Körning
- Samma
- Skala
- ordningen
- Sök
- in
- former
- Dela
- skifta
- signifikant
- liknande
- Enkelt
- eftersom
- enda
- Storlek
- Small
- So
- LÖSA
- några
- något
- Utrymme
- speciell
- specifikt
- specifikation
- Delar upp
- stadier
- starta
- anges
- Fortfarande
- Läsa på
- framgång
- system
- System
- tar
- tekniker
- Tekniken
- testa
- Smakämnen
- därför
- saker
- grundligt
- tre
- tröskelvärde
- Genom
- tid
- gånger
- verktyg
- topp
- mot
- Tåg
- Utbildning
- förstå
- fackliga
- unika
- us
- användning
- godkännande
- olika
- verifiera
- version
- ville
- Vad
- om
- medan
- inom
- utan
- Kvinnor
- Arbete
- fungerar
- orolig
- skulle
- X