Bài viết dưới đây được chính những thành viên của dự án OpenAI công bố trên blog cá nhân, kể về quá trình phát triển một AI có khả năng tự học chơi Dota đến mức có thể đè bẹp cả những game thủ hàng đầu thế giới ở thể thức 1v1 solo mid Shadow Fiend.
Những kết quả mà OpenAI đã thể hiện có lẽ chính là minh chứng rõ nhất cho việc, machine learning cùng với khả năng tự chơi có thể đẩy khả năng của trí tuệ nhân tạo lên rất nhanh trong một khoảng thời gian ngắn, với điều kiện có đầy đủ dữ liệu. Cụ thể, chỉ trong vòng một tháng, AI của chúng tôi đã từ mức chỉ thi đấu ngang ngửa với các người chơi trình độ cao đến mức có thể đánh bại được các cao thủ chuyên nghiệp, và vẫn không ngừng nâng cao trình độ kể từ đó đến bây giờ. Nhìn chung, deep learning phụ thuộc rất nhiều vào chất lượng của bộ dữ liệu luyện tập, nhưng nhờ vào việc hệ thống tự chơi với nhau mà chất lượng của bộ dữ liệu cũng tăng dần theo trình độ của AI.
Đồ thị trên là xếp hạng TrueSkill (hệ thống này tương tự với xếp hạng ELO trong cờ vua) của con bot tốt nhất tại OpenAI theo thời gian, được tính bằng việc để các con bot từ đấu với nhau và theo dõi tỉ lệ chiến thắng. Tất cả nhưng thứ mà con bot này học được, từ việc biết thêm kỹ năng mới, đến việc cải tiến thuật toán, đều góp phần làm cho hệ thống phát triển hơn rất nhiều. Đồ thị này đi lên theo hướng khá đều, chứng tỏ trình độ của hệ thống AI cũng tăng dần theo cấp số nhân.
Dưới đây là tóm tắt các mốc chính trong quá trình diễn ra dự án kể từ khi bắt đầu đến thời điểm hiện tại. Để giải thích dễ hiểu cho những người không quen với hệ thống xếp hạng trong Dota, thì việc xếp hạng được đánh giá bằng con số MMR (Match making rating - một dạng điểm ELO); MMR càng cao thì trình độ càng cao. Theo số liệu thống kê của Valve hiện tại thì có 15% người chơi ở mức dưới 1500 MMR, 58% người chơi dưới 3000 MMR, và chỉ có 0,01% người chơi đạt đến trình độ hơn 7500 MMR.
01/03: Dự án bắt đầu với việc cho hệ thống học về môi trường đơn giản của Dota, với việc để một con Drow Ranger học cách đối đầu với một con Earthshaker được lập trình sẵn.
08/05: Tester trình độ 1500 MMR của chúng tôi cho biết rằng anh ta tiến bộ nhanh hơn AI rất nhiều.
Đầu tháng 6: OpenAI đánh bại tester 1500 MMR.
30/06: OpenAI chiến thắng hầu hết các tester có trình độ 3000 MMR.
08/07: OpenAI chật vật giành được chiến thắng đầu tiên trước tester 7500 MMR.
07/08: OpenAI đấu với một số game thủ và cựu game thủ chuyên nghiêp. Cụ thể, thắng Blitz (cựu tuyển thủ trình độ 6200 MMR) 3-0; thắng Pajkatt (8500 MMR) 2-1, thắng CC&C (8900 MMR) 3-0. Tất cả đều đồng ý là Sumail (thành viên đi mid cho Evil Genius) sẽ tìm ra cách đánh bại con bot này.
09/08: Đánh bại Arteezy (một trong những game thủ chuyên nghiệp hàng đầu thế giới đạt 10000 MMR) với tỉ số 10-0. Arteezy cho rằng Sumail có thể tìm cách đánh bại con bot này.
10/08: Đánh bại Sumail (một trong những người đi mid giỏi nhất thế giới hiện tại) với tỉ số 6-0. Sumail cho rằng không thể đánh bại được con bot này. Tuy nhiên, khi Sumail đối đầu với phiên bản OpenAI của ngày 09/08, cậu đã chiến thắng với tỉ số 2-1.
11/08: Đánh bại Dendi (một trong những huyền thoại đi mid của làng Dota thế giới) trên sân khấu của The International 7. Khi đấu với phiên bản OpenAI ngày 10/8, tỉ lệ thắng của phiên bản ngày 11/08 là 60%.
Mặc dù Dota là game đấu đồng đội với 5 người mỗi team, nhưng thể thức thi đấu 1v1 Solo mid vẫn xuất hiện trong một vài giải đấu lớn. Những con bot của OpenAI được lập trình để tuân thủ luật đấu của thể thức này: không farm rừng, không nhặt rune, không mua bottle.
Hệ thống của OpenAI hoạt động theo các giao tiếp cơ bản như sau:
Quan sát: API của bot được thiết kế để theo đúng như những gì con người có thể nhìn thấy khi chơi game, bao gồm các thông tin về tướng, creep, gà, cũng như địa hình bên trong tầm nhìn của tướng. Những gì bot nhìn thấy sẽ giống hệt như người chơi, chứ không phải là có thông tin về toàn bộ bản đồ trong game.
Hành động: Nhóm các hành động mà bot có thể thực hiện cũng giống như con người, bao gồm di chuyển, tấn công mục tiêu, sử dụng kỹ năng, sử dụng item.
Phản hồi: Bot sẽ nhận được các thông tin về điều kiện chiến thắng, cũng như các thông số cơ bản như máu và last hit của bản thân.
Về việc dạy AI cách chặn creep, chúng tôi sử dụng phương pháp học tăng cường truyền thống trong phát triển trí tuệ nhân tạo, bởi lẽ quá trình này xảy ra trước khi đối thủ xuất hiện.
Phương pháp tiếp cận của chúng tôi là kết hợp quá trình tự chơi với một lượng nhỏ hướng dẫn; thông qua đó cho phép chúng tôi phát triển trình độ của hệ thống OpenAI lên rất cao chỉ trong vòng một tuần diễn ra The International.
Phiên bản OpenAI của thứ tư tuần trước đột ngột gặp vấn đề khi thử nghiệm, đó là bot bị mất rất nhiều máu ở lượt creep đầu tiên. Chúng tôi đã nghĩ rằng sẽ phải Roll back hệ thống về ngày hôm trước, nhưng gameplay của bot lại đạt đến trình độ rất cao. Hóa ra việc bot bị mất nhiều máu là để dụ đối phương tấn công mình. Vấn đề này được giải quyết sau một thời gian ngắn tự chơi sau đó, khi bot học được cách để chống lại chiến thuật này. Chúng tôi hoàn thành việc giải quyết các vấn đề cho bot 20 phút trước khi Arteezy xuất hiện để thử nghiệm.
Sau trận đấu với Arteezy, chúng tôi tiến hành cập nhật mô hình chặn creep, từ đó tăng điểm TrueSkill của hệ thống lên thêm 1 điểm nữa. Hệ thống này tăng thêm 2 điểm nhờ vào việc luyện tập trước trận đấu với Sumail. Sau khi đấu với OpenAI, Sumail chỉ ra rằng con bot đã học được cách sử dụng kỹ năng ở ngoài tầm nhìn của đối thủ.
Tuy Sumail nhận xét rằng không có cách nào để đánh bại con bot này, nhưng sự thật là OpenAI vẫn gặp vấn đề khi phải đối mặt với những tình huống mà hệ thống chưa thấy bao giờ. Cụ thể tại The International, chúng tôi đã đặt một khu riêng cho những người tới tham dự đấu thử với OpenAI. Hơn 1000 game đấu diễn ra để tìm mọi cách có thể đánh bại con bot này.
Những người chiến thắng sử dụng một trong ba nhóm chiến thuật sau:
Kéo creep: Có thể liên tục kéo creep của đối phương đuổi theo mình ngay khi chúng vừa xuất hiện, và để creep bên mình tràn vào phá nát trụ đối phương.
Orb of Venom + Wind lace: Hai món đồ này cho phép người chơi có được lợi thế về tốc độ di chuyển đối với bot ở Level 1, từ đó có thể giúp người chơi giành được First blood sớm khi đấu với bot. Sau đó sử dụng lợi thế về tiền và level để giết bot thêm một lần nữa.
Tăng Raze ở level 1: Raze là kỹ năng gây sát thương của Shadow Fiend, và một số người choi trình độ cao bằng việc tăng Raze ngay từ Level 1 đã có thể giết bot bằng cách vẩy Raze trúng 3-5 lần liên tiếp trong một thời gian ngắn.
Những "thủ đoạn" này không phải là vấn đề lớn đối với hệ thống. Tuy nhiên, đây là điều mà chúng tôi cần phải đặc biệt lưu tâm nếu như muốn tạo ra những con bot có thể thi đấu 5v5 được, bởi lẽ ở thể thức thi đấu chính thức của Dota, rất nhiều tình huống kỳ lạ chưa gặp bao giờ sẽ xảy ra.
Mục tiêu tiếp theo của chúng tôi hiện tại là tạo ra những con bot có thể chơi Dota theo thể thức thi đấu chính thức 5v5. 5v5 phức tạp hơn 1v1 rất, rất, rất nhiều lần, và chúng tôi cần phải đẩy giới hạn của trí tuệ nhân tạo lên một tầm cao mới nếu muốn giải quyết được vấn đề này.
Một trong những điểm khởi đầu là bắt chước những người chơi khác. Ở thời điểm hiện tại, mỗi ngày có hàng triệu trận đấu Dota diễn ra và được lưu lại 2 tuần trong server của Valve. Kể từ tháng 11 năm ngoái đến nay, chúng tôi đã lưu trữ được một bộ dữ liệu là 5,8 triệu trận đấu ở trình độ cao.
Bên cạnh đó, chúng tôi còn nhiều ý tưởng khác nữa, và đang tuyển rất nhiều kỹ sư công nghệ AI cũng như các nhà nghiên cứu để có thể cùng chúng tôi đạt được mục tiêu này. Dưới sự hỗ trợ của Microsoft Azure và Valve, chúng tôi hy vọng có thể sớm tạo ra những con bot "thực sự biết chơi" Dota 2.
Theo GenK