Tôi đang phân loại lớp nhị phân bằng mạng nơron sâu. Bất cứ khi nào tôi đang sử dụng binary_crossentropy mô hình của tôi là không cho độ chính xác tốt (nó gần gũi hơn với các dự đoán ngẫu nhiên). Nhưng nếu tôi sử dụng crossentropy phân loại bằng cách làm cho kích thước của lớp đầu ra 2, tôi nhận được độ chính xác tốt trong chỉ có 1 kỷ nguyên đó là gần với 0,90. Bất cứ ai có thể vui lòng giải thích những gì đang xảy ra ở đây?Sự nhầm lẫn giữa Binary_crossentropy và Categorical_crossentropy
Trả lời
Tôi cũng có vấn đề này trong khi cố gắng sử dụng binary_crossentropy với kích hoạt softmax
trong lớp đầu ra. Theo như tôi biết, softmax
cho xác suất của mỗi lớp, vì vậy nếu lớp đầu ra của bạn có 2 nút, nó sẽ là một cái gì đó như p(x1)
, p(x2)
và x1 + x2 = X
. Do đó, nếu bạn chỉ có 1 nút đầu ra, nó sẽ luôn bằng 1,0 (100%), đó là lý do tại sao bạn gần với dự đoán ngẫu nhiên (trung thực, nó sẽ gần với phân phối danh mục của bạn trong bộ đánh giá).
Thử thay đổi nó thành phương thức kích hoạt khác như sigmoid
hoặc relu
.
Vì vậy, điều này có thể không có liên quan nữa, nhưng chỉ vì lý do thừa kế và rõ ràng: Softmax không trả về xác suất, mặc dù softmax đảm bảo rằng đầu ra của tất cả các nút trong lớp đầu ra của bạn thêm 1 (vì vậy theo cách đó nó giống như xác suất) . – TheLaurens
Cảm ơn bạn đã làm rõ @TheLaurens! –
- 1. Sự nhầm lẫn giữa Babel và Browserify/Webpack
- 2. Sự nhầm lẫn WM_KEYDOWN
- 3. Nhầm lẫn giữa SqlCommand & SqlDataAdapter
- 4. Sự nhầm lẫn và không gian tên
- 5. LINQ chứa sự nhầm lẫn
- 6. html.dropdownlist Sự nhầm lẫn MVC3
- 7. Nhầm lẫn giữa mảng và đối tượng trong Laravel
- 8. Sự nhầm lẫn COM/OLE/ActiveX/IDispatch
- 9. Python: nhầm lẫn giữa các loại và dtypes
- 10. nhầm lẫn giữa sencha touch 2 và PhoneGap
- 11. Java nhập nhầm lẫn
- 12. Phương pháp Ruby, Proc và sự nhầm lẫn khối
- 13. nhầm lẫn giữa std :: [tr1 ::] ref và boost :: ref
- 14. Sự nhầm lẫn loại phản hồi OpenIDConnect
- 15. Sự nhầm lẫn số phiên bản NodeJS
- 16. Sự nhầm lẫn đồng bộ hóa Java
- 17. .Net assembly giải quyết sự nhầm lẫn
- 18. Sự nhầm lẫn BOOLEAN hoặc TINYINT
- 19. Sự nhầm lẫn metaclass của Ruby
- 20. Cocoa-Touch - Ủy quyền sự nhầm lẫn
- 21. Java và .NET: Sự nhầm lẫn chuyển đổi Base64
- 22. FileStream WriteAsync và chờ đợi sự nhầm lẫn
- 23. Mảng C++ và sự nhầm lẫn tốc độ C# ptr
- 24. std :: bind và winsock.h ràng buộc sự nhầm lẫn
- 25. Sự nhầm lẫn khai báo lớp - tên giữa dấu ngoặc ôm và nửa dấu chấm phẩy
- 26. nhầm lẫn về danh sách và cặp
- 27. Ruby enum_for nhầm lẫn
- 28. Đồng thời và gây nhầm lẫn kênh
- 29. pygame.time.set_timer nhầm lẫn?
- 30. Magento getSingleton nhầm lẫn
Hiện tượng thú vị. Bạn có thể cho chúng tôi biết thêm chi tiết về tập dữ liệu và/hoặc mã mà bạn sử dụng không? –
Tôi đồng ý với Marcin, một số thông tin khác sẽ rất hữu ích. Chức năng kích hoạt của lớp đầu ra khi bạn sử dụng binary_corssentropy và khi bạn sử dụng categorical_crossentropy là gì? Ngoài ra, là sự cân bằng lớp học trong tập huấn luyện từ 10 đến 1? – Dimosthenis
Chức năng kích hoạt tôi đang sử dụng cho cả hai trường hợp là softmax. Mô hình này vẫn giữ nguyên cho cả hai trường hợp. Chỉ cho trường hợp của crossentropy nhị phân kích thước của lớp cuối cùng là 1 trong khi nó là 2 cho phân loại. Hãy cho tôi biết nếu có bất kỳ thông tin nào khác được yêu cầu. –