Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Indsamling og Forbehandling af Data | Opbygning og Træning af Generative Modeller
Generativ AI

bookIndsamling og Forbehandling af Data

Træning af generative modeller kræver ikke kun god arkitektur og tabsfunktioner, men også rene, velstrukturerede og varierede datasæt. Dette afsnit introducerer datasæt af høj kvalitet inden for vision, tekst og lyd, giver detaljerede forbehandlingsteknikker til moderne generative pipelines og diskuterer robuste strategier for datasplit med praktiske værktøjer.

Datainnsamling

Indsamling af data til generativ modellering afhænger af domæne, tilgængelighed af kilder, skala og licensering. For tekst- og visionsdata omfatter almindelige kilder åbne datasæt, skrabet indhold og strukturerede arkiver (f.eks. akademiske arkiver, sociale medier eller e-handelsplatforme).

Webscraping-teknikker

Når datasæt ikke er umiddelbart tilgængelige, kan data indsamles fra internettet ved hjælp af scraping-værktøjer. Webscraping muliggør programmatisk udtrækning af information fra HTML-sider. Det er en effektiv metode til at indsamle virkelige, ustrukturerede data, når API'er ikke er tilgængelige. Dog medfører scraping både tekniske og etiske ansvar.

Scraping-metoder omfatter typisk:

  • Afsendelse af HTTP-forespørgsler for at hente websider. Dette giver adgang til en sides rå HTML-indhold;
  • Parsing af HTML-indhold for at udtrække strukturerede data. Værktøjer som BeautifulSoup konverterer ustruktureret HTML til tilgængelige tags og elementer;
  • Navigering af dynamiske sider ved hjælp af browserautomatisering. JavaScript-tunge websites kræver værktøjer som Selenium for fuld rendering af indhold;
  • Lagring af udtrukne data i anvendelige formater som CSV eller JSON. Dette sikrer kompatibilitet med senere forbehandling og modeltræning.

Nedenfor ses to almindelige scraping-strategier:

Udtrækning af tekst med BeautifulSoup

BeautifulSoup er et Python-bibliotek, der bruges til at parse statiske HTML-sider.

1234567891011
import requests from bs4 import BeautifulSoup url = "https://docs.python.org/3/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # Extract paragraphs paragraphs = [p.text for p in soup.find_all('p')] text = "\n".join(paragraphs) print(text)
copy

Billedindhentning med Selenium

Selenium automatiserer en browser til at indsamle indhold fra sider, der gengives med JavaScript.

123456789101112131415161718
# INSTALL SELENIUM # THIS CODE DOWNLOAD IMAGES (I NEED JUST VIZUALIZATION) from selenium import webdriver import time import urllib.request url = "https://example.com/gallery" driver = webdriver.Chrome() driver.get(url) time.sleep(2) images = driver.find_elements("tag name", "img") for idx, img in enumerate(images): src = img.get_attribute('src') if src: urllib.request.urlretrieve(src, f"image_{idx}.jpg") driver.quit()
copy
Note
Bemærk

Gennemgå altid en hjemmesides servicevilkår før scraping. Brug høflige forespørgselsrater og respekter robots.txt. Forkert scraping kan føre til IP-blokeringer eller juridiske konsekvenser.

I GenAI-sammenhænge fungerer web scraping ofte som et forstadie til opbygning af pretræningsdatasæt, især for domænespecifikke eller lavressourcesprog. Værktøjer som Scrapy, playwright eller browserless API'er anvendes også hyppigt til storskalaopgaver.

Forbehandlingsteknikker

Databehandling skal tilpasses modalitet, modeltype og kvalitetskrav. Til generativ modellering i produktionskvalitet omfatter pipelines ofte domænespecifikke transformationer, tilpasning af opløsning og indholdsbaseret filtrering.

Billedforbehandling

  • Ændring af størrelse: tilpas datasættets opløsning til modelinput (f.eks. 64x64 for tidlige GANs, 512x512 for diffusionsmodeller);
  • Normalisering: skalerer pixelværdier til et standardinterval, typisk [−1, 1] eller [0, 1];
  • Farverumshåndtering: sikrer farvekonsistens — konverter til RGB eller gråtoner. For betinget generering, behold alfakanaler hvis til stede;
  • Dataforøgelse: introducerer variation under træning via transformationer.

Tekstforbehandling

  • Rensning: fjerner specialtegn, ekstra mellemrum og støj;
12345
import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
copy
  1. r"[^\w\s]":

    • \w: matcher ethvert alfanumerisk tegn (bogstaver A-Z, a-z, cifre 0-9) og underscore _;
    • \s: matcher ethvert blanktegn (mellemrum, tabulatorer, linjeskift);
    • [^...]: en negationsklasse—matcher alt, der ikke er angivet indeni;
    • Betydning: dette mønster matcher alle tegn undtagen bogstaver, cifre, underscores og blanktegn. Det fjerner altså tegnsætning og symboler (som , !, osv.).
  2. r"\s+":

    • \s: matcher ethvert blanktegn;
    • +: matcher et eller flere af det foregående tegn;
    • Betydning: dette erstatter flere sammenhængende blanktegn med et enkelt mellemrum.
  3. .strip(): fjerner indledende og afsluttende blanktegn fra den endelige rensede streng.

For yderligere information om RegEx-syntaks, se dokumentationen.

  • Konvertering til små bogstaver: standardiserer tekst til små bogstaver for konsistens. Anvendes selektivt, da modeller som BERT kan være case-sensitive eller case-insensitive;
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisering: opdeler tekst i tokens eller delord til modellering;
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
copy
  • Stemming/Lemmatization: sjældent anvendt i dybdelærings-pipelines, men bruges i traditionel NLP eller prætræningsfiltre;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Padding/Truncation: se eksemplet ovenfor med max_length.
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
copy
Note
Bemærk

Opbyg modulære forbehandlings-pipelines med fokus på reproducerbarhed. Brug DVC, wandb artifacts eller huggingface/datasets med streaming + caching.

Datasplitningsstrategier

Effektiv datasplitning er afgørende for generalisering, især i generative modeller, hvor overfitting til modes eller memorisering er almindeligt.

Train/Validation/Test Split

  • Konventionelle forhold: 80/10/10 eller 70/15/15 afhængigt af datasættets størrelse;
  • Indholdsbevidst splitning: stratificer splits efter klasse (vision), emne (tekst).
  • Anvendelsestilfælde:
    • Træning: driver modeloptimering;
    • Validering: styrer checkpointing, early stopping og metrikjustering (f.eks. FID);
    • Test: holdes helt tilbage indtil endelig modelbenchmarking.

Eksempel ved brug af train_test_split:

For Hugging Face Datasets:

Krydsvalidering og Bootstrapping

  • For lav-ressource eller zero-shot domæner, anvend K-fold CV (f.eks. K=5 eller 10);
  • I diffusionsmodeller, brug bootstrappet FID/LPIPS til at evaluere genereringsstabilitet;
  • Visuel eller perceptuel inspektion bør ledsage numerisk validering.

Eksempel på K-fold opsætning:

Almindeligt anvendte datasæt

Valg af det rette datasæt afhænger af modalitet, dataskala, licensforhold og det specifikke generative mål (f.eks. ubetinget generering, betinget syntese eller stiloverførsel).

Computer Vision-datasæt

  • CIFAR-10: 60.000 lavopløselige 32×32 RGB-billeder fordelt på 10 klasser. Letvægtsdatasæt, ideelt til hurtig prototyping, enhedstest og benchmarking af træningsloops for billed-GANs;
  • CelebA: Over 200.000 justerede kendisansigter annoteret med 40 binære attributter. Hyppigt anvendt til attributbetinget generering, identitetsbevarende ansigtsredigering og encoder-decoder-modeller;
  • LSUN: Storskala scenedatasæt med millioner af billeder i kategorier som soveværelser, kirker og spisestuer. Væsentligt for højopløselig syntese og progressiv GAN-træning;
  • ImageNet: Over 14 millioner billeder af høj kvalitet annoteret på tværs af 20.000 klasser. Anvendes primært til transfer learning, prætræning af diffusionsmodeller og som grunddatasæt for stilstyret generering.

Tekstdatasæt

  • WikiText: Rensede Wikipedia-artikler (WikiText-2: 2 millioner tokens, WikiText-103: over 100 millioner). Værdifuldt til evaluering af sprogmodellering og finjustering af decoder-only-modeller som GPT;
  • BookCorpus: Over 11.000 gratis romaner. Kritisk for narrativ generering, transformer-modeller med lang kontekst og prætræning af grundmodeller (f.eks. BERT, GPT-2);
  • Common Crawl / C4: Webdata i petabyte-skala på flere sprog. C4 er en deduplikeret, filtreret variant kurateret til træning af sprogmodeller af høj kvalitet (f.eks. T5);
  • The Pile: 825 GB diversificeret data (bøger, ArXiv, StackExchange, GitHub m.m.). Udviklet til træning af GPT-lignende modeller på niveau med OpenAI’s LLMs.

Resumé

  • Udvælg datasæt baseret på kvalitet, licensforhold, skala og overensstemmelse med generative mål;
  • Anvend forbehandlings-pipelines tilpasset hver modalitet ved brug af robuste, produktionsklare værktøjer;
  • Sikr stringente opdelingsstrategier for at understøtte reproducerbarhed, undgå lækage og muliggøre retfærdig evaluering.

1. Hvorfor er datakvalitet vigtigere end mængde ved træning af generative AI-modeller?

2. Hvad er en almindelig udfordring ved indsamling af diversificerede data til træning af generative modeller?

3. Hvad er det primære mål med dataforøgelse i forbindelse med træning af generativ AI?

question mark

Hvorfor er datakvalitet vigtigere end mængde ved træning af generative AI-modeller?

Select the correct answer

question mark

Hvad er en almindelig udfordring ved indsamling af diversificerede data til træning af generative modeller?

Select the correct answer

question mark

Hvad er det primære mål med dataforøgelse i forbindelse med træning af generativ AI?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 4.76

bookIndsamling og Forbehandling af Data

Stryg for at vise menuen

Træning af generative modeller kræver ikke kun god arkitektur og tabsfunktioner, men også rene, velstrukturerede og varierede datasæt. Dette afsnit introducerer datasæt af høj kvalitet inden for vision, tekst og lyd, giver detaljerede forbehandlingsteknikker til moderne generative pipelines og diskuterer robuste strategier for datasplit med praktiske værktøjer.

Datainnsamling

Indsamling af data til generativ modellering afhænger af domæne, tilgængelighed af kilder, skala og licensering. For tekst- og visionsdata omfatter almindelige kilder åbne datasæt, skrabet indhold og strukturerede arkiver (f.eks. akademiske arkiver, sociale medier eller e-handelsplatforme).

Webscraping-teknikker

Når datasæt ikke er umiddelbart tilgængelige, kan data indsamles fra internettet ved hjælp af scraping-værktøjer. Webscraping muliggør programmatisk udtrækning af information fra HTML-sider. Det er en effektiv metode til at indsamle virkelige, ustrukturerede data, når API'er ikke er tilgængelige. Dog medfører scraping både tekniske og etiske ansvar.

Scraping-metoder omfatter typisk:

  • Afsendelse af HTTP-forespørgsler for at hente websider. Dette giver adgang til en sides rå HTML-indhold;
  • Parsing af HTML-indhold for at udtrække strukturerede data. Værktøjer som BeautifulSoup konverterer ustruktureret HTML til tilgængelige tags og elementer;
  • Navigering af dynamiske sider ved hjælp af browserautomatisering. JavaScript-tunge websites kræver værktøjer som Selenium for fuld rendering af indhold;
  • Lagring af udtrukne data i anvendelige formater som CSV eller JSON. Dette sikrer kompatibilitet med senere forbehandling og modeltræning.

Nedenfor ses to almindelige scraping-strategier:

Udtrækning af tekst med BeautifulSoup

BeautifulSoup er et Python-bibliotek, der bruges til at parse statiske HTML-sider.

1234567891011
import requests from bs4 import BeautifulSoup url = "https://docs.python.org/3/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # Extract paragraphs paragraphs = [p.text for p in soup.find_all('p')] text = "\n".join(paragraphs) print(text)
copy

Billedindhentning med Selenium

Selenium automatiserer en browser til at indsamle indhold fra sider, der gengives med JavaScript.

123456789101112131415161718
# INSTALL SELENIUM # THIS CODE DOWNLOAD IMAGES (I NEED JUST VIZUALIZATION) from selenium import webdriver import time import urllib.request url = "https://example.com/gallery" driver = webdriver.Chrome() driver.get(url) time.sleep(2) images = driver.find_elements("tag name", "img") for idx, img in enumerate(images): src = img.get_attribute('src') if src: urllib.request.urlretrieve(src, f"image_{idx}.jpg") driver.quit()
copy
Note
Bemærk

Gennemgå altid en hjemmesides servicevilkår før scraping. Brug høflige forespørgselsrater og respekter robots.txt. Forkert scraping kan føre til IP-blokeringer eller juridiske konsekvenser.

I GenAI-sammenhænge fungerer web scraping ofte som et forstadie til opbygning af pretræningsdatasæt, især for domænespecifikke eller lavressourcesprog. Værktøjer som Scrapy, playwright eller browserless API'er anvendes også hyppigt til storskalaopgaver.

Forbehandlingsteknikker

Databehandling skal tilpasses modalitet, modeltype og kvalitetskrav. Til generativ modellering i produktionskvalitet omfatter pipelines ofte domænespecifikke transformationer, tilpasning af opløsning og indholdsbaseret filtrering.

Billedforbehandling

  • Ændring af størrelse: tilpas datasættets opløsning til modelinput (f.eks. 64x64 for tidlige GANs, 512x512 for diffusionsmodeller);
  • Normalisering: skalerer pixelværdier til et standardinterval, typisk [−1, 1] eller [0, 1];
  • Farverumshåndtering: sikrer farvekonsistens — konverter til RGB eller gråtoner. For betinget generering, behold alfakanaler hvis til stede;
  • Dataforøgelse: introducerer variation under træning via transformationer.

Tekstforbehandling

  • Rensning: fjerner specialtegn, ekstra mellemrum og støj;
12345
import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
copy
  1. r"[^\w\s]":

    • \w: matcher ethvert alfanumerisk tegn (bogstaver A-Z, a-z, cifre 0-9) og underscore _;
    • \s: matcher ethvert blanktegn (mellemrum, tabulatorer, linjeskift);
    • [^...]: en negationsklasse—matcher alt, der ikke er angivet indeni;
    • Betydning: dette mønster matcher alle tegn undtagen bogstaver, cifre, underscores og blanktegn. Det fjerner altså tegnsætning og symboler (som , !, osv.).
  2. r"\s+":

    • \s: matcher ethvert blanktegn;
    • +: matcher et eller flere af det foregående tegn;
    • Betydning: dette erstatter flere sammenhængende blanktegn med et enkelt mellemrum.
  3. .strip(): fjerner indledende og afsluttende blanktegn fra den endelige rensede streng.

For yderligere information om RegEx-syntaks, se dokumentationen.

  • Konvertering til små bogstaver: standardiserer tekst til små bogstaver for konsistens. Anvendes selektivt, da modeller som BERT kan være case-sensitive eller case-insensitive;
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisering: opdeler tekst i tokens eller delord til modellering;
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
copy
  • Stemming/Lemmatization: sjældent anvendt i dybdelærings-pipelines, men bruges i traditionel NLP eller prætræningsfiltre;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Padding/Truncation: se eksemplet ovenfor med max_length.
1234
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
copy
Note
Bemærk

Opbyg modulære forbehandlings-pipelines med fokus på reproducerbarhed. Brug DVC, wandb artifacts eller huggingface/datasets med streaming + caching.

Datasplitningsstrategier

Effektiv datasplitning er afgørende for generalisering, især i generative modeller, hvor overfitting til modes eller memorisering er almindeligt.

Train/Validation/Test Split

  • Konventionelle forhold: 80/10/10 eller 70/15/15 afhængigt af datasættets størrelse;
  • Indholdsbevidst splitning: stratificer splits efter klasse (vision), emne (tekst).
  • Anvendelsestilfælde:
    • Træning: driver modeloptimering;
    • Validering: styrer checkpointing, early stopping og metrikjustering (f.eks. FID);
    • Test: holdes helt tilbage indtil endelig modelbenchmarking.

Eksempel ved brug af train_test_split:

For Hugging Face Datasets:

Krydsvalidering og Bootstrapping

  • For lav-ressource eller zero-shot domæner, anvend K-fold CV (f.eks. K=5 eller 10);
  • I diffusionsmodeller, brug bootstrappet FID/LPIPS til at evaluere genereringsstabilitet;
  • Visuel eller perceptuel inspektion bør ledsage numerisk validering.

Eksempel på K-fold opsætning:

Almindeligt anvendte datasæt

Valg af det rette datasæt afhænger af modalitet, dataskala, licensforhold og det specifikke generative mål (f.eks. ubetinget generering, betinget syntese eller stiloverførsel).

Computer Vision-datasæt

  • CIFAR-10: 60.000 lavopløselige 32×32 RGB-billeder fordelt på 10 klasser. Letvægtsdatasæt, ideelt til hurtig prototyping, enhedstest og benchmarking af træningsloops for billed-GANs;
  • CelebA: Over 200.000 justerede kendisansigter annoteret med 40 binære attributter. Hyppigt anvendt til attributbetinget generering, identitetsbevarende ansigtsredigering og encoder-decoder-modeller;
  • LSUN: Storskala scenedatasæt med millioner af billeder i kategorier som soveværelser, kirker og spisestuer. Væsentligt for højopløselig syntese og progressiv GAN-træning;
  • ImageNet: Over 14 millioner billeder af høj kvalitet annoteret på tværs af 20.000 klasser. Anvendes primært til transfer learning, prætræning af diffusionsmodeller og som grunddatasæt for stilstyret generering.

Tekstdatasæt

  • WikiText: Rensede Wikipedia-artikler (WikiText-2: 2 millioner tokens, WikiText-103: over 100 millioner). Værdifuldt til evaluering af sprogmodellering og finjustering af decoder-only-modeller som GPT;
  • BookCorpus: Over 11.000 gratis romaner. Kritisk for narrativ generering, transformer-modeller med lang kontekst og prætræning af grundmodeller (f.eks. BERT, GPT-2);
  • Common Crawl / C4: Webdata i petabyte-skala på flere sprog. C4 er en deduplikeret, filtreret variant kurateret til træning af sprogmodeller af høj kvalitet (f.eks. T5);
  • The Pile: 825 GB diversificeret data (bøger, ArXiv, StackExchange, GitHub m.m.). Udviklet til træning af GPT-lignende modeller på niveau med OpenAI’s LLMs.

Resumé

  • Udvælg datasæt baseret på kvalitet, licensforhold, skala og overensstemmelse med generative mål;
  • Anvend forbehandlings-pipelines tilpasset hver modalitet ved brug af robuste, produktionsklare værktøjer;
  • Sikr stringente opdelingsstrategier for at understøtte reproducerbarhed, undgå lækage og muliggøre retfærdig evaluering.

1. Hvorfor er datakvalitet vigtigere end mængde ved træning af generative AI-modeller?

2. Hvad er en almindelig udfordring ved indsamling af diversificerede data til træning af generative modeller?

3. Hvad er det primære mål med dataforøgelse i forbindelse med træning af generativ AI?

question mark

Hvorfor er datakvalitet vigtigere end mængde ved træning af generative AI-modeller?

Select the correct answer

question mark

Hvad er en almindelig udfordring ved indsamling af diversificerede data til træning af generative modeller?

Select the correct answer

question mark

Hvad er det primære mål med dataforøgelse i forbindelse med træning af generativ AI?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1
some-alt