Một cách chính xác để đánh giá các vị trí cờ vua là gì?


12

Tôi đã quan tâm một thời gian về một thuật toán AI cờ vua máy tính (và có cơ hội để làm việc tại một thời điểm nào đó) như Minimax , và vì thành phần cốt lõi của các thuật toán này là chức năng đánh giá được gọi là xác định cái gì là cấu hình bảng tốt , và cái gì là xấu .

Nói cách khác, được đưa ra một cấu hình của Bàn cờ của bạn, làm thế nào để bạn xác định rằng đó là lợi thế của bạn, và với mức độ tự tin nào?

Ví dụ:

  • Nếu bạn sở hữu trung tâm, điều này là khá thuận lợi.
  • Nếu bạn có nhiều quân cờ hơn đối thủ, điều này khá thuận lợi.
  • Nếu bạn mất Nữ hoàng của bạn, điều này là không thuận lợi.
  • Nếu bạn có một con tốt gần được thăng chức thì điều này là thuận lợi.
  • ...

Vì vậy, tôi muốn hỏi một số lời khuyên về cách tạo ra một chức năng đánh giá tốt , dựa trên một số kiến ​​thức chuyên môn về trò chơi Cờ vua nói chung. Và nếu có thể, một mức độ có lợi (nói giữa 1 là rất không thuận lợi, đến 100 là cực kỳ thuận lợi).

Ý tưởng cuối cùng là có thể tạo ra một thuật toán sẽ tìm trong cây khả năng đến một độ sâu nhất định và đánh giá cấu hình thuận lợi nhất cho bước tiếp theo là gì (có tính đến một số di chuyển trong tương lai) dựa trên những gì là thuận lợi cho người chơi và không thuận lợi cho đối thủ. Nhưng không có chức năng đánh giá tốt thì thuật toán không là gì cả.


Tôi nghĩ rằng câu hỏi này sẽ làm tốt trên StackOverflow. Có rất nhiều câu hỏi trên đó liên quan đến Chess AI
xaisoft

3
Tôi đã nghĩ sẽ đăng nó trên SO trước đây, nhưng tôi gần như chắc chắn rằng nó sẽ bị đóng vì không mang tính xây dựng hoặc không phải là một câu hỏi thực sự ở đó. Có lẽ nếu tôi cần nhấn mạnh hơn vào chính mã, nhưng tôi nghĩ đối với chức năng đánh giá, nó đòi hỏi kiến ​​thức về cờ vua, không quá nhiều về mã hoặc thuật toán.
Charles Menguy

Làm thế nào chính xác. Cách duy nhất hoàn toàn chính xác là bạn thắng hay thua hoặc hòa.
edwina oliver

Câu trả lời:


9

Đây là một điểm khởi đầu tốt. So sánh vật liệu là chìa khóa (và dễ dàng), sau đó bạn có thể điều chỉnh để xem xét các khía cạnh vị trí như xếp hạng / tệp / đường chéo mở, cấu trúc cầm đồ, v.v.

https://www.chessprogramming.org/Đánh giá


5

Tôi có cảm giác tôi hơi muộn với câu trả lời này nhưng - tôi cũng đang trong quá trình chế tạo động cơ. Mã nguồn bằng Python (khá dễ đọc, ngay cả khi bạn không biết) và có sẵn ở đây nếu bạn muốn đọc nó. Danh sách 'heuristic' hiện đang hoạt động (tại thời điểm đăng):

  • Các mảnh phát triển xa hơn (gần với phía đối diện) là tốt hơn
  • Chân gần với khuyến mãi là tốt
  • Các vị vua được tính điểm riêng dựa trên giai đoạn trò chơi đang diễn ra (mở đầu, giữa trận đấu, kết thúc)
  • Nếu người chơi có cả hai giám mục, sẽ nhận được tiền thưởng
  • Nếu người chơi đã ném, nhận tiền thưởng
  • Những con tốt bị cô lập (những con tốt không có gì xung quanh chúng) là không tốt
  • Những con tốt gấp đôi (hai con tốt trên cùng một tệp không có khoảng cách giữa) là không tốt
  • Có tất cả 8 con tốt không phải là một điều tốt và bị phạt (họ làm lộn xộn bảng và cản trở)
  • Hãy xem chức năng đánh giá tuyệt vời này cũng được sử dụng
  • Các giám mục có nhiều con tốt hơn trên cùng một hình vuông màu với giám mục bị phạt (họ không tốt trong các tình huống đông đúc)
  • Chưa được thực hiện, nhưng đã được lên kế hoạch: Các hiệp sĩ nhận được tiền thưởng trong các tình huống đông đúc hơn

Ở một trong những điểm đó, tôi đã đề cập đến 'giai đoạn' của trò chơi (ví dụ: mở, midgame, endgame) và nếu bạn muốn đưa nó vào công cụ của mình, có lẽ bạn sẽ gặp vấn đề tương tự như tôi đã làm: không dòng rõ ràng ngăn cách những người. Chức năng của tôi quyết định giai đoạn nào trong trò chơi sử dụng một số điều:

  • Số lượng tài liệu trên bảng (ngay khi bất kỳ mảnh nào bị giết, nó đánh dấu trò chơi là không mở đầu)
  • Số lần di chuyển (ít hơn 6 fullmove là mở, không có vấn đề gì)
  • chuyển động của các nữ hoàng (nếu cả hai nữ hoàng đã được di chuyển, đánh dấu trò chơi là midgame)

Câu trả lời này có thể đã dài, muộn và lạc đề, nhưng tôi hy vọng nó cũng hữu ích.


5

Thêm vào câu trả lời của @Eve Freeman, tôi sẽ đề nghị tìm hiểu làm thế nào để công cụ máy tính tốt nhất trên thế giới, Stockfish, đánh giá một vị trí nhất định. Khi mã nguồn được mở, bạn có thể làm điều đó miễn phí. Tôi nghĩ rằng tập tin với chức năng đánh giá bạn đang tìm kiếm là cái này .


4

Đáng ngạc nhiên, hóa ra một động cơ Minimax sẽ chơi hợp lý khi chức năng đánh giá là ngẫu nhiên ; hiệu ứng này được gọi là hiệu ứng Beale và kết quả từ nguyên tắc các vị trí cung cấp cho bạn nhiều tùy chọn hơn và đối thủ của bạn ít lựa chọn hơn thường thuận lợi. Một cách hợp lý để tạo ra các đánh giá ngẫu nhiên một cách nhất quán và hiệu quả là tạo ra hàm băm Zobrist cho vị trí (sử dụng các hệ số được chọn ngẫu nhiên khi bắt đầu trò chơi) và rút ra đánh giá ngẫu nhiên trực tiếp từ hàm băm.

Ở phía đối diện của thang đo, AlphaZero và Leela thực hiện một đánh giá cực kỳ tinh vi về từng vị trí được tìm kiếm, sử dụng một mạng lưới thần kinh lớn . Thật không thực tế khi mô tả theo thuật ngữ của con người về chức năng mà mạng này thực hiện một cách hiệu quả, nhưng nó không thể phủ nhận hiệu quả hơn chức năng đánh giá của Stockfish. Bài viết nghiên cứu AlphaZero chỉ ra rằng phương pháp này hoạt động tốt nhất với Tìm kiếm cây Monte-Carlo chứ không phải Minimax.

Mặt khác, nếu bạn muốn phát triển một công cụ phân tích để giúp người chơi hoặc người bình luận con người hiểu được các sắc thái của một vị trí, thì có thể đáng để thực hiện chức năng đánh giá thông thường bằng cách sử dụng các giá trị vật chất đã được thiết lập và lý thuyết vị trí . Một ví dụ điển hình được đặt ra bởi Inside Rebel của Ed Schröder , ghi lại các đặc điểm thiết kế chính của một động cơ được đánh giá cao được sử dụng trong một số máy tính chơi cờ của Mephisto. Bạn có thể muốn sử dụng một mức độ nhất định của máy học để xác định tầm quan trọng tương đối của từng yếu tố của chức năng đánh giá của bạn và cũng có thể tách riêng các yếu tố này để trình bày trong GUI.


3

Tôi nghĩ rằng các lập trình viên cờ vua có xu hướng không dựa vào kiến ​​thức của những người chơi cờ mạnh mẽ khi thiết kế các chức năng đánh giá của họ, mà thay vào đó thử các yếu tố khác nhau, sau đó thử nghiệm chúng trong các trò chơi với các động cơ khác và quyết định nên giữ gì. Larry Kaufman nói một chút công bằng về quan điểm của anh ấy về sự hiểu biết của con người là gì, nhưng có vẻ như cả Rajlich và Tweetsey đều có định hướng rất rõ ràng và không chấp nhận bán buôn ý tưởng của Kaufman.

Một bài báo tôi thấy thú vị là Zach Wegner so sánh các chức năng đánh giá của Rybka và Fruit. Một trong những lĩnh vực mà Rybka có thể đại diện cho một bước tiến là kết hợp các bảng mất cân bằng vật chất dựa trên sự kết hợp các mảnh cụ thể. Kaufman đã viết một bài báo về điều này là tốt.

http: //www.top-5000.nl/ZW_Rybka_Fbean.pdf http://danheisman.home.comcast.net/~danheisman/Articles/ev Assessment_of_m vật_imbalance.htmlm


0

Liên kết này là điểm khởi đầu tốt nhất IMHO. Tôi đang sử dụng điều này như là điểm khởi đầu cho chương trình cờ vua của riêng tôi và thấy nó đơn giản để hiểu và cũng hữu ích.

https://chessprogramming.wikispaces.com/Simplified+ev Assessment + chức năng


2
Bạn có thể vui lòng mở rộng ngắn gọn về nội dung của liên kết?
Pablo S. Ocal

Trang Wikispaces hiện không còn tồn tại. Một liên kết được sửa chữa đến ngôi nhà mới của nó: Chessprogramming.org/Simplified_Evalval_Feft
Chromatix

0

Tóm lại, cách tiếp cận tiêu chuẩn để điều chỉnh các thông số của động cơ cờ vua là:

  1. Xác định các tham số
  2. Đưa ra các tham số giá trị danh nghĩa (bắt đầu)
  3. Chạy động cơ để xem nó hoạt động như thế nào
  4. Điều chỉnh các giá trị tham số để cố gắng cải thiện hiệu suất của nó

Sau đó lặp lại Bước 3 và 4 cho đến khi bạn đạt được mục tiêu về hiệu suất.

Cách tiếp cận thông thường để làm điều này là thiết lập một phòng thí nghiệm nơi động cơ đối mặt trong các giải đấu động cơ. Nhiều trò chơi được sử dụng trong đó động cơ chơi cả hai màu. Các giải đấu quan tâm chính liên quan đến việc chạy một động cơ có giá trị tham số A so với cùng một động cơ với giá trị tham số được đặt B.

Như bạn có thể đoán, kết quả từ phương pháp này phụ thuộc rất nhiều vào:

  • Các tham số được chọn
  • Làm thế nào các tham số được chỉ định
  • Làm thế nào các giá trị tham số được thay đổi trong suốt quá trình thử nghiệm
  • Làm thế nào các động cơ được chạy (giới hạn độ sâu, thời gian hạn chế, độ nhạy, vv)

Cách tiếp cận này cũng tiêu tốn rất nhiều thời gian.

Một cách tiếp cận gần đây hơn (và đổi mới) đã được phát triển vào năm 2010 bởi các nhà nghiên cứu sử dụng các kỹ thuật Thuật toán di truyền để a) chỉ định các tham số và b) điều chỉnh các giá trị tham số. Các nhà điều tra trước tiên chạy một động cơ với một bộ giá trị tham số danh nghĩa bắt đầu so với một bộ trò chơi grandmaster để xem liệu nó có thể chọn "bước đi tốt nhất" một cách hiệu quả hay không. "Di chuyển tốt nhất" được định nghĩa là di chuyển mà ông chủ thực hiện *. Bất cứ nơi nào nó không làm như vậy đã được ghi lại. Sau đó, một bộ giá trị tham số khác đã được thử và hiệu suất tương đối so với lần chạy trước được xác định.

Sau đó, một cách tiếp cận theo chương trình để kết hợp các giá trị tham số đã được thử, sử dụng nguyên tắc Thuật toán di truyền để sống sót "mạnh nhất". Ở đây, "fittest" có nghĩa là cái tạo ra đầu ra phù hợp nhất với lý tưởng. (Đây cũng là một cách chơi chữ của kỹ thuật thống kê hồi quy "bình phương nhỏ nhất phù hợp", một kỹ thuật được sử dụng để đánh giá chất lượng của xấp xỉ.)

Chỉ sau khi các thông số động cơ đã được tìm thấy có thể bắt chước một GM một cách hợp lý thì giai đoạn giải đấu động cơ thực sự mới bắt đầu. Trong pha này, các bộ giá trị tham số khác nhau lại một lần nữa đọ sức với nhau, lần này trực tiếp . Các kỹ thuật cải tiến thuật toán di truyền được áp dụng để tạo ra các thế hệ động cơ tốt hơn liên tiếp.

Trong dự án nghiên cứu này, 36 tham số đã được sử dụng, bao gồm tất cả các giá trị vật chất của các mảnh và nhiều tiêu chí đánh giá chiến lược phổ biến hơn, chẳng hạn như cầm đồ lạc hậu, hình vuông yếu, cặp giám mục, v.v. Tuy nhiên, các nhà nghiên cứu đã thêm một số tham số mới, chẳng hạn như giá trị "áp lực vua", "tính di động" cho từng loại mảnh, tạo ra một tập tin liền kề với nhà vua, bắt đầu một tập tin bán mở, tấn công nhà vua trên một - / b- / g- / h-file, tách biệt giữa một con tốt đã qua và vua bảo vệ, v.v.

Thật không may, các nhà nghiên cứu không giải thích chi tiết về cách họ đưa ra bộ thông số này và những thông số thay thế nào họ có thể đã kiểm tra và từ chối. Sẽ là hợp lý khi giả định rằng họ đã bắt đầu với một tập hợp lớn hơn nhiều, và xác định (thông qua thử và sai) cái nào có ảnh hưởng lớn nhất đến hiệu suất, và cái nào là không đáng kể hoặc phái sinh, và do đó có thể bị loại bỏ.

Nếu điều này nghe có vẻ hữu ích, bạn có thể tìm thấy nghiên cứu ở đây .

* Một cảnh báo về một giai đoạn của phương pháp mà các nhà nghiên cứu đã sử dụng là theo thứ tự. Trong phần Giới thiệu về Tìm hiểu cờ vua di chuyển bằng cách di chuyển , John Nunn đã chọn "... trò chơi chiến đấu khó khăn giữa các đại kiện tướng mạnh mẽ ..." để minh họa cho các chủ đề của mình. Sau đó, ông nói thêm:

Độc giả có thể khá ngạc nhiên khi thấy số lượng dấu hỏi tô điểm cho các trò chơi trong cuốn sách này. Chắc chắn, bạn có thể nghĩ rằng, chỉ với ba mươi trò chơi để chọn, thật dễ dàng để tìm thấy một số trò chơi âm thanh. Tuy nhiên, tôi có thể đảm bảo với bạn rằng nó không phải là. ... có thể tìm thấy lỗi với hầu như bất kỳ trò chơi phức tạp, khó chiến đấu nào ... Tôi chưa bao giờ cảm thấy rằng trò chơi của mình ở bất cứ đâu gần như hoàn toàn chính xác, vì vậy cá nhân tôi không thấy những tiết lộ đau khổ này. Tuy nhiên, một số người có thể khó thừa nhận rằng cờ vua do con người chơi không chính xác hơn so với suy nghĩ trước đây.

Điểm mà Tiến sĩ Nunn nêu ra cho thấy rằng cách tiếp cận ban đầu của các nhà nghiên cứu để thiết lập các thông số động cơ bằng cách yêu cầu họ bắt chước các động tác của ông chủ có thể là thiếu sót vì chơi con người là thiếu sót . Trên thực tế, nó được thiết lập tốt rằng động cơ đã chơi tốt hơn con người .

Do đó, có lẽ cách tiếp cận tốt hơn để thiết lập các tham số ban đầu sẽ phù hợp với động cơ mới so với động cơ hiện có vượt trội .


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.