For å dele magien til DALL E 2 med et bredt publikum, trengte vi å redusere risikoen forbundet med kraftige bildegenereringsmodeller. Til dette setter vi ulike rekkverk på plass for å hindre genererte bilder fra å krenke vår innholdspolitikk. Dette innlegget fokuserer på reduksjoner før trening, et undersett av disse rekkverkene som direkte modifiserer dataene som DALL·E 2 lærer av. Spesielt er DALL·E 2 trent på hundrevis av millioner av bildetekster fra internett, og vi fjerner og vekter noen av disse bildene på nytt for å endre hva modellen lærer.
Dette innlegget er organisert i tre seksjoner, som hver beskriver en annen pre-treningsreduksjon:
- I den første delen beskriver vi hvordan vi filtrerte ut voldelige og seksuelle bilder fra DALL·E 2s treningsdatasett. Uten denne begrensningen ville modellen lære å produsere grafiske eller eksplisitte bilder når de blir bedt om dem, og kan til og med returnere slike bilder utilsiktet som svar på tilsynelatende ufarlige oppfordringer.
- I den andre delen finner vi at filtrering av treningsdata kan forsterke skjevheter, og beskriver vår teknikk for å dempe denne effekten. For eksempel, uten denne begrensningen, la vi merke til at modeller trent på filtrerte data noen ganger genererte flere bilder som viser menn og færre bilder som viser kvinner sammenlignet med modeller trent på det originale datasettet.
- I den siste delen går vi til spørsmålet om memorering, og finner ut at modeller som DALL·E 2 noen ganger kan reprodusere bilder de ble trent på i stedet for å lage nye bilder. I praksis fant vi ut at dette bildeoppstøt er forårsaket av bilder som er replikert mange ganger i datasettet, og reduserer problemet ved å fjerne bilder som visuelt ligner på andre bilder i datasettet.
Redusere grafiske og eksplisitte opplæringsdata
Siden treningsdata former egenskapene til enhver lært modell, er datafiltrering et kraftig verktøy for å begrense uønskede modellegenskaper. Vi brukte denne tilnærmingen på to kategorier – bilder som viser grafisk vold og seksuelt innhold – ved å bruke klassifiserere for å filtrere bilder i disse kategoriene ut av datasettet før opplæring av DALL·E 2. Vi trente disse bildeklassifikatorene internt og fortsetter å studere effekter av datasettfiltrering på vår trente modell.
For å lære opp bildeklassifikatorene våre, brukte vi en tilnærming som vi tidligere hadde brukt for å filtrere treningsdata etter GLID. De grunnleggende trinnene for denne tilnærmingen er som følger: Først lager vi en spesifikasjon for bildekategoriene vi ønsker å merke; for det andre samler vi noen hundre positive og negative eksempler for hver kategori; for det tredje bruker vi en aktiv læringsprosedyre for å samle inn mer data og forbedre presisjonen/gjenkalling-avveiningen; og til slutt kjører vi den resulterende klassifikatoren på hele datasettet med en konservativ klassifiseringsterskel for å favorisere gjenkalling fremfor presisjon. For å angi disse tersklene, prioriterte vi å filtrere ut alle dårlig data over leaving i alle god data. Dette er fordi vi alltid kan finjustere modellen vår med mer data senere for å lære den nye ting, men det er mye vanskeligere å få modellen til å glemme noe den allerede har lært.
I løpet av den aktive læringsfasen har vi iterativt forbedret klassifiseringene våre ved å samle menneskelige etiketter for potensielt vanskelige eller feilklassifiserte bilder. Spesielt brukte vi to aktive læringsteknikker for å velge bilder fra datasettet vårt (som inneholder hundrevis av millioner av umerkede bilder) for å presentere for mennesker for merking. For det første, for å redusere vår klassifiserers falske positive rate (dvs. hyppigheten som den feilklassifiserer et godartet bilde som voldelig eller seksuelt), tildelte vi menneskelige etiketter til bilder som den nåværende modellen klassifiserte som positive. For at dette trinnet skulle fungere bra, justerte vi vår klassifiseringsterskel for nesten 100 % tilbakekalling, men en høy falsk-positiv rate; På denne måten merket våre etiketter for det meste virkelig negative saker. Selv om denne teknikken bidrar til å redusere falske positiver og reduserer behovet for merkevare for å se på potensielt skadelige bilder, hjelper det ikke å finne flere positive tilfeller som modellen mangler.
For å redusere klassifisererens falske negative frekvens brukte vi en annen aktiv læringsteknikk: søk etter nærmeste nabo. Spesielt kjørte vi mange ganger kryssvalidering for å finne positive prøver i vårt nåværende merkede datasett som modellen hadde en tendens til å feilklassifisere som negative (for å gjøre dette trente vi bokstavelig talt hundrevis av versjoner av klassifikatoren med forskjellige togvalideringsdelinger). Vi skannet deretter vår store samling av umerkede bilder for å finne de nærmeste naboene til disse prøvene i et perseptuelt funksjonsrom, og tildelte menneskelige etiketter til de oppdagede bildene. Takket være datainfrastrukturen vår var det trivielt å skalere opp både klassifiseringstrening og nærmeste nabosøk til mange GPUer, slik at det aktive læringstrinnet kunne foregå over et antall minutter i stedet for timer eller dager.
For å verifisere effektiviteten til datafiltrene våre trente vi to GLIDE-modeller med de samme hyperparametrene: én på ufiltrerte data og én på datasettet etter filtrering. Vi refererer til den tidligere modellen som ufiltrert modell, og sistnevnte som filtrert modell. Som forventet fant vi ut at den ufiltrerte modellen generelt produserte mindre eksplisitt eller grafisk innhold som svar på forespørsler om denne typen innhold. Imidlertid fant vi også en uventet bieffekt av datafiltrering: den skapte eller forsterket modellens skjevheter mot visse demografiske forhold.
Fikse skjevheter introdusert av datafiltre
Generative modeller prøver å matche distribusjonen av treningsdataene deres, inkludert eventuelle skjevheter deri. Som et resultat har filtrering av treningsdata potensial til å skape eller forsterke skjevheter i nedstrømsmodeller. Generelt er det å fikse skjevheter i det originale datasettet en vanskelig sosioteknisk oppgave som vi fortsetter å studere, og ligger utenfor rammen av dette innlegget. Problemet vi tar opp her er forsterkningen av skjevheter forårsaket spesifikt av selve datafiltreringen. Med vår tilnærming tar vi sikte på å forhindre at den filtrerte modellen blir til mer partisk enn den ufiltrerte modellen, noe som i hovedsak reduserer distribusjonsskiftet forårsaket av datafiltrering.
Som et konkret eksempel på skjevhetsforsterkning på grunn av filtrering, bør du vurdere spørsmålet "en administrerende direktør". Når vår ufiltrerte modell genererte bilder for denne forespørselen, hadde den en tendens til å produsere flere bilder av menn enn kvinner, og vi forventer at det meste av denne skjevheten er en refleksjon av våre nåværende treningsdata. Men når vi kjørte den samme ledeteksten gjennom vår filtrerte modell, så det ut til at skjevheten ble forsterket; generasjonene var nesten utelukkende bilder av menn.
Vi antar at dette spesielle tilfellet av skjevhetsforsterkning kommer fra to steder: For det første, selv om kvinner og menn har omtrent lik representasjon i det originale datasettet, kan datasettet være partisk mot å presentere kvinner i mer seksualiserte kontekster; og for det andre kan klassifikatorene våre selv være partiske enten på grunn av implementering eller klassedefinisjon, til tross for våre anstrengelser for å sikre at dette ikke var tilfellet under datainnsamlings- og valideringsfasene. På grunn av begge disse effektene kan filteret vårt fjerne flere bilder av kvinner enn menn, noe som endrer kjønnsforholdet som modellen observerer under trening.
For å undersøke filterindusert skjevhet mer grundig, ønsket vi en måte å måle hvor mye datafiltrene våre påvirket skjevheten mot ulike konsepter. Spesielt er filtrene våre for vold og seksuelt innhold rent bildebasert, men den multimodale naturen til datasettet vårt lar oss måle effekten av disse filtrene på tekst direkte. Siden hvert bilde er ledsaget av en teksttekst, var vi i stand til å se på den relative frekvensen av håndvalgte søkeord på tvers av det filtrerte og ufiltrerte datasettet for å estimere hvor mye filtrene påvirket et gitt konsept.
For å sette dette ut i livet brukte vi Apache Spark til å beregne frekvensene til en håndfull søkeord (f.eks. «foreldre», «kvinne», «barn») over alle bildetekstene i både våre filtrerte og ufiltrerte datasett. Selv om datasettet vårt inneholder hundrevis av millioner av tekst-bilde-par, tok det bare noen få minutter å beregne disse søkeordfrekvensene ved å bruke dataklyngen vår.
Etter å ha beregnet søkeordfrekvenser, kunne vi bekrefte at datasettfiltrene våre faktisk hadde skjevt frekvensene til visse søkeord mer enn andre. For eksempel reduserte filtrene frekvensen av ordet «kvinne» med 14 %, mens frekvensen av ordet «mann» bare ble redusert med 6 %. Dette bekreftet, i stor skala, det vi allerede hadde observert anekdotisk ved prøvetaking fra GLIDE-modeller trent på begge datasettene.
Nå som vi hadde en proxy for å måle filterindusert skjevhet, trengte vi en måte å dempe den på. For å takle dette problemet hadde vi som mål å vekte det filtrerte datasettet på nytt slik at distribusjonen bedre samsvarer med distribusjonen av ufiltrerte bilder. Som et lekeeksempel for å illustrere denne ideen, anta at datasettet vårt består av 50 % kattebilder og 50 % hundebilder, men datafiltrene våre fjerner 75 % av hundene, men bare 50 % av kattene. Det endelige datasettet vil være ⅔ katter og ⅓ hunder, og en sannsynlighetsbasert generativ modell trent på dette datasettet vil sannsynligvis generere flere bilder av katter enn hunder. Vi kan fikse denne ubalansen ved å multiplisere treningstapet for hvert bilde av en hund med 2, og emulere effekten av å gjenta hvert hundebilde to ganger. Det viser seg at vi kan skalere denne tilnærmingen til våre virkelige datasett og modeller på en måte som stort sett er automatisk – det vil si at vi ikke trenger håndvelge funksjonene vi ønsker å vekte på nytt.
Vi beregner vekter for bilder i det filtrerte datasettet ved å bruke sannsynligheter fra en spesiell klassifikator, lik tilnærmingen som brukes av Choi et al. (2019). For å trene denne klassifisereren prøver vi jevnt ut bilder fra begge datasettene og forutsier hvilket datasett bildet kom fra. Spesielt forutsier denne modellen P(ufiltrert|bilde), gitt en forutgående P(ufiltrert) = 0.5. I praksis vil vi ikke at denne modellen skal være for kraftig, ellers kan den lære den nøyaktige funksjonen implementert av filtrene våre i utgangspunktet. I stedet ønsker vi at modellen skal være jevnere enn de originale datafiltrene våre, og fanger opp brede kategorier som påvirkes av filtrene mens vi fortsatt er usikker på om et bestemt bilde vil bli filtrert eller ikke. Til dette trente vi en lineær sonde på toppen av en liten CLIP modell.
Når vi først har en klassifiserer som forutsier sannsynligheten for at et bilde er fra det ufiltrerte datasettet, må vi fortsatt konvertere denne prediksjonen til en vekt for bildet. Anta for eksempel det P(ufiltrert|bilde) = 0.8. Dette betyr at utvalget er 4 ganger mer sannsynlig å bli funnet i de ufiltrerte dataene enn de filtrerte dataene, og en vekt på 4 bør korrigere ubalansen. Mer generelt kan vi bruke vekten P(ufiltrert|bilde)/P(filtrert|bilde).[1]
Hvor godt reduserer egentlig denne omvektingsordningen den forsterkede skjevheten? Da vi finjusterte vår forrige filtrerte modell med det nye vektingsskjemaet, samsvarte den finjusterte modellens oppførsel mye mer med den ufiltrerte modellen på de partiske eksemplene vi tidligere hadde funnet. Selv om dette var oppmuntrende, ønsket vi også å evaluere denne reduksjonen mer grundig ved å bruke vår søkeordbaserte skjevhetsheuristikk. For å måle søkeordfrekvenser mens vi tar hensyn til vårt nye vektingsskjema, kan vi ganske enkelt vekte hver forekomst av et nøkkelord i det filtrerte datasettet med vekten av prøven som inneholder det. Ved å gjøre dette får vi et nytt sett med nøkkelordfrekvenser som gjenspeiler prøvevektene i det filtrerte datasettet.
På tvers av de fleste søkeordene vi sjekket, reduserte omvektingsordningen frekvensendringen indusert av filtrering. For våre tidligere eksempler på «mann» og «kvinne» ble de relative frekvensreduksjonene 1 % og –1 %, mens deres tidligere verdier var henholdsvis 14 % og 6 %. Selv om denne beregningen bare er en proxy for faktisk filtreringsskjevhet, er det betryggende at vårt bildebaserte omvektingssystem faktisk forbedrer en tekstbasert beregning så betraktelig.
Vi fortsetter å undersøke gjenværende skjevheter i DALL·E 2, delvis gjennom større evalueringer av modellens oppførsel og undersøkelser av hvordan filtrering påvirket skjevheter og kapasitetsutvikling.
Forebygging av bildeoppstøt
Vi observerte at våre interne forgjengere til DALL·E 2 noen ganger reproduserte treningsbilder ordrett. Denne oppførselen var uønsket, siden vi ønsker at DALL·E 2 skal lage originale, unike bilder som standard og ikke bare "sy sammen" deler av eksisterende bilder. I tillegg kan reprodusering av opplæringsbilder ordrett reise juridiske spørsmål rundt brudd på opphavsrett, eierskap og personvern (hvis folks bilder var til stede i opplæringsdata).
For bedre å forstå problemet med bildeoppstøt, samlet vi et datasett med spørsmål som ofte resulterte i dupliserte bilder. For å gjøre dette brukte vi en trent modell for å prøve bilder for 50,000 50 spørsmål fra treningsdatasettet vårt, og sorterte prøvene etter perseptuell likhet med det tilsvarende treningsbildet. Til slutt inspiserte vi de beste kampene for hånd, og fant bare noen få hundre ekte duplikatpar av de 1 0 totale spørsmålene. Selv om oppstøtsraten så ut til å være mindre enn XNUMX %, mente vi det var nødvendig å presse frekvensen ned til XNUMX av grunnene nevnt ovenfor.
Da vi studerte datasettet vårt med oppstøte bilder, la vi merke til to mønstre. For det første var bildene nesten alle enkel vektorgrafikk, som sannsynligvis var enkle å huske på grunn av deres lave informasjonsinnhold. For det andre, og enda viktigere, hadde alle bildene mange nesten duplikater i opplæringsdatasettet. For eksempel kan det være en vektorgrafikk som ser ut som en klokke som viser klokken 1—men da vil vi oppdage en treningsprøve som inneholder den samme klokken som viser klokken 2, og deretter klokken 3, osv. En gang vi innså dette, vi brukte et distribuert nærmeste nabo-søk for å bekrefte at alle de regurgiterte bildene faktisk hadde perseptuelt like duplikater i datasettet. Annen virker har observert et lignende fenomen i store språkmodeller, og funnet ut at dataduplisering er sterkt knyttet til memorering.
Funnet ovenfor antydet at hvis vi dedupliserte datasettet vårt, kunne vi løse oppblåsningsproblemet. For å oppnå dette planla vi å bruke et nevralt nettverk for å identifisere grupper av bilder som så like ut, og deretter fjerne alle unntatt ett bilde fra hver gruppe.[2] Dette vil imidlertid kreve å sjekke for hvert bilde om det er et duplikat av hvert annet bilde i datasettet. Siden hele datasettet vårt inneholder hundrevis av millioner bilder, ville vi naivt måtte sjekke hundrevis av kvadrillioner bildepar for å finne alle duplikatene. Selv om dette er teknisk innen rekkevidde, spesielt på en stor dataklynge, fant vi et mye mer effektivt alternativ som fungerer nesten like bra til en liten brøkdel av kostnaden.
Vurder hva som skjer hvis vi grupperer datasettet vårt før vi utfører deduplisering. Siden nærliggende prøver ofte faller inn i samme klynge, ville de fleste av duplikatparene ikke krysse klyngebeslutningsgrenser. Vi kunne deretter deduplisere prøver innenfor hver klynge uten å se etter duplikater utenfor klyngen, mens vi bare mangler en liten brøkdel av alle duplikatpar. Dette er mye raskere enn den naive tilnærmingen, siden vi ikke lenger trenger å sjekke hvert eneste bildepar.[3] Da vi testet denne tilnærmingen empirisk på en liten delmengde av dataene våre, fant den 85 % av alle dupliserte par ved bruk K = 1024 klynger.
For å forbedre suksessraten til algoritmen ovenfor, utnyttet vi én viktig observasjon: når du grupperer forskjellige tilfeldige delsett av et datasett, er de resulterende klyngebeslutningsgrensene ofte ganske forskjellige. Derfor, hvis et duplikatpar krysser en klyngegrense for en klynge av dataene, kan det samme paret falle inne i en enkelt klynge i en annen klynge. Jo flere grupperinger du prøver, jo mer sannsynlig er det at du oppdager et gitt duplikatpar. I praksis bestemte vi oss for å bruke fem klynger, som betyr at vi søker etter duplikater av hvert bilde i foreningen av fem forskjellige klynger. I praksis fant dette 97 % av alle dupliserte par på en delmengde av dataene våre.
Overraskende nok ble nesten en fjerdedel av datasettet vårt fjernet ved deduplisering. Da vi så på de nesten dupliserte parene som ble funnet, inkluderte mange av dem meningsfulle endringer. Husk klokkeeksemplet ovenfra: datasettet kan inneholde mange bilder av samme klokke til forskjellige tider på dagen. Selv om disse bildene sannsynligvis vil få modellen til å huske denne klokkens utseende, kan de også hjelpe modellen til å lære å skille mellom tider på døgnet på en klokke. Gitt hvor mye data som ble fjernet, var vi bekymret for at fjerning av bilder som dette kan ha skadet modellens ytelse.
For å teste effekten av deduplisering på modellene våre trente vi to modeller med identiske hyperparametre: én på hele datasettet og én på den dedupliserte versjonen av datasettet. For å sammenligne modellene brukte vi de samme menneskelige evalueringene som vi brukte til å evaluere vår originale GLIDE-modell. Overraskende, fant vi at menneskelige evaluatorer litt trekkes modellen trente på dedupliserte data, noe som tyder på at den store mengden redundante bilder i datasettet faktisk skadet ytelsen.
Når vi hadde en modell trent på dedupliserte data, kjørte vi på nytt oppstøtssøket vi tidligere hadde gjort over 50 50 forespørsler fra treningsdatasettet. Vi fant ut at den nye modellen aldri gjenopptok et treningsbilde når det ble gitt den nøyaktige beskjeden om bildet fra treningsdatasettet. For å ta denne testen enda et skritt videre, utførte vi også et nærmeste nabosøk over hele treningsdatasettet for hvert av de XNUMX XNUMX genererte bildene. På denne måten tenkte vi at vi kunne fange modellen med et annet bilde enn det som er knyttet til en gitt forespørsel. Selv med denne mer grundige kontrollen fant vi aldri et tilfelle av bildeoppstøt.
Neste trinn
Selv om alle avbøtningene som er diskutert ovenfor representerer betydelig fremgang mot målet vårt om å redusere risikoen forbundet med DALL·E 2, har hver avbøtende forbedring fortsatt:
- Bedre førtreningsfiltre kan tillate oss å trene DALL·E 2 på mer data og potensielt redusere skjevhet i modellen ytterligere. Våre nåværende filtre er innstilt for lav feilfrekvens på bekostning av mange falske positiver. Som et resultat filtrerte vi ut omtrent 5 % av hele datasettet vårt, selv om de fleste av disse filtrerte bildene ikke bryter retningslinjene våre for innhold i det hele tatt. Å forbedre filtrene våre kan tillate oss å gjenvinne noen av disse treningsdataene.
- Bias introduseres og potensielt forsterkes i mange stadier av systemutvikling og distribusjon. Å evaluere og redusere skjevheten i systemer som DALL·E 2 og skaden indusert av denne skjevheten er et viktig tverrfaglig problem som vi fortsetter å studere ved OpenAI som en del av vårt bredere oppdrag. Vårt arbeid med dette inkluderer å bygge evalueringer for å bedre forstå problemet, kurere nye datasett og bruke teknikker som menneskelig tilbakemelding og finjustering for å bygge mer robuste og representative teknologier.
- Det er også avgjørende at vi fortsetter å studere memorering og generalisering i dyplæringssystemer. Selv om deduplisering er et godt første skritt mot å forhindre memorering, forteller det oss ikke alt det er å lære om hvorfor eller hvordan modeller som DALL·E 2 husker treningsdata.
- 000
- 2019
- a
- Om oss
- Logg inn
- Oppnå
- tvers
- aktiv
- adresse
- påvirker
- algoritme
- Alle
- tillate
- tillater
- allerede
- alternativ
- alltid
- beløp
- En annen
- dukket opp
- anvendt
- påføring
- tilnærming
- rundt
- tildelt
- assosiert
- publikum
- fordi
- før du
- være
- Bedre
- mellom
- Beyond
- bygge
- Bygning
- evner
- teksting
- saken
- saker
- Catch
- Kategori
- forårsaket
- viss
- endring
- kontroll
- Velg
- klasse
- klassifisering
- klassifisert
- klokke
- samling
- sammenlignet
- Beregn
- databehandling
- konsept
- Vurder
- inneholder
- innhold
- sammenhenger
- fortsette
- copyright
- brudd på opphavsretten
- Tilsvarende
- kunne
- skape
- opprettet
- Opprette
- avgjørende
- Gjeldende
- I dag
- dato
- dag
- Dager
- avgjørelse
- dyp
- Demografi
- distribusjon
- beskrive
- Til tross for
- Utvikling
- forskjellig
- vanskelig
- direkte
- oppdage
- oppdaget
- avstand
- distribueres
- distribusjon
- ned
- duplikater
- under
- hver enkelt
- effekt
- effektivt
- effektivitet
- effekter
- effektiv
- innsats
- oppmuntrende
- spesielt
- hovedsak
- anslag
- etc
- evaluere
- alt
- eksempel
- eksempler
- utelukkende
- eksisterende
- forvente
- forventet
- raskere
- Trekk
- Egenskaper
- tilbakemelding
- Figur
- filtrering
- filtre
- Endelig
- finne
- Først
- Fix
- fokuserer
- følger
- funnet
- fra
- fullt
- funksjon
- videre
- samle
- Kjønn
- general
- generelt
- generere
- generert
- generasjonen
- generasjoner
- generative
- mål
- god
- GPU
- grafikk
- Gruppe
- Gruppens
- garantert
- håndfull
- hjelpe
- hjelper
- her.
- Høy
- Hvordan
- Men
- HTTPS
- menneskelig
- Mennesker
- Hundrevis
- Tanken
- identifisere
- bilde
- bilder
- gjennomføring
- implementert
- viktig
- forbedre
- forbedret
- bedre
- inkludere
- inkludert
- inkluderer
- Inkludert
- informasjon
- Infrastruktur
- f.eks
- Internet
- undersøke
- utstedelse
- IT
- selv
- nøkkel
- Etiketten
- merking
- etiketter
- Språk
- stor
- større
- LÆRE
- lært
- læring
- Lovlig
- Sannsynlig
- Se
- så
- gjøre
- merke
- Match
- meningsfylt
- midler
- måle
- måling
- Herre
- kunne
- Militær
- millioner
- Oppdrag
- modell
- modeller
- mer
- mest
- multiplisere
- Natur
- nødvendig
- negativ
- nettverk
- Antall
- rekkefølge
- Organisert
- original
- Annen
- eierskap
- del
- Spesielt
- ytelse
- utfører
- fase
- stykker
- planlagt
- politikk
- positiv
- mulig
- potensiell
- kraftig
- praksis
- forutsi
- prediksjon
- presentere
- hindre
- forrige
- privatliv
- probe
- Problem
- prosess
- produsere
- produsert
- protest
- proxy
- Fjerdedel
- heve
- å nå
- realisert
- grunner
- redusere
- Redusert
- redusere
- reflektere
- refleksjon
- gjenværende
- fjerne
- representere
- representasjon
- representant
- forespørsler
- krever
- Krever
- svar
- resulterende
- retur
- risikoer
- Kjør
- samme
- Skala
- ordningen
- Søk
- sett
- figurer
- Del
- skift
- signifikant
- lignende
- Enkelt
- siden
- enkelt
- Størrelse
- liten
- So
- LØSE
- noen
- noe
- Rom
- spesiell
- spesielt
- spesifikasjon
- spagaten
- stadier
- Begynn
- uttalte
- Still
- Studer
- suksess
- system
- Systemer
- ta
- teknikker
- Technologies
- test
- De
- derfor
- ting
- grundig
- tre
- terskel
- Gjennom
- tid
- ganger
- verktøy
- topp
- mot
- Tog
- Kurs
- forstå
- union
- unik
- us
- bruke
- validering
- ulike
- verifisere
- versjon
- ønsket
- Hva
- om
- mens
- innenfor
- uten
- Dame
- Arbeid
- virker
- bekymret
- ville
- X