Đồng thuận 90% mà kappa gần 0
Đồng thuận 90% mà kappa gần 0
Hai người soát cùng một nghìn câu trả lời và trùng nhau ở 900 câu. Nghe như một bộ nhãn rất đáng tin. Trừ khi bạn hỏi thêm: nếu cả hai chỉ nhắm mắt gắn nhãn theo thói quen của mình thì họ đã trùng nhau bao nhiêu câu rồi?
Câu "hai người chấm đồng ý 90% các trường hợp" xuất hiện trong hầu hết bài báo có gắn nhãn thủ công, và bây giờ nó còn xuất hiện trong các báo cáo kiểu "mô hình chấm khớp với người chấm 92%" khi người ta dùng một LLM làm giám khảo. Con số đó gọi là tỉ lệ đồng thuận quan sát được, viết tắt Po. Nó có thật, dễ tính, và trong rất nhiều tình huống nó gần như vô nghĩa.
Lý do nằm ở chỗ Po không hỏi câu quan trọng nhất: phần trùng nhau ấy có cần đến kỹ năng nào không? Nếu 95% dữ liệu thuộc về một nhãn duy nhất và cả hai người chấm đều biết điều đó, họ chỉ cần gắn nhãn phổ biến cho mọi thứ là đã trùng nhau 90% mà không cần đọc gì cả. Cohen kappa được dựng lên đúng để trả lời câu đó: nó ước lượng phần đồng thuận mà may rủi cũng làm được, gọi là Pe, rồi chỉ tính công cho phần vượt lên trên mức ấy.
Po = (tổng đường chéo) / nPo = (3 + 897) / 1000 = 900 / 1000 = 0.9000Pe = tổng theo từng nhãn k của (tổng hàng k / n) × (tổng cột k / n)| nhãn k | tổng hàng (A) | tổng cột (B) | tích / n = trùng do may rủi | trùng thật | số hạng của Pe |
|---|---|---|---|---|---|
| vi phạm | 50 | 56 | 50×56/1000 = 2.80 | 3 | 0.0028 |
| an toàn | 950 | 944 | 950×944/1000 = 896.80 | 897 | 0.8968 |
| cộng lại | 1000 | 1000 | 899.60 | 900 | Pe = 0.8996 |
kappa = (Po - Pe) / (1 - Pe)kappa = (0.9000 - 0.8996) / (1 - 0.8996) = 0.0004 / 0.1004 = 0.00400.1004 và họ đi được 0.0004.0.00 tới 0.20 rồi nhảy sang 0.21, để hở đúng khoảng giữa, nên sáu ô ở trên là bảng đã được vá chứ không phải bảng gốc: khoảng hở gộp lên ô trên, nên kappa 0.205 ra tạm, còn giá trị rơi đúng vào mốc thì lùi xuống ô dưới, nên kappa 0.20 chẵn vẫn là rất kém. Chính hai tác giả gọi các mốc này là chia tuỳ ý, và nhiều người sau đó chỉ ra rằng cùng một kappa 0.61 có thể là quá tệ cho chẩn đoán ung thư mà lại thừa đủ cho việc gắn nhãn chủ đề tin tức. Đừng dùng thang này thay cho việc nghĩ về hậu quả của sai sót.min(50, 56) = 50 + min(950, 944) = 944, tức Po tối đa 0.9940, cho kappa tối đa 0.940. Với hai nhãn thì con số này luôn đạt được. Đây là lý do kappa của hai bộ dữ liệu có phân bố nhãn khác nhau không so được với nhau: trần của chúng đã khác nhau ngay từ đầu.n đang là 1000 và các tổng lề đang là 50, 950 phía A với 56, 944 phía B. Bấm rồi nhìn lại: các con số đó đổi, còn kappa 0.0040 thì không.Hãy làm năm việc trong sim, theo thứ tự.
Một: nhìn trạng thái mặc định trước khi bấm gì cả. Hai người soát 1000 câu trả lời của chatbot, gắn nhãn vi phạm hoặc an toàn. Họ trùng nhau ở 900 câu và lệch nhau ở 100 câu, nên Po là 90.0%. Bây giờ nhìn hai tổng lề: người A gắn vi phạm cho 50 câu, người B gắn vi phạm cho 56 câu. Cả hai đều gắn an toàn cho hơn 94% số câu.
Bảng ở bước 2 tính hậu quả của thói quen đó. Nếu mỗi người rút nhãn ngẫu nhiên độc lập với người kia nhưng vẫn giữ đúng tần suất của mình, họ sẽ trùng nhau ở 2.80 câu thuộc nhãn vi phạm và 896.80 câu thuộc nhãn an toàn, tức Pe bằng 0.8996, tương đương 89.96%. Thực tế họ trùng ở 3 câu vi phạm, hơn may rủi đúng 0.2 câu.
Cộng lại: tử số của kappa là 0.9000 trừ 0.8996 bằng 0.0004, mẫu số là 1 trừ 0.8996 bằng 0.1004, và kappa bằng 0.004. Thang Landis và Koch xếp nó vào mức rất kém. Hai con số đứng cạnh nhau trong sim, 90.0% và 0.004, cùng mô tả đúng một bảng dữ liệu, và chúng nói hai điều trái ngược nhau. Con số nói thật là con số thứ hai: gần như toàn bộ phần trùng nhau ở đây là do cả hai người cùng lười theo một kiểu, chứ không phải do họ cùng hiểu đúng tiêu chí.
Đây chính là chỗ dễ tự lừa mình nhất khi dùng LLM làm giám khảo. Trên một tập mà 97% mẫu là "không có vấn đề", một mô hình chỉ biết trả lời "không có vấn đề" cho mọi câu vẫn đạt tỉ lệ khớp 97% với người chấm, và bảng kết quả sẽ trông tuyệt vời. Kappa của nó bằng đúng 0, và sim có preset cho đúng ca đó.
Hai: bấm Kappa âm. Hai người chấm 100 bài, mỗi người cho đạt đúng 50 bài, nhưng họ chỉ trùng nhau ở 40 bài. Po là 40.0%, còn Pe là 50.0%, vì với hai tổng lề chia đôi thì rút ngẫu nhiên đã cho 50 bài trùng. Kappa bằng -0.200.
Kappa âm nghĩa là hai người còn trùng nhau ít hơn cả khi mỗi người nhắm mắt rút nhãn theo đúng thói quen của mình. Đó không phải lỗi tính toán và cũng không phải nhiễu vô hại: nó là dấu hiệu của một bất đồng có hệ thống. Thường gặp nhất là hai người đọc ngược nhau một tiêu chí mập mờ, hoặc hai người được phát hai phiên bản hướng dẫn khác nhau, hoặc một trong hai người đảo nhầm cột khi nhập liệu. Gặp kappa âm thì việc cần làm không phải là tính lại mà là đi đọc lại bản hướng dẫn gắn nhãn.
Ba: bấm Hai người hoàn toàn độc lập, rồi bấm Một người luôn chọn một nhãn. Preset đầu là một bảng dựng đúng bằng tích của hai tổng lề chia cho n, tức quyết định của người này không mang một chút thông tin nào về người kia. Po và Pe cùng bằng 50.0% và kappa bằng đúng 0. Preset sau còn thẳng thắn hơn: người A gắn an toàn cho cả 100 câu, không đọc câu nào. Họ vẫn trùng người B ở 60 câu, Po là 60.0%, và kappa vẫn bằng đúng 0.000.
Trường hợp thứ hai đáng nhớ vì nó đúng với gần như mọi bảng có một người chấm bất động: khi toàn bộ dữ liệu dồn vào một hàng thì bảng tự động bằng tích các tổng lề, nên Po bằng Pe và kappa triệt tiêu, bất kể tỉ lệ trùng thô là 60% hay 99%. Có đúng một ngoại lệ và bạn sẽ gặp nó ở cuối mục này: nếu người kia cũng chỉ dùng một nhãn duy nhất thì Pe bằng 1, mẫu số biến mất, và kappa không xác định chứ không bằng 0. Cổng kiểm số của bài này khẳng định phần chính trên hàng trăm bảng sinh ngẫu nhiên, với sai số đúng bằng 0 chứ không phải xấp xỉ, và nó tách riêng ca ngoại lệ ra thay vì giấu đi.
Bốn: bấm Ba nhãn. Ba mức rủi ro an toàn, nhạy cảm, vi phạm trên 100 câu. Po là 82.0%, Pe là 62.85%, kappa là 0.515, mức vừa. Ở đây kappa không sụp về 0 vì phân bố nhãn tuy lệch nhưng không lệch đến mức tuyệt vọng như preset mặc định. Bạn cũng có thể tự chuyển giữa hai và ba nhãn bằng ô chọn Số nhãn trên thanh công cụ. Lưu ý một hành vi đúng nhưng dễ tưởng là hỏng: khi bạn tăng lên ba nhãn từ một bảng hai nhãn, nhãn mới chưa có mục nào nên số hạng thứ ba của Pe bằng 0 và kappa đứng yên. Sim nói rõ điều đó ngay dưới bảng. Ngược lại, hạ từ ba xuống hai nhãn thì mọi mục thuộc nhãn cuối biến mất khỏi bảng: nếu nhãn đó đang có mục thì n giảm và cả ba con số đều đổi, còn nếu bạn vừa thêm một nhãn rỗng rồi bỏ ngay thì không mất gì và không con số nào nhúc nhích. Sim đếm số mục thật sự bị bỏ rồi nói đúng trường hợp nào đang xảy ra, chứ không khẳng định bừa là n đã giảm.
Năm: thử hai nút ở khung Phép thử bất biến. Nút ×2 cỡ mẫu nhân mọi ô lên gấp đôi: n và mọi tổng lề đổi, kappa không nhúc nhích, vì cả Po lẫn Pe đều là tỉ lệ. Nút ⇄ Đổi chỗ nhãn hoán vị nhãn cho cả hai người cùng lúc: các ô chuyển chỗ, kappa vẫn thế, vì kappa không biết nhãn nào tên gì. Hai nút này không phải trang trí, chúng là hai bất biến mà cổng kiểm số cũng khẳng định trên hàng trăm bảng ngẫu nhiên. Nếu một ngày bạn sửa công thức và một trong hai bất biến gãy, tức là bạn đã cài sai.
Cuối cùng bấm Cả hai chỉ dùng một nhãn. Cả hai gắn an toàn cho toàn bộ 120 câu, Po bằng 100.0%, Pe cũng bằng 100.0%, mẫu số 1 trừ Pe bằng 0 và kappa không xác định. Sim in dấu ? và từ chối trả lời. Cần nói thẳng: đây là một quy ước. Có thư viện trả về 0 ở đây, có thư viện trả về 1, cả hai đều là con số người ta tự đặt vào chỗ phép chia không hợp lệ. Nút Xoá hết về 0 cho một ca tương tự: không còn mục nào, cả Po lẫn Pe đều không có mẫu số, và sim in ? thay vì bịa ra số 0.
Thang diễn giải là quy ước, không phải toán học
Bảng gốc của Landis và Koch (1977) chia sáu mức: dưới 0 là kém hơn đoán mò, 0.00 tới 0.20 là rất kém, 0.21 tới 0.40 là tạm, 0.41 tới 0.60 là vừa, 0.61 tới 0.80 là khá, 0.81 tới 1.00 là gần như hoàn hảo. Dải sáu ô trong sim là bảng đó sau khi vá các khoảng hở, nên nó in mốc liền nhau 0.00 tới 0.20, rồi 0.20 tới 0.40 và cứ thế, chứ không in 0.21. Dải này có mặt trong sim vì bạn sẽ gặp nó ở khắp nơi, không phải vì nó đáng tin.
Cần biết ba điều về nó:
- Nó không có cơ sở toán học nào. Chính hai tác giả viết rằng các mốc này do họ chia ra một cách tuỳ ý để tiện trình bày, chứ không phải rút ra từ tính chất của kappa. Không có định lý nào nói
0.61là ranh giới của cái gì cả. - Bảng gốc có lỗ. Nó ghi
0.00tới0.20rồi nhảy sang0.21, để hở đúng khoảng giữa hai mốc. Với dữ liệu thực thì kappa0.205rơi vào chỗ không tên. Sim này phải tự vá theo hai chiều ngược nhau: khoảng hở gộp lên mức trên, nên0.205được xếp làtạm, còn giá trị rơi đúng vào mốc thì lùi xuống mức dưới, nên0.20chẵn vẫn làrất kém. Cả hai nửa của cách vá đó chỉ là một quy ước nữa chồng lên quy ước cũ. - Cùng một con số nhưng hậu quả khác nhau. Kappa
0.61là quá tệ cho một hệ đọc ảnh chẩn đoán ung thư và lại thừa đủ cho việc gắn nhãn chủ đề tin tức. Nhiều nhà phương pháp luận đã chỉ trích thói quen dán nhãn "khá" hay "vừa" lên một con số rồi coi như đã xong phần thảo luận. Ngưỡng chấp nhận phải đến từ chi phí của sai sót trong bài toán của bạn, không đến từ một bảng in năm 1977.
Hạn chế của chính kappa
Kappa sửa được cái sai của Po, nhưng nó mang theo cái sai của riêng mình, và cái này ít người nói tới.
Nhìn dòng Trần của kappa với đúng hai tổng lề này trong sim. Ở trạng thái mặc định, giữ nguyên số lần mỗi người dùng mỗi nhãn và chỉ xếp lại các mục cho khớp nhau nhiều nhất có thể, đường chéo lớn nhất là min(50, 56) cộng min(950, 944), tức Po tối đa 0.9940, cho kappa tối đa 0.940. Nghĩa là ngay cả hai người chấm hoàn hảo, chỉ cần họ dùng nhãn hiếm với số lần hơi lệch nhau, cũng không bao giờ đạt được kappa 1. Ở preset Một người luôn chọn một nhãn, trần đó tụt xuống đúng 0.000: với hai tổng lề như vậy thì không có cách xếp nào cho kappa dương cả.
Hệ quả rất thực tế: kappa của hai bộ dữ liệu có phân bố nhãn khác nhau thì không so được với nhau. Một bộ dữ liệu cân bằng dễ cho kappa cao, một bộ dữ liệu lệch nặng bị kappa phạt ngay cả khi hai người chấm làm việc cẩn thận như nhau. Câu "kappa của chúng tôi là 0.72, cao hơn 0.61 của công trình trước" chỉ có nghĩa khi hai bên gắn nhãn trên cùng một phân bố. Đây là nghịch lý kappa đã được mô tả từ lâu: Po cao đi cùng kappa thấp khi nhãn lệch, và với hai bảng cùng Po thì bảng nào có tổng lề lệch hơn lại cho kappa khác hẳn.
Vậy nên làm gì? Bốn thói quen tối thiểu:
- Báo cáo
Po,Pevà kappa cùng lúc, không bao giờ báo cáo riêng một con số. Chỉ nhìn ba con số cạnh nhau mới biếtPeđang chiếm bao nhiêu phần. - Kèm theo phân bố nhãn của từng người chấm, tức hai vector tổng lề. Không có nó thì người đọc không kiểm được trần của kappa.
- Với nhãn có thứ tự, chẳng hạn thang một tới năm sao, hãy dùng kappa có trọng số, vì lệch một bậc không nên bị phạt ngang lệch bốn bậc. Sim này chỉ làm kappa không trọng số cho nhãn định danh.
- Với hơn hai người chấm thì Cohen kappa không dùng được, phải chuyển sang Fleiss kappa hoặc Krippendorff alpha. Sim này chỉ dựng đúng hai người.
Tỉ lệ đồng thuận thô Po không nói được gì nếu bạn chưa biết Pe. Trên dữ liệu lệch nhãn, Po bằng 90% có thể đi kèm kappa 0.004, nghĩa là hai người chấm gần như không đồng thuận hơn hai đồng xu. Kappa âm còn tệ hơn cả đoán mò và luôn là dấu hiệu hướng dẫn gắn nhãn có vấn đề. Nhưng kappa cũng không phải quan toà cuối cùng: nó bị phân bố nhãn khống chế, có trần riêng cho mỗi cặp tổng lề, và thang diễn giải quen thuộc đi kèm nó chỉ là quy ước do người ta đặt ra. Hãy báo cáo cả ba con số, kèm phân bố nhãn, rồi tự quyết định ngưỡng theo hậu quả của sai sót trong bài toán của mình.
- 1Ở trạng thái mặc định của sim, Po là 90.0% còn kappa chỉ 0.004. Điều gì tạo ra khoảng cách đó?
- 2Preset "Kappa âm" cho Po là 40.0%, Pe là 50.0% và kappa là -0.200. Kappa âm nghĩa là gì?
- 3Hai nhóm dùng cùng quy trình gắn nhãn nhưng trên hai tập dữ liệu khác nhau: nhóm A báo kappa 0.30, nhóm B báo kappa 0.75. Kết luận nào đúng?