Der in diesem Experiment verwendete Datensatz ist der Datensatz „DpgMedia2019: A Dutch News Dataset for Partisanship Detection“.
Es enthält verschiedene Teile, aber der Hauptteil, den ich in diesem Repository verwende, ist eine Teilmenge der ursprünglichen 104.000 Nachrichtenartikel. Für jeden Artikel gibt es eine Kennzeichnung „parteiisch“, die angibt, ob der Artikel parteiisch ist oder nicht (Richtig/Falsch). Die Menge an parteipolitischen/überparteilichen Artikeln hält sich ungefähr die Waage.
Der Datensatz wurde von den Autoren mit dem Ziel erstellt, beispielsweise zur Entwicklung eines Partisanen-Nachrichtendetektors beizutragen. Im in den Experimenten verwendeten Python-Code werden die spezifischen Datensatzdateien automatisch heruntergeladen.
Weitere Informationen zum Datensatz und seiner Erstellung finden Sie im Github und im Paper. Weitere Informationen finden Sie in den Referenzen.
NOTIZ !! Ab Januar 2023 sind nicht mehr alle Dateien am ursprünglichen Github-Speicherort des Datensatzes verfügbar. Wenn Sie die Originaldateien benötigen, laden Sie sie aus dem Kaggle-Datensatz herunter.
Die in diesem Repository verwendeten Trainings- und Validierungsteilmengen sind im Ordner „data“ verfügbar.
Im Notebook „Prepare_Train_and_Validation_Datasets.ipynb“ wird der gesamte Datensatz in kleinere Teilmengen aufgeteilt, die für Training und Validierung verwendet werden.
Diese Dateien sind im Ordner „data“ in diesem Repository verfügbar.
Die Hauptgründe für die Erstellung kleinerer Teilmengen der Daten liegen darin, dass ein GPT-Modell (oder ein anderes LLM-Modell) nur einige tausend Stichproben benötigt, um eine Feinabstimmung daran durchzuführen. Kleinere Datensätze bedeuten auch weniger Token und eine kleinere Rechnung für Ihre Kreditkarte ;-)
Die kleineren Teilmengen haben die folgenden Stichprobenmengen:
Die folgenden regulären Transformer-Modelle wurden im Notebook „Transformer_Model_Training_And_Validation.ipynb“ für die kleineren Trainings- und Validierungsdaten-Teilmengen trainiert und validiert:
Die Modelle PolyLM 1.7B und OpenLLaMA 7B V2 Open LLM wurden beide auf mehrsprachigen Datensätzen vorab trainiert, die auch die niederländische Sprache enthielten.
Im Notebook „Open_LLM_Training_And_Validation.ipynb“ werden die Open LLM-Modelle auf 4 Bit quantisiert und mit einem QLoRA-Setup feinabgestimmt, um den GPU-Speicherbedarf zu minimieren.
Die LoraConfig ist auf einen Rang von 64 und einen Alpha von 16 eingestellt.
Nach dem Training erreicht das PolyLM 1.7B-Modell eine Genauigkeit auf dem Validierungssatz von 84,4 %, während das OpenLLaMA 7B V2-Modell sogar 89,5 % erreicht.
Ich habe mehrere Trainingsläufe absolviert und bei verschiedenen Gelegenheiten erzielten beide Modelle bis zu 0,5 % mehr oder weniger Werte im Vergleich zum oben genannten Wert.
Den Code zur Feinabstimmung von GPT-3.5 finden Sie im Notebook „Finetune_GPT-3.5.ipynb“. Basierend auf den Trainings- und Validierungs-CSV-Dateien werden spezifische Dateien erstellt und auf OpenAI hochgeladen, die zur Feinabstimmung des GPT-3.5-Modells verwendet werden. Die Nachrichtenartikel werden in eine spezielle Eingabeaufforderung eingebunden, die für die Klassifizierung entwickelt wurde, die das Modell durch Feinabstimmung lernen soll.
Der Validierungscode ist im Notebook „Validate_GPT-3.5.ipynb“ verfügbar. Für jeden Datensatz im Validierungssatz wird der Text des Nachrichtenartikels in die Eingabeaufforderung eingeschlossen und OpenAI wird über die API aufgerufen, um die Antwort von der Chatvervollständigung zu erhalten. Die Antwort wird in ein binäres Label umgewandelt und mit den Ground-Truth-Labels wird der endgültige Klassifizierungsbericht generiert.
Das fein abgestimmte OpenAI GPT-3.5-Modell erreicht eine Genauigkeit des Validierungssatzes von 89,4 %.
Beachten Sie, dass ich OpenAI für die Feinabstimmung und Validierung verwendet habe und nicht Azure OpenAI.
In der neuesten Version (5. Dezember 2023) dieses Notebooks habe ich folgende Updates vorgenommen:
Nachfolgend finden Sie die erreichten Genauigkeitswerte für den Validierungssatz für die drei Transformer-Modelle und das GPT-3.5-Modell.
Das GPT-3.5-Modell erreicht nach der Feinabstimmung eine hohe Genauigkeitsbewertung.
Die Leistung der 3 Transformer-Modelle hinkt etwas hinterher. Sie würden eindeutig von einem Training mit mehr Datenproben profitieren.
Der Open LLM PolyLM erreicht die niedrigste Punktzahl. Das OpenLLaMA 7B V2-Modell erreicht jedoch einen bemerkenswerten Wert von 89,5 %, der mit den Werten der GPT-3.5 Turbo-Feinabstimmungsmodelle (0613 und 1106) vergleichbar ist.
(LLM) Modelltyp | Bewertung der Validierungsgenauigkeit (%) |
---|---|
PolyLM 1.7B (Lora: r = 64) | 84,4 |
Mehrsprachiger DistilBert | 85,6 |
Mehrsprachiger Bert | 86,3 |
Mehrsprachiges DeBERTa V3 | 85,8 |
OpenLLaMA 7B V2 (Lora: r = 64) | 89,5 |
GPT-3.5 Turbo 0613 (feinabgestimmt) | 90,8 |
GPT-3.5 Turbo 1106 (fein abgestimmt) | 89,4 |
GPT-3.5 Turbo 1106 (im Kontext lernen) | 56,0 |
!! Mehrsprachiges DeBERTa V3 (vollständiger Datensatz) | 95,2 |
@misc{1908.02322,
Author = {Chia-Lun Yeh and Babak Loni and Mariëlle Hendriks and Henrike Reinhardt and Anne Schuth},
Title = {DpgMedia2019: A Dutch News Dataset for Partisanship Detection},
Year = {2019},
Eprint = {arXiv:1908.02322},
}