Apprentissage par transfert pour la classification de texte

Apprentissage profond pour le texte avec PyTorch

Shubham Jain

Instructor

Qu'est-ce que l'apprentissage par transfert ?

 

Apprentissage par transfert

  • Réutiliser des acquis d'une tâche pour une tâche liée

 

  • Gagne du temps
  • Partage l'expertise
  • Moins besoin de grandes quantités de données

 

  • Un enseignant d'anglais commence à enseigner l'histoire
Apprentissage profond pour le texte avec PyTorch

Mécanique de l'apprentissage par transfert

Apprentissage par transfert I

Apprentissage profond pour le texte avec PyTorch

Mécanique de l'apprentissage par transfert

Apprentissage par transfert II

Apprentissage profond pour le texte avec PyTorch

Mécanique de l'apprentissage par transfert

Apprentissage par transfert II

Apprentissage profond pour le texte avec PyTorch

Mécanique de l'apprentissage par transfert

Apprentissage par transfert III

Apprentissage profond pour le texte avec PyTorch

Modèle préentraîné : BERT

  • Bidirectional Encoder Representations from Transformers

Analyse de sentiments avec BERT

  • Entraîné pour la modélisation du langage
  • Plusieurs couches de transformeurs
  • Préentraîné sur de grands corpus
Apprentissage profond pour le texte avec PyTorch

Pratique : implémenter BERT

texts = ["I love this!", 
         "This is terrible.", 
         "Amazing experience!", 
         "Not my cup of tea."]
labels = [1, 0, 1, 0]

import torch from transformers import BertTokenizer, BertForSequenceClassification
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt", max_length=32) inputs["labels"] = torch.tensor(labels)
Apprentissage profond pour le texte avec PyTorch

Ajuster finement BERT

optimizer = torch.optim.AdamW(model.parameters(), lr=0.00001)
model.train()

for epoch in range(1): outputs = model(**inputs)
loss = outputs.loss loss.backward()
optimizer.step() optimizer.zero_grad()
print(f"Epoch: {epoch+1}, Loss: {loss.item()}")
Epoch: 1, Loss: 0.7061821222305298
Apprentissage profond pour le texte avec PyTorch

Évaluer sur un nouveau texte

text = "I had an awesome day!"
input_eval = tokenizer(text, return_tensors="pt", truncation=True, 
                       padding=True, max_length=128)

outputs_eval = model(**input_eval)
predictions = torch.nn.functional.softmax(outputs_eval.logits, dim=-1)
predicted_label = 'positive' if torch.argmax(predictions) > 0 else 'negative' print(f"Text: {text}\nSentiment: {predicted_label}")
Text: I had an awesome day!
Sentiment: positive
Apprentissage profond pour le texte avec PyTorch

Passons à la pratique !

Apprentissage profond pour le texte avec PyTorch

Preparing Video For Download...