Tại sao đôi khi các mô hình CNN chỉ dự đoán một lớp trong số tất cả các lớp khác?

Jan 17 2021

Tôi còn tương đối mới với bối cảnh học sâu, vì vậy xin đừng tỏ ra xấu tính như Reddit! Có vẻ như đây là một câu hỏi chung chung nên tôi sẽ không đưa mã của mình ở đây vì nó có vẻ không cần thiết (nếu có, đây là liên kết đến cột )

Một chút về dữ liệu: Bạn có thể tìm thấy dữ liệu gốc tại đây . Đây là phiên bản thu nhỏ của tập dữ liệu gốc 82 GB.

Sau khi tôi huấn luyện CNN của mình về điều này, nó dự đoán 'Không có bệnh võng mạc tiểu đường' (No DR) mỗi lần, dẫn đến độ chính xác là 73%. Có phải lý do cho điều này chỉ là số lượng lớn các hình ảnh Không có DR hay thứ gì khác không? Tôi không có ý kiến! 5 lớp tôi có để dự đoán là ["Mild", "Moderate", "No DR", "Proliferative DR", "Severe"].

Nó có thể chỉ là mã xấu, hy vọng các bạn có thể giúp đỡ

Trả lời

1 Ivan Jan 18 2021 at 00:21

Tôi đã định bình luận:

Một cách tiếp cận chặt chẽ hơn sẽ là bắt đầu đo lường số dư tập dữ liệu của bạn: bạn có bao nhiêu hình ảnh của mỗi lớp? Điều này có thể sẽ đưa ra câu trả lời cho câu hỏi của bạn.

Nhưng tôi không thể không nhìn vào liên kết mà bạn đã cung cấp. Kaggle đã cung cấp cho bạn tổng quan về tập dữ liệu:

Tính nhanh: 25,812 / 35,126 * 100 = 73%. Điều đó thật thú vị, bạn đã nói rằng bạn có một độ chính xác 74%. Mô hình của bạn đang học trên một tập dữ liệu không cân bằng, với lớp đầu tiên được đại diện quá mức, 25k/35klà rất lớn. Giả thuyết của tôi là mô hình của bạn tiếp tục dự đoán lớp đầu tiên, có nghĩa là trung bình bạn sẽ có độ chính xác là 74%.

Điều bạn nên làm là cân bằng tập dữ liệu của mình. Ví dụ bằng cách chỉ cho phép các 35,126 - 25,810 = 9,316ví dụ từ lớp đầu tiên xuất hiện trong một kỷ nguyên. Tốt hơn nữa, hãy cân bằng tập dữ liệu của bạn trên tất cả các lớp sao cho mỗi lớp sẽ chỉ xuất hiện n lần mỗi lớp, mỗi kỷ nguyên.

2 Shai Jan 18 2021 at 04:30

Như Ivan đã lưu ý rằng bạn có một vấn đề mất cân bằng lớp học. Điều này có thể được giải quyết thông qua:

  1. Khai thác phủ định cứng trực tuyến: tại mỗi lần lặp lại sau khi tính toán khoản lỗ, bạn có thể sắp xếp tất cả các phần tử trong lô thuộc lớp "không có DR" và chỉ giữ lại phần tử tồi tệ nhất k. Sau đó, bạn ước tính gradient chỉ bằng cách sử dụng k tệ hơn này và loại bỏ tất cả phần còn lại.
    xem, ví dụ:
    Abhinav Shrivastava, Abhinav Gupta và Ross Girshick Đào tạo Máy dò tìm đối tượng dựa trên khu vực với Khai thác ví dụ cứng trực tuyến (CVPR 2016)

  2. Mất tiêu điểm: một sửa đổi đối với mất entropy chéo "vani" có thể được sử dụng để giải quyết sự mất cân bằng lớp.


Bài viết liên quan cái này và cái này .