Verbesserung der Textklassifizierungsleistung durch einen Feinabstimmungsansatz für Electra-Modelle | von Arya Fikriansyah | Juli 2023

0
22


In der heutigen Zeit wird die Verarbeitung natürlicher Sprache (NLP) immer wichtiger und die Textklassifizierung hat die Aufmerksamkeit vieler Forscher auf sich gezogen. In diesem Artikel wird der Feinabstimmungsansatz des ELECTRA-Modells zur Verbesserung der Textklassifizierungsleistung untersucht. Der Artikel bietet eine detaillierte Erläuterung der Transformatorarchitektur, des ELECTRA-Modells, des verwendeten Datensatzes und verschiedener Feinabstimmungsmethoden, die die bereitgestellten Funktionen einbeziehen. Der Artikel vergleicht außerdem Feinabstimmungsmethoden mit regulärem Transferlernen und erklärt, warum die verwendete Methode optimalere Ergebnisse liefern kann.

Der Artikel bietet eine Schritt-für-Schritt-Anleitung zur Feinabstimmung des ELECTRA-Modells für den SST-2-Datensatz mithilfe des im GitHub-Repository enthaltenen Codes https://github.com/aryafikriii/ELECTRA-Finetuned-SST2-English.

Die Transformer-Architektur ist eine beliebte neuronale Netzwerkarchitektur in der Verarbeitung natürlicher Sprache, die Aufmerksamkeitsmechanismen nutzt, um Token in einer Textsequenz zu verbinden, sodass das Modell starke Sprachdarstellungen lernen kann. Der Transformator besteht aus miteinander verbundenen Transformatorblöcken, und jeder Block besteht aus mehreren Aufmerksamkeits- und Feed-Ahead-Schichten mit mehreren Köpfen. Die Multi-Head-Aufmerksamkeitsschicht konzentriert sich auf die Interaktion zwischen Token im Textual content, während die Feed-Ahead-Schicht Informationen für jedes Token einzeln verarbeitet.

Transformatoren sind eine Artwork neuronaler Netzwerkarchitektur, die in den letzten Jahren immer beliebter wurde. Sie wurden kürzlich von OpenAI in ihren Sprachmodellen verwendet und auch von DeepMind für AlphaStar, ihrem Programm, um einen High-Profi-Starcraft-Spieler zu besiegen. Transformatoren sind so konzipiert, dass sie weitreichende Abhängigkeiten problemlos bewältigen können und sich bei der Berechnung von Darstellungen ihrer Ein- und Ausgabe vollständig auf ihre eigene Aufmerksamkeit verlassen, ohne sequenzausgerichtete RNNs oder Faltung zu verwenden.

Die Transformer-Architektur ist der Motor hinter ChatGPT und eignet sich hervorragend zum Erlernen der Kontextanwendung. Beispielsweise kann sich bei der Verarbeitung eines Satzes die Bedeutung eines Wortes oder einer Phrase je nach Kontext, in dem es verwendet wird, völlig ändern. Um dieses Downside zu lösen, verwenden Transformatormodelle neuronale Netze, um für jedes Wort einen Vektor namens „Question“ und einen Vektor namens „Key“ zu generieren. Wenn die Abfrage eines Wortes mit dem Schlüssel eines anderen Wortes übereinstimmt, bedeutet das, dass das zweite Wort einen relevanten Kontext für das erste Wort hat. Um einen geeigneten Kontext vom zweiten Wort zum ersten Wort bereitzustellen, wird ein dritter Vektor namens „Wert“ generiert, der dann mit dem ersten Wort kombiniert wird, um eine stärker kontextualisierte Bedeutung des ersten Wortes zu erhalten.

Das ELECTRA-Modell ist eine Implementierung der von Google entwickelten Transformatorarchitektur. Es nutzt Vortrainings- und Feinabstimmungsansätze, um starke Sprachdarstellungen zu erlernen. Während des Vortrainings verwendet das ELECTRA-Modell die Methode „Ersatz-Token-Erkennung“, bei der einige Token im Textual content durch einen Token-Generator ersetzt werden und das Modell klassifiziert, ob das Token authentic oder generiert ist. Dadurch kann das ELECTRA-Modell besser und effizienter lernen. Das ELECTRA-Modell ist eine selbstüberwachte Sprachrepräsentations-Lernmethode, mit der Transformatornetzwerke mit relativ wenig Rechenaufwand vorab trainiert werden können. Es unterscheidet „echte“ Eingabetokens von „gefälschten“ Eingabetokens, die von einem anderen neuronalen Netzwerk generiert werden, ähnlich dem Diskriminator eines GAN. Das ELECTRA-Modell ist auf Hugging Face verfügbar und kann für nachgelagerte Aufgaben wie Klassifizierung, Qualitätssicherung und Sequenzkennzeichnung optimiert werden.

Für unsere Experimente haben wir den SST-2-Datensatz verwendet, der einer der beliebtesten Datensätze in der Textklassifizierung ist. Der Datensatz enthält Sätze, die entsprechend der Textklassifizierungsaufgabe in verschiedene Kategorien eingeteilt sind. Es besteht aus Trainingsdaten, Entwicklungsdaten (Dev-Set) und Testdaten. Jede Probe im SST-2-Datensatz ist mit der entsprechenden Klasse gekennzeichnet. Der SST-2-Datensatz basiert auf dem von Pang und Lee (2005) eingeführten Datensatz und besteht aus 11.855 Einzelsätzen, die aus Filmkritiken extrahiert wurden. Es wurde mit dem Stanford-Parser analysiert und enthält insgesamt 215.154 einzigartige Phrasen aus diesen Analysebäumen, die jeweils von drei menschlichen Richtern kommentiert wurden. Der Korpus mit allen 5 Bezeichnungen wird als SST-5 oder SST feinkörnig bezeichnet. Binäre Klassifizierungsexperimente an vollständigen Sätzen (negativ oder eher negativ vs. eher positiv oder positiv mit verworfenen neutralen Sätzen) bezeichnen den Datensatz als SST-2 oder SST-Binär. Der SST-2-Datensatz ist auf Hugging Face verfügbar und kann für Stimmungsanalyseaufgaben verwendet werden.

Zusammenfassend lässt sich sagen, dass der SST-2-Datensatz ein beliebter Datensatz bei der Textklassifizierung ist, der beschriftete Sätze enthält, die in verschiedene Kategorien eingeteilt sind. Es besteht aus Trainings-, Entwicklungs- und Testdaten und jedes Beispiel ist mit der entsprechenden Klasse gekennzeichnet. Der Datensatz basiert auf dem von Pang und Lee (2005) eingeführten Datensatz und besteht aus 11.855 Einzelsätzen, die aus Filmkritiken extrahiert wurden. Der SST-2-Datensatz ist auf Hugging Face verfügbar und kann für Stimmungsanalyseaufgaben verwendet werden.

  • unfreeze_last_layer(mannequin):
def unfreeze_last_layer(mannequin):
for param in mannequin.parameters():
param.requires_grad = False
for param in mannequin.classifier.parameters():
param.requires_grad = True

Mit dieser Funktion wird die Klassifizierungsebene im Modell freigegeben. Dies geschieht, indem das Attribut „requires_grad“ der Modellparameter auf „True“ gesetzt wird. Dadurch kann die Klassifizierungsschicht während des Modelltrainings aktualisiert werden, während die anderen Schichten unverändert bleiben.

  • unfreeze_last_layer_last_block(mannequin):
def unfreeze_last_layer_last_block(mannequin):
for param in mannequin.parameters():
param.requires_grad = False

for param in mannequin.classifier.parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[11].parameters():
param.requires_grad = True

Diese Funktion ähnelt unfreeze_last_layer(mannequin), gibt aber auch den letzten Block des ELECTRA-Modells frei. Nach dem Ausführen dieser Funktion können sowohl die Klassifizierungsschicht als auch der letzte Block während des Modelltrainings aktualisiert werden.

  • unfreeze_last_layer_last_2block(mannequin):
def unfreeze_last_layer_last_2block(mannequin):
for param in mannequin.parameters():
param.requires_grad = False

for param in mannequin.classifier.parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[11].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[10].parameters():
param.requires_grad = True

Diese Funktion ähnelt unfreeze_last_layer_last_block(mannequin), gibt aber auch die letzten beiden Blöcke des ELECTRA-Modells frei. Durch Ausführen dieser Funktion können sowohl die Klassifizierungsschicht als auch die letzten beiden Blöcke während des Modelltrainings aktualisiert werden.

  • unfreeze_last_layer_last_3block(mannequin) Zu unfreeze_last_layer_last_11block(mannequin):
def unfreeze_last_layer_last_3block(mannequin):
for param in mannequin.parameters():
param.requires_grad = False

for param in mannequin.classifier.parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[11].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[10].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[9].parameters():
param.requires_grad = True

def unfreeze_last_layer_last_11block(mannequin):
for param in mannequin.parameters():
param.requires_grad = False

for param in mannequin.classifier.parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[11].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[10].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[9].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[8].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[7].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[6].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[5].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[4].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[3].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[2].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[1].parameters():
param.requires_grad = True

for param in mannequin.electra.encoder.layer[0].parameters():
param.requires_grad = True

Diese Funktionen ähneln unfreeze_last_layer_last_2block(mannequin), geben jedoch die letzten drei bis elf Blöcke des ELECTRA-Modells frei. Durch die Ausführung dieser Funktionen können sowohl die Klassifizierungsschicht als auch die angegebenen letzten Blöcke während des Modelltrainings aktualisiert werden.

Im Wesentlichen werden diese Funktionen verwendet, um Flexibilität bei Modellaktualisierungen bereitzustellen. Durch das Auftauen der letzten Ebene oder Blöcke können wir dem Modell ermöglichen, die letzten Options entsprechend der spezifischen Textklassifizierungsaufgabe anzupassen. Es ist wichtig zu beachten, dass Sie bei der Verwendung dieser Funktionen die Größe des Datensatzes und die verfügbaren Rechenressourcen berücksichtigen müssen, da das Aufheben der Einfrierung weiterer Ebenen die Trainingszeit und den Speicherbedarf erhöhen kann.

Der SST-2-Datensatz ist ein beliebter Datensatz für die Stimmungsanalyse. Das Experiment wurde mit verschiedenen Feinabstimmungsansätzen durchgeführt. Die Genauigkeitsergebnisse für den Entwicklungssatz und den Testsatz lauten wie folgt:

Genauigkeit von Feinabstimmungsmethoden am Electra-Modell

Anhand der erhaltenen Ergebnisse können wir erkennen, dass die Feinabstimmungsmethode durch Einfrieren der ersten Schichten mit Ausnahme des letzten Blocks eine höhere Genauigkeit beim Entwicklungssatz und Testsatz ergibt. Dies weist darauf hin, dass die Aktualisierung des letzten Blocks im ELECTRA-Modell erheblich zur Verbesserung der Textklassifizierungsleistung beitragen kann. Darüber hinaus kann diese Methode das Risiko einer Überanpassung verringern und die Generalisierung des Modells verbessern, indem nur der relevanteste Teil an die spezifische Textklassifizierungsaufgabe angepasst wird. Daher kann die Feinabstimmung eine effektive und effiziente Wahl für die Anwendung des ELECTRA-Modells auf verschiedene Textklassifizierungsaufgaben sein.

Die beim ELECTRA-Modell verwendete Feinabstimmungsmethode zeigt eine Überlegenheit im Vergleich zum regulären Transferlernen. Beim regulären Transferlernen wird ein Modell verwendet, das für eine andere Aufgabe trainiert wurde, und es dann an eine Textklassifizierungsaufgabe angepasst. Durch die Feinabstimmung des ELECTRA-Modells können wir jedoch die Modellparameter spezifischer für die Textklassifizierungsaufgabe aktualisieren, einschließlich der letzten Ebene, die direkt mit der Textklassifizierung zusammenhängt. Somit bietet die Feinabstimmungsmethode des ELECTRA-Modells eine größere Flexibilität bei der Optimierung der Textklassifizierungsleistung. Darüber hinaus nutzt diese Methode auch die vom ELECTRA-Modell aus einer großen Menge an Textdaten gelernten Funktionen und verbessert so die Fähigkeit des Modells, die Bedeutung und den Kontext von Textual content zu verstehen. Daher kann die Feinabstimmungsmethode als eine der besten Möglichkeiten angesehen werden, das ELECTRA-Modell auf Textklassifizierungsaufgaben anzuwenden.

In diesem Artikel haben wir den Feinabstimmungsansatz des ELECTRA-Modells zur Verbesserung der Textklassifizierungsleistung erörtert. Durch die Implementierung und Evaluierung verschiedener Feinabstimmungsmethoden, einschließlich des Einfrierens der ersten Schichten und der Aktualisierung nur des letzten Blocks, haben wir eine gute Genauigkeit des SST-2-Datensatzes erreicht. Wir haben diese Feinabstimmungsmethode auch mit regulärem Transferlernen verglichen und gezeigt, dass die Feinabstimmung Vorteile hinsichtlich Flexibilität und Leistungsoptimierung hat. Wir hoffen, dass dieser Artikel Lesern, die daran interessiert sind, das ELECTRA-Modell auf Textklassifizierungsaufgaben oder andere NLP-Aufgaben anzuwenden, Einblicke und Inspiration bieten kann.

Verweise:

  1. Transformers in NLP: Eine anfängerfreundliche Erklärung | Auf dem Weg zur Datenwissenschaft
  2. Effizienteres NLP-Modell-Vortraining mit ELECTRA – Google Research Blog (googleblog.com)
  3. SST-Datensatz | Papiere mit Code
  4. Feinabstimmung großer Sprachmodelle (sebastianraschka.com)
  5. Computer Vision – Feinabstimmung vs. Transferlearning vs. Lernen von Grund auf – Kreuzvalidiert (stackexchange.com)



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here