Transfer learning pro klasifikaci textu

Deep Learning for Text with PyTorch

Shubham Jain

Instructor

Co je transfer learning?

 

Transfer Learning

  • Využití znalostí z jednoho úkolu pro příbuzný úkol

 

  • Šetří čas
  • Sdílení odborných znalostí
  • Snižuje potřebu velkého množství dat

 

  • Učitel angličtiny začne vyučovat historii
Deep Learning for Text with PyTorch

Principy transfer learningu

Přenos učení I

Deep Learning for Text with PyTorch

Principy transfer learningu

Přenos učení II

Deep Learning for Text with PyTorch

Principy transfer learningu

Přenos učení II

Deep Learning for Text with PyTorch

Principy transfer learningu

Přenos učení III

Deep Learning for Text with PyTorch

Předtrénovaný model: BERT

  • Bidirectional Encoder Representations from Transformers

Sentimentální analýza BERT

  • Trénován pro jazykové modelování
  • Více vrstev transformerů
  • Předtrénován na rozsáhlých textech
Deep Learning for Text with PyTorch

Implementace BERT v praxi

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 for Text with PyTorch

Doladění modelu 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 for Text with PyTorch

Vyhodnocení na novém textu

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 for Text with PyTorch

Pojďme si procvičit!

Deep Learning for Text with PyTorch

Preparing Video For Download...