Điểm số nhạy theo quy ước
Điểm số nhạy theo quy ước
Một bản dịch, một độ đo, ba mươi hai con số. Điểm số không phải thuộc tính của mô hình, nó là thuộc tính của mô hình cộng với bộ quy ước dùng để đo.
Ở bài BLEU và phép cắt ngọn bạn đã bấm từng mảnh của công thức. Công thức đó cố định: cắt ngọn, độ chính xác từng bậc, trung bình nhân, phạt câu ngắn. Nhưng trước khi công thức chạy được, ai đó phải quyết định cái gì là một token. Hạ chữ thường hay không, dấu câu tính hay bỏ, tiếng Việt tách theo âm tiết hay theo từ ghép, chữ gõ bằng phím tổ hợp có chuẩn hoá không. Mấy quyết định đó thường nằm trong sáu dòng đầu của một script chấm điểm tự viết, không ai nhắc tới trong bài báo.
Sim dưới đây biến từng dòng đó thành một công tắc thật. Bản dịch và bản tham chiếu bạn sửa được. Với mỗi bộ quy ước, BLEU được tính lại từ đầu trên đúng cái văn bản đang có trong ô, không có điểm nào lưu sẵn.
con mèotấm thảmphòng kháchhọc sinhmáy tínhmáy tính bảngngôn ngữbuổi sáng| Bậc | Trúng sau cắt ngọn | Tổng cụm | pn trần | pn đang dùng |
|---|---|---|---|---|
| 1 | 8 | 10 | 8 / 10 | 80.00% |
| 2 | 6 | 9 | 6 / 9 | 66.67% |
| 3 | 4 | 8 | 4 / 8 | 50.00% |
| 4 | 2 | 7 | 2 / 7 | 28.57% |
| Hạng | hoa | dấu câu | từ ghép | NFC | mượt | BLEU-4 | So với dòng đang chọn |
|---|---|---|---|---|---|---|---|
| 1 | ✓ | ✓ | · | ✓ | ✓ | 89.09% | +36.55 |
| 2 | ✓ | ✓ | · | ✓ | · | 88.01% | +35.47 |
| 3 | ✓ | ✓ | ✓ | ✓ | ✓ | 85.99% | +33.46 |
| 4 | ✓ | ✓ | ✓ | ✓ | · | 84.09% | +31.55 |
| 5 | · | ✓ | · | ✓ | ✓ | 78.17% | +25.63 |
| 6 | · | ✓ | · | ✓ | · | 75.98% | +23.45 |
| 7 | · | ✓ | ✓ | ✓ | ✓ | 63.12% | +10.58 |
| 8 | ✓ | · | · | ✓ | ✓ | 62.80% | +10.26 |
| 9 | ✓ | · | ✓ | ✓ | ✓ | 60.49% | +7.96 |
| 10 | · | ✓ | ✓ | ✓ | · | 58.74% | +6.20 |
| 11 | ✓ | ✓ | · | · | ✓ | 58.44% | +5.91 |
| 12 | · | · | · | ✓ | ✓ | 58.44% | +5.91 |
| 13 | ✓ | · | · | ✓ | · | 58.14% | +5.60 |
| 14 | ✓ | · | ✓ | ✓ | · | 54.11% | +1.57 |
| 15 | · | · | · | ✓ | · | 53.73% | +1.19 |
| 16 | ✓ | ✓ | · | · | · | 52.54% | đang xem |
| 17 | · | · | ✓ | ✓ | ✓ | 50.71% | −1.83 |
| 18 | · | ✓ | · | · | ✓ | 46.48% | −6.06 |
| 19 | · | · | ✓ | ✓ | · | 44.63% | −7.91 |
| 20 | ✓ | ✓ | ✓ | · | ✓ | 42.78% | −9.76 |
| 21 | ✓ | · | · | · | ✓ | 41.33% | −11.21 |
| 22 | · | ✓ | · | · | · | 37.99% | −14.55 |
| 23 | · | · | · | · | ✓ | 37.61% | −14.93 |
| 24 | ✓ | · | ✓ | · | ✓ | 32.50% | −20.04 |
| 25 | ✓ | · | · | · | · | 32.47% | −20.07 |
| 26 | · | ✓ | ✓ | · | ✓ | 30.64% | −21.89 |
| 27 | · | · | · | · | · | 29.07% | −23.47 |
| 28 | · | · | ✓ | · | ✓ | 26.97% | −25.57 |
| 29 | · | · | ✓ | · | · | 0.00% | −52.54 |
| 30 | ✓ | · | ✓ | · | · | 0.00% | −52.54 |
| 31 | · | ✓ | ✓ | · | · | 0.00% | −52.54 |
| 32 | ✓ | ✓ | ✓ | · | · | 0.00% | −52.54 |
Năm công tắc, và cái mà từng cái thật sự làm
Ở cặp câu mặc định, bản dịch chỉ sai đúng một từ cuối, mới thay vì cũ. Mọi khác biệt còn lại chỉ là cách viết: chữ C viết hoa đầu câu, một dấu phẩy, một dấu chấm, và chữ nằm được gõ bằng phím tổ hợp nên nó là bốn mã Unicode chứ không phải ba. Sim mở ra ở bộ quy ước quen thuộc nhất là hạ chữ thường cộng bỏ dấu câu, đúng bộ mà bài BLEU trước cài cứng vào bộ tách của nó, và báo 52,54%.
Mỗi công tắc tự báo nó đổi điểm ở bao nhiêu cặp tổ hợp. Với cặp câu mặc định:
- Hạ chữ thường đổi điểm ở 14 trên 16 cặp. Không hạ thì
Convàconlà hai token khác nhau, một từ trúng thành trượt, và mọi cụm chứa nó cũng trượt theo. - Bỏ dấu câu đổi điểm ở 14 trên 16 cặp. Giữ dấu câu theo kiểu tách trắng thô thì
đen,khácđen, một dấu phẩy ở giữa câu đủ để chặt cụm 4 từ làm đôi. - Tách theo từ ghép đổi điểm ở cả 16 cặp. Từ điển viết tay gộp
con mèovàtấm thảmthành một token, câu ngắn lại từ 10 xuống 8 token, nênc,r, số cụm và cả phạt độ dài đều đổi. - Chuẩn hoá NFC đổi điểm ở cả 16 cặp, và đây là công tắc mạnh nhất: giữa hai dòng đều còn sống, chỉ bật NFC thôi là điểm nhảy tới 43,22 điểm phần trăm. Hai chữ
nằmhiện trên màn hình giống hệt nhau, nhưng một bên là ba mã và bên kia là bốn mã, nên trước khi chuẩn hoá chúng là hai token khác nhau. - Làm mượt add-1 đổi điểm ở cả 16 cặp, nhưng giữa hai dòng đều còn sống thì nó chỉ lệch nhiều nhất 8,86 điểm. Con số nhỏ đó mới là tác động thật của add-1; chỗ nó trông ghê gớm là khi nó kéo một dòng đã sụp về 0 trở lại, và đó là chuyện khác hẳn, mục dưới nói kỹ.
Sim cố ý báo hai mức lệch cho mỗi công tắc, vì gộp chúng lại là nói sai nguyên nhân. Ví dụ từ ghép lệch nhiều nhất 17,24 điểm giữa hai dòng còn sống, nhưng con số vọt lên 52,54 điểm nếu tính cả cặp mà bật từ ghép làm dòng đó rơi thẳng xuống 0. Cái 52,54 ấy đo độ sâu của vực chứ không đo tầm với của công tắc.
Hai chi tiết đáng để ý ở đây, vì chúng phá vỡ cảm giác rằng năm công tắc là năm hiệu ứng cộng lại. Thứ nhất, từ điển từ ghép viết bằng chữ thường và khớp bằng so token đúng nguyên văn, nên nó không gộp được Con mèo khi chữ hoa còn nguyên, cũng không gộp được tấm thảm. khi dấu chấm còn dính. Công tắc từ ghép mạnh hay yếu tuỳ vào hai công tắc kia đang ở đâu. Thứ hai, ở preset Toàn từ ghép, gộp từ ghép làm điểm giảm chứ không tăng. Muốn thấy điều đó bằng đúng một cú bấm thì phải bật làm mượt trước, để cả hai dòng cùng còn sống: lúc ấy gạt riêng công tắc từ ghép kéo điểm từ 70,49% xuống 53,18%. Nếu để làm mượt tắt như mặc định thì cùng cú bấm ấy đưa dòng 66,06% xuống thẳng 0,00%, mà đó là vực sụp của mục dưới chứ không phải tầm với của quy ước. Câu ngắn lại thì mỗi từ sai chiếm tỉ trọng lớn hơn. Một quy ước không phải là một cái nút chỉnh độ khó, nó đổi cả hình dạng bài toán.
Nhưng phải nói rõ chi tiết thứ nhất là hiện vật cài đặt, không phải hiện tượng ngôn ngữ. Một bộ tách từ tiếng Việt thật hạ chữ thường trước khi tra từ điển, nên nó vẫn nhận ra Con mèo. Trong 16 tổ hợp của công tắc từ ghép, có 8 tổ hợp tách token khác đi chỉ vì từ điển đồ chơi này khớp phân biệt hoa thường, đúng 8 tổ hợp đang tắt hạ chữ thường. Nghĩa là một nửa cái vẻ "quy ước tương tác với nhau" mà bạn thấy ở công tắc này là do bản cài đặt, không phải do việc tách từ. Phần còn lại thì thật: ngay khi từ điển gộp được đủ cả hai cụm, gộp từ ghép vẫn đổi hẳn số token và đổi hẳn điểm.
Bảng 32 dòng là phần đắt nhất của bài
Năm công tắc cho 2^5 bằng 32 bộ quy ước, và bảng cuối sim liệt kê đủ cả 32, sắp từ cao xuống thấp, có đánh dấu dòng bạn đang xem. Với cặp câu mặc định:
| Con số | Giá trị |
|---|---|
| Cao nhất, hạ chữ thường + bỏ dấu câu + NFC + làm mượt | 89,09% |
| Thấp nhất trong các dòng chưa sụp | 26,97% |
| Khoảng dao động do quy ước | 62,12 điểm |
| Thấp nhất kể cả dòng sụp | 0,00% |
| Khoảng dao động nếu tính cả dòng sụp | 89,09 điểm |
| Số tổ hợp sụp về đúng 0 | 4 trên 32 |
| Số con số khác nhau | 28 trên 32 dòng |
| Trạng thái mặc định của sim | 52,54%, đứng hạng 16 trên 32 |
Đọc lại dòng cuối cho kỹ: bộ quy ước quen thuộc nhất chỉ đứng giữa bảng, có 15 bộ quy ước khác cho điểm cao hơn, và không bộ nào trong số đó là gian lận. Mỗi bộ đều là một script chấm điểm hợp lý mà ai đó có thể đã viết thật.
Hai loại số 0, và vì sao chỉ một loại được tính vào con số tít
Bảng có bốn dòng báo 0 tròn. Rất dễ đọc chúng thành "có bộ quy ước chấm bản dịch này là vô giá trị", và đó là cách hiểu sai. Không dòng nào trong bốn dòng đó là một phán quyết về chất lượng bản dịch.
Cả bốn đều là cùng một chuyện: bật từ ghép, tắt NFC, tắt làm mượt. Gộp từ ghép làm câu ngắn lại còn 8 hoặc 9 token, và trong câu 8 token thì bản dịch có đúng 5 cụm 4 từ: con_mèo đen đang nằm, đen đang nằm ngủ, đang nằm ngủ trên, nằm ngủ trên tấm_thảm, ngủ trên tấm_thảm mới. Bốn cụm đầu đều chứa chữ nằm gõ bằng phím tổ hợp, cụm cuối chứa chữ sai mới. Không cụm nào trúng, p4 bằng 0/5, và ở hai dòng còn lại là 0/6. BLEU là trung bình nhân, nên một thừa số bằng 0 kéo cả tích về 0 bất kể ba bậc kia đang đẹp đến đâu. Trong bốn dòng ấy p1 chạy từ 4/9 tới 6/8, tức từ vẫn trúng bình thường chứ bản dịch không hề trượt sạch.
Bằng chứng dứt điểm rằng đây không phải quy ước bất đồng: giữ nguyên đúng bộ quy ước ấy, chỉ bật thêm làm mượt, thì bốn dòng đó báo lần lượt 26,97% / 30,64% / 32,50% / 42,78%. Toàn số bình thường. Cái sụp về 0 là vực sụp của BLEU-4 khi chấm từng câu, một tật đã biết của độ đo, không phải hệ quả của việc ai đó chọn tách token kiểu này thay vì kiểu kia.
Vì vậy con số tít của bài là 62,12 điểm, lấy dòng cao nhất 89,09% trừ dòng thấp nhất còn sống 26,97%. Đó là phần dao động thuần do quy ước. Nếu bạn chấp nhận luôn cả bốn dòng sụp, con số nới ra 89,09 điểm, nhưng 26,97 điểm nới thêm ấy đo độ sâu của vực sụp chứ không đo thêm chút bất đồng nào giữa các quy ước. Gộp hai thứ vào một con số rồi gọi tất cả là "dao động do quy ước" là dạy sai nguyên nhân, nên bài không làm thế.
Có một cách kiểm chéo tiện: nếu bạn coi làm mượt là bắt buộc và chỉ nhìn 16 dòng có làm mượt, khoảng dao động cũng đúng 62,12 điểm. Hai cách khử vực sụp cho cùng một con số ở cặp câu này, vì dòng thấp nhất còn sống tình cờ cũng là một dòng có làm mượt. Sim in cả hai để bạn thấy chúng không phải lúc nào cũng phải trùng.
Sim còn phân biệt ba lý do một dòng có thể về 0, và nói rõ dòng nào thuộc lý do nào: bậc nào đó có cụm nhưng không trúng cụm nào như bốn dòng ở đây; câu ngắn hơn 4 token nên bậc cao nhất không có cụm nào để chấm; hoặc một vế rỗng nên không có gì để đo. Chỉ lý do thứ ba là "không có dữ liệu", hai lý do đầu đều là tật của BLEU-4 mức câu. Không lý do nào trong ba là quy ước chê bản dịch.
Để so sánh: trong một bài báo dịch máy, hệ thống mới thắng hệ thống cũ 1 tới 2 điểm BLEU đã đủ để viết thành một đóng góp. Ngay cả con số đã khử vực sụp, 62,12 điểm, vẫn lớn hơn khoảng cách đó hàng chục lần. Nếu hai nhóm không chấm bằng cùng một bộ quy ước thì việc đặt hai con số cạnh nhau không nói lên gì cả, kể cả khi cả hai đều trung thực.
Ba ca đáng bấm thử
Chỉ khác cách gõ dấu. Hai câu trông giống hệt nhau trên màn hình. Không có chữ hoa, không có dấu câu, nên hai công tắc đó nằm im và sim ghi rõ 0/16 cặp tổ hợp đổi điểm. Đây là chỗ dễ tưởng núm hỏng nhất, nên sim nói thẳng lý do thay vì để bạn đoán. NFC thì ngược lại, nó quyết định tất cả: cả 16 tổ hợp có bật NFC đều báo đúng 100%, còn 16 tổ hợp tắt NFC rơi xuống dải 48,55% tới 59,46%, và bốn trong số đó sụp hẳn về 0. Cũng vì bốn dòng sụp ấy mà bảng trải trọn từ 0% tới 100%, nhưng mức lệch thật của riêng công tắc NFC, đo giữa hai dòng đều còn sống, là 51,45 điểm.
Không có gì đổi được. Bản dịch trùng khít tham chiếu, cả 32 tổ hợp đều cho 100%, khoảng dao động đúng bằng 0. Chú ý một khác biệt tinh tế mà sim vẫn báo đúng: công tắc từ ghép có chỗ để bám, vì con mèo và tấm thảm đều nằm trong từ điển, nhưng nó gộp giống hệt nhau ở cả hai vế nên không đổi được điểm nào. Có chỗ bám và có tác dụng là hai chuyện khác nhau.
Câu dịch rỗng. Không có token nào thì c bằng 0, phạt độ dài bằng 0, mọi tổ hợp cho 0. Khoảng dao động cũng bằng 0 nhưng vì một lý do hoàn toàn khác: không phải các quy ước đồng ý với nhau, mà là không có gì để đo.
Kết luận đúng mức
Điều này không có nghĩa mọi so sánh đều vô nghĩa. Cùng một cặp câu, mọi bộ quy ước đều xếp bản dịch trùng khít trên bản dịch sai một từ. Thứ tự giữa hai hệ thống rất khác nhau thường sống sót qua đổi quy ước. Cái không sống sót là con số, và ba thói quen dựa vào con số:
- so BLEU của bài mình với BLEU trích từ bảng của một bài khác,
- báo cáo mức cải thiện nhỏ hơn khoảng dao động do quy ước,
- chọn bộ quy ước cho điểm đẹp nhất rồi mới viết bài.
Cái thứ ba nguy hiểm nhất vì nó không cần nói dối một câu nào. Bảng 32 dòng chính là bảng để chọn.
Cách chữa không phải là bỏ BLEU, mà là đóng băng quy ước và công bố nó. Đó đúng là lý do sacreBLEU ra đời: nó cài sẵn một bộ tách token cố định, in kèm một chuỗi chữ ký ghi rõ phiên bản và mọi tuỳ chọn, và bài báo dán nguyên chuỗi đó vào. Người đọc không phải tin bạn đã tiền xử lý thế nào, họ đọc được. Quy tắc rút gọn cho đồ án của bạn: đừng tự cài độ đo để báo cáo kết quả cuối, dùng bộ chấm chuẩn; còn nếu buộc phải tự cài, hãy ghi lại đủ năm quyết định ở trên và nộp kèm mã nguồn.
Một điểm số là kết quả của mô hình cộng quy ước đo, không phải của riêng mô hình. Cùng bản dịch trong sim này được báo cáo hợp lệ từ 26,97% tới 89,09%, tức 62,12 điểm chênh nhau chỉ do quy ước, trong khi một đóng góp đăng được thường chỉ hơn 1 tới 2 điểm. Nếu tính cả bốn tổ hợp rơi xuống 0 thì dải rộng tới 89,09 điểm, nhưng phần nới thêm đó là vực sụp của BLEU-4 mức câu chứ không phải quy ước bất đồng thêm, và trộn hai thứ vào một con số là dạy sai nguyên nhân. Dù lấy con số nào, so sánh cũng chỉ có nghĩa khi hai bên dùng chung quy ước, và cách bảo đảm điều đó là dùng bộ chấm chuẩn rồi công bố chữ ký của nó, chứ không phải mỗi nhóm tự cài lại độ đo.
- 1Ở trạng thái mặc định sim báo 52,54%, còn tổ hợp cao nhất báo 89,09% trên đúng hai câu đó. Con số BLEU là thuộc tính của cái gì?
- 2Bấm preset Chỉ khác cách gõ dấu. Hai công tắc hạ chữ thường và bỏ dấu câu đều báo 0 trên 16 cặp tổ hợp đổi điểm. Kết luận đúng là gì?
- 3Khoảng dao động 62,12 điểm do quy ước, đo giữa tổ hợp cao nhất và tổ hợp thấp nhất chưa sụp, nên dẫn tới hành động nào?
- 4Bốn tổ hợp trong bảng báo đúng 0,00%. Cách đọc đúng bốn con số 0 đó là gì?