การรับมือกับ Overfitting

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

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

สาเหตุของ Overfitting

  • Overfitting: โมเดลไม่สามารถ generalize กับข้อมูลใหม่ได้
    • โมเดลจำข้อมูล training ไว้
    • ทำได้ดีบนข้อมูล training แต่แย่บนข้อมูล validation
  • สาเหตุที่เป็นไปได้:
ปัญหา วิธีแก้ไข
ชุดข้อมูลมีขนาดไม่ใหญ่พอ เพิ่มข้อมูล / ใช้ data augmentation
โมเดลมี capacity มากเกินไป ลดขนาดโมเดล / เพิ่ม dropout
ค่า weight มีขนาดใหญ่เกินไป Weight decay
Deep Learning เบื้องต้นด้วย PyTorch

การรับมือกับ Overfitting

กลยุทธ์:

  • ลดขนาดโมเดลหรือเพิ่ม dropout layer
  • ใช้ weight decay เพื่อให้ค่า parameter คงอยู่ในระดับต่ำ
  • หาข้อมูลใหม่หรือทำ data augmentation
Deep Learning เบื้องต้นด้วย PyTorch

"Regularization" ด้วย Dropout Layer

  • สุ่มกำหนดค่าเป็นศูนย์ให้กับ element ใน input tensor ระหว่าง training
model = nn.Sequential(nn.Linear(8, 4),
                      nn.ReLU(),
                      nn.Dropout(p=0.5))
features = torch.randn((1, 8))
print(model(features))
tensor([[1.4655, 0.0000, 0.0000, 0.8456]], grad_fn=<MulBackward0>)
  • Dropout จะเพิ่มหลัง activation function
  • ทำงานต่างกันในโหมด training และ evaluation — ใช้ model.train() สำหรับ training และ model.eval() เพื่อปิด dropout ระหว่าง evaluation
Deep Learning เบื้องต้นด้วย PyTorch

Regularization ด้วย Weight Decay

optimizer = optim.SGD(model.parameters(), lr=0.001, weight_decay=0.0001)

  • ควบคุมด้วย parameter weight_decay ใน optimizer โดยมักกำหนดเป็นค่าน้อย ๆ (เช่น 0.0001)
  • Weight decay ส่งเสริมให้ค่า weight มีขนาดเล็กลงโดยเพิ่ม penalty ระหว่าง optimization
  • ช่วยลด overfitting โดยให้ค่า weight คงอยู่ในระดับต่ำและปรับปรุงความสามารถในการ generalize
Deep Learning เบื้องต้นด้วย PyTorch

Data Augmentation

ตัวอย่างของ data augmentation

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

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

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

Preparing Video For Download...