Transfer learning voor tekstclassificatie

Deep Learning voor tekst met PyTorch

Shubham Jain

Instructor

Wat is transfer learning?

 

Transfer Learning

  • Gebruik kennis van de ene taak voor een verwante taak

 

  • Bespaart tijd
  • Deelt expertise
  • Minder data nodig

 

  • Een docent Engels gaat Geschiedenis geven
Deep Learning voor tekst met PyTorch

Werking van transfer learning

Transfer Learning I

Deep Learning voor tekst met PyTorch

Werking van transfer learning

Transfer Learning II

Deep Learning voor tekst met PyTorch

Werking van transfer learning

Transfer Learning II

Deep Learning voor tekst met PyTorch

Werking van transfer learning

Transfer Learning III

Deep Learning voor tekst met PyTorch

Voorgetraind model: BERT

  • Bidirectional Encoder Representations from Transformers

Bert Sentiment Analysis

  • Getraind voor language modeling
  • Meerdere transformerlagen
  • Voorgetraind op grote corpora
Deep Learning voor tekst met PyTorch

Praktijk: BERT implementeren

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)
Deep Learning voor tekst met PyTorch

BERT fine-tunen

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
Deep Learning voor tekst met PyTorch

Evalueren op nieuwe tekst

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
Deep Learning voor tekst met PyTorch

Laten we oefenen!

Deep Learning voor tekst met PyTorch

Preparing Video For Download...