Chuyển tới nội dung chính

Điểm số nhạy theo quy ước

32 tổ hợp quy ướcBLEU tính lại thậtTách vực sụp khỏi 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.

Cùng một bản dịch, nhiều con số BLEU
BLEU 52.54%dao động do quy ước 62.12 điểm
Cả năm công tắc đều sống. Bản dịch chỉ sai đúng một từ cuối, phần còn lại là khác biệt về cách viết, vậy mà điểm báo cáo được trải rất rộng.
Năm quy ước, mỗi cái một công tắc
Từ điển từ ghép viết tay (chỉ khớp khi token đã là chữ thường và sạch dấu câu): 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
Đây là 8 mục gõ tay để minh hoạ, không phải bộ tách từ tiếng Việt thật. Bộ tách thật hạ chữ thường trước khi tra từ điển, nên việc công tắc này yếu đi lúc chữ hoa còn nguyên là hiện vật cài đặt của bản đồ chơi ở đây, không phải tính chất của việc tách từ tiếng Việt. Một phần tác động bạn thấy ở công tắc từ ghép là do chỗ đó.
Token sinh ra dưới bộ quy ước đang chọn
Bản dịch, 10 token
conmèođenđangnằmngủtrêntấmthảmmới
Tham chiếu, 10 token
conmèođenđangnằmngủtrêntấmthảm
BậcTrúng sau cắt ngọnTổng cụmpn trầnpn đang dùng
18108 / 1080.00%
2696 / 966.67%
3484 / 850.00%
4272 / 728.57%
Độ dài bản dịch c và tham chiếu r1010
Phạt câu ngắn BP1.0000
Trung bình nhân bốn pn0.5254
BLEU-4 = BP × trung bình nhân52.54%
Cả 32 tổ hợp quy ước, cùng một cặp câu
Khoảng dao động do quy ước62.12 điểmđã bỏ 4 dòng sụp về 0. Tính cả chúng thì rộng thành 89.09 điểm, nhưng phần nới thêm đó đo độ sâu vực sụp của BLEU-4 mức câu, không phải mức bất đồng giữa các quy ước.
Cao nhất89.09%
Thấp nhất chưa sụp26.97%
Thấp nhất kể cả dòng sụp0.00%
Số con số khác nhau28/32
Tổ hợp sụp về 04/32
Dao động khi luôn làm mượt62.12 điểm
Vì sao 4 dòng báo đúng 0: 4 dòng vẫn có đủ cụm n từ nhưng một bậc không trúng cụm nào, và trung bình nhân thì nhân với 0. Không dòng nào trong số đó là một bộ quy ước kết luận bản dịch vô giá trị. Điểm về 0 vì trung bình nhân có một thừa số bằng 0, tức là tật của BLEU-4 khi chấm từng câu, chứ không phải các quy ước bất đồng về chất lượng bản dịch. Vì vậy con số tít ở trên đã bỏ những dòng này ra.
Hạnghoadấu câutừ ghépNFCmượtBLEU-4So với dòng đang chọn
1·89.09%+36.55
2··88.01%+35.47
385.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
Bỏ các dòng sụp ra, cùng bản dịch này người ta vẫn báo cáo được từ 26.97% tới 89.09%, tức 62.12 điểm chênh lệch thuần do đổi quy ước chấm. Cộng thêm 4 dòng sụp về 0 thì con số nới ra 89.09 điểm, nhưng phần nới thêm ấy là vực sụp của BLEU-4 mức câu chứ không phải các quy ước bất đồng thêm. Trong một bài báo dịch máy, khoảng cách giữa hệ thống mới và hệ thống cũ thường chỉ vài điểm.

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ì . 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ì Concon là 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èotấm thảm thành một token, câu ngắn lại từ 10 xuống 8 token, nên c, 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ằm hiệ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ượt89,09%
Thấp nhất trong các dòng chưa sụp26,97%
Khoảng dao động do quy ước62,12 điểm
Thấp nhất kể cả dòng sụp0,00%
Khoảng dao động nếu tính cả dòng sụp89,09 điểm
Số tổ hợp sụp về đúng 04 trên 32
Số con số khác nhau28 trên 32 dòng
Trạng thái mặc định của sim52,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 chỗ để bám, vì con mèotấ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.

Điều rút ra

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.

Câu hỏi tự kiểm0/4 đúngchưa trả lời
  1. 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ì?
  2. 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ì?
  3. 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?
  4. 4Bốn tổ hợp trong bảng báo đúng 0,00%. Cách đọc đúng bốn con số 0 đó là gì?