Tôi nghĩ sẽ tốt nhất nếu tôi giải thích điểm thứ hai của bạn bằng một ví dụ di chuyển trong trò chơi 1 giữa AlphaZero và Stockfish cũng phục vụ để thỏa mãn sự tò mò của tôi ngày hôm nay.
thời gian giới hạn là 1 phút / lần di chuyển (Làm thế nào điều này sẽ gây bất lợi cho Stockfish?)
Hiệu suất của Stockfish phụ thuộc vào cả giới hạn thời gian và cấu hình phần cứng, vì vậy chỉ cần nghĩ đến khi ai đó nhân đôi luồng CPU, thì Stockfish cần ít thời gian hơn (không nhất thiết phải một nửa) để tìm giải pháp so với cấu hình đầu tiên.
Trong báo cáo đầu tiên được đăng trên Chess.com, một người nào đó đã tuyên bố rằng Stockfish không chơi tối ưu vì anh ta không thể sao chép các kết quả tương tự bằng cách sử dụng cùng Stockfish trên máy tính của mình. Ông nói rằng ở vị trí bên dưới (trò chơi 1 - di chuyển 11) Stockfish đã chơi Kg1-h1 (di chuyển vị vua của nó) mà không có ý nghĩa gì cả. Mặt khác, stockfish trên máy tính của anh ấy cho thấy một động thái phát triển hơn như Be3 (di chuyển vị giám mục hình vuông tối), hãy nhìn vào vị trí:
Vâng, đó là một động thái thụ động và có vẻ như Stockfish nên đã chơi một động thái phát triển hơn. Nhưng anh đã sai. Tại sao? Bởi vì anh ta đã chạy Stockfish trong 15 giây, và nếu anh ta chạy nó trong một giờ, anh ta sẽ nhận được Kg1-h1 là bước di chuyển tốt nhất ở vị trí đó. Stockfish thay đổi quyết định của nó khi nó phân tích tất cả các động thái có thể có chiều sâu hơn. Đây là những gì ban đầu tôi đã nói trong bài trả lời của mình :
Tôi đã chạy con cá mới nhất ở vị trí này (ở bước 11):
- Lúc đầu, nó cho b4 là bước di chuyển tối ưu khi động cơ hoạt động khoảng một phút. Sau đó, nó quyết định Be3 là tốt hơn.
Nhưng sau 5 phút trên phần cứng của tôi chạy trên 1.400k nút / giây, nó sẽ quyết định đi với Kh1 là bước đi tối ưu.
Trong bài báo, người ta nói rằng stockfish tính toán 70.000k vị trí mỗi giây và được chạy trong 1 phút mỗi lần di chuyển, gấp khoảng 50 lần phần cứng của tôi, vì vậy tôi sẽ để tôi chạy trong 50 phút ... Kg1-h1 vẫn là sự lựa chọn cho Stockfish.
Giới hạn thời gian là chìa khóa
Trong trường hợp trên, có lẽ không có vấn đề gì nhiều nếu Stockfish chạy gấp đôi thời gian vì quyết định sẽ giống nhau, nhưng ở bước tiếp theo, nó chắc chắn sẽ :
Ở vị trí này, Stockfish đã chọn di chuyển con tốt ở phía bên trái ( a4-a5 ). Giả sử tôi có một máy tính chạy động cơ Stockfish với tốc độ 1.400k nút mỗi giây, thấp hơn khoảng 50 lần so với Stockfish trong trò chơi thực ( Trong bài báo , nó có ghi 70.000kn / giây). Vì vậy, tôi có thể mô phỏng trò chơi nếu tôi chạy nó trong 50 phút cho mỗi lần di chuyển. Đuợc.
Tôi đã chạy phân tích Stockfish ở vị trí trên và tôi đã nhận được kết quả như sau:
- Stockfish bắt đầu đề xuất một số động thái, nhưng sau 6 phút trên máy tính của tôi (tương ứng với 7,2 giây trên Stockfish trong trò chơi thực sự), nó thích a4-a5 giống như trò chơi đã diễn ra .
Điều đó thật tốt, nhưng tôi đã duy trì nó chạy trong 50 phút hoàn chỉnh để đạt được các tính toán của Stockfish trong trò chơi được phép 1 phút:
Sự thật đáng buồn là tôi tin rằng Stockfish đã thua tất cả các trò chơi của mình vì giới hạn thời gian. Stockfish nhận được một tìm kiếm và đánh giá sâu hơn khi thời gian trôi qua và trong trò chơi, nó không được phép sử dụng một cuốn sách mở đầu khiến nó cân nhắc nhiều động thái ở độ sâu nông. Lưu ý rằng trong trò chơi thực tế, a4-a5 đã được chơi cho thấy (giả sử nó có thể đánh giá 70 triệu vị trí mỗi giây), Stockfish trong trò chơi đã không mất hơn 21,6 giây khi di chuyển. Nếu không, nó sẽ thay đổi quyết định của mình thành ba nước đi khác trong trò chơi thực tế. Lý do cho điều này vẫn chưa rõ ràng đối với tôi vì Stockfish của tôi cũng tiêu tốn ít bộ nhớ hơn (khoảng ~ 130 MB RAM so với 1GB được đề cập trong bài báo gốc , giả sử tất cả đều chuyển sang bảng băm).
Phần kết luận
Phần cứng chạy Stockfish, như tôi đã chỉ ra, nhanh nhất gấp 18 lần so với của tôi (Cập nhật: trên một lõi) dựa trên di chuyển mà tôi đã phân tích. Tôi không chắc liệu AlphaZero có thực sự có thể sử dụng phần cứng như vậy để huấn luyện các mạng của mình sau 4 giờ hay không, tôi chỉ có thể cho rằng nó quá thấp cho một trò chơi như cờ vua. Bên cạnh đó, AlphaZero đã dành những giờ đó để học, bao gồm cả việc xây dựng các lỗ mở vững chắc (và như bài viết đã chỉ ra, các ưu tiên đối với các lỗ mở nhất định). Mặt khác, Stockfish đã bị vô hiệu hóa khi mở và nó không đánh giá 70 triệu vị trí mỗi giây trong 60 giây cho mỗi lần di chuyển.
Như một lưu ý cuối cùng, tất cả những điều tôi nói đều dựa trên giả định của tôi. Tất nhiên, kết quả của AlphaZero và các trò chơi là siêu thú vị đối với tôi. Tuy nhiên, tôi rất thích xem một trò chơi mà Stockfish chơi giống như những gì tôi nhận được trên máy tính của mình. Đó là, nhiều thời gian hơn và một cuốn sách mở cho phép. Cũng dễ dàng có được kết quả phân tích Stockfish trong mỗi lần di chuyển và tôi muốn họ phát hành nó để cho thấy nó hoạt động tốt như thế nào.