Tutorial: Feinabstimmung von BERT für die extraktive Verdichtung

Tutorial: Feinabstimmung von BERT für die extraktive Verdichtung

    Originally published by Skim AI's Machine Learning Researcher, Chris Tran

1. Einleitung

Die Zusammenfassung ist seit langem eine Herausforderung in der natürlichen Sprachverarbeitung. Um eine kurze Version eines Dokuments zu erstellen und dabei die wichtigsten Informationen beizubehalten, benötigen wir ein Modell, das in der Lage ist, die wichtigsten Punkte genau zu extrahieren und gleichzeitig wiederholte Informationen zu vermeiden. Erfreulicherweise haben die jüngsten Arbeiten im Bereich der NLP, wie z. B. Transformer-Modelle und das Vortraining von Sprachmodellen, den Stand der Technik bei der Zusammenfassung verbessert.

In diesem Artikel werden wir BERTSUM, eine einfache Variante von BERT, für die extraktive Zusammenfassung von Textzusammenfassung mit vortrainierten Kodierern (Liu et al., 2019). In dem Bemühen, die extraktive Zusammenfassung für Geräte mit geringen Ressourcen noch schneller und kleiner zu machen, werden wir DistilBERT feinabstimmen (Sanh et al. (2019)) und MobileBERT (Sun et al. (2019).), zwei aktuelle Lite-Versionen von BERT, und diskutieren unsere Ergebnisse.

2. Extraktive Zusammenfassungen

Es gibt zwei Arten der Verdichtung: abstrakt und extraktive Verdichtung. Bei der abstrakten Zusammenfassung werden die wichtigsten Punkte neu geschrieben, während bei der extraktiven Zusammenfassung die wichtigsten Abschnitte/Sätze direkt aus einem Dokument kopiert werden.

Abstrakte Zusammenfassungen sind für Menschen anspruchsvoller und für Maschinen rechenintensiver. Welche Zusammenfassung besser ist, hängt jedoch vom Zweck des Endnutzers ab. Wenn Sie einen Aufsatz schreiben, ist die abstrakte Zusammenfassung vielleicht die bessere Wahl. Wenn Sie hingegen recherchieren und eine schnelle Zusammenfassung des Gelesenen benötigen, wäre die extraktive Zusammenfassung hilfreicher.

In diesem Abschnitt werden wir die Architektur unseres extraktiven Zusammenfassungsmodells untersuchen. Die BERT-Zusammenfassung besteht aus zwei Teilen: einem BERT-Encoder und einem Zusammenfassungsklassifikator.

BERT-Encoder

Die Übersichtsarchitektur von BERTSUM

Unser BERT-Encoder ist der vortrainierte BERT-Basis-Encoder aus der maskierten Sprachmodellierungsaufgabe (Devlin et at., 2018). Die Aufgabe der extraktiven Zusammenfassung ist ein binäres Klassifikationsproblem auf Satzebene. Wir wollen jedem Satz ein Label $y_i \in {0, 1}$ zuweisen, das angibt, ob der Satz in die endgültige Zusammenfassung aufgenommen werden soll. Daher müssen wir ein Token hinzufügen [CLS] vor jedem Satz. Nach einem Vorwärtsdurchlauf durch den Encoder wird die letzte versteckte Schicht dieser [CLS] Token werden als Repräsentanten für unsere Sätze verwendet.

Zusammenfassender Klassifikator

Nachdem wir die Vektordarstellung jedes Satzes erhalten haben, können wir eine einfache Feed-Forward-Schicht als unseren Klassifikator verwenden, um eine Punktzahl für jeden Satz zu erhalten. In der Arbeit experimentierte der Autor mit einem einfachen linearen Klassifikator, einem rekurrenten neuronalen Netz und einem kleinen Transformer-Modell mit 3 Schichten. Der Transformer-Klassifikator liefert die besten Ergebnisse und zeigt, dass die Interaktion zwischen den Sätzen durch den Mechanismus der Selbstbeobachtung wichtig für die Auswahl der wichtigsten Sätze ist.

Im Encoder lernen wir also die Interaktionen zwischen den Token in unserem Dokument, während wir im Zusammenfassungsklassifikator die Interaktionen zwischen den Sätzen lernen.

3. Noch schnelleres Zusammenfassen

Transformer-Modelle erreichen in den meisten NLP-Bechmarks Spitzenleistungen; das Training und die Erstellung von Vorhersagen auf der Grundlage dieser Modelle sind jedoch sehr rechenintensiv. In dem Bemühen, die Zusammenfassung leichter und schneller zu machen, damit sie auf Geräten mit geringen Ressourcen eingesetzt werden kann, habe ich die Quellcodes von den Autoren von BERTSUM zur Verfügung gestellt, um den BERT-Encoder durch DistilBERT und MobileBERT zu ersetzen. Die zusammenfassenden Schichten werden unverändert beibehalten.

Hier sind die Trainingsverluste dieser 3 Varianten: TensorBoard

Obwohl DistilBERT 40% kleiner ist als BERT-base, hat es die gleichen Trainingsverluste wie BERT-base, während MobileBERT etwas schlechter abschneidet. Die folgende Tabelle zeigt die Leistung der beiden Verfahren für den CNN/DailyMail-Datensatz, die Größe und die Laufzeit eines Vorwärtsdurchlaufs:

Modelle ROUGE-1 ROUGE-2 ROUGE-L Inferenzzeit* Größe Params
bert-base 43.23 20.24 39.63 1.65 s 475 MB 120.5 M
destilliert 42.84 20.04 39.31 925 ms 310 MB 77.4 M
mobilebert 40.59 17.98 36.99 609 ms 128 MB 30.8 M

*Durchschnittliche Laufzeit eines Vorwärtsdurchlaufs auf einer einzelnen GPU auf einem Standard-Google-Colab-Notebook

DistilBERT ist 45% schneller und hat damit fast die gleiche Leistung wie BERT-base. MobileBERT behält die 94% Leistung von BERT-base bei, ist aber 4x kleiner als BERT-base und 2,5x kleiner als DistilBERT. Im MobileBERT-Papier wird gezeigt, dass MobileBERT DistilBERT bei SQuAD v1.1 signifikant übertrifft, was jedoch nicht für die extraktive Zusammenfassung gilt. Aber das ist immer noch ein beeindruckendes Ergebnis für MobileBERT mit einer Plattengröße von nur 128 MB.

4. Fassen wir zusammen

Alle vortrainierten Checkpoints, Trainingsdetails und Einrichtungsanweisungen finden Sie unter dieses GitHub-Repository. Darüber hinaus habe ich eine Demo von BERTSUM mit dem MobileBERT-Encoder bereitgestellt.

Web-App: https://extractive-summarization.herokuapp.com/

Code:

torch importieren
from models.model_builder import ExtSummarizer
from ext_sum importieren zusammenfassen

# Modell laden
model_type = 'mobilebert' #@param ['bertbase', 'distilbert', 'mobilebert']
checkpoint = torch.load(f'checkpoints/{model_type}_ext.pt', map_location='cpu')
model = ExtSummarizer(checkpoint=checkpoint, bert_type=model_type, device='cpu')

# Laufende Verdichtung
eingabe_fp = 'rohe_daten/eingabe.txt'
result_fp = 'ergebnisse/zusammenfassung.txt'
Zusammenfassung = zusammenfassen(eingabe_fp, ergebnis_fp, modell, max_length=3)
print(Zusammenfassung)

Zusammenfassende Probe

Original: https://www.cnn.com/2020/05/22/business/hertz-bankruptcy/index.html

Mit der Anmeldung des Konkurses will Hertz nach eigenen Angaben den Geschäftsbetrieb aufrechterhalten, seine Schulden umstrukturieren und als
finanziell gesünderes Unternehmen. Das Unternehmen vermietet seit 1918 Autos, als es sich mit einem Dutzend Ford Model Ts niederließ.
Es hat die Große Depression, die Einstellung der US-Autoproduktion während des Zweiten Weltkriegs
und zahlreiche Ölpreisschocks. "Die Auswirkungen von Covid-19 auf die Reisenachfrage waren plötzlich und dramatisch und verursachten einen
abrupter Rückgang der Einnahmen des Unternehmens und künftiger Buchungen", heißt es in der Erklärung des Unternehmens.

5. Schlussfolgerung

In diesem Artikel haben wir BERTSUM, eine einfache Variante von BERT, für die extraktive Zusammenfassung von Papieren untersucht Textzusammenfassung mit vortrainierten Kodierern (Liu et al., 2019). Um die extraktive Zusammenfassung für Geräte mit geringen Ressourcen noch schneller und kleiner zu machen, haben wir DistilBERT (Sanh et al., 2019) und MobileBERT (Sun et al., 2019) auf CNN/DailyMail-Datensätzen feinabgestimmt.

DistilBERT retains BERT-base's performance in extractive summarization while being 45% smaller. MobileBERT is 4x smaller and 2.7x faster than BERT-base yet retains 94% of its performance.

Schließlich haben wir eine Web-App-Demo von MobileBERT für extraktive Zusammenfassungen auf https://extractive-summarization.herokuapp.com/.

Referenzen

Let’s Discuss Your Idea

    Related Posts

    Ready To Supercharge Your Business

    LET’S
    TALK
    de_DEDeutsch