Transfer learning pentru clasificarea textului

Deep Learning pentru text cu PyTorch

Shubham Jain

Instructor

Ce este transfer learning?

 

Transfer Learning

  • Utilizarea cunoștințelor dintr-o sarcină pentru o sarcină înrudită

 

  • Economisește timp
  • Împărtășește expertiză
  • Reduce nevoia de date ample

 

  • Un profesor de engleză începe să predea istorie
Deep Learning pentru text cu PyTorch

Mecanica transfer learning

Transfer Learning I

Deep Learning pentru text cu PyTorch

Mecanica transfer learning

Transfer Learning II

Deep Learning pentru text cu PyTorch

Mecanica transfer learning

Transfer Learning II

Deep Learning pentru text cu PyTorch

Mecanica transfer learning

Transfer Learning III

Deep Learning pentru text cu PyTorch

Model pre-antrenat: BERT

  • Reprezentări Bidirecționale ale Encoderului din Transformere

Bert Sentiment Analysis

  • Antrenat pentru modelare a limbajului
  • Straturi multiple de transformere
  • Pre-antrenat pe texte ample
Deep Learning pentru text cu PyTorch

Practic: implementarea 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)
Deep Learning pentru text cu PyTorch

Fine-tuning 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
Deep Learning pentru text cu PyTorch

Evaluare pe texte noi

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 pentru text cu PyTorch

Să exersăm!

Deep Learning pentru text cu PyTorch

Preparing Video For Download...