การใช้ฟังก์ชัน loss เพื่อประเมินการพยากรณ์ของโมเดล

Deep Learning เบื้องต้นด้วย PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

เหตุใดจึงต้องใช้ฟังก์ชัน loss?

  • บอกว่าโมเดลดีแค่ไหนระหว่างการฝึก
  • รับ ค่าพยากรณ์ $\hat{y}$ และ ค่าจริง $y$
  • ให้ผลลัพธ์เป็นเลขทศนิยม

$$

แผนภาพฟังก์ชัน loss

Deep Learning เบื้องต้นด้วย PyTorch

เหตุใดจึงต้องใช้ฟังก์ชัน loss?

  • คลาส 0 - สัตว์เลี้ยงลูกด้วยนม, คลาส 1 - นก, คลาส 2 - สัตว์เลื้อยคลาน
Hair Feathers Eggs Milk Fins Legs Tail Domestic Catsize Class
1 0 0 1 0 4 0 0 1 0

$$

  • คลาสที่พยากรณ์ = 0 -> ถูกต้อง = loss ต่ำ
  • คลาสที่พยากรณ์ = 1 -> ผิด = loss สูง
  • คลาสที่พยากรณ์ = 2 -> ผิด = loss สูง

$$

  • เป้าหมายคือ ลด loss ให้ต่ำที่สุด
Deep Learning เบื้องต้นด้วย PyTorch

แนวคิด one-hot encoding

  • $loss = F(y, \hat{y})$
  • $y$ คือ integer เดียว (ป้ายกำกับคลาส)
    • เช่น $y=0$ เมื่อ $y$ เป็นสัตว์เลี้ยงลูกด้วยนม
  • $\hat{y}$ คือ tensor (ค่าพยากรณ์ก่อน softmax)
    • ถ้า N คือจำนวนคลาส เช่น N = 3
    • $\hat{y}$ คือ tensor ที่มี N มิติ
      • เช่น $\hat{y}$ = [-5.2, 4.6, 0.8]
Deep Learning เบื้องต้นด้วย PyTorch

แนวคิด one-hot encoding

  • แปลง integer y ให้เป็น tensor ของศูนย์และหนึ่ง

One-hot encoding

Deep Learning เบื้องต้นด้วย PyTorch

การแปลงป้ายกำกับด้วย one-hot encoding

import torch.nn.functional as F

print(F.one_hot(torch.tensor(0), num_classes = 3))
tensor([1, 0, 0])
print(F.one_hot(torch.tensor(1), num_classes = 3))
tensor([0, 1, 0])
print(F.one_hot(torch.tensor(2), num_classes = 3))
tensor([0, 0, 1])
Deep Learning เบื้องต้นด้วย PyTorch

Cross entropy loss ใน PyTorch

from torch.nn import CrossEntropyLoss

scores = torch.tensor([-5.2, 4.6, 0.8])
one_hot_target = torch.tensor([1, 0, 0])

criterion = CrossEntropyLoss()
print(criterion(scores.double(), one_hot_target.double()))

$$

tensor(9.8222, dtype=torch.float64)
Deep Learning เบื้องต้นด้วย PyTorch

สรุปภาพรวม

ฟังก์ชัน loss รับค่า:

  • scores - ค่าพยากรณ์ของโมเดลก่อนฟังก์ชัน softmax สุดท้าย
  • one_hot_target - ป้ายกำกับค่าจริงที่เข้ารหัสแบบ one-hot

ฟังก์ชัน loss ให้ผลลัพธ์:

  • loss - ค่า float ค่าเดียว

แผนภาพฟังก์ชัน loss พร้อมค่าตัวอย่าง

Deep Learning เบื้องต้นด้วย PyTorch

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

Deep Learning เบื้องต้นด้วย PyTorch

Preparing Video For Download...