Heim >Technologie-Peripheriegeräte >KI >Verbesserung der Stimmungsanalyse mit Modernbert
Seit seiner Einführung im Jahr 2018 hat Bert die Verarbeitung natürlicher Sprache verändert. Es funktioniert bei Aufgaben wie Stimmungsanalyse, Fragenbeantwortung und Sprachinferenz. Mithilfe von bidirektionalem Training und transformatorbasiertem Selbstbegegnung führte Bert eine neue Möglichkeit ein, die Beziehungen zwischen Wörtern im Text zu verstehen. Trotz seines Erfolgs hat Bert Einschränkungen. Es kämpft mit der Recheneffizienz, dem Umgang mit längeren Texten und der Bereitstellung von Interpretierbarkeit. Dies führte zur Entwicklung von Modernbert, einem Modell, das diese Herausforderungen bewältigen soll. Modernbert verbessert die Verarbeitungsgeschwindigkeit, verarbeitet längere Texte besser und bietet Entwicklern mehr Transparenz. In diesem Artikel werden wir untersuchen, wie Modernbert für die Stimmungsanalyse verwendet wird, um seine Funktionen und Verbesserungen gegenüber Bert hervorzuheben.
Dieser Artikel wurde als Teil des Data Science -Blogathon veröffentlicht.
BERT | ModernBERT |
It has fixed positional embeddings | It uses Rotary Positional Embeddings (RoPE) |
Standard self-attention | Flash Attention for improved efficiency |
It has fixed-length context windows | It can support longer contexts with Local-Global Alternating Attention |
Complex and less interpretable | Improved interpretability |
Primarily trained on English text | Primarily trained on English and code data |
Modernbert befasst sich mit diesen Einschränkungen, indem sie effizientere Algorithmen wie Flash-Aufmerksamkeit und lokal-globales Alternationsaufmerksamkeit einbeziehen, die die Speichernutzung optimieren und die Verarbeitungsgeschwindigkeit verbessern. Darüber hinaus führt Modernbert Verbesserungen ein, um längere Kontextlängen effektiver zu bewältigen, indem Techniken wie Rotationspositionseinbettung (Seil) integriert werden, um längere Kontextlängen zu unterstützen.
.es verbessert die Interpretierbarkeit, indem es darauf abzielt, transparenter und benutzerfreundlicher zu sein, wodurch es den Entwicklern das Debuggen und die Anpassung des Modells an bestimmte Aufgaben erleichtert. Darüber hinaus beinhaltet Modernbert Fortschritte im gesunden Menschenverstand und ermöglicht es, Kontext, Nuancen und logische Beziehungen besser zu verstehen, die über die ausdrücklichen Informationen hinausgehen. Es ist für gemeinsame GPUs wie Nvidia T4, A100 und RTX 4090 geeignet.
Modernbert wird auf Daten aus verschiedenen englischen Quellen geschult, einschließlich Webdokumenten, Code und wissenschaftlichen Artikeln. Es ist im Gegensatz zu den in früheren Encodern beliebten Standard-20-40-Wiederholungen, die in früheren Encodern beliebt sind, ausgebildet.
Es wird in den folgenden Größen veröffentlicht:
Einige der einzigartigen Merkmale von Modernbert sind:
Dies ist ein neuer Algorithmus, der den Aufmerksamkeitsmechanismus von Transformatormodellen in Bezug auf Zeit und Speicherverwendung beschleunigt. Die Berechnung der Aufmerksamkeit kann durch Umordnen der Operationen und die Verwendung von Fliesen und Neukomputationen beschleunigt werden. Durch das Fliesen wird große Daten in überschaubare Stücke zerlegt, und die Neukomputation verringert die Speicherverwendung, indem die Zwischenergebnisse nach Bedarf neu berechnet werden. Dies reduziert die quadratische Speicherverwendung auf linear und macht es für lange Sequenzen viel effizienter. Der Rechenaufwand reduziert sich. Es ist 2-4x schneller als herkömmliche Aufmerksamkeitsmechanismen. Die Aufmerksamkeit von Flash wird zur Beschleunigung des Trainings und zur Folgerung von Transformatormodellen verwendet.
Eines der neuesten Merkmale von Modernbert ist eher wechselnde Aufmerksamkeit als die volle globale Aufmerksamkeit.
Rotationspositionale Einbettung (Seil) ist eine Transformatormodell -Technik, die die Position von Token in einer Sequenz unter Verwendung von Rotationsmatrizen codiert. Es enthält absolute und relative Positionsinformationen und passt den Aufmerksamkeitsmechanismus an, um die Ordnung und den Abstand zwischen Token zu verstehen. Seil codiert die absolute Position von Token mit einer Rotationsmatrix und notiert auch die relativen Positionsinformationen oder die Reihenfolge und den Abstand zwischen den Token.
Unpadding und Sequenzverpackung sind Techniken zur Optimierung des Speichers und der Recheneffizienz.
Lassen Sie uns die Stimmungsanalyse mit Modernbert praktisch implementieren. Wir werden mit Modernbert eine Stimmungsanalyseaufgabe ausführen. Die Sentiment -Analyse ist eine spezifische Art von Textklassifizierungsaufgabe, die darauf abzielt, Text in positiv oder negativ zu klassifizieren.
Der Datensatz, den wir verwenden, ist IMDB Movie Reviews Dataset, um Bewertungen entweder in positive oder negative Gefühle zu klassifizieren.
Hinweis:
Installieren Sie die Bibliotheken, die für die Arbeit mit umarmenden Gesichtstransformatoren erforderlich sind.
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Der Befehl IMDB ["Test"] [0] druckt das erste Beispiel in der Testaufteilung des IMDB Movie Review -Datensatzes, d. H. Die erste Testüberprüfung zusammen mit dem zugehörigen Etikett.
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]
ochenisieren Sie den Datensatz mithilfe von vorgebliebenem Modernbert-Base-Tokenizer. Dieser Prozess wandelt Text in numerische Eingänge um, die für das Modell geeignet sind
#initialize the tokenizer and the model tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base") #define the tokenizer function def tokenizer_function(example): return tokenizer( example["text"], padding="max_length", truncation=True, max_length=512, ## max length can be modified return_tensors="pt" ) #tokenize training and testing data set based on above defined tokenizer function tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True) tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True) #print the tokenized output of first test sample print(tokenized_test_dataset[0])
#install libraries !pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq !pip install -U transformers>=4.48.0 import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig from datasets import load_dataset
Bereiten Sie die Datensätze vor, indem Sie die Spalte für Stimmungsbezeichnungen (Etikett) in "Beschriftungen" umbenennen und unnötige Spalten entfernen.
#Load the dataset from datasets import load_dataset imdb = load_dataset("imdb") #print the first test sample imdb["test"][0]
Verwenden wir F1_Score als Metrik, um unser Modell zu bewerten. Wir werden eine Funktion definieren, um die Bewertungsvorhersagen zu verarbeiten und ihre F1 -Punktzahl zu berechnen. Dadurch vergleichen wir die Vorhersagen des Modells mit den wahren Beschriftungen.
#initialize the tokenizer and the model tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base") #define the tokenizer function def tokenizer_function(example): return tokenizer( example["text"], padding="max_length", truncation=True, max_length=512, ## max length can be modified return_tensors="pt" ) #tokenize training and testing data set based on above defined tokenizer function tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True) tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True) #print the tokenized output of first test sample print(tokenized_test_dataset[0])
Definieren Sie die Hyperparameter und andere Konfigurationen zur Feinabstimmung des Modells mithilfe von den TrainingsArguments von Hugging Face. Lassen Sie uns einige Argumente verstehen:
#initialize the model config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base") model = AutoModelForSequenceClassification.from_config(config)
Verwenden Sie die Trainerklasse, um den Modelltraining und den Bewertungsprozess auszuführen.
#data preparation step - train_dataset = tokenized_train_dataset.remove_columns(['text']).rename_column('label', 'labels') test_dataset = tokenized_test_dataset.remove_columns(['text']).rename_column('label', 'labels')
Bewerten Sie das ausgebildete Modell beim Testen des Datensatzes.
import numpy as np from sklearn.metrics import f1_score # Metric helper method def compute_metrics(eval_pred): predictions, labels = eval_pred predictions = np.argmax(predictions, axis=1) score = f1_score( labels, predictions, labels=labels, pos_label=1, average="weighted" ) return {"f1": float(score) if score == 1 else score}
speichern Sie das feine Modell und Tokenizer zur weiteren Wiederverwendung.
#define training arguments train_bsz, val_bsz = 32, 32 lr = 8e-5 betas = (0.9, 0.98) n_epochs = 2 eps = 1e-6 wd = 8e-6 training_args = TrainingArguments( output_dir=f"fine_tuned_modern_bert", learning_rate=lr, per_device_train_batch_size=train_bsz, per_device_eval_batch_size=val_bsz, num_train_epochs=n_epochs, lr_scheduler_type="linear", optim="adamw_torch", adam_beta1=betas[0], adam_beta2=betas[1], adam_epsilon=eps, logging_strategy="epoch", eval_strategy="epoch", save_strategy="epoch", load_best_model_at_end=True, bf16=True, bf16_full_eval=True, push_to_hub=False, )
Hier: 0 zeigt eine negative Überprüfung an und 1 zeigt eine positive Überprüfung an. Für mein neues Beispiel sollte die Ausgabe [0,1] sein, da das Bohrung eine negative Überprüfung (0) angibt und die spektakuläre positive Meinung zeigt, dass 1 als Ausgabe angegeben wird.
#Create a Trainer instance trainer = Trainer( model=model, # The pre-trained model args=training_args, # Training arguments train_dataset=train_dataset, # Tokenized training dataset eval_dataset=test_dataset, # Tokenized test dataset compute_metrics=compute_metrics, # Personally, I missed this step, my output won't show F1 score )
Während Modernbert mehrere Verbesserungen gegenüber dem traditionellen Bert mit sich bringt, hat es immer noch einige Einschränkungen:
Modernbert nimmt Berts Fundament und verbessert es mit einer schnelleren Verarbeitung, besserer Handhabung langer Texte und verbesserter Interpretierbarkeit. Während es immer noch Herausforderungen wie Trainingsdatenverzerrungen und Komplexität hat, stellt es einen signifikanten Sprung in NLP dar. Modernbert eröffnet neue Möglichkeiten für Aufgaben wie Stimmungsanalyse und Textklassifizierung, wodurch ein effizienteres und zugänglicheres Verständnis des Sprachgebrauchs gestellt wird.
Referenzen:
Die in diesem Artikel gezeigten Medien sind nicht im Besitz von Analytics Vidhya und wird nach Ermessen des Autors verwendet.
Ans. Ans. Nur-Encoder-Architekturen Prozesseingangssequenzen ohne Erzeugung von Ausgabesequenzen, die sich auf das Verständnis und die Codierung der Eingabe konzentrieren.
Q2. Was sind Einschränkungen von Bert?Ans. Einige Einschränkungen von Bert umfassen hohe Rechenressourcen, feste Kontextlänge, Ineffizienz, Komplexität und mangelnde Argumentation. Was ist Aufmerksamkeitsmechanismus?
Ans. Ein Aufmerksamkeitsmechanismus ist eine Technik, mit der sich das Modell auf bestimmte Teile der Eingabe konzentriert, um zu bestimmen, welche Teile mehr oder weniger wichtig sind.Q4. Was ist abwechselnde Aufmerksamkeit?
Ans. Dieser Mechanismus wechselt zwischen der Fokussierung auf lokale und globale Kontexte innerhalb von Textsequenzen. Lokale Aufmerksamkeit hebt angrenzende Wörter oder Phrasen hervor und sammelt feinkörnige Informationen, während die globale Aufmerksamkeit allgemeine Muster und Beziehungen im gesamten Text erkennt. Q5. Was sind Rotationspotential -Einbettungen? Wie unterscheiden sie sich von festen Positionseinbettungen?Ans. Im Gegensatz zu festen Positionseinbettungen, die nur absolute Positionen erfassen, verwenden Rotationspositions -Einbettungen (Seil) Rotationsmatrizen, um sowohl absolute als auch relative Positionen zu codieren. Seil ist besser mit erweiterten Sequenzen ab.
Q6. Was sind die potenziellen Anwendungen von Modernbert?Ans. Einige Anwendungen von Modernbert können sich in Bereichen der Textklassifizierung, der Stimmungsanalyse, der Beantwortung der Beantwortung, der Erkennung benannter Entfernung, der Analyse von Rechtstext, dem Verständnis von Code usw.
Q7 befinden. Was und warum wird Wandb -API benötigt?Ans. Gewichte & Vorurteile (W & B) ist eine Plattform zum Verfolgen, Visualisieren und Teilen von ML -Experimenten. Es hilft bei der Verfolgung von Modellmetriken, visualisieren Sie Experimentdaten, teilen Sie Ergebnisse und mehr. Es hilft, Metriken wie Genauigkeit zu überwachen, den Fortschritt zu visualisieren, Hyperparameter zu stimmen, die Versionen von Modell usw. zu verfolgen usw.
Das obige ist der detaillierte Inhalt vonVerbesserung der Stimmungsanalyse mit Modernbert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!