Skip to content
Cách Chúng Tôi Cân Bằng Độ Khó Bot Trên Xiangqi One

Cách Chúng Tôi Cân Bằng Độ Khó Bot Trên Xiangqi One

Từ phản hồi người dùng đến 50.000 ván đấu mô phỏng: kỹ thuật đằng sau việc cân bằng bot công bằng

Thomas Gerbouin9 min

Bắt Đầu Từ Một Email

Một buổi sáng, chúng tôi nhận được một email chi tiết từ một kỳ thủ đã thử nghiệm các bot của chúng tôi. Phát hiện của họ thật đáng kinh ngạc: những bot được gắn nhãn là kỳ thủ câu lạc bộ thực tế lại chơi ở trình độ Kiện Tướng Ứng Viên, cao hơn nhiều so với mức độ khó mà nhãn gợi ý. Một bot ở hạng Tập Sự không nên đánh bại dễ dàng các kỳ thủ câu lạc bộ có kinh nghiệm. Trên các nền tảng như Chess.com, người chơi sử dụng bot như những mốc cá nhân. Nếu mức độ khó của chúng tôi sai, người chơi sẽ đánh giá sai trình độ của mình, và người mới sẽ bị nghiền nát bởi đối thủ mà họ tin là trong tầm tay. Chúng tôi quyết định giải quyết vấn đề trên hai mặt trận: thứ nhất, hiệu chỉnh lại mọi bot để tiến trình độ khó mượt mà và đúng thứ tự, và thứ hai, loại bỏ hoàn toàn xếp hạng Elo khỏi giao diện ứng dụng. Hiển thị một con số như 1500 mời gọi so sánh trực tiếp với các nền tảng khác, nhưng thang xếp hạng Cờ Tướng khác nhau rất nhiều giữa các trang. Thay vào đó, chúng tôi tổ chức bot thành các bậc độ khó rõ ràng để người chơi có thể tập trung tìm mức thử thách phù hợp mà không lo về một con số có thể không mang ý nghĩa như họ nghĩ. Các bậc bạn thấy hôm nay trong danh sách bot AI cờ tướng chính là kết quả của đợt hiệu chỉnh này.

Tại Sao Pikafish Khiến Việc Hiệu Chỉnh Khó Khăn

Xiangqi One sử dụng Pikafish, engine Cờ Tướng mã nguồn mở mạnh nhất, làm bộ não đằng sau mọi bot. Pikafish cực kỳ mạnh, nhưng sức mạnh đó là con dao hai lưỡi. Ngay cả ở cài đặt tìm kiếm rất thấp, Pikafish vẫn chơi vượt xa trình độ người mới. Sức mạnh của nó tăng theo cấp số nhân với độ sâu tìm kiếm, không phải tuyến tính. Đi từ độ sâu 1 lên độ sâu 3 không tăng gấp ba sức mạnh, mà có thể nhân lên gấp mười. Điều này có nghĩa là bạn không thể đơn giản ánh xạ độ sâu engine vào thang Elo tuyến tính và coi như xong. Mỗi bot trên Xiangqi One không chỉ là engine thô. Đó là một nhân cách được xây dựng từ nhiều tham số: độ sâu tìm kiếm, số nước đi ứng viên cần xem xét (MultiPV), số lỗi cố ý bot mắc phải, biên độ dao động tỷ lệ lỗi, và liệu bot chọn nước tốt nhất hay chọn ngẫu nhiên hơn. Điều chỉnh đúng tất cả các tham số này cho 22 bot khác nhau, trải dài từ người mới hoàn toàn đến gần trình đại kiện tướng, chính là cốt lõi của thách thức hiệu chỉnh.

Xây Dựng Hạ Tầng Giải Đấu

Để đo sức mạnh thực tế của bot, chúng tôi cần bot đấu với nhau ở quy mô lớn, không phải hàng chục ván, mà là hàng chục nghìn ván. Chúng tôi đã xây dựng một hệ thống giải đấu lên lịch các trận đấu giữa mọi cặp bot gần nhau, luân phiên màu quân để cả hai bên chơi Đỏ và Đen đều nhau, và lưu trữ mọi kết quả ván đấu trong cơ sở dữ liệu. Mỗi vòng giải đấu tạo ra khoảng 400 ván cho mỗi cặp bot, cho chúng tôi kết quả có ý nghĩa thống kê. Sau khi tất cả các ván được chơi, chúng tôi xuất kết quả dưới dạng tệp PGN và đưa vào Ordo, một hệ thống xếp hạng Bradley-Terry tính toán xếp hạng Elo từ kết quả ván đấu. Ordo là công cụ tương tự được cộng đồng cờ máy tính sử dụng để đánh giá engine. Nó đưa ra xếp hạng cho mỗi bot kèm biên sai số, cho chúng tôi bức tranh chính xác về sức mạnh tương đối thực sự.

Kết Quả Đầu Tiên: Chúng Tôi Đã Sai Bao Xa

Kết quả giải đấu đầu tiên là một hồi chuông cảnh tỉnh. Các hồ sơ bot ban đầu của chúng tôi, được cấu hình với xếp hạng từ 280 đến 2500, đã bị lệch nghiêm trọng. Biểu đồ bên dưới cho thấy trạng thái ban đầu: mỗi chấm là một bot, trục X là xếp hạng đã cấu hình trong mã của chúng tôi, và trục Y là Elo đo được từ giải đấu.

Lưu ý quan trọng: Elo đo được là tương đối so với nhóm bot (Ordo neo trung bình ở 1000), nên các con số tuyệt đối không cần khớp với xếp hạng đã cấu hình. Điều quan trọng là các bot được sắp xếp đúng thứ tự và cách đều nhau.

Xếp hạng Elo cấu hình ban đầu so với đo được

Kết quả tiết lộ những vấn đề nghiêm trọng. Các bot hàng đầu (Elena, Jun-so, Katya) bị gom cụm lại với sức mạnh gần như giống hệt nhau dù được cấu hình cách nhau hàng trăm điểm. Một số bot hoàn toàn sai thứ tự, với bot được cho là yếu hơn lại thắng bot được cho là mạnh hơn. Biểu đồ tiến trình làm rõ các vấn đề này hơn nữa. Thay vì một bậc thang tăng dần mượt mà về độ khó, có những cụm lớn nơi nhiều bot chơi ở sức mạnh gần như giống nhau, và những khoảng trống lớn nơi độ khó nhảy đột ngột.

Tiến trình bot ban đầu cho thấy các cụm và khoảng trống

Một người chơi chuyển từ Erik (680) sang Ông Minh (760) sẽ hầu như không nhận thấy sự khác biệt, nhưng nhảy từ Dewi sang Xinping giống như đâm vào tường. Đây không phải trải nghiệm chúng tôi mong muốn.

Quá Trình Tinh Chỉnh: Bốn Vòng Giải Đấu

Sửa chữa việc hiệu chỉnh đòi hỏi nhiều vòng điều chỉnh. Sau mỗi giải đấu, chúng tôi phân tích kết quả, xác định những bot lệch nhiều nhất, tinh chỉnh hồ sơ engine, và chạy giải đấu tiếp. Trong vòng đầu tiên, chúng tôi điều chỉnh xếp hạng cấu hình để khớp hơn với sức mạnh đo được và xác định các bot cần thay đổi hồ sơ lớn nhất. Một quy luật lặp lại mà chúng tôi phát hiện là các bot phong cách phòng thủ luôn chơi vượt trội hơn hồ sơ của chúng. Một bot với lối chơi phòng thủ sẽ đo được hàng trăm điểm Elo cao hơn bot tấn công được cấu hình tương tự. Chúng tôi phải giảm sức mạnh đáng kể cho một số bot phòng thủ, đặc biệt là Nour và Vo Nguyen Giap. Đến giải đấu thứ tư, chúng tôi đã có mọi bot tuân thủ hệ thống phân cấp dự định, với khoảng cách khá đều giữa các mức độ khó. Những thay đổi cá nhân lớn nhất bao gồm tăng sức mạnh Sun Tzu hơn 200 điểm Elo (cho ông tìm kiếm sâu hơn và chơi chính xác hơn), giảm Jun-so 270 điểm (anh ta quá mạnh cho bậc của mình), và làm lại hoàn toàn bốn bot cuối cùng để tạo lộ trình nhẹ nhàng hơn cho người chơi mới.

Trước và Sau: Đo Lường Sự Cải Thiện

Để xác nhận rằng các thay đổi của chúng tôi thực sự hiệu quả, chúng tôi đã chạy một giải đấu so sánh đặc biệt: tất cả 22 bot ở cấu hình ban đầu (v1) đấu với tất cả 22 bot ở cấu hình đã tinh chỉnh (v2) trên cùng thang Elo. Điều này cho chúng tôi phép đo trực tiếp, ngang bằng nhau về cách mỗi bot thay đổi.

So sánh trước và sau cho thấy thay đổi Elo của mỗi bot

Các mũi tên cho thấy hướng và mức độ thay đổi của mỗi bot. Mũi tên xanh chỉ sang phải nghĩa là bot mạnh hơn; mũi tên đỏ chỉ sang trái nghĩa là chúng tôi đã giảm sức mạnh thành công. Những lần giảm lớn nhất thuộc về các bot chơi vượt trội quá mức: Vo Nguyen Giap giảm 374 điểm Elo, Jun-so giảm 270, và Jules Cesar giảm 234. Ở phía ngược lại, Sun Tzu tăng 202 điểm để giành lại vị trí xứng đáng trong số các bot lịch sử mạnh nhất.

Chế độ xem kết hợp bên dưới liên kết mỗi bot qua cả hai phiên bản, cho thấy chính xác cách hiệu chỉnh đã thay đổi.

So sánh hiệu chỉnh kết hợp v1 và v2

Biểu đồ hiệu chỉnh cuối cùng xác nhận rằng sau khi tinh chỉnh, các bot được sắp xếp đúng thứ tự không có đảo ngược, và khoảng cách giữa các mức độ khó đều hơn nhiều.

Hiệu chỉnh cấu hình so với đo được cuối cùng

Tiếp Theo: Biến Ván Đấu Thành Câu Đố

Hàng chục nghìn ván đấu được tạo ra bởi hệ thống giải đấu của chúng tôi không chỉ hữu ích cho việc hiệu chỉnh. Mỗi ván đấu là một mỏ vàng các mẫu chiến thuật và thế trận. Bước tiếp theo của chúng tôi là khai thác các ván đấu này để tìm chất liệu câu đố. Hệ thống giải đấu đã lưu trữ đánh giá engine đầy đủ theo từng thế cờ cho mọi ván đấu. Bằng cách tìm những thế cờ mà đánh giá dao động mạnh, một bên có nước thắng nhưng đối thủ bỏ lỡ, chúng tôi có thể tự động trích xuất các ứng viên câu đố. Cách tiếp cận này cho chúng tôi nguồn cung gần như vô hạn các câu đố mới, có xếp hạng, được rút ra từ các ván đấu với thế cờ thực tế, không phải các bài tập tàn cuộc soạn sẵn. Hãy đón chờ bài viết tiếp theo của chúng tôi. Nếu bạn muốn biết cách chọn mức khó và dùng bot để tiến bộ, hướng dẫn chơi cờ tướng với máy tính của chúng tôi bàn về mặt thực hành.

Đọc tiếp