For at dele magien ved DALL E 2 med et bredt publikum var vi nødt til at reducere de risici, der er forbundet med kraftfulde billedgenereringsmodeller. Til dette formål sætter vi forskellige autoværn på plads for at forhindre genererede billeder i at krænke vores indholdspolitik. Dette indlæg fokuserer på afbødninger før træning, en delmængde af disse autoværn, som direkte modificerer de data, som DALL·E 2 lærer af. Især DALL·E 2 er trænet på hundredvis af millioner af billedtekstede billeder fra internettet, og vi fjerner og omvægter nogle af disse billeder for at ændre, hvad modellen lærer.
Dette indlæg er organiseret i tre sektioner, der hver beskriver en anden afhjælpning før træning:
- I første afsnit beskriver vi, hvordan vi frafiltrerede voldelige og seksuelle billeder fra DALL·E 2s træningsdatasæt. Uden denne formindskelse ville modellen lære at producere grafiske eller eksplicitte billeder, når de blev bedt om dem, og kunne endda returnere sådanne billeder utilsigtet som svar på tilsyneladende uskadelige prompter.
- I det andet afsnit finder vi ud af, at filtrering af træningsdata kan forstærke skævheder, og beskriver vores teknik til at afbøde denne effekt. For eksempel, uden denne afbødning, bemærkede vi, at modeller trænet på filtrerede data nogle gange genererede flere billeder af mænd og færre billeder af kvinder sammenlignet med modeller trænet på det originale datasæt.
- I det sidste afsnit vender vi os til spørgsmålet om udenadshukommelse, idet vi finder ud af, at modeller som DALL·E 2 nogle gange kan gengive billeder, de blev trænet i, i stedet for at skabe nye billeder. I praksis fandt vi ud af, at dette billedopstød er forårsaget af billeder, der er replikeret mange gange i datasættet, og afhjælpe problemet ved at fjerne billeder, der visuelt ligner andre billeder i datasættet.
Reduktion af grafiske og eksplicitte træningsdata
Da træningsdata former mulighederne for enhver indlært model, er datafiltrering et kraftfuldt værktøj til at begrænse uønskede modelkapaciteter. Vi anvendte denne tilgang til to kategorier – billeder, der skildrer grafisk vold og seksuelt indhold – ved at bruge klassifikatorer til at filtrere billeder i disse kategorier ud af datasættet, før vi trænede DALL·E 2. Vi trænede disse billedklassifikatorer internt og fortsætter med at studere effekter af datasætfiltrering på vores trænede model.
For at træne vores billedklassifikatorer genbrugte vi en tilgang, som vi tidligere havde brugt til at filtrere træningsdata efter SVÆVE. De grundlæggende trin i denne tilgang er som følger: Først opretter vi en specifikation for de billedkategorier, vi gerne vil mærke; for det andet samler vi et par hundrede positive og negative eksempler for hver kategori; for det tredje bruger vi en aktiv læringsprocedure til at indsamle flere data og forbedre præcisionen/genkaldelse afvejningen; og endelig kører vi den resulterende klassifikator på hele datasættet med en konservativ klassifikationstærskel for at favorisere genkald frem for præcision. For at indstille disse tærskler prioriterede vi at bortfiltrere alle dårlig data over at forlade i alle godt data. Dette skyldes, at vi altid kan finjustere vores model med flere data senere for at lære den nye ting, men det er meget sværere at få modellen til at glemme noget, den allerede har lært.
I løbet af den aktive læringsfase forbedrede vi iterativt vores klassifikatorer ved at indsamle menneskelige etiketter for potentielt vanskelige eller forkert klassificerede billeder. Især brugte vi to aktive læringsteknikker til at vælge billeder fra vores datasæt (som indeholder hundredvis af millioner af umærkede billeder) til at præsentere for mennesker til mærkning. For det første, for at reducere vores klassificerers falske positive rate (dvs. hyppigheden, hvormed den fejlklassificerer et godartet billede som voldeligt eller seksuelt), tildelte vi menneskelige etiketter til billeder, som den nuværende model klassificerede som positive. For at dette trin skulle fungere godt, tunede vi vores klassificeringstærskel til næsten 100 % tilbagekaldelse, men en høj falsk-positiv rate; på denne måde mærkede vores etiketter for det meste virkelig negative sager. Selvom denne teknik hjælper med at reducere falske positiver og reducerer behovet for, at etiketter ser på potentielt skadelige billeder, hjælper det ikke med at finde flere positive tilfælde, som modellen mangler i øjeblikket.
For at reducere vores klassificerers falsk negative frekvens brugte vi en anden aktiv læringsteknik: søgning efter nærmeste nabo. Især kørte vi mange gange krydsvalidering for at finde positive prøver i vores nuværende mærkede datasæt, som modellen havde en tendens til at fejlklassificere som negative (for at gøre dette trænede vi bogstaveligt talt hundredvis af versioner af klassificereren med forskellige togvalideringsopdelinger). Vi scannede derefter vores store samling af umærkede billeder for de nærmeste naboer af disse prøver i et perceptuelt trækrum og tildelte menneskelige etiketter til de opdagede billeder. Takket være vores computerinfrastruktur var det trivielt at opskalere både klassificeringstræning og nærmeste nabosøgning til mange GPU'er, så det aktive læringstrin kunne foregå over et antal minutter i stedet for timer eller dage.
For at verificere effektiviteten af vores datafiltre trænede vi to GLIDE-modeller med de samme hyperparametre: en på ufiltrerede data og en på datasættet efter filtrering. Vi omtaler den tidligere model som ufiltreret model, og sidstnævnte som filtreret model. Som forventet fandt vi ud af, at den ufiltrerede model generelt producerede mindre eksplicit eller grafisk indhold som svar på anmodninger om denne type indhold. Men vi fandt også en uventet bivirkning af datafiltrering: den skabte eller forstærkede modellens skævhed over for visse demografiske forhold.
Fixing bias introduceret af datafiltre
Generative modeller forsøger at matche fordelingen af deres træningsdata, inklusive eventuelle skævheder deri. Som et resultat heraf har filtrering af træningsdata potentialet til at skabe eller forstærke skævheder i downstream-modeller. Generelt er fiksering af skævheder i det originale datasæt en vanskelig socioteknisk opgave, som vi fortsætter med at studere, og som ligger uden for rammerne af dette indlæg. Problemet, vi adresserer her, er forstærkningen af skævheder forårsaget specifikt af selve datafiltreringen. Med vores tilgang tilstræber vi at forhindre, at den filtrerede model bliver til mere forudindtaget end den ufiltrerede model, hvilket i det væsentlige reducerer distributionsskiftet forårsaget af datafiltrering.
Som et konkret eksempel på bias-forstærkning på grund af filtrering kan du overveje prompten "en administrerende direktør". Da vores ufiltrerede model genererede billeder til denne prompt, havde den en tendens til at producere flere billeder af mænd end kvinder, og vi forventer, at det meste af denne skævhed er en afspejling af vores nuværende træningsdata. Men da vi kørte den samme prompt gennem vores filtrerede model, så bias ud til at være forstærket; generationerne var næsten udelukkende billeder af mænd.
Vi antager, at dette særlige tilfælde af bias-amplifikation kommer fra to steder: For det første, selvom kvinder og mænd har nogenlunde lige stor repræsentation i det originale datasæt, kan datasættet være forudindtaget i forhold til at præsentere kvinder i mere seksualiserede sammenhænge; og for det andet kan vores klassifikatorer selv være partiske enten på grund af implementering eller klassedefinition, på trods af vores bestræbelser på at sikre, at dette ikke var tilfældet under dataindsamlings- og valideringsfaserne. På grund af begge disse effekter kan vores filter fjerne flere billeder af kvinder end mænd, hvilket ændrer det kønsforhold, som modellen observerer under træning.
For at undersøge filter-induceret bias mere grundigt, ønskede vi en måde at måle, hvor meget vores datafiltre påvirkede bias over for forskellige koncepter. Navnlig er vores filtre for vold og seksuelt indhold udelukkende billedbaserede, men vores datasæts multimodale karakter giver os mulighed for direkte at måle effekten af disse filtre på tekst. Da hvert billede er ledsaget af en tekstoverskrift, var vi i stand til at se på den relative hyppighed af håndvalgte søgeord på tværs af det filtrerede og ufiltrerede datasæt for at estimere, hvor meget filtrene påvirkede et givet koncept.
For at omsætte dette til praksis brugte vi Apache Spark til at beregne frekvenserne af en håndfuld nøgleord (f.eks. "forælder", "kvinde", "barn") over alle billedteksterne i både vores filtrerede og ufiltrerede datasæt. Selvom vores datasæt indeholder hundredvis af millioner af tekst-billede-par, tog det kun et par minutter at beregne disse søgeordsfrekvenser ved hjælp af vores computerklynge.
Efter at have beregnet søgeordsfrekvenser var vi i stand til at bekræfte, at vores datasætfiltre faktisk havde skævvridet frekvenserne af visse søgeord mere end andre. For eksempel reducerede filtrene frekvensen af ordet "kvinde" med 14 %, mens frekvensen af ordet "mand" kun blev reduceret med 6 %. Dette bekræftede i stor skala, hvad vi allerede havde observeret anekdotisk ved prøveudtagning fra GLIDE-modeller trænet på begge datasæt.
Nu hvor vi havde en proxy til måling af filterinduceret bias, havde vi brug for en måde at afbøde den på. For at løse dette problem havde vi til formål at genvægte det filtrerede datasæt, så dets distribution bedre matchede fordelingen af ufiltrerede billeder. Som et legetøjseksempel til at illustrere denne idé, antag, at vores datasæt består af 50 % kattebilleder og 50 % hundebilleder, men vores datafiltre fjerner 75 % af hunde, men kun 50 % af katte. Det endelige datasæt ville være ⅔ katte og ⅓ hunde, og en sandsynlighedsbaseret generativ model trænet på dette datasæt ville sandsynligvis generere flere billeder af katte end hunde. Vi kan rette op på denne ubalance ved at gange træningstabet for hvert billede af en hund med 2, og efterligne effekten af at gentage hvert hundebillede to gange. Det viser sig, at vi kan skalere denne tilgang til vores rigtige datasæt og modeller på en måde, der stort set er automatisk – det vil sige, vi behøver ikke håndvælge de funktioner, som vi ønsker at omvægte.
Vi beregner vægte for billeder i det filtrerede datasæt ved hjælp af sandsynligheder fra en speciel klassifikator, svarende til den tilgang, der anvendes af Choi et al. (2019). For at træne denne klassifikator prøver vi ensartet billeder fra begge datasæt og forudsiger hvilket datasæt billedet kom fra. Især forudsiger denne model P(ufiltreret|billede), givet en forudgående P(ufiltreret) = 0.5. I praksis ønsker vi ikke, at denne model skal være for kraftfuld, ellers vil den måske lære den nøjagtige funktion implementeret af vores filtre i første omgang. I stedet ønsker vi, at modellen skal være glattere end vores originale datafiltre og fanger brede kategorier, der påvirkes af filtrene, mens vi stadig er i tvivl om, hvorvidt et bestemt billede vil blive filtreret eller ej. Til dette formål trænede vi en lineær sonde oven på en lille CLIP model.
Når vi først har en klassifikator, som forudsiger sandsynligheden for, at et billede er fra det ufiltrerede datasæt, skal vi stadig konvertere denne forudsigelse til en vægt for billedet. Antag for eksempel det P(ufiltreret|billede) = 0.8. Det betyder, at prøven er 4 gange mere tilbøjelig til at blive fundet i de ufiltrerede data end de filtrerede data, og en vægt på 4 burde rette op på ubalancen. Mere generelt kan vi bruge vægten P(ufiltreret|billede)/P(filtreret|billede).[1]
Hvor godt afbøder denne omvægtning egentlig den forstærkede bias? Da vi finjusterede vores tidligere filtrerede model med det nye vægtningsskema, matchede den finjusterede models adfærd meget mere den ufiltrerede model på de skæve eksempler, vi tidligere havde fundet. Selvom dette var opmuntrende, ønskede vi også at evaluere denne afbødning mere grundigt ved hjælp af vores søgeordsbaserede bias-heuristik. For at måle søgeordsfrekvenser, mens vi tager vores nye vægtningsskema i betragtning, kan vi simpelthen vægte hver forekomst af et søgeord i det filtrerede datasæt efter vægten af prøven, der indeholder det. Når vi gør dette, får vi et nyt sæt søgeordsfrekvenser, der afspejler prøvevægtene i det filtrerede datasæt.
På tværs af de fleste af de søgeord, vi tjekkede, reducerede genvægtningsskemaet frekvensændringen induceret af filtrering. For vores tidligere eksempler på "mand" og "kvinde" blev de relative frekvensreduktioner 1 % og –1 %, mens deres tidligere værdier var henholdsvis 14 % og 6 %. Selvom denne metric kun er en proxy for faktisk filtreringsbias, er det betryggende, at vores billedbaserede genvægtningsskema faktisk forbedrer en tekstbaseret metric så markant.
Vi fortsætter med at undersøge resterende skævheder i DALL·E 2, delvist gennem større evalueringer af modellens adfærd og undersøgelser af, hvordan filtrering påvirkede bias og kapacitetsudvikling.
Forebyggelse af billedopstød
Vi observerede, at vores interne forgængere til DALL·E 2 nogle gange ville gengive træningsbilleder ordret. Denne adfærd var uønsket, da vi gerne vil have DALL·E 2 til at skabe originale, unikke billeder som standard og ikke bare "sy sammen" stykker af eksisterende billeder. Derudover kan gengivelse af træningsbilleder ordret rejse juridiske spørgsmål omkring krænkelse af ophavsret, ejerskab og privatliv (hvis folks billeder var til stede i træningsdata).
For bedre at forstå problemet med billedgenopstød, indsamlede vi et datasæt med prompter, der ofte resulterede i duplikerede billeder. For at gøre dette brugte vi en trænet model til at prøve billeder til 50,000 prompter fra vores træningsdatasæt og sorterede prøverne efter perceptuel lighed med det tilsvarende træningsbillede. Til sidst inspicerede vi de øverste kampe i hånden og fandt kun et par hundrede ægte duplikerede par ud af de 50 samlede prompter. Selvom regurgitationsraten så ud til at være mindre end 1 %, mente vi, at det var nødvendigt at skubbe hastigheden ned til 0 af ovennævnte årsager.
Da vi studerede vores datasæt af opstøde billeder, bemærkede vi to mønstre. For det første var billederne næsten alle simpel vektorgrafik, som sandsynligvis var nemme at huske på grund af deres lave informationsindhold. For det andet, og endnu vigtigere, havde billederne alle mange næsten dubletter i træningsdatasættet. For eksempel kan der være en vektorgrafik, der ligner et ur, der viser klokken 1 – men så vil vi opdage en træningsprøve, der indeholder det samme ur, der viser klokken 2 og derefter klokken 3 osv. En gang vi indså dette, vi brugte en distribueret nærmeste nabosøgning til at bekræfte, at alle de opstødte billeder faktisk havde perceptuelt lignende dubletter i datasættet. Andet virker har observeret et lignende fænomen i store sprogmodeller, og fundet ud af, at dataduplikering er stærkt forbundet med memorering.
Ovenstående konstatering antydede, at hvis vi deduplikerede vores datasæt, kunne vi måske løse regurgitationsproblemet. For at opnå dette planlagde vi at bruge et neuralt netværk til at identificere grupper af billeder, der lignede ens, og derefter fjerne alle undtagen ét billede fra hver gruppe.[2] Dette ville dog kræve, at det for hvert billede kontrolleres, om det er en duplikat af hvert andet billede i datasættet. Da hele vores datasæt indeholder hundreder af millioner af billeder, ville vi naivt være nødt til at tjekke hundredvis af kvadrillioner af billedpar for at finde alle dubletterne. Selvom dette er teknisk inden for rækkevidde, især på en stor computerklynge, fandt vi et meget mere effektivt alternativ, der fungerer næsten lige så godt til en lille brøkdel af prisen.
Overvej, hvad der sker, hvis vi grupperer vores datasæt, før vi udfører deduplikering. Da nærliggende prøver ofte falder ind i den samme klynge, ville de fleste af duplikatparrene ikke krydse klyngebeslutningsgrænser. Vi kunne derefter deduplikere prøver inden for hver klynge uden at kontrollere for dubletter uden for klyngen, mens vi kun mangler en lille brøkdel af alle duplikatpar. Dette er meget hurtigere end den naive tilgang, da vi ikke længere skal tjekke hvert enkelt par billeder.[3] Da vi testede denne tilgang empirisk på en lille delmængde af vores data, fandt den 85 % af alle duplikerede par, når vi brugte K = 1024 klynger.
For at forbedre succesraten for ovennævnte algoritme udnyttede vi én nøgleobservation: Når du grupperer forskellige tilfældige delmængder af et datasæt, er de resulterende klyngebeslutningsgrænser ofte ganske forskellige. Derfor, hvis et dubletpar krydser en klyngegrænse for en klynge af dataene, kan det samme par falde inde i en enkelt klynge i en anden klynge. Jo flere klynger du prøver, jo større sandsynlighed er der for, at du opdager et givet dubletpar. I praksis valgte vi at bruge fem klynger, hvilket betyder, at vi søger efter dubletter af hvert billede i foreningen af fem forskellige klynger. I praksis fandt dette 97% af alle duplikerede par på en delmængde af vores data.
Overraskende nok blev næsten en fjerdedel af vores datasæt fjernet ved deduplikering. Da vi så på de næsten duplikerede par, der blev fundet, indeholdt mange af dem meningsfulde ændringer. Husk ureksemplet fra oven: Datasættet kan indeholde mange billeder af det samme ur på forskellige tidspunkter af dagen. Selvom disse billeder sandsynligvis vil få modellen til at huske dette særlige urs udseende, kan de også hjælpe modellen med at lære at skelne mellem tidspunkter på dagen på et ur. I betragtning af hvor meget data der blev fjernet, var vi bekymrede for, at fjernelse af billeder som dette kunne have skadet modellens ydeevne.
For at teste effekten af deduplikation på vores modeller trænede vi to modeller med identiske hyperparametre: en på det fulde datasæt og en på den deduplikerede version af datasættet. For at sammenligne modellerne brugte vi de samme menneskelige evalueringer, som vi brugte til at evaluere vores originale GLIDE-model. Overraskende nok fandt vi, at menneskelige evaluatorer lidt foretrækkes modellen trænede på deduplikerede data, hvilket tyder på, at den store mængde overflødige billeder i datasættet faktisk skadede ydeevnen.
Da vi først havde trænet en model på deduplikerede data, kørte vi den opstødssøgning, vi tidligere havde lavet over 50 prompter fra træningsdatasættet. Vi fandt ud af, at den nye model aldrig opfandt et træningsbillede, når den fik den nøjagtige prompt til billedet fra træningsdatasættet. For at tage denne test endnu et skridt videre, udførte vi også en nærmeste nabosøgning over hele træningsdatasættet for hvert af de 50 genererede billeder. På denne måde troede vi, at vi kunne fange modellen, der opstod et andet billede end det, der er forbundet med en given prompt. Selv med denne mere grundige kontrol fandt vi aldrig et tilfælde af billedgenopstød.
Næste trin
Selvom alle de afbødninger, der er diskuteret ovenfor, repræsenterer betydelige fremskridt hen imod vores mål om at reducere risiciene forbundet med DALL·E 2, er der stadig plads til forbedring af hver afbødning:
- Bedre før-træningsfiltre kunne give os mulighed for at træne DALL·E 2 på flere data og potentielt yderligere reducere bias i modellen. Vores nuværende filtre er indstillet til en lav fejlrate på bekostning af mange falske positiver. Som et resultat frafiltrerede vi omkring 5 % af hele vores datasæt, selvom de fleste af disse filtrerede billeder slet ikke overtræder vores indholdspolitik. Forbedring af vores filtre kan give os mulighed for at genvinde nogle af disse træningsdata.
- Bias er introduceret og potentielt forstærket på mange stadier af systemudvikling og implementering. Evaluering og afbødning af skævheden i systemer som DALL·E 2 og skaden induceret af denne skævhed er et vigtigt tværfagligt problem, som vi fortsætter med at studere på OpenAI som en del af vores bredere mission. Vores arbejde med dette omfatter opbygning af evalueringer for bedre at forstå problemet, kurering af nye datasæt og anvendelse af teknikker som menneskelig feedback og finjustering for at bygge mere robuste og repræsentative teknologier.
- Det er også afgørende, at vi fortsætter med at studere udenadslære og generalisering i deep learning-systemer. Selvom deduplikering er et godt første skridt mod at forhindre memorering, fortæller den os ikke alt, hvad der er at lære om, hvorfor eller hvordan modeller som DALL·E 2 husker træningsdata.
- 000
- 2019
- a
- Om
- Konto
- opnå
- tværs
- aktiv
- adresse
- påvirker
- algoritme
- Alle
- tillade
- tillader
- allerede
- alternativ
- altid
- beløb
- En anden
- dukkede
- anvendt
- Anvendelse
- tilgang
- omkring
- tildelt
- forbundet
- publikum
- fordi
- før
- være
- Bedre
- mellem
- Beyond
- bygge
- Bygning
- kapaciteter
- billedtekster
- tilfælde
- tilfælde
- brydning
- Boligtype
- forårsagede
- vis
- lave om
- kontrol
- Vælg
- klasse
- klassificering
- klassificeret
- ur
- samling
- sammenlignet
- Compute
- computing
- Konceptet
- Overvej
- indeholder
- indhold
- sammenhænge
- fortsæt
- ophavsret
- krænkelse af ophavsret
- Tilsvarende
- kunne
- skabe
- oprettet
- Oprettelse af
- afgørende
- Nuværende
- For øjeblikket
- data
- dag
- Dage
- beslutning
- dyb
- Demografi
- implementering
- beskrive
- Trods
- Udvikling
- forskellige
- svært
- direkte
- opdage
- opdaget
- afstand
- distribueret
- fordeling
- ned
- dubletter
- i løbet af
- hver
- effekt
- effektivt
- effektivitet
- effekter
- effektiv
- indsats
- tilskynde
- især
- væsentlige
- skøn
- etc.
- evaluere
- at alt
- eksempel
- eksempler
- udelukkende
- eksisterende
- forvente
- forventet
- hurtigere
- Feature
- Funktionalitet
- tilbagemeldinger
- Figur
- filtrering
- Filtre
- Endelig
- finde
- Fornavn
- Fix
- fokuserer
- følger
- fundet
- fra
- fuld
- funktion
- yderligere
- indsamling
- Køn
- Generelt
- generelt
- generere
- genereret
- generation
- generationer
- generative
- mål
- godt
- GPU'er
- grafik
- gruppe
- Gruppens
- garanteret
- håndfuld
- hjælpe
- hjælper
- link.
- Høj
- Hvordan
- Men
- HTTPS
- menneskelig
- Mennesker
- Hundreder
- idé
- identificere
- billede
- billeder
- implementering
- implementeret
- vigtigt
- Forbedre
- forbedret
- forbedring
- omfatter
- medtaget
- omfatter
- Herunder
- oplysninger
- Infrastruktur
- instans
- Internet
- undersøge
- spørgsmål
- IT
- selv
- Nøgle
- etiket
- mærkning
- Etiketter
- Sprog
- stor
- større
- LÆR
- lærte
- læring
- Politikker
- Sandsynlig
- Se
- kiggede
- lave
- markere
- Match
- meningsfuld
- midler
- måle
- måling
- Hudpleje
- måske
- Militær
- millioner
- Mission
- model
- modeller
- mere
- mest
- multiplicere
- Natur
- nødvendig
- negativ
- netværk
- nummer
- ordrer
- Organiseret
- original
- Andet
- ejerskab
- del
- særlig
- ydeevne
- udfører
- fase
- stykker
- planlagt
- politik
- positiv
- mulig
- potentiale
- vigtigste
- praksis
- forudsige
- forudsigelse
- præsentere
- forebyggelse
- tidligere
- Beskyttelse af personlige oplysninger
- sonde
- Problem
- behandle
- producere
- produceret
- protest
- proxy
- Kvarter
- rejse
- nå
- gik op for
- årsager
- reducere
- Reduceret
- reducere
- afspejler
- refleksion
- resterende
- fjernelse
- repræsentere
- repræsentation
- repræsentativt
- anmodninger
- kræver
- Kræver
- svar
- resulterer
- afkast
- risici
- Kør
- samme
- Scale
- Ordningen
- Søg
- sæt
- former
- Del
- skifte
- signifikant
- lignende
- Simpelt
- siden
- enkelt
- Størrelse
- lille
- So
- SOLVE
- nogle
- noget
- Space
- særligt
- specifikt
- specifikation
- splits
- etaper
- starte
- erklærede
- Stadig
- Studere
- succes
- systemet
- Systemer
- tager
- teknikker
- Teknologier
- prøve
- derfor
- ting
- grundigt
- tre
- tærskel
- Gennem
- tid
- gange
- værktøj
- top
- mod
- Tog
- Kurser
- forstå
- union
- enestående
- us
- brug
- validering
- forskellige
- verificere
- udgave
- ønskede
- Hvad
- hvorvidt
- mens
- inden for
- uden
- Dame
- Arbejde
- virker
- bekymret
- ville
- X