Liệu độ sâu (số lớp) vẫn còn quan trọng một khi nó đủ cao?


10

Điều này không có thật, chỉ cần tưởng tượng điều này xảy ra.

Computer Alà siêu máy tính. Nó có thể tính toán sâu 30 lớp trong vòng 20 giây.

Computer Blà siêu máy tính. Nó có thể tính toán sâu 15 lớp trong vòng 20 giây.

Họ chơi với nhau cờ vua.

Liệu 15 độ sâu này thực sự quan trọng? Tôi đoán rằng trong 15 độ sâu này, có thể có hàng nghìn tỷ cách để thoát khỏi một người chơi hoặc bắt được mảnh quan trọng. Chắc chắn, Computer Abiết nhiều hơn. Nhưng theo tôi, Computer Bcó thể dự đoán tương lai khá xa, đủ xa để tự bảo vệ mình thực sự tốt.


Trong trường hợp này, theo "độ sâu", bạn có nghĩa là số lượng lớp? Chúc mừng.
Rauan Sagit

Vâng, tôi có nghĩa là plies.
RikTelner

Câu trả lời:


13

Vâng, 15 độ sâu rất nhiều vấn đề.

Hãy xem xét vị trí này đã xảy ra trong Trò chơi bất tử của Kasparov vs Topalov.

Kasparov - Topalov

Tôi đã thử nghiệm vị trí này với một số động cơ. Một số động cơ, ở độ sâu 15, đã không phát hiện ra rằng 24 ... cxd4 là một nước cờ thua và nghĩ rằng nó đã chiến thắng. Những động cơ tương tự, ở độ sâu lớn hơn, đã chơi đúng bước 24 ... Kb6!

Ví dụ, ngay cả một động cơ mạnh như Stockfish 4 ban đầu ở độ sâu 21 cho rằng động thái thua 24 ... cxd4 là chính xác.

Stockfish DD 64 SSE4.2: 24...cxd4 25. Re7+ Kb6 26. Qxd4+ Kxa5 27. Qc3+ Kb6 
28. Qd4+ Qc5 29. Qxf6+ Bc6 30.Qxc6+ Qxc6 31. dxc6 Rd1+ 32. Ka2 f5 33. c7 Rc8 
34. Rxh7 Rxc7 35. Rh6 Rc6 36. g4 f4 37. g5 Rd2 38. c3 Rxc3 39. Rxg6+ Kc5 
40. Bg4 Rcc2 41. Rxa6 Rxb2+ 42. Ka1 Rbc2 43. Kb1 
(-1.45/21)

Động cơ tương tự, khi được giữ ở độ sâu hơn một chút, hiển thị 24 ... Kb6 để di chuyển chính xác.

Stockfish DD 64 SSE4.2: 24...Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 
28. axb4 Rhe8 29. Rxe8 Rxe8 30. Nb3 Re1+ 31. Kb2 Re2 32. Rxh7 Nxb4 
33. Kc3 Nd5+ 34. Kd3 Rxh2 35. Rh4 Ne7 36. Nd4 Nc6 37. Nxc6 Bxc6 38. f4 Kc5 
39. Be6 Rxh4 40. gxh4 Bd5 41. f5 gxf5 42. Bxf5 a5
(-0.78/26)

Fritz 11 SE, ở độ sâu 15, cũng thất bại. Nhưng nó đã tìm thấy động thái chính xác ở độ sâu 16!

Fritz 11 SE: 24... cxd4 25. Qxd4+ Qb6 26. Re7+ Nd7 27. Qe5 f6 28. Qc3 Qg1+ 
29. Ka2 Bxd5+ 30. Nb3 f5 31. Qc7+ Ka8 32. Rxd7 Rxd7 33. Qxd7 Bxf3 34. Qd6 Qa7  
(-1.44/15) 

Fritz 11 SE: 24... Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 28. axb4 Nxb4 
29. Nb3 Bd5 30. Rf6+ Nc6 31. Nd4 Rdf8 32. Rd6 Kc5 33. Rxc6+ Bxc6 34. Ne6+ Kd6 
35. Nxf8 
(-0.59/16)

Cũng xem xét vấn đề đáng kinh ngạc như vị trí mà tôi tìm thấy ở đây .

Stockfish đã không thể tìm thấy dòng chiến thắng 1. Be2 +! cho đến độ sâu 31 và cho đến lúc đó nó nghĩ rằng đó là một động thái xấu. Tôi chứng minh chiến thắng ở đây. Vấn đề là Đen ở zugswang vì các mối đe dọa của người bạn đời và phải từ bỏ nữ hoàng hoặc di chuyển một con tốt cho phép Trắng tạo ra một con tốt đã qua và giành chiến thắng.

NN - NN, 1-0
1. Be2 +! Kf5 2. Nd5! Qxe6 3. Bd3 + Kg4 4. Be4 !! Qh6
( 4 ... Qxe4 5. Nf6 + )
5. Nf4 Qg7 6. Nd3! Qxd4 7. c6! a5
( 7 ... Qxe4 8. nf2 + Kf3 9. Nxe4 Kxe4 10 Kg2 Kd4 11. g4 hxg4 12. h5 Ke5 13. h6 Kf6 14. Kg3 Kg6 15. Kxg4 Kxh6 16. Kf5 Kg7 17. Ke6 Kf8 18. Kd7 Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Qxe4
( 10 ... Qc3 11. Nf2 # )
11. Nf2 + Kf3 12. Nxe4 1-0

Đây là nhật ký động cơ từ Stockfish 4. Như bạn có thể thấy, nó phát hiện ra rằng 1. Be2 + đang chiến thắng, chỉ ở độ sâu 31!

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2.Bc4 c6 3. Ne2 Qf6 4. Kg2 Kg4 5. Nf4 Qxd4 
6. Bd3 Qe3 7. Be2+ Kf5 8. Bf3 Qd2+ 9. Kh3 Qxb4 10. e7 Qe1 11. Ne2 Qf1+ 12. Kh2 Qf2+
13. Kh3 Qe3 (-1.05/22) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. Bxa6 Qxe6 5. Bd3+ Kf6 
6. Nf4 Qe1 7. d5 Qxb4 8. dxc6 Qxc5 9. Be4 Ke7 10. c7 Kd7 11. Nd5 Kd6 12. Kh3 Qc4 
13. Bg2 Qg4+ 14. Kh2 Qc8 15. Be4 (-1.15/26) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. d5 cxd5 5. Bxd5 Qb2 
6. Bc4 Kf6 (-1.01/28) 

Stockfish DD 64 SSE4.2:  1. Be2+ Kf5 2. Nd5 Qxe6 3. Bd3+ Kg4 4. Be4 Qh6 5. Nf4 Qf6 
6. Nd3 Qxd4 7. c6 Qxe4 8. Nf2+ Kf3 9. Nxe4 Kxe4 10. Kg2 Ke5 11. Kf3 Kf5 12. g4+ Kf6
13. gxh5 Kg7 14. Kf4 Kf6 15. h6 Kg6 16. h5+ Kh7 17. Kg5 Kg8 18. h7+ Kxh7 19. Kf5 Kg7
20. Ke6 Kh6 21. Kd7 Kxh5 22. Kxc7 Kg5 23. Kd7 (6.06/31) 

Nhưng tôi có nghĩa là 15 di chuyển mỗi di chuyển. Không chỉ lúc đầu.
RikTelner

4
Vâng, tại mỗi di chuyển. Nếu, ở lần di chuyển đầu tiên, nó tính toán ở độ sâu 15 và tạo ra một sai lầm, sau đó tính toán 15 độ sâu ở mỗi lần di chuyển tiếp theo sẽ không cứu được nó.
Wes

4

Mối quan hệ giữa tăng hiệu suất và độ sâu tìm kiếm thực sự là một lĩnh vực nghiên cứu tích cực trong một thời gian dài trong cộng đồng lập trình cờ vua máy tính. Có một lý thuyết cho rằng việc tăng độ sâu tìm kiếm dẫn đến lợi nhuận giảm dần ... điều này dường như được xác minh trong các kết quả thử nghiệm.

Từ quan điểm của tôi, có một nền tảng trực quan cho việc này. Hãy tưởng tượng giả thuyết của bạn phù hợp giữa hai siêu máy tính, bắt đầu từ các vị trí cơ sở bảng kết thúc. Hầu hết các chiến thắng bắt buộc trong bảng xếp hạng xảy ra ở một chân trời nhỏ hơn (ví dụ) 50 ply. Phần lớn các vị trí còn lại được rút ra, chỉ một phần nhỏ quyết tâm chiến thắng ở độ sâu cao hơn. Một máy tính tìm kiếm ở mức 100 ply sẽ có lợi thế hạn chế so với máy tính 50 ply, bởi vì (như bạn đã đề cập), chương trình yếu hơn có thể điều hướng qua gần như tất cả các dòng bị mất, tất cả xảy ra ở độ sâu hạn chế hơn. Một chương trình 50 lớp thực sự sẽ có lợi thế lớn hơn nhiều so với chương trình 25 lớp ... cũng như chương trình 4 lớp có lợi thế thậm chí còn lớn hơn chương trình 2 lớp.

Lần đầu tiên tôi bắt gặp khái niệm này khoảng 15 năm trước, trong loạt bài viết về Tư tưởng đen tối , thử nghiệm những tìm kiếm sâu sắc. Đây là một bài đọc tuyệt vời nếu bạn quan tâm đến cờ vua máy tính.

Mặc dù tôi không thể tìm thấy một tài liệu tham khảo trực tuyến, có một bài báo từ năm ngoái về chủ đề này ...

Diogo R. Ferreira (2013). Tác động của độ sâu tìm kiếm đối với sức mạnh chơi cờ. Tạp chí ICGA, Tập. 36, số 2


1

Câu hỏi là: Bạn có nghĩa là 15/30 lớp tìm kiếm toàn diện, hoặc độ sâu danh nghĩa / lặp lại 15/30 của một động cơ cờ vua hiện đại như Stockfish?

Nếu bạn có nghĩa là sau này, 15 ply không có nghĩa là nhiều. Các động cơ cờ vua hiện đại cắt tỉa rất nhiều và giảm các động tác được cho là xấu, do đó, có thể đó là một sự hy sinh có vẻ tồi tệ ngay từ cái nhìn đầu tiên, ở độ sâu danh nghĩa / lặp lại 15 thực sự chỉ được tìm kiếm ở độ sâu ví dụ 5-10. Ở độ sâu / lặp 30, di chuyển có lẽ vẫn chỉ được tìm kiếm ở độ sâu giảm, nhưng sau đó có thể là độ sâu hiệu quả 15-20, có thể đủ để thấy rằng sự hy sinh thực sự tốt, và ngay khi động cơ phát hiện ra rằng di chuyển này có triển vọng, nó sẽ giảm mức giảm, do đó di chuyển được tìm kiếm ở độ sâu gần 30 ply (hoặc thậm chí sâu hơn do tìm kiếm mở rộng và tìm kiếm tĩnh). Vì vậy, có, tôi nghĩ rằng nó có thể tạo ra sự khác biệt, ngay cả khi sự kết hợp nằm trong phạm vi danh nghĩa của 15 lớp.

Nếu bạn đang đề cập đến một tìm kiếm toàn diện, thì tôi nghĩ rằng một động cơ có độ sâu 15 sẽ rất mạnh với điều kiện là nó có chức năng đánh giá tốt và một số loại tìm kiếm không hoạt động (sau khi các nút rời ở độ sâu 15). Do lợi nhuận giảm dần, tôi nghĩ rằng mức tăng bằng cách tăng gấp đôi độ sâu sẽ ít hơn nhiều so với những gì bạn sẽ nhận được cho trận đấu giữa hai động cơ hiện đại có độ sâu 15 so với độ sâu 30. Nhưng đó chỉ là lý thuyết, vì tìm kiếm toàn diện độ sâu 15 sẽ mất một số đơn đặt hàng cường độ dài hơn so với những gì động cơ thường làm để đạt được độ sâu / lặp 15, vì vậy một thí nghiệm như vậy chỉ khả thi ở độ sâu thấp hơn.


0

FWIW Khi ARM còn mới, tôi đã viết một chương trình tìm kiếm toàn diện ARM được tối ưu hóa với đánh giá vị trí vật liệu chỉ sau lớp 1.

Tôi đã sử dụng các thủ thuật với mã máy được tối ưu hóa, đào sâu lặp lại, cửa sổ alpha-beta trên các bước di chuyển đã sắp xếp (hầu hết tất cả các vị trí đều có giá trị 0, do đó, việc cắt tỉa alpha-beta gần tối ưu) - và các bảng băm làm giảm hệ số nhánh xuống ít hơn nhiều so với căn bậc hai lý thuyết cho alpha-beta, thường là khoảng 4 ở phần tồi tệ nhất của trò chơi.

Trong một cuộc cạnh tranh với các chương trình tiêu chuẩn vào thời điểm đó, chương trình E6P của tôi đã vào vị trí khủng khiếp, nhưng với một tìm kiếm cực kỳ khó khăn hoặc hai lần so với phần mềm chuyên nghiệp vào thời điểm đó (ví dụ điển hình là 6 lần tìm kiếm hết sức + không hoạt động trong giai đoạn tồi tệ nhất, với lên đến 12 ply khi trò chơi được đơn giản hóa), nó tiếp tục vặn vẹo vì thực sự thua, bất chấp sự tự tin của đối thủ. Hầu như tất cả các trò chơi đã đi đến phân xử sau nhiều giờ vì các chương trình đối lập thực sự không thể thắng.

Sau đó tôi đã tối ưu hóa nó cho StrongARM, nơi nó chuyển đến 10 ply. Phiên bản này có thể dễ dàng đánh bại tất cả những người không chơi cờ, mặc dù rõ ràng nó không có bất kỳ nhận thức chiến lược nào, vì vậy, nhận xét nổi tiếng được áp dụng: có, họ là những nước cờ - nhưng đó không phải là cờ vua!

Điều này đã xảy ra cách đây vài năm, nhưng tôi đã cố gắng thử lại một lần nữa với đánh giá vị trí chiến lược hơn ở mức 1 - và với Intel XEON về mặt lý thuyết nhanh hơn 10.000-100.000x (và với bộ nhớ bảng băm gấp 30 nghìn lần) so với 4MIPS ARM2 Acorn Archimedes.

Phải thừa nhận là không chính thống, nhưng thú vị để chơi.


-2

+1 ply được ước tính + 55,70 ELO đạt được (rất nhiều nghiên cứu về chủ đề này)

Tôi đoán rằng trong 15 độ sâu này, có thể có hàng nghìn tỷ cách để thoát khỏi một người kiểm tra hoặc bắt giữ mảnh quan trọng.

Vấn đề là tất cả "hàng nghìn tỷ" này đã được tính toán bởi A @ D = 30, và nếu A chọn di chuyển với chiến thắng, điều đó có nghĩa là nó đã tính tất cả "nghìn tỷ" này và bất kể "tỷ tỷ" nào di chuyển câu trả lời của đối thủ - di chuyển vẫn đang chiến thắng


Chào mừng đến với cuộc thảo luận. Bạn có bất cứ điều gì để chứng minh tuyên bố của bạn? Tôi không nghĩ có bất kỳ mối quan hệ cụ thể.
SmallChess
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.