Tải bản đầy đủ (.docx) (5 trang)

AI trong các chương trình đánh cờ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (86.31 KB, 5 trang )

Đề tài: AI trong các chương trình đánh cờ
I.

Giới thiệu

Hiện nay, trí tuệ nhân tạo (AI) và học máy đang được áp dụng rộng rãi với nhiều
ứng dụng khác nhau. Trong hơn 60 năm, nhiều nhà khoa học đã nghiên cứu và phát triển
các chương trình có khả năng đánh cờ với các thuật toán khác nhau. Bắt đầu từ chương
trình Deep Blue của IBM, các phần mềm này đã có thể vượt qua giới hạn của con người,
chứng minh tiềm năng to lớn của AI trong các lĩnh vực khác của đời sống. Bài review này
được viết để tổng hợp các thành tựu nổi bật của AI trong các trò chơi từ năm 1997 cho
đến năm 2019.
II.
1.

AI trong các chương trình đánh cờ
Các chương trình đầu tiên sử dụng alpha-beta cắt tỉa

Ứng dụng đầu tiên của học máy vào các trò chơi chính là các phần mềm đánh cờ
vua. Vào năm 1949, Claude Shannon đã viết một bài báo mô tả một chương trình máy
tính có khả năng đánh cờ vua [1]. Ông tính toán rằng trung bình một ván cờ vua có 10 120
khả năng xảy ra khác nhau. Với mỗi nước đi, chương trình sẽ phải tính 10 43 nước đi khác
nhau. Kể cả các siêu máy tính hiện đại nhất ngày nay cũng không thể tính toán được hết
số lượng nước đi lớn như vậy.
Một trong những thuật toán đầu tiên được áp dụng các chương trình đánh cờ vua
là thuật toán alpha-beta cắt tỉa. Thuật toán này đánh giá các node của cây tìm kiếm và lựa
chọn ra node được đánh giá tốt nhất dựa trên tiêu chí Mini-Max. Thuật toán yêu cầu các
kiến thức về cờ như các thế trận bắt đầu và kết thúc để có thể đánh giá các node một cách
hiệu quả.
Đến năm 1997, IBM đã phát triển siêu máy tính Deep Blue lần đầu tiên đánh bại
một đại kiện tướng cờ vua trong lịch sử. Deep Blue thực hiện rất nhiều thuật toán alphabeta cắt tỉa chạy song song để tìm ra nước đi tối ưu nhất dựa theo hành động của đối


phương. Deep Blue là một ví dụ điển hình cho AI cổ điển GOFAI (Good Old-Fashioned
AI) [2].
Hơn 10 năm sau, phần mềm chơi cờ vua Stockfish ra đời. Stockfish có thể chạy
trên máy tính và điện thoại phổ thông thay vì chạy trên siêu máy tính như Deep Blue.
Ngoài thuật toán alpha-beta cắt tỉa được nâng cấp, phần mềm này còn sử dụng cấu trúc
dữ liệu Bitboard dành cho các phần mềm đánh cờ. Bitboard biểu diễn các ô và trạng thái
hiện tại của bàn cờ dưới dạng các bit array đặc biệt. Bằng cách biểu diễn này, các phần
mềm chơi cờ có thể tối ưu bộ nhớ cũng như tốc độ xử lý khi tính toán số lượng lớn các
phép toán. Đến năm 2018, Stockfish phiên bản 10 là một trong những phần mềm chơi cờ
hàng đầu thế giới, chỉ thua AlphaZero sử dụng học máy của DeepMind [3]. Bên cạnh
Stockfish, Elmo là engine chơi cờ shogi Nhật Bản hàng đầu cũng sử dụng chung một
thuật toán alpha-beta.


2.

Các chương trình sử dụng thuật toán cây tìm kiếm Monte Carlo

Đối với cờ vây, các chương trình sử dụng alpha-beta cắt tỉa không đạt được thành
công giống như cờ vua và cờ shogi. Khác với hai bộ môn cờ trên, các quân cờ vây không
bị gò bó, hạn chế. Mỗi nước đi của cờ vây có số khả năng lớn hơn rất nhiều. Không
những vậy, bàn cờ của cờ vây có kích thước 19x19, khiến cho việc tính toán nước đi phức
tạp hơn. Kể cả với các bàn cờ kích cỡ 9x9, các chương trình này cũng không thắng được
các kì thủ dù đã được chấp cờ.
Một phương pháp khác được áp dụng phổ biến cho các phần mềm chơi cờ vây là
phương pháp cây tìm kiếm Monte Carlo. Khác với các chương trình sử dụng alpha-beta,
cây tìm kiếm Monte Carlo không yêu cầu các kiến thức bên ngoài về cờ ngoài luật chơi
cơ bản. Với mỗi nước đi, thuật toán sẽ mô phỏng ván cờ với chính bản thân và đánh giá
các nước đi đã được chọn. Sau một số lượng lớn các ván cờ mô phỏng, chương trình sẽ
sinh ra một cây tìm kiếm và sẽ lựa chọn nước đi có khả năng thắng cao nhất.

Vào năm 2006, phương pháp tìm kiếm mới UCT (upper confidence bounds
applied to trees) được sử dụng trong thuật toán Monte Carlo. UCT sẽ tập trung tìm kiếm
các nước đi tốt thường xuyên hơn các nước đi tồi. Tuy nhiên, UCT vẫn sẽ tìm kiếm các
nước đi khác nếu như các nước này có thể dẫn đến các trường hợp có khả năng thắng cao
hơn. Với sự kết hợp của UCT, các chương trình đánh cờ vây hàng đầu như Zen, Leela,
Crazy Stone đã đánh thắng các kì thủ Nhật Bản trên bàn cờ kích thước 19x19 và được
chấp cờ.
Chương trình đánh cờ vua Komodo MCTS (Monte Carlo Tree Search) đã đạt được
các thành công bước đầu với tốc độ nhanh hơn Stockfish. Dù mới ra mắt vào năm 2018,
Komodo MCTS đã có thể đánh ngang ngửa với Stockfish phiên bản 10.
Phiên bản Stockfish 8, ra mắt vào tháng 11/2016, đã đạt thêm 55 elo (chỉ số xếp
hạng cờ vua) so với phiên bản 7 trong vòng 10 tháng, trung bình 5.5 elo mỗi tháng. Phiên
bản 9 ra mắt vào tháng 1/2018 đạt thêm 66 elo, trung bình 4.4 elo mỗi tháng. Phiên bản
mới nhất, Stockfish 10, ra mắt vào tháng 11/2018 chỉ cải thiện được 15 elo so với phiên
bản trước. Điều này chứng tỏ các chương trình sử dụng thuật toán alpha-beta đã gần đạt
đến giới hạn, trong khi các chương trình sử dụng thuật toán Monte Carlo đang tiến bộ
ngày càng nhanh [4].
3.

Các chương trình ứng dụng học máy

Các chương trình và siêu máy tính sử dụng phương pháp cây tìm kiếm Monte
Carlo đã có thể đánh bại con người khi được chấp cờ. Tuy nhiên điều này cũng phụ thuộc
nhiều vào kiến thức của lập trình viên cũng như các chuyên gia cờ vây khi xây dựng
chương trình. Một phương án được đưa ra là để chương trình tự học và nhận ra các thế
cờ, các luật lệ để đưa ra các nước đi tối ưu nhất. Chương trình đầu tiên áp dụng thành
công phương pháp này là phần mềm AlphaGo của Google DeepMind. Lần đầu tiên trong


lịch sử, AlphaGo đã đánh bại kì thủ 9-dan Lee Sedol (thứ hạng cao nhất của cờ vây) trên

bàn cờ 19x19 mà không cần chấp cờ với tỉ số 4-1 [5].
Các chương trình trước đây sử dụng các thuật toán brute force để tìm tất cả các
nước đi có thể, còn AlphaGo chỉ cần tìm số lượng nước đi nhỏ hơn hàng nghìn lần.
AlphaGo được huấn luyện bằng học máy kết hợp với cây tìm kiếm Monte Carlo. Chương
trình sử dụng học sâu để huấn luyện hai mạng chính: một mạng sử dụng để dự đoán các
nước đi có khả năng thắng cao nhất và một mạng để giảm độ sâu của cây tìm kiếm. Nhờ
hai mạng này mà chương trình có thể loại bỏ đi các nước đi thừa và tập trung tìm kiếm
các nước đi khác một cách thông minh trên cây tìm kiếm Monte Carlo.
Mạng thứ nhất, mạng “chính sách” (Policy network), được huấn luyện bằng 30
triệu nước đi khác nhau lấy từ hàng nghìn ván đấu của các kì thủ chuyên nghiệp. Sau đó,
AlphaGo tự chơi với chính mình để tự tìm ra các chiến thuật đánh cờ, thay vì có đầu vào
từ các chuyên gia. Các kết quả từ mạng chính sách được đưa vào để huấn luyện mạng thứ
hai, mạng giá trị (Value network). Mạng này có thể đánh giá các nước đi tiếp theo và dự
đoán được khả năng thắng của mỗi người chơi. Cuối cùng, đầu ra của mạng này được kết
hợp với cây tìm kiếm Monte Carlo để tìm ra nước đi hợp lý nhất [6].
Sau thành công của AlphaGo, DeepMind đã cho ra đời các phiên bản cải tiến,
mạnh mẽ hơn là AlphaGo Master, AlphaGo Zero. Đặc biệt, AlphaGo Zero được huấn
luyện mà không sử dụng dữ liệu từ con người. Chương trình ban đầu chỉ biết về luật chơi
của cờ vây. Sau khi tự chơi 4.9 triệu ván cờ với bản thân trong 3 ngày, AlphaGo Zero đã
vượt qua AlphaGo với tỉ số 100 – 0 [7].
AlphaZero đã đạt được tốc độ học nhanh hơn AlphaGo Zero và dùng được cho cả
cờ vua và cờ shogi. Các mạng của AlphaZero được cập nhật liên tục. Ngoài ra,
AlphaZero có thể lợi dụng các thế cờ đối xứng trong cờ vây cũng như xét các trường hợp
hoà cờ trong cờ vua và cờ shogi. AlphaZero chỉ cần tìm 80.000 nước đi mỗi giây cho cờ
vua, 40.000 nước cho cờ shogi so với 70 triệu nước đi của Stockfish và 35 triệu nước của
Elmo [8].

Hình 1: So sánh Elo của AlphaZero với các phần mềm Stockfish, Elmo và AlphaGo sau 700000
bước huấn luyện. Nguồn: [8]



AlphaZero đã vượt qua khả năng của con người, đưa ra các nước cờ độc đáo
không có trong sách vở. Phần mềm này cũng có thể dễ dàng đánh bại các phần mềm đánh
cờ tiên tiến nhất. Các phần mềm đánh cờ sử dụng học máy khác cũng đã được phát triển
như Leela Zero, Zen Zero và cũng đạt được các kết quả vượt trội so với phương pháp cây
tìm kiếm Monte Carlo thông thường.
III.

Kết luận

Khởi đầu từ siêu máy tính IBM Deep Blue, các chương trình đánh cờ đầu tiên sử
dụng thuật toán alpha-beta cắt tỉa và đã đạt được các thành công bước đầu. Tuy nhiên,
thuật toán này không thể áp dụng hiệu quả cho cờ vây. Các chương trình sau đó đã sử
dụng thuật toán cây tìm kiếm Monte Carlo kết hợp với UTC và các thuật toán tối ưu
khác. Phương pháp này đã giúp các chương trình đánh cờ có thể đánh thắng được các kì
thủ 9-dan khi được chấp cờ. Đến năm 2016, AlphaGo đã kết hợp học máy với MCTS để
đánh bại kì thủ cờ vây Lee Sedol mà không cần chấp cờ, điều mà các nhà khoa học tưởng
chừng không thể thực hiện được trong vài thập kỉ.
AlphaGo và AlphaZero đã làm nên lịch sử, chinh phục bộ môn cờ khó nhất và kết
thúc một chặng đường kéo dài 60 năm. Sau các môn thể thao đánh cờ, các nhà khoa học
đã sẵn sàng với thử thách mới: đánh bại con người trong trò chơi điện tử. Nếu như khi
đánh cờ chương trình có thể nhìn thấy cục diện toàn bộ bàn cờ, trò chơi điện tử có thể che
giấu thông tin của đối phương và đòi hỏi chương trình phải xử lý bằng các thao tác phức
tạp hơn rất nhiều. Đây sẽ là một mảng nghiên cứu đầy tiềm năng cho AI nói chung và học
máy nói riêng.

Danh mục tham khảo
[1] C. Shannon, "Programming a Computer for Playing Chess," Philosophical Magazine, 1949.
[2] "Deep Blue (chess computer)," [Online]. Available:
[Accessed 4 4 2019].

[3] "Stockfish (chess)," [Online]. Available: [Accessed 4
4 2019].
[4] S. O. Platz, "Monte Carlo instead of Alpha-Beta?," 30 1 2019. [Online]. Available:
[Accessed 4 4 2019].
[5] "AlphaGo," [Online]. Available: [Accessed 4 4 2019].
[6] D. Silver and D. Hassabis, "AlphaGo: Mastering the ancient game of Go with Machine Learning,"
Google DeepMind, 27 1 2016. [Online]. Available: [Accessed 4 4 2019].


[7] David Silver et al., "Mastering the game of Go without human knowledge," Nature, no. 550, pp. 345349, 2017.
[8] David Silver et al., "A general reinforcement learning algorithm that masters chess, shogi, and Go
through self-play," Nature, vol. 362, no. 6419, pp. 1140-1144, 2018.



×