[MLE - 02] Evaluation Metric
Bài đăng này đã không được cập nhật trong 3 năm
Chào các bạn, trong bài viết trước ta đã thấy được khó khăn trong quá trình đánh giá một mô hình Machine Learning, không chỉ thuần thuý sử dụng độ chính xác hay test trên một tập dữ liệu bất kì có thể cho ta biết được vấn đề của chúng. Hôm nay chúng ta sẽ làm rõ hơn về vấn đề này.
1. Cần gì để đánh giá một mô hình Machine Learning ?
Mục đích ta đánh giá mô hình Machine Learning nhằm giúp cho team nhận thức được rằng chuyện gì đang xảy ra với mô hình của mình, và từ đó xác định được ta nên làm gì tiếp theo. Như trong bài viết trước ta đã thử đánh giá một mô hình phân loại các bức ảnh có người hay không ? Cách ta sử dụng là đo độ chính xác của mô hình dựa trên một tập dữ liệu nào đó. Bạn sẽ tự hỏi, sao không tự tay thử, đúng sai ta sẽ ghi lại để thống kê. Dĩ nhiên là không, một hệ thống Machine Learning được thử bằng "tay" sẽ chỉ khiến bạn mất thời gian và tiền ... điện. Cũng giống như việc ta nhắm bắn vào một tấm bia, ta cần một số thứ trong tay để có thể đánh giá được chúng, chưa kể đến chúng có hữu dụng hay không:
- Mô hình sau khi training: nó giống như việc bạn cần 1 khẩu súng, hay cây cung (và tất nhiên cả mũi tên) để có thể có cái mà ngắm và bắn vào bia.
- Mục tiêu: đây chính là cái bia của bạn, không biết mục tiêu là gì thì bạn sao có thể ngắm hay bắn được. Trong ví dụ lần trước ta có thể nói đó chính là cái độ chính xác mà bạn mong muốn, bạn muốn 99%, hãy đưa mô hình tới mức chính xác đó tức là ta đã bắn trúng mục tiêu.
- Thước đo: dù đã có bia và vũ khí, nhưng sau mỗi lần bắn trượt, ta muốn lần kế tiếp phải tốt hơn, dĩ nhiên ta cần một cái gì đó để đo đạc, để biết rằng trong lần thử tiếp theo, ta đang làm tốt lên hay tệ đi. Chẳng hạn ngắm dịch sang trái 1cm thì bắn trúng điểm cách tâm bao xa, có gần tâm hơn so với không ngắm dịch sang trái không ?
Về cơ bản ta chỉ cần 3 thứ trên là có thể biết được mô hình đang tốt lên hay tệ đi. Với mô hình sau khi training, đó là điều tất yếu chúng ta sẽ có, vậy nên điểm quan trọng ở đây là bạn chọn mục tiêu và thước đo như thế nào ? Bạn nhắm vào mục tiêu 99% chính xác trên tập ảnh có 99% là ảnh không người trên 1% ảnh có người nhưng lại đem cho khách hàng thử trên trường hợp 50%/50% có người trong ảnh thì khả năng cao là bạn đặt sai mục tiêu. Khách muốn bia A nhưng bạn lại thiết lập bia B thì không khác gì lạc đề Và trong bài trước các bạn đã thấy, dùng độ chính xác trên tập dữ liệu có vẻ không được hữu dụng lắm, giả như 99% chính xác kia bạn nhận được trên 99% chính xác của ảnh không người và 99% chính xác của ảnh có người thì con số đó thật tuyệt vời. Nhưng trong ví dụ đó bạn lại nhận đc 100% chính xác trên ảnh không người và 0% chính xác trên ảnh có người, vậy nên có lẽ ta cần một thước đo khác tốt hơn.
2. Trade off & Single Evaluation metric ?
Vậy ta có 2 thứ cần quan tâm, "tấm bia" và "cái thước". Trước tiên hãy nói về "cái thước", ở đây chính là những thông số (Evaluation metric) ta dùng để đánh giá mô hình. Trong ví dụ "có người trong ảnh" Evaluation metric của ta là Accuracy (độ chính xác), nhưng nếu như ta có cả độ chính xác trên ảnh có người (nhãn 1) và không (nhãn 0) người riêng có lẽ sẽ tốt hơn. Như vậy ta sẽ có 2 thông số để đánh giá cho mô hình. Ta thử thay đổi vài thứ như loại mô hình, cấu trúc hay số lượng neurons, layer... và thu được một số kết quả như sau:
- Model 1: 99% acc trong đó 100% acc trên ảnh không người, 0% acc trên ảnh có người
- Model 2: 94.1% acc trong đó 95% acc trên ảnh không người, 5% acc trên ảnh có người
- Model 3: 80.2% acc trong đó 80% acc trên ảnh không người 100% acc trên ảnh có người
Giả sử như ta vẫn dùng cùng tập data để tính độ chính xác cho các mô hình. Vậy trong các mô hình trên, cái nào tốt hơn ? Nếu xét theo độ chính xác trên toàn tập thì mô hình 1 tốt nhất, nhưng như ta đã chỉ ra trong bài trước, nó chẳng tốt chút nào. Nếu như xét trên từng loại nhãn mô hình 2 dự đoán tốt hơn trên nhãn 0 và có độ chính xác cao hơn, còn mô hình 3 dự đoán tốt hơn trên nhãn 1 và có độ chính xác thấp hơn. Đến đây thực sự ta chẳng có chút lý tính nào để xác định xem mô hình nào tốt hơn, chỉ biết mô hình này tốt hơn mô hình kia ở một phương diện nào đó ! Điểm đặc biệt khi các bạn quan sát các mô hình trên là khi độ chính xác trên ảnh không người (nhãn 0) giảm xuống thì độ chính xác trên ảnh có người (nhãn 1) lại tăng lên. Vậy làm sao để ta biết được khi nào giảm chính xác ở nhãn 0 hay nhãn 1 là dấu hiệu tích cực. Ở đây rõ ràng có sự trade-off giữa việc dự đoán 2 nhãn, khi mô hình dự đoán nhiều bức ảnh là nhãn 1 hơn thì cũng đồng nghĩa với việc nó dễ đoán sai trên những ảnh nhãn 0 hơn. Vậy là nếu như ta sử dụng nhiều thông số để đánh giá một mô hình và nếu chúng bị trade-off lẫn nhau thì sẽ rất khó để biết mô hình nào tốt, mô hình nào tệ. Có lẽ tốt hơn hết ta chỉ nên có 1 thông số duy nhất để đại diện cho những thông số bị trade-off lẫn nhau hoặc những thông số ta chọn phải không được trade-off hay "orthogonalization" (bạn sẽ không muốn phải lái một chiếc xe mà khi nhấn phanh nó lại tiện thể rẽ sang trái đâu!). Hôm nay ta đã hiểu những điểm quan trọng của "thước đo", trong bài viết sau chúng ta sẽ tiếp tục tìm hiểu về "tấm bia" và sau đó là các loại "thước" ta nên dùng. Tài liệu tham khảo: http://www.deeplearning.org/
All rights reserved