Transfer learning สำหรับการจำแนกข้อความ

Deep Learning สำหรับข้อความด้วย PyTorch

Shubham Jain

Instructor

Transfer learning คืออะไร?

 

Transfer Learning

  • นำความรู้จากงานหนึ่งไปใช้กับงานที่เกี่ยวข้อง

 

  • ประหยัดเวลา
  • แบ่งปันความเชี่ยวชาญ
  • ลดความต้องการข้อมูลจำนวนมาก

 

  • ครูสอนภาษาอังกฤษที่เริ่มสอนวิชาประวัติศาสตร์
Deep Learning สำหรับข้อความด้วย PyTorch

กลไกของ transfer learning

Transfer Learning I

Deep Learning สำหรับข้อความด้วย PyTorch

กลไกของ transfer learning

Transfer Learning II

Deep Learning สำหรับข้อความด้วย PyTorch

กลไกของ transfer learning

Transfer Learning II

Deep Learning สำหรับข้อความด้วย PyTorch

กลไกของ transfer learning

Transfer Learning III

Deep Learning สำหรับข้อความด้วย PyTorch

โมเดล pre-trained: BERT

  • Bidirectional Encoder Representations from Transformers

Bert Sentiment Analysis

  • ฝึกสำหรับการสร้างแบบจำลองภาษา
  • มีหลายเลเยอร์ของ transformer
  • Pre-trained บนข้อความขนาดใหญ่
Deep Learning สำหรับข้อความด้วย PyTorch

ลงมือทำ: นำ 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 สำหรับข้อความด้วย 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 สำหรับข้อความด้วย PyTorch

ประเมินผลกับข้อความใหม่

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 สำหรับข้อความด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning สำหรับข้อความด้วย PyTorch

Preparing Video For Download...