Thảo luận về quá trình debug 1 mạng deep learning

deep-learning
machine-learning
computer-vision

#1

Xin chào các anh chị. Tình hình là em đang suy nghĩ về trình tự debug 1 mạng deep learning. Kiểu nó không chạy theo ý mình thi em cảm thấy khá khó khăn trong việc Debug. Em đang chạy 1 bài toán classification đơn giản để dễ check. Bài toán phân loại Ant and Bee của Pytorch. Em đang theo 1 tips thế này:

  • Đầu tiên sẽ tạo 1 model đơn giản. Ở đây em tạo: 2(Conv + ReLU + MaxPooling) + 1 FC
  • Sau đó train với 1 lượng nhỏ data và cố gắng overfit data đấy (Ở đây e lấy 10 examples, 5 Ant và 5 Bee)

Sau khi em train thì loss hiện ra thế này:

Mọi người cho em hỏi: Tại sao trong đồ thị loss lại có vài điểm nó nhô lên? Kết quả đã hợp lý chưa? Em nên làm gì tiếp theo? Thêm Data, add thêm layer ? Em cảm ơn cách anh chị nhiều.


#2

Bạn để ít data quá. Tăng số lượng data lên đi bạn.


#3

Ngoài ra có thể turning các hệ số như là learning rate, … nữa.


#4

Có lý do gì để mình biết khi nào cần turning các hệ số hyperparameters ko bạn? Ví dụ khi nào thêm Data, khi nào căn chỉnh learning rate? Khi nào add thêm layer?.. Ngoài ra loss có chiều hướng hội tụ nhưng tại sao vài điểm nó lại tăng bất thường? Mình vẫn chưa lý giải được


#5

Bạn sử dụng Stochastic Gradient Descent để train phải k?


#6

Đúng rồi bạn. Optimizer mình dùng SGD


#7

Nếu vậy thì đồ thị bên trên nhấp nhô là bình thường vì bản chất stochastic của optimizer. Ngoài ra, initialization của network cũng dẫn đến nhấp nhô


#8

Mình đồng ý nhấp nhô là bình thường. Nhưng có những điểm nó vọt phát lên cao quá, mình vẫn chưa clear, do khi chạy optimizer nó sẽ update từ từ vào điểm tối ưu mà nhỉ?