Datenerfassung und -Vorverarbeitung
Das Training generativer Modelle erfordert nicht nur eine geeignete Architektur und Verlustfunktionen, sondern auch saubere, gut strukturierte und vielfältige Daten. Dieser Abschnitt stellt hochwertige Datensätze aus den Bereichen Bild, Text und Audio vor, bietet detaillierte Vorverarbeitungstechniken für moderne generative Pipelines und behandelt robuste Strategien zur Datenaufteilung mit praxisnahen Werkzeugen.
Datenerfassung
Die Erfassung von Daten für generative Modellierung hängt von Domäne, Verfügbarkeit der Quellen, Umfang und Lizenzierung ab. Für Text- und Bilddaten zählen offene Datensätze, gesammelte Inhalte und strukturierte Repositorien (z. B. akademische Archive, soziale Medien oder E-Commerce-Plattformen) zu den gängigen Quellen.
Web-Scraping-Techniken
Wenn Datensätze nicht direkt verfügbar sind, können Daten mithilfe von Scraping-Tools aus dem Web gesammelt werden. Web Scraping ermöglicht das programmatische Extrahieren von Informationen aus HTML-Seiten. Es ist ein leistungsfähiger Ansatz zur Sammlung realer, unstrukturierter Daten, wenn keine APIs zur Verfügung stehen. Allerdings gehen mit Scraping sowohl technische als auch ethische Verantwortlichkeiten einher.
Typische Scraping-Methoden umfassen:
- Senden von HTTP-Anfragen zum Abrufen von Webseiten. Dies ermöglicht den Zugriff auf den Rohinhalt (HTML) einer Seite;
- Parsen von HTML-Inhalten zur Extraktion strukturierter Daten. Tools wie BeautifulSoup wandeln unstrukturiertes HTML in zugängliche Tags und Elemente um;
- Navigation durch dynamische Seiten mittels Browser-Automatisierung. JavaScript-lastige Webseiten erfordern Tools wie Selenium, um Inhalte vollständig darzustellen;
- Speichern der extrahierten Daten in nutzbaren Formaten wie CSV oder JSON. Dies gewährleistet die Kompatibilität mit späteren Schritten der Vorverarbeitung und des Modelltrainings.
Nachfolgend sind zwei gängige Scraping-Strategien aufgeführt:
Text-Scraping mit BeautifulSoup
BeautifulSoup ist eine Python-Bibliothek zum Parsen statischer HTML-Seiten.
1234567891011import 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)
Bilder mit Selenium scrapen
Selenium automatisiert einen Browser, um Inhalte von Seiten zu extrahieren, die mit JavaScript gerendert werden.
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()
Vor dem Scrapen immer die Nutzungsbedingungen einer Website prüfen. Höfliche Anfrageraten verwenden und robots.txt respektieren. Unsachgemäßes Scraping kann zu IP-Sperren oder rechtlichen Konsequenzen führen.
Im Kontext von GenAI ist Web Scraping häufig ein vorbereitender Schritt beim Aufbau von Pretraining-Datensätzen, insbesondere für domänenspezifische oder ressourcenarme Sprachen. Werkzeuge wie Scrapy, playwright oder browserlose APIs werden ebenfalls häufig für groß angelegte Aufgaben eingesetzt.
Vorverarbeitungstechniken
Die Datenvorverarbeitung muss an die Modalität, den Modelltyp und die Qualitätsanforderungen angepasst werden. Für generative Modelle auf Produktionsniveau umfassen Pipelines häufig domänenspezifische Transformationen, Anpassung der Auflösung und inhaltsbasierte Filterung.
Bildvorverarbeitung
- Größenanpassung: Anpassung der Datensatzauflösung an den Modelleingang (z. B. 64x64 für frühe GANs, 512x512 für Diffusionsmodelle);
- Normalisierung: Skalierung der Pixelwerte auf einen Standardbereich, typischerweise [−1, 1] oder [0, 1];
- Farbraumverarbeitung: Sicherstellung der Farbkonstanz — Umwandlung in RGB oder Graustufen. Für bedingte Generierung Beibehaltung von Alphakanälen, falls vorhanden;
- Datenaugmentation: führt während des Trainings durch Transformationen Variationen ein.
Textvorverarbeitung
- Bereinigung: entfernt Sonderzeichen, überflüssige Leerzeichen und Störfaktoren;
12345import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
-
r"[^\w\s]":\w: entspricht jedem alphanumerischen Zeichen (Buchstaben A-Z, a-z, Ziffern 0-9) und Unterstrich_;\s: entspricht jedem Leerraumzeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche);[^...]: eine negierte Zeichenklasse—entspricht allem, was nicht innerhalb der Klammern steht;- Bedeutung: Dieses Muster entspricht allen Zeichen außer Buchstaben, Ziffern, Unterstrichen und Leerzeichen. Es entfernt also Satzzeichen und Symbole (wie
—,!, usw.).
-
r"\s+":\s: entspricht jedem Leerraumzeichen;+: entspricht einem oder mehreren der vorherigen Zeichen;- Bedeutung: Ersetzt mehrere aufeinanderfolgende Leerraumzeichen durch ein einzelnes Leerzeichen.
-
.strip(): entfernt führende und nachfolgende Leerzeichen aus dem bereinigten String.
Weitere Informationen zur RegEx-Syntax finden Sie in der Dokumentation.
- Kleinschreibung: Vereinheitlichung des Textes auf Kleinbuchstaben zur Konsistenz. Selektive Anwendung empfohlen, da Modelle wie BERT zwischen Groß-/Kleinschreibung unterscheiden können;
12text = "This Is A Sentence." print(text.lower())
- Tokenisierung: unterteilt Text in Token oder Subwörter zur Modellierung;
1234from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
- Stemming/Lemmatisierung: selten in Deep-Learning-Pipelines, aber in traditionellen NLP- oder Pretraining-Filtern verwendet;
1234from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
- Padding/Truncation: siehe Beispiel oben mit
max_length.
1234from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
Modulare Vorverarbeitungspipelines mit Fokus auf Reproduzierbarkeit. Verwendung von DVC, wandb artifacts oder huggingface/datasets mit Streaming und Caching.
Strategien zur Datenaufteilung
Effektive Datenaufteilung ist entscheidend für die Generalisierung, insbesondere im generativen Modellieren, wo Überanpassung an Modi oder Auswendiglernen häufig auftritt.
Aufteilung in Training/Validierung/Test
- Konventionelle Verhältnisse: 80/10/10 oder 70/15/15 abhängig von der Datensatzgröße;
- Inhaltsbasierte Aufteilung: Aufteilung nach Klasse (Vision), Thema (Text) stratifizieren.
- Anwendungsfall:
- Training: steuert die Modelloptimierung;
- Validierung: unterstützt Checkpointing, Early Stopping und Metrikabstimmung (z. B. FID);
- Test: vollständig zurückgehalten bis zum abschließenden Modell-Benchmarking.
Beispiel mit train_test_split:
Für Hugging Face Datasets:
Kreuzvalidierung und Bootstrapping
- Für Low-Resource- oder Zero-Shot-Domänen Verwendung von K-facher Kreuzvalidierung (z. B. K=5 oder 10);
- In Diffusionsmodellen Einsatz von gebootstrapptem FID/LPIPS zur Bewertung der Generierungsstabilität;
- Visuelle oder perzeptuelle Überprüfung sollte die numerische Validierung ergänzen.
Beispiel für K-fache Kreuzvalidierung:
Häufig verwendete Datensätze
Die Auswahl des geeigneten Datensatzes hängt von Modalität, Datenumfang, Lizenzierung und dem spezifischen generativen Ziel ab (z. B. unbedingte Generierung, bedingte Synthese oder Stiltransfer).
Computer Vision Datensätze
- CIFAR-10: 60.000 niedrig aufgelöste 32×32 RGB-Bilder in 10 Klassen. Ressourcenschonend, ideal für schnelles Prototyping, Unittests und Benchmarking von Trainingsschleifen für Bild-GANs;
- CelebA: Über 200.000 ausgerichtete Prominentengesichter, annotiert mit 40 binären Attributen. Häufig verwendet für attributbasierte Generierung, identitätsbewahrende Gesichtsmanipulation und Encoder-Decoder-Modelle;
- LSUN: Groß angelegter Szenen-Datensatz mit Millionen von Bildern in Kategorien wie Schlafzimmer, Kirchen und Speiseräume. Wesentlich für hochauflösende Synthese und progressives GAN-Training;
- ImageNet: Über 14 Millionen hochwertige Bilder, klassifiziert in 20.000 Klassen. Hauptsächlich verwendet für Transferlernen, Vortraining von Diffusionsmodellen und als Basisdatensatz für stilgesteuerte Generierung.
Textdatensätze
- WikiText: Saubere Wikipedia-Artikel (WikiText-2: 2 Mio. Tokens, WikiText-103: über 100 Mio.). Wertvoll zur Bewertung von Sprachmodellierung und Feinabstimmung von Decoder-only-Modellen wie GPT;
- BookCorpus: Über 11.000 frei verfügbare Romane. Kritisch für erzählerische Generierung, Transformer mit langem Kontext und Vortraining von Grundmodellen (z. B. BERT, GPT-2);
- Common Crawl / C4: Multilinguale Webdaten im Petabyte-Bereich. C4 ist eine deduplizierte, gefilterte Variante, die für hochwertiges Sprachmodelltraining kuratiert wurde (z. B. T5);
- The Pile: 825 GB vielfältige Daten (Bücher, ArXiv, StackExchange, GitHub usw.). Entwickelt, um GPT-ähnliche Modelle wettbewerbsfähig zu OpenAIs LLMs zu trainieren.
Zusammenfassung
- Auswahl von Datensätzen basierend auf Qualität, Lizenzierung, Umfang und Übereinstimmung mit den generativen Zielen;
- Anwendung von auf jede Modalität zugeschnittenen Vorverarbeitungspipelines unter Verwendung robuster, produktionsreifer Werkzeuge;
- Sicherstellung rigoroser Aufteilungsstrategien zur Unterstützung der Reproduzierbarkeit, Vermeidung von Datenlecks und Ermöglichung einer fairen Bewertung.
1. Warum ist die Datenqualität beim Training generativer KI-Modelle wichtiger als die Datenmenge?
2. Was ist eine häufige Herausforderung bei der Sammlung vielfältiger Daten für das Training generativer Modelle?
3. Was ist das Hauptziel der Datenaugmentation im Kontext des Trainings generativer KI?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Datenerfassung und -Vorverarbeitung
Swipe um das Menü anzuzeigen
Das Training generativer Modelle erfordert nicht nur eine geeignete Architektur und Verlustfunktionen, sondern auch saubere, gut strukturierte und vielfältige Daten. Dieser Abschnitt stellt hochwertige Datensätze aus den Bereichen Bild, Text und Audio vor, bietet detaillierte Vorverarbeitungstechniken für moderne generative Pipelines und behandelt robuste Strategien zur Datenaufteilung mit praxisnahen Werkzeugen.
Datenerfassung
Die Erfassung von Daten für generative Modellierung hängt von Domäne, Verfügbarkeit der Quellen, Umfang und Lizenzierung ab. Für Text- und Bilddaten zählen offene Datensätze, gesammelte Inhalte und strukturierte Repositorien (z. B. akademische Archive, soziale Medien oder E-Commerce-Plattformen) zu den gängigen Quellen.
Web-Scraping-Techniken
Wenn Datensätze nicht direkt verfügbar sind, können Daten mithilfe von Scraping-Tools aus dem Web gesammelt werden. Web Scraping ermöglicht das programmatische Extrahieren von Informationen aus HTML-Seiten. Es ist ein leistungsfähiger Ansatz zur Sammlung realer, unstrukturierter Daten, wenn keine APIs zur Verfügung stehen. Allerdings gehen mit Scraping sowohl technische als auch ethische Verantwortlichkeiten einher.
Typische Scraping-Methoden umfassen:
- Senden von HTTP-Anfragen zum Abrufen von Webseiten. Dies ermöglicht den Zugriff auf den Rohinhalt (HTML) einer Seite;
- Parsen von HTML-Inhalten zur Extraktion strukturierter Daten. Tools wie BeautifulSoup wandeln unstrukturiertes HTML in zugängliche Tags und Elemente um;
- Navigation durch dynamische Seiten mittels Browser-Automatisierung. JavaScript-lastige Webseiten erfordern Tools wie Selenium, um Inhalte vollständig darzustellen;
- Speichern der extrahierten Daten in nutzbaren Formaten wie CSV oder JSON. Dies gewährleistet die Kompatibilität mit späteren Schritten der Vorverarbeitung und des Modelltrainings.
Nachfolgend sind zwei gängige Scraping-Strategien aufgeführt:
Text-Scraping mit BeautifulSoup
BeautifulSoup ist eine Python-Bibliothek zum Parsen statischer HTML-Seiten.
1234567891011import 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)
Bilder mit Selenium scrapen
Selenium automatisiert einen Browser, um Inhalte von Seiten zu extrahieren, die mit JavaScript gerendert werden.
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()
Vor dem Scrapen immer die Nutzungsbedingungen einer Website prüfen. Höfliche Anfrageraten verwenden und robots.txt respektieren. Unsachgemäßes Scraping kann zu IP-Sperren oder rechtlichen Konsequenzen führen.
Im Kontext von GenAI ist Web Scraping häufig ein vorbereitender Schritt beim Aufbau von Pretraining-Datensätzen, insbesondere für domänenspezifische oder ressourcenarme Sprachen. Werkzeuge wie Scrapy, playwright oder browserlose APIs werden ebenfalls häufig für groß angelegte Aufgaben eingesetzt.
Vorverarbeitungstechniken
Die Datenvorverarbeitung muss an die Modalität, den Modelltyp und die Qualitätsanforderungen angepasst werden. Für generative Modelle auf Produktionsniveau umfassen Pipelines häufig domänenspezifische Transformationen, Anpassung der Auflösung und inhaltsbasierte Filterung.
Bildvorverarbeitung
- Größenanpassung: Anpassung der Datensatzauflösung an den Modelleingang (z. B. 64x64 für frühe GANs, 512x512 für Diffusionsmodelle);
- Normalisierung: Skalierung der Pixelwerte auf einen Standardbereich, typischerweise [−1, 1] oder [0, 1];
- Farbraumverarbeitung: Sicherstellung der Farbkonstanz — Umwandlung in RGB oder Graustufen. Für bedingte Generierung Beibehaltung von Alphakanälen, falls vorhanden;
- Datenaugmentation: führt während des Trainings durch Transformationen Variationen ein.
Textvorverarbeitung
- Bereinigung: entfernt Sonderzeichen, überflüssige Leerzeichen und Störfaktoren;
12345import re text = "Example text — with symbols!" cleaned = re.sub(r"[^\w\s]", "", text) cleaned = re.sub(r"\s+", " ", cleaned).strip() print(cleaned)
-
r"[^\w\s]":\w: entspricht jedem alphanumerischen Zeichen (Buchstaben A-Z, a-z, Ziffern 0-9) und Unterstrich_;\s: entspricht jedem Leerraumzeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche);[^...]: eine negierte Zeichenklasse—entspricht allem, was nicht innerhalb der Klammern steht;- Bedeutung: Dieses Muster entspricht allen Zeichen außer Buchstaben, Ziffern, Unterstrichen und Leerzeichen. Es entfernt also Satzzeichen und Symbole (wie
—,!, usw.).
-
r"\s+":\s: entspricht jedem Leerraumzeichen;+: entspricht einem oder mehreren der vorherigen Zeichen;- Bedeutung: Ersetzt mehrere aufeinanderfolgende Leerraumzeichen durch ein einzelnes Leerzeichen.
-
.strip(): entfernt führende und nachfolgende Leerzeichen aus dem bereinigten String.
Weitere Informationen zur RegEx-Syntax finden Sie in der Dokumentation.
- Kleinschreibung: Vereinheitlichung des Textes auf Kleinbuchstaben zur Konsistenz. Selektive Anwendung empfohlen, da Modelle wie BERT zwischen Groß-/Kleinschreibung unterscheiden können;
12text = "This Is A Sentence." print(text.lower())
- Tokenisierung: unterteilt Text in Token oder Subwörter zur Modellierung;
1234from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") encodings = tokenizer(["Example text."], padding="max_length", truncation=True, max_length=128, return_tensors="pt")
- Stemming/Lemmatisierung: selten in Deep-Learning-Pipelines, aber in traditionellen NLP- oder Pretraining-Filtern verwendet;
1234from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("running"))
- Padding/Truncation: siehe Beispiel oben mit
max_length.
1234from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("gpt2") inputs = tokenizer("Short text.", max_length=10, padding="max_length", truncation=True, return_tensors="pt")
Modulare Vorverarbeitungspipelines mit Fokus auf Reproduzierbarkeit. Verwendung von DVC, wandb artifacts oder huggingface/datasets mit Streaming und Caching.
Strategien zur Datenaufteilung
Effektive Datenaufteilung ist entscheidend für die Generalisierung, insbesondere im generativen Modellieren, wo Überanpassung an Modi oder Auswendiglernen häufig auftritt.
Aufteilung in Training/Validierung/Test
- Konventionelle Verhältnisse: 80/10/10 oder 70/15/15 abhängig von der Datensatzgröße;
- Inhaltsbasierte Aufteilung: Aufteilung nach Klasse (Vision), Thema (Text) stratifizieren.
- Anwendungsfall:
- Training: steuert die Modelloptimierung;
- Validierung: unterstützt Checkpointing, Early Stopping und Metrikabstimmung (z. B. FID);
- Test: vollständig zurückgehalten bis zum abschließenden Modell-Benchmarking.
Beispiel mit train_test_split:
Für Hugging Face Datasets:
Kreuzvalidierung und Bootstrapping
- Für Low-Resource- oder Zero-Shot-Domänen Verwendung von K-facher Kreuzvalidierung (z. B. K=5 oder 10);
- In Diffusionsmodellen Einsatz von gebootstrapptem FID/LPIPS zur Bewertung der Generierungsstabilität;
- Visuelle oder perzeptuelle Überprüfung sollte die numerische Validierung ergänzen.
Beispiel für K-fache Kreuzvalidierung:
Häufig verwendete Datensätze
Die Auswahl des geeigneten Datensatzes hängt von Modalität, Datenumfang, Lizenzierung und dem spezifischen generativen Ziel ab (z. B. unbedingte Generierung, bedingte Synthese oder Stiltransfer).
Computer Vision Datensätze
- CIFAR-10: 60.000 niedrig aufgelöste 32×32 RGB-Bilder in 10 Klassen. Ressourcenschonend, ideal für schnelles Prototyping, Unittests und Benchmarking von Trainingsschleifen für Bild-GANs;
- CelebA: Über 200.000 ausgerichtete Prominentengesichter, annotiert mit 40 binären Attributen. Häufig verwendet für attributbasierte Generierung, identitätsbewahrende Gesichtsmanipulation und Encoder-Decoder-Modelle;
- LSUN: Groß angelegter Szenen-Datensatz mit Millionen von Bildern in Kategorien wie Schlafzimmer, Kirchen und Speiseräume. Wesentlich für hochauflösende Synthese und progressives GAN-Training;
- ImageNet: Über 14 Millionen hochwertige Bilder, klassifiziert in 20.000 Klassen. Hauptsächlich verwendet für Transferlernen, Vortraining von Diffusionsmodellen und als Basisdatensatz für stilgesteuerte Generierung.
Textdatensätze
- WikiText: Saubere Wikipedia-Artikel (WikiText-2: 2 Mio. Tokens, WikiText-103: über 100 Mio.). Wertvoll zur Bewertung von Sprachmodellierung und Feinabstimmung von Decoder-only-Modellen wie GPT;
- BookCorpus: Über 11.000 frei verfügbare Romane. Kritisch für erzählerische Generierung, Transformer mit langem Kontext und Vortraining von Grundmodellen (z. B. BERT, GPT-2);
- Common Crawl / C4: Multilinguale Webdaten im Petabyte-Bereich. C4 ist eine deduplizierte, gefilterte Variante, die für hochwertiges Sprachmodelltraining kuratiert wurde (z. B. T5);
- The Pile: 825 GB vielfältige Daten (Bücher, ArXiv, StackExchange, GitHub usw.). Entwickelt, um GPT-ähnliche Modelle wettbewerbsfähig zu OpenAIs LLMs zu trainieren.
Zusammenfassung
- Auswahl von Datensätzen basierend auf Qualität, Lizenzierung, Umfang und Übereinstimmung mit den generativen Zielen;
- Anwendung von auf jede Modalität zugeschnittenen Vorverarbeitungspipelines unter Verwendung robuster, produktionsreifer Werkzeuge;
- Sicherstellung rigoroser Aufteilungsstrategien zur Unterstützung der Reproduzierbarkeit, Vermeidung von Datenlecks und Ermöglichung einer fairen Bewertung.
1. Warum ist die Datenqualität beim Training generativer KI-Modelle wichtiger als die Datenmenge?
2. Was ist eine häufige Herausforderung bei der Sammlung vielfältiger Daten für das Training generativer Modelle?
3. Was ist das Hauptziel der Datenaugmentation im Kontext des Trainings generativer KI?
Danke für Ihr Feedback!