Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Datainsamling och Förbehandling | Bygga och Träna Generativa Modeller
Generativ AI

bookDatainsamling och Förbehandling

Träning av generativa modeller kräver inte bara god arkitektur och förlustfunktioner, utan även ren, välstrukturerad och varierad data. Detta avsnitt introducerar högkvalitativa dataset inom vision-, text- och ljudmodaliteter, tillhandahåller detaljerade förbehandlingstekniker anpassade för moderna generativa pipelines samt diskuterar robusta strategier för datasplittring med praktiska verktyg.

Datainsamling

Insamling av data för generativ modellering beror på domän, tillgång till källor, skala och licensiering. För text- och visionsdata är vanliga källor öppna dataset, insamlat innehåll och strukturerade arkiv (t.ex. akademiska arkiv, sociala medier eller e-handelsplattformar).

Webbskrapningstekniker

När datamängder inte är lättillgängliga kan data samlas in från webben med hjälp av skrapningsverktyg. Webbskrapning möjliggör programmatisk extraktion av information från HTML-sidor. Det är en kraftfull metod för att samla in verklig, ostrukturerad data när API:er inte finns tillgängliga. Skrapning innebär dock både tekniska och etiska ansvar.

Skrapningsmetoder omfattar vanligtvis:

  • Skicka HTTP-förfrågningar för att hämta webbsidor. Detta möjliggör åtkomst till sidans råa HTML-innehåll;
  • Parsa HTML-innehåll för att extrahera strukturerad data. Verktyg som BeautifulSoup omvandlar ostrukturerad HTML till tillgängliga taggar och element;
  • Navigera dynamiska sidor med hjälp av webbläsarautomatisering. Webbplatser med mycket JavaScript kräver verktyg som Selenium för att innehållet ska renderas fullt ut;
  • Lagra extraherad data i användbara format som CSV eller JSON. Detta säkerställer kompatibilitet med senare förbehandling och modellträning.

Nedan följer två vanliga skrapningsstrategier:

Skrapa text med BeautifulSoup

BeautifulSoup är ett Python-bibliotek som används för att parsa statiska HTML-sidor.

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

Skrapa bilder med Selenium

Selenium automatiserar en webbläsare för att skrapa innehåll från sidor som renderas 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
Notering

Granska alltid en webbplats användarvillkor innan du skrapar. Använd artiga förfrågningsintervall och respektera robots.txt. Felaktig skrapning kan leda till IP-blockering eller juridiska konsekvenser.

Inom GenAI-sammanhang är web scraping ofta ett förarbete för att bygga preträningsdatamängder, särskilt för domänspecifika eller lågresursspråk. Verktyg som Scrapy, playwright eller browserless API:er används också frekvent för storskaliga uppgifter.

Förbehandlingstekniker

Databehandling måste anpassas efter modalitet, modelltyp och kvalitetskrav. För generativ modellering i produktionsklass innehåller pipelines ofta domänspecifika transformationer, upplösningsanpassning och innehållsbaserad filtrering.

Bildförbehandling

  • Storleksändring: anpassa datamängdens upplösning till modellens indata (t.ex. 64x64 för tidiga GANs, 512x512 för diffusionsmodeller);
  • Normalisering: skalar pixelvärden till ett standardintervall, vanligtvis [−1, 1] eller [0, 1];
  • Färgrumshantering: säkerställ färgkonsekvens — konvertera till RGB eller gråskala. För villkorlig generering, behåll alfakanaler om de finns;
  • Data augmentation: introducerar variation under träning genom transformationer.

Textförbehandling

  • Rensning: tar bort specialtecken, extra blanksteg och brus;
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: matchar alla alfanumeriska tecken (bokstäver A-Z, a-z, siffror 0-9) samt understreck _;
    • \s: matchar alla blankstegstecken (mellanslag, tabbar, radbrytningar);
    • [^...]: en negerad teckenklass—matchar allt som inte listas inuti;
    • Betydelse: detta mönster matchar alla tecken utom bokstäver, siffror, understreck och blanksteg. Det tar alltså bort skiljetecken och symboler (som , !, etc.).
  2. r"\s+":

    • \s: matchar alla blankstegstecken;
    • +: matchar ett eller flera av föregående tecken;
    • Betydelse: detta ersätter flera på varandra följande blanksteg med ett enda mellanslag.
  3. .strip(): tar bort inledande och avslutande blanksteg från den slutliga rensade strängen.

För mer information om RegEx-syntax, se dokumentationen.

  • Konvertering till gemener: standardiserar text till små bokstäver för konsekvens. Använd selektivt, eftersom modeller som BERT är skiftlägeskänsliga/icke-skiftlägeskänsliga;
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisering: delar upp text i token eller delord för 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
  • Stamning/Lemmatization: ovanligt i djupinlärningsflöden men används i traditionell NLP eller förträningsfilter;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Fyllning/Trunkering: se exemplet ovan 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
Notering

Bygg modulära förbehandlingspipelines med reproducerbarhet i åtanke. Använd DVC, wandb artifacts eller huggingface/datasets med streaming + caching.

Strategier för datasplittring

Effektiv datasplittring är avgörande för generalisering, särskilt inom generativa modeller där överanpassning till modes eller memorisering är vanligt.

Träning/Validering/Test-split

  • Konventionella fördelningar: 80/10/10 eller 70/15/15 beroende på datamängdens storlek;
  • Innehållsmedveten splittring: stratifiera uppdelningar efter klass (bild), ämne (text).
  • Användningsfall:
    • Träning: styr modelloptimering;
    • Validering: vägleder checkpointing, tidig stoppning och metriktuning (t.ex. FID);
    • Test: hålls helt tillbaka tills slutlig modellutvärdering.

Exempel med train_test_split:

För Hugging Face Datasets:

Korsvalidering och bootstrapping

  • För domäner med begränsade resurser eller zero-shot, använd K-fold CV (t.ex. K=5 eller 10);
  • I diffusionsmodeller, använd bootstrappad FID/LPIPS för att utvärdera genereringsstabilitet;
  • Visuell eller perceptuell inspektion bör komplettera numerisk validering.

Exempel på K-fold-upplägg:

Vanligt använda datamängder

Val av rätt datamängd beror på modalitet, dataskala, licensiering och det specifika generativa målet (t.ex. ovillkorlig generering, villkorlig syntes eller stilöverföring).

Datamängder för datorseende

  • CIFAR-10: 60 000 lågupplösta 32×32 RGB-bilder i 10 klasser. Lättviktig, idealisk för snabb prototypframtagning, enhetstestning och benchmarking av träningsloopar för bild-GAN;
  • CelebA: 200 000+ justerade kändisansikten annoterade med 40 binära attribut. Används ofta för attributstyrd generering, identitetsbevarande ansiktsredigering och encoder-decoder-modeller;
  • LSUN: storskalig scen-datamängd med miljontals bilder i kategorier som sovrum, kyrkor och matsalar. Viktig för högupplöst syntes och progressiv GAN-träning;
  • ImageNet: över 14 miljoner högkvalitativa bilder märkta över 20 000 klasser. Används främst för transfer learning, förträning av diffusionsmodeller och som basdatamängd för stilstyrd generering.

Textdatamängder

  • WikiText: rena Wikipedia-artiklar (WikiText-2: 2 miljoner token, WikiText-103: över 100 miljoner). Värdefull för utvärdering av språkmodellering och finjustering av enbart dekoder-modeller som GPT;
  • BookCorpus: över 11 000 fria romaner. Avgörande för narrativ generering, långkontext-transformers och förträning av grundmodeller (t.ex. BERT, GPT-2);
  • Common Crawl / C4: webdata i petabyteskala på flera språk. C4 är en deduplicerad, filtrerad variant framtagen för högkvalitativ träning av språkmodeller (t.ex. T5);
  • The Pile: 825 GB diversifierad data (böcker, ArXiv, StackExchange, GitHub, etc.). Utformad för att träna GPT-liknande modeller konkurrenskraftigt med OpenAI:s LLM:er.

Sammanfattning

  • Välj datamängder baserat på kvalitet, licensiering, omfattning och överensstämmelse med generativa mål;
  • Använd förbehandlingspipelines anpassade för varje modalitet med robusta, produktionsklara verktyg;
  • Säkerställ rigorösa uppdelningsstrategier för att stödja reproducerbarhet, undvika läckage och möjliggöra rättvis utvärdering.

1. Varför är datakvalitet viktigare än kvantitet vid träning av generativa AI-modeller?

2. Vilken är en vanlig utmaning vid insamling av diversifierad data för träning av generativa modeller?

3. Vad är det primära målet med dataförstärkning i samband med träning av generativa AI-modeller?

question mark

Varför är datakvalitet viktigare än kvantitet vid träning av generativa AI-modeller?

Select the correct answer

question mark

Vilken är en vanlig utmaning vid insamling av diversifierad data för träning av generativa modeller?

Select the correct answer

question mark

Vad är det primära målet med dataförstärkning i samband med träning av generativa AI-modeller?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

What are some best practices for web scraping in generative AI projects?

Can you explain more about data augmentation techniques for images?

How do I choose the right dataset for my generative model?

Awesome!

Completion rate improved to 4.76

bookDatainsamling och Förbehandling

Svep för att visa menyn

Träning av generativa modeller kräver inte bara god arkitektur och förlustfunktioner, utan även ren, välstrukturerad och varierad data. Detta avsnitt introducerar högkvalitativa dataset inom vision-, text- och ljudmodaliteter, tillhandahåller detaljerade förbehandlingstekniker anpassade för moderna generativa pipelines samt diskuterar robusta strategier för datasplittring med praktiska verktyg.

Datainsamling

Insamling av data för generativ modellering beror på domän, tillgång till källor, skala och licensiering. För text- och visionsdata är vanliga källor öppna dataset, insamlat innehåll och strukturerade arkiv (t.ex. akademiska arkiv, sociala medier eller e-handelsplattformar).

Webbskrapningstekniker

När datamängder inte är lättillgängliga kan data samlas in från webben med hjälp av skrapningsverktyg. Webbskrapning möjliggör programmatisk extraktion av information från HTML-sidor. Det är en kraftfull metod för att samla in verklig, ostrukturerad data när API:er inte finns tillgängliga. Skrapning innebär dock både tekniska och etiska ansvar.

Skrapningsmetoder omfattar vanligtvis:

  • Skicka HTTP-förfrågningar för att hämta webbsidor. Detta möjliggör åtkomst till sidans råa HTML-innehåll;
  • Parsa HTML-innehåll för att extrahera strukturerad data. Verktyg som BeautifulSoup omvandlar ostrukturerad HTML till tillgängliga taggar och element;
  • Navigera dynamiska sidor med hjälp av webbläsarautomatisering. Webbplatser med mycket JavaScript kräver verktyg som Selenium för att innehållet ska renderas fullt ut;
  • Lagra extraherad data i användbara format som CSV eller JSON. Detta säkerställer kompatibilitet med senare förbehandling och modellträning.

Nedan följer två vanliga skrapningsstrategier:

Skrapa text med BeautifulSoup

BeautifulSoup är ett Python-bibliotek som används för att parsa statiska HTML-sidor.

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

Skrapa bilder med Selenium

Selenium automatiserar en webbläsare för att skrapa innehåll från sidor som renderas 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
Notering

Granska alltid en webbplats användarvillkor innan du skrapar. Använd artiga förfrågningsintervall och respektera robots.txt. Felaktig skrapning kan leda till IP-blockering eller juridiska konsekvenser.

Inom GenAI-sammanhang är web scraping ofta ett förarbete för att bygga preträningsdatamängder, särskilt för domänspecifika eller lågresursspråk. Verktyg som Scrapy, playwright eller browserless API:er används också frekvent för storskaliga uppgifter.

Förbehandlingstekniker

Databehandling måste anpassas efter modalitet, modelltyp och kvalitetskrav. För generativ modellering i produktionsklass innehåller pipelines ofta domänspecifika transformationer, upplösningsanpassning och innehållsbaserad filtrering.

Bildförbehandling

  • Storleksändring: anpassa datamängdens upplösning till modellens indata (t.ex. 64x64 för tidiga GANs, 512x512 för diffusionsmodeller);
  • Normalisering: skalar pixelvärden till ett standardintervall, vanligtvis [−1, 1] eller [0, 1];
  • Färgrumshantering: säkerställ färgkonsekvens — konvertera till RGB eller gråskala. För villkorlig generering, behåll alfakanaler om de finns;
  • Data augmentation: introducerar variation under träning genom transformationer.

Textförbehandling

  • Rensning: tar bort specialtecken, extra blanksteg och brus;
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: matchar alla alfanumeriska tecken (bokstäver A-Z, a-z, siffror 0-9) samt understreck _;
    • \s: matchar alla blankstegstecken (mellanslag, tabbar, radbrytningar);
    • [^...]: en negerad teckenklass—matchar allt som inte listas inuti;
    • Betydelse: detta mönster matchar alla tecken utom bokstäver, siffror, understreck och blanksteg. Det tar alltså bort skiljetecken och symboler (som , !, etc.).
  2. r"\s+":

    • \s: matchar alla blankstegstecken;
    • +: matchar ett eller flera av föregående tecken;
    • Betydelse: detta ersätter flera på varandra följande blanksteg med ett enda mellanslag.
  3. .strip(): tar bort inledande och avslutande blanksteg från den slutliga rensade strängen.

För mer information om RegEx-syntax, se dokumentationen.

  • Konvertering till gemener: standardiserar text till små bokstäver för konsekvens. Använd selektivt, eftersom modeller som BERT är skiftlägeskänsliga/icke-skiftlägeskänsliga;
12
text = "This Is A Sentence." print(text.lower())
copy
  • Tokenisering: delar upp text i token eller delord för 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
  • Stamning/Lemmatization: ovanligt i djupinlärningsflöden men används i traditionell NLP eller förträningsfilter;
1234
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
copy
  • Fyllning/Trunkering: se exemplet ovan 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
Notering

Bygg modulära förbehandlingspipelines med reproducerbarhet i åtanke. Använd DVC, wandb artifacts eller huggingface/datasets med streaming + caching.

Strategier för datasplittring

Effektiv datasplittring är avgörande för generalisering, särskilt inom generativa modeller där överanpassning till modes eller memorisering är vanligt.

Träning/Validering/Test-split

  • Konventionella fördelningar: 80/10/10 eller 70/15/15 beroende på datamängdens storlek;
  • Innehållsmedveten splittring: stratifiera uppdelningar efter klass (bild), ämne (text).
  • Användningsfall:
    • Träning: styr modelloptimering;
    • Validering: vägleder checkpointing, tidig stoppning och metriktuning (t.ex. FID);
    • Test: hålls helt tillbaka tills slutlig modellutvärdering.

Exempel med train_test_split:

För Hugging Face Datasets:

Korsvalidering och bootstrapping

  • För domäner med begränsade resurser eller zero-shot, använd K-fold CV (t.ex. K=5 eller 10);
  • I diffusionsmodeller, använd bootstrappad FID/LPIPS för att utvärdera genereringsstabilitet;
  • Visuell eller perceptuell inspektion bör komplettera numerisk validering.

Exempel på K-fold-upplägg:

Vanligt använda datamängder

Val av rätt datamängd beror på modalitet, dataskala, licensiering och det specifika generativa målet (t.ex. ovillkorlig generering, villkorlig syntes eller stilöverföring).

Datamängder för datorseende

  • CIFAR-10: 60 000 lågupplösta 32×32 RGB-bilder i 10 klasser. Lättviktig, idealisk för snabb prototypframtagning, enhetstestning och benchmarking av träningsloopar för bild-GAN;
  • CelebA: 200 000+ justerade kändisansikten annoterade med 40 binära attribut. Används ofta för attributstyrd generering, identitetsbevarande ansiktsredigering och encoder-decoder-modeller;
  • LSUN: storskalig scen-datamängd med miljontals bilder i kategorier som sovrum, kyrkor och matsalar. Viktig för högupplöst syntes och progressiv GAN-träning;
  • ImageNet: över 14 miljoner högkvalitativa bilder märkta över 20 000 klasser. Används främst för transfer learning, förträning av diffusionsmodeller och som basdatamängd för stilstyrd generering.

Textdatamängder

  • WikiText: rena Wikipedia-artiklar (WikiText-2: 2 miljoner token, WikiText-103: över 100 miljoner). Värdefull för utvärdering av språkmodellering och finjustering av enbart dekoder-modeller som GPT;
  • BookCorpus: över 11 000 fria romaner. Avgörande för narrativ generering, långkontext-transformers och förträning av grundmodeller (t.ex. BERT, GPT-2);
  • Common Crawl / C4: webdata i petabyteskala på flera språk. C4 är en deduplicerad, filtrerad variant framtagen för högkvalitativ träning av språkmodeller (t.ex. T5);
  • The Pile: 825 GB diversifierad data (böcker, ArXiv, StackExchange, GitHub, etc.). Utformad för att träna GPT-liknande modeller konkurrenskraftigt med OpenAI:s LLM:er.

Sammanfattning

  • Välj datamängder baserat på kvalitet, licensiering, omfattning och överensstämmelse med generativa mål;
  • Använd förbehandlingspipelines anpassade för varje modalitet med robusta, produktionsklara verktyg;
  • Säkerställ rigorösa uppdelningsstrategier för att stödja reproducerbarhet, undvika läckage och möjliggöra rättvis utvärdering.

1. Varför är datakvalitet viktigare än kvantitet vid träning av generativa AI-modeller?

2. Vilken är en vanlig utmaning vid insamling av diversifierad data för träning av generativa modeller?

3. Vad är det primära målet med dataförstärkning i samband med träning av generativa AI-modeller?

question mark

Varför är datakvalitet viktigare än kvantitet vid träning av generativa AI-modeller?

Select the correct answer

question mark

Vilken är en vanlig utmaning vid insamling av diversifierad data för träning av generativa modeller?

Select the correct answer

question mark

Vad är det primära målet med dataförstärkning i samband med träning av generativa AI-modeller?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 1
some-alt