Deep Learning EA3: Language Model mit LSTM

Aktueller Text:

[Noch kein Text]

Nächste Wortvorhersagen:

Diskussion

In diesem Projekt habe ich ein einfaches LSTM-basiertes Sprachmodell mit TensorFlow.js direkt im Browser trainiert. Das Modell besteht aus zwei LSTM-Schichten mit jeweils 128 Einheiten sowie einer Embedding-Schicht mit einer Dimensionalität von 64. Die maximale Eingabelänge war auf 20 Tokens begrenzt und das Training erfolgte über 20 Epochen mit einer Batch-Größe von 32.

Für das Training wurden insgesamt 30.000 Beispielsätze verwendet, die zuvor in Eingabesequenzen und Zielwörter unterteilt wurden. Während des Trainings konnte ich beobachten, dass der Trainings- und Validierungs-Loss kontinuierlich sank, was auf eine Verbesserung des Modells hinweist. Trotzdem sind die Vorhersagen, die das Modell trifft, noch relativ ungenau und teilweise wenig sinnvoll.

Auffällig war, dass automatisch generierte Sätze wie "In conclusion the - and is the - terminal domains ." oft grammatikalisch fehlerhaft und teilweise unverständlich waren. Dieses Verhalten lässt sich darauf zurückführen, dass häufig vorkommende Tokens wie "the", "-" oder "and" eine besonders hohe Wahrscheinlichkeit erhalten und deshalb bevorzugt werden, selbst wenn sie inhaltlich keinen sinnvollen Zusammenhang mehr ergeben.

Ich vermute, dass die geringe Genauigkeit vor allem daran liegt, dass das Vokabular zu Beginn sehr klein war und nur schrittweise erweitert wurde. Das führt dazu, dass dem Modell zu wenig semantische Informationen über viele Wörter zur Verfügung standen, besonders bei selteneren Begriffen. Außerdem ist das Modell insgesamt noch recht klein und wurde nicht sehr lange trainiert – größere Modelle mit mehr Daten lernen in der Regel deutlich bessere Sprachrepräsentationen.

Für mich war dieses Projekt eine spannende erste Erfahrung mit Sprachmodellen, Deep Learning und dem Umgang mit Tensoren im Browser. Ich habe viel über das Zusammenspiel von Modellarchitektur, Trainingsdaten und der Bedeutung eines konsistenten Vokabulars gelernt.

Dokumentation

Technisch

  • Foundation Sites: Für das responsive Grid-Layout und UI-Komponenten.
  • TensorFlow.js: Für das Training und die Ausführung neuronaler Netze direkt im Browser.
  • tfjs-vis: Ergänzendes Tool zur Visualisierung von TensorFlow-Modellen.
  • Datensatz: Europe PMC Corpus

Fachlich

  • Data-Preprocessing:
    • Sätze nach Satzzeichen filtern, Abkürzungen korrekt behandeln
    • Nur Tokens verwenden, die mind. 2× vorkommen
    • Nur Gruppen/Sätze mit mind. 8 Tokens (für ausreichend Kontext)
  • Schrittweises Vorgehen:
    • Zuerst mit 100 Sätzen Parameter getestet
    • Bei erkennbarem Lernfortschritt mehr Daten genutzt
  • Vokabular-Filterung:
    • Trainings- & Testsätze nur mit Tokens aus dem Vokabular
    • Ziel: Anteil an UNKNOWN-Tokens reduzieren
  • Checkpointing & Monitoring:
    • Nur speichern, wenn Val- & Train-Loss sinken
    • Early Stopping aktiv (bisher nie ausgelöst)
    • Überwachung per Logs & tfvis
  • Weitertrainieren statt neustarten:
    • Nach Drift von Validation Loss Training gestoppt
    • Bestes Modell gespeichert und mit neuen Parametern weitertrainiert
  • Trainingsverlauf:
    • 1 000 Sätze, 18 Epochen
    • 10 000 Sätze, 10 Epochen
    • 15 000 Sätze, 18 Epochen
    • 30 000 Sätze, 20 Epochen
  • Erfolg: Loss erstmals unter 4 – Train & Val-Loss sinken gemeinsam