Làm thế nào để các động cơ cờ vua nghĩ thế?


28

Những gì tôi muốn biết là làm thế nào động cơ được lập trình để tìm di chuyển. Tôi chắc chắn rằng trước tiên họ tính toán các dòng cưỡng bức nhất như chụp và kiểm tra. Nhưng những gì về di chuyển vị trí tinh tế, sâu sắc? Họ dường như cũng tìm thấy chúng rất nhanh (Nói chung. Tất nhiên họ bỏ lỡ những động thái như vậy bây giờ và sau đó). Như trong, làm thế nào họ được lập trình để tìm kiếm di chuyển yên tĩnh / ý tưởng vị trí? Họ không thể vũ phu mỗi khi di chuyển, vì điều đó sẽ mất quá nhiều thời gian, vì vậy cần có một số cách thông minh để họ đạt được những bước đi tốt nhất thực sự nhanh chóng. Tôi muốn biết điều này bởi vì tôi nghĩ nó cũng giúp người chơi nghĩ về bảng trong thế giới thực.


Động cơ cờ vua nhìn vào vài triệu vị trí mỗi giây, vì vậy trên thực tế họ có thể nhìn vào tất cả chúng cho đến khi chúng nhận được một vài bước di chuyển sâu.
RemcoGerlich

2
Đây là một câu hỏi tuyệt vời, tôi thực sự rất thích câu trả lời.
Travis J

Về cơ bản, họ tìm kiếm trước với một thuật toán tìm kiếm (ví dụ: minimax) và đánh giá các vị trí bằng cách sử dụng phương pháp phỏng đoán được lập trình sẵn. Mặc dù một số công cụ gần đây (ví dụ, AlphaZero) phát triển các phương pháp đánh giá riêng thông qua việc tự chơi.
Vô minh quán tính

Câu trả lời:


22

Nói chung, động cơ cờ vua sử dụng cây quyết định. Rễ của cây là vị trí hiện tại và có một nút con cho mỗi vị trí có thể được thực hiện bằng cách thực hiện một động thái hợp pháp. Mỗi nút này lần lượt có một nút con cho các vị trí có thể đạt được bằng cách thực hiện một động thái hợp pháp từ chúng. Động cơ đẩy cây ra đến độ sâu được xác định bởi khả năng của nó và thời gian được phép "nghĩ". Các vị trí có thể đạt được theo nhiều cách chỉ đơn giản là được tham chiếu chéo để chúng sẽ không phải được xem xét nhiều lần. Khi cây được tạo, máy tính sẽ sử dụng một bộ quy tắc có trọng số để phân tích các vị trí cuối cùng trong cây và bắt đầu loại bỏ những vị trí không mong muốn hoặc đối thủ có thể ngăn không cho nó chạm tới. Cây bị chặt theo cách này cho đến khi chỉ còn một động tác và máy tính thực hiện chuyển động đó.

http://www.chess.com/blog/zaifrun có loạt bài viết hoặc bài viết về việc tạo ra một công cụ cờ vua nếu bạn muốn có một cái nhìn sâu hơn về cách chúng hoạt động.


Câu trả lời hay, vậy khi bạn thấy độ sâu 30, điều đó có nghĩa là động cơ đã tìm kiếm sâu 30 nút? Ngoài ra, nó có nghĩa là gì bởi Ply?
xaisoft 26/03/13

Tôi không chắc chắn những gì viết tắt của Ply mà không thực hiện thêm một số nghiên cứu, tôi chưa bao giờ tốt với các từ viết tắt. Thay vì độ sâu đề cập đến việc có bao nhiêu nút sâu, mỗi nút sẽ là một nửa di chuyển hoặc để di chuyển sâu có thể phụ thuộc vào lập trình viên. Tuy nhiên tôi nghĩ rằng quy ước đó sẽ là số lượng di chuyển sâu.
Edward Goodson

5
Một lớp là một nửa của di chuyển. Di chuyển trong cờ vua là một 'bộ' hoàn chỉnh nếu bạn muốn bằng màu trắng + đen. Một lớp là một nửa số đó, vì vậy chỉ cần một màu.
ErebusBat

21

Bạn đang hỏi một câu hỏi khá phức tạp, nhưng thật tốt khi quay lại những điều cơ bản. Có một vài khái niệm cần xem xét:

Đánh giá

Nếu một người chơi (thực sự) được hiển thị một vị trí và hỏi "ai là người chiến thắng trò chơi này?", Làm thế nào để họ quyết định? Nhiều khả năng, họ sẽ kiểm tra một số điều cơ bản, chẳng hạn như: sự khác biệt về vật chất, mức độ mà các mảnh đã được phát triển hoặc được định vị "tốt", nhân đôi / cách ly / kết nối / thông qua, mở tệp (có kiểm soát), bao xa các bảng cầm đồ là.

Bây giờ, nếu bạn phải làm, bạn có thể đưa ra một cách có hệ thống để tính điểm số vị trí dựa trên những điều trên. Ví dụ, bạn có thể quyết định rằng một con tốt có giá trị 1 điểm và một con tốt đã qua có giá trị hơn 0,3 điểm. Những con tốt bị cô lập hoặc nhân đôi có thể có giá trị ít hơn một chút, v.v. Nếu bạn cộng tất cả mọi thứ, bạn sẽ có được một giá trị ước tính cho vị trí ngay lập tức trong tay.

Điều này được gọi là đánh giá và về cơ bản tất cả các chương trình cờ vua đều có cách đánh giá các vị trí (bỏ qua các công cụ cờ vua AI mới lạ thường rất yếu).

Nhưng những gì về di chuyển vị trí tinh tế, sâu sắc?

Chà, chúng tôi chỉ mới trầy xước bề mặt đánh giá vị trí. Việc thực hiện chức năng đánh giá thực tế có thể đơn giản, cho phép đánh giá nhiều vị trí hơn mỗi giây (mặc dù theo kiểu thô) hoặc phức tạp hơn, dẫn đến ít vị trí được đánh giá hơn, nhưng độ tin cậy cao hơn. Không có gì lạ khi chức năng đánh giá có tính đến hàng trăm hoặc thậm chí hàng ngàn thông tin riêng biệt.

Tìm kiếm

Tôi đặc biệt bỏ qua một cái gì đó ở trên, điều mà hầu hết những người chơi thực sự sẽ nghĩ ngay đến - có cách nào để ngay lập tức giành chiến thắng trong trò chơi cho cả hai bên không? Bất kỳ bạn tình hoặc mảnh "treo" có thể nhìn thấy? Mặc dù thật dễ dàng để tầm thường hóa điều này, nhưng đó là bất cứ điều gì ngoài tầm thường.

Điều đó có nghĩa gì với một người chơi có sự tự tin hoàn toàn trong một sự kết hợp? Cuối cùng, nó sôi sục khi tính toán tất cả các tùy chọn. Người chơi thực sự thường sẽ không làm điều này (ngoại trừ những người bạn tầm thường hoặc rất gượng ép), hầu hết thời gian chúng tôi sẽ chỉ xem xét một số tùy chọn và loại trừ những người khác có vẻ "không xây dựng" hoặc rõ ràng dẫn đến thua lỗ . Chúng ta thường mắc lỗi trong quá trình tính toán này, ví dụ chúng ta có thể nhận ra rằng sự thay đổi trong lệnh di chuyển làm cho các mối đe dọa bốc hơi, v.v. Điểm quan trọng là để hoàn toàn chắc chắn về sự kết hợp, bạn thực sự cần phải tính toán tất cả các cách để kết luận, giả sử từng Người chơi sẽ chỉ thực hiện di chuyển tốt nhất có thể cho họ (điều này được gọi là "tối thiểu / tối đa").

Bây giờ, do cờ vua có không gian tìm kiếm lớn hơn nhiều (đây là điều "tất cả các động thái có thể có trong tương lai" được đề cập) so với những gì khả thi để máy tính tính toán, cần phải thực hiện các thỏa hiệp. Cũng giống như con người, máy tính có thể quyết định bỏ qua toàn bộ dòng suy nghĩ dựa trên các tiêu chí nhất định. Điều này được gọi là heuristic . Đáng lưu ý rằng mặc dù bạn chỉ có thể thực sự chắc chắn về sự kết hợp nếu bạn vũ phu, nhưng chức năng đánh giá phức tạp thường có thể phát hiện sự hiện diện của các mối đe dọa (ví dụ: chúng ta có thể đếm các nhánh, cơ hội xiên, v.v., để hướng dẫn tìm kiếm theo hướng đó ).

Cuối cùng, mặc dù máy tính cực kỳ nhanh, nhưng đó là phương pháp phỏng đoán cho phép chúng tính toán rất sâu. Điều đó nói rằng, bạn có thể ngạc nhiên khi các động cơ hiện đại sâu tính toán đầy đủ, điển hình là vượt quá 3 lần di chuyển, ngay cả trong các trò chơi nhanh.

Kết luận / kết hợp tất cả

Vì vậy, để tóm tắt - các chức năng đánh giá có rất nhiều trí thông minh được tích hợp trong chúng (nghĩa là chúng có tính đến nhiều thứ hơn so với người chơi bình thường của bạn), heuristic cho phép máy tính loại bỏ những dòng suy nghĩ có thể sẽ không kết thúc tốt, và máy tính cực kỳ, cực kỳ nhanh. Thêm chúng lên, và chúng khá khó để đánh bại.


6

Tôi đồng ý với câu trả lời.

Tôi nhớ GM Roman Dzindzichashvili nói về nó, trong một trong các video trong phòng thí nghiệm của Roman , tôi không nhớ đó là video gì (nếu có ai biết chi tiết xin vui lòng chỉnh sửa câu trả lời của tôi).

Roman nói rằng nhà phát triển động cơ Fritz là bạn của anh ta. Vì vậy, Roman đã thử nghiệm Fritz để xem nó tốt như thế nào và nhà phát triển nói với Roman rằng để Fritz đưa ra quyết định phức tạp (hy sinh vật liệu để đổi lấy lợi thế vị trí chẳng hạn), họ phải thay đổi giá trị của các mảnh, như nói với chương trình rằng một giám mục xấu có giá trị 1 điểm, một giám mục trên một đường chéo mở có giá trị 7 điểm, các hiệp sĩ có giá trị 5 điểm ở vị trí gần ...

Tôi không biết con số chính xác cho từng mảnh nhưng đó là cách nó hoạt động, và bây giờ động cơ của bạn sẽ không gặp vấn đề gì khi hy sinh một giám mục tồi hoặc bất cứ điều gì nếu bạn có thể cho anh ấy biết giá trị của từng mảnh ở mỗi vị trí.

CHỈNH SỬA

Xem thêm Wiki lập trình cờ vua .


4

Máy tính không thể nhìn đủ sâu (25 lớp trở lên) và kiểm tra mọi di chuyển có thể.

Điều có thể thực hiện được là kỹ thuật gọi là Alpha-beta pruning , có nghĩa là các máy tính, tương tự như con người (nhưng tốt hơn) chỉ tuân theo các phần tiếp theo đầy hứa hẹn.

Họ đánh giá các vị trí liên tục (dựa trên một số quy tắc được mã hóa, định giá vật liệu, an toàn vua, hoạt động, cấu trúc cầm đồ, v.v.) và xem xét các biến thể dường như đang dẫn họ đến vị trí tốt nhất.

Nó vẫn gần với phép thuật làm thế nào họ quản lý để làm điều đó đủ hiệu quả để đánh giá hàng triệu vị trí này trong một giây.

Vì vậy, để tóm tắt - bạn đã đúng, họ không thể xem tất cả các nước cờ nếu họ chơi cờ chiến lược, nhưng họ có thể rất nhanh chóng nhìn vào các nước cờ tốt. Vấn đề vẫn nằm ở kế hoạch dài hạn và chân trời mà họ có thể nhìn thấy, nhưng điều này đang được thực hiện (Rybka phân tích chậm hơn nhiều, nhưng chơi cờ theo vị trí nhiều hơn, trong khi Houdini lãng mạn ở đó là 'trái tim máy móc' tính toán nhiều chuyển động hơn và chơi tích cực hơn). Ngay cả máy tính cũng có phong cách riêng của họ!


3

Cắt tỉa Alpha-beta đơn giản có nghĩa là nếu bạn tìm thấy một dòng không phù hợp với bạn, bạn sẽ ngừng nhìn vào ứng cử viên đó, và thay vào đó hãy thử những người khác. Đó là một loại ý nghĩa cắt tỉa lạc hậu mà kết quả là bạn sẽ không bao giờ bỏ lỡ một động thái tốt. Ngược lại, cắt tỉa, dựa trên phỏng đoán nhiều hơn. Cắt tỉa vô ích, giảm di chuyển muộn và dao cạo là những kiểu cắt tỉa về phía trước và tất cả đều dựa vào cảm giác của lập trình viên về loại di chuyển nào nên được xem xét. Một chương trình thực hiện nhiều thao tác cắt tỉa phía trước có thể bỏ lỡ những hy sinh đáng kinh ngạc dẫn đến giao phối, nhưng mặt khác, nó loại bỏ rất nhiều động thái thực sự tồi tệ, và vì vậy có thể đi sâu hơn vào việc xem xét các động thái mà nó ủng hộ.

Hầu hết các công cụ tìm kiếm một vài di chuyển đầu tiên ở độ sâu đầy đủ kiểm tra tất cả các khả năng. Nếu không có động thái nào thất bại cao (nghĩa là rõ ràng tồi tệ hơn một động thái bạn đã xem xét), bạn mở rộng tìm kiếm thêm một chút nữa. Nói chung, bạn tiếp tục khám phá từng dòng cho đến khi bạn đạt đến một vị trí không hoạt động (không có kiểm tra, bắt giữ, đe dọa bạn đời, v.v.), sau đó thực hiện đánh giá của bạn. Di chuyển yên tĩnh có thể không được xem xét khi chúng ở sâu trong cây tìm kiếm, nhưng một khi bạn đến vị trí thực tế đó trong trò chơi, động cơ sẽ xem xét tất cả các chuyển động, yên tĩnh và sắc nét như nhau. Đôi khi bạn thực sự có thể thấy điều này trong đầu ra của động cơ, khi một động cơ đột nhiên ủng hộ một động thái mà nó đã không cân nhắc một vài lần di chuyển trở lại.

Động cơ tính toán nhanh đến mức không quan trọng đối với họ để xem xét di chuyển nào để xem xét đầu tiên, nhưng đối với con người thì đây là một câu hỏi quan trọng. Jonathan Tonomall đã cố gắng trả lời điều này trong cuốn sách của mình, Cải thiện cờ vua của bạn ngay bây giờ. Khi bạn đang tấn công, anh ấy đề nghị bạn nhìn vào những động tác bạo lực nhất trước tiên. Khi bạn phòng thủ, bạn nhìn vào những dòng khó nhất trước tiên. Ông cũng trích dẫn các quy tắc vị trí của ngón tay cái (ví dụ: tập trung, phối hợp) khi quyết định xem cái nào sẽ chuyển sang cái nhìn đầu tiên.

Những cuốn sách khác có thể có liên quan là Di chuyển cờ vô hình của Emmanuel Neimann và Di chuyển cờ vua cưỡng bức của Charles Hertan, cả hai đều tranh luận về tầm quan trọng của việc xem xét các nước cờ không chắc chắn hoặc đáng ngạc nhiên ở các vị trí sắc bén. Hertan thậm chí còn nói về việc phát triển 'mắt máy tính' cho các chiến thuật như vậy.

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.