Cách tiếp cận ghi bàn cho các đối thủ máy tính cần cân bằng


16

Câu hỏi này là về cách tiếp cận đối thủ máy tính mà tôi đã tạo và hiện đang được sử dụng hoặc dự định sẽ được sử dụng trong một số trò chơi trên máy tính.

Lý lịch

Năm ngoái, khi cố gắng cải thiện đối thủ máy tính cho một trò chơi có tên là "Minesweeper Flag" (mô tả ngắn: Phiên bản nhiều người chơi theo lượt của Minesweeper, nơi bạn phải lấy nhiều mìn hơn đối thủ của mình) , tôi đã thay đổi mạnh mẽ cách thức hoạt động của thuật toán của tôi . Thay vì sử dụng một cách tiếp cận như if-other-if-other, tôi đang sử dụng một bộ "người ghi bàn" với các trọng số được chỉ định để xác định cách di chuyển tốt nhất là gì.

Bạn có thể nghĩ rằng đối với một trò chơi như Minesweeper Flag, chỉ cần thực hiện các động tác mang lại cho bạn xác suất lấy mỏ cao nhất, nhưng nó không đơn giản. Việc di chuyển máy tính sẽ thực hiện thường phụ thuộc vào một số tính năng cho di chuyển cụ thể đó trong trạng thái trò chơi hiện tại. Ví dụ về các tính năng:

  • Xác suất của động thái này ghi điểm của tôi là gì?
  • Xác suất để tiết lộ bất cứ điều gì cho đối thủ của tôi ở đây là gì?

Mô tả hệ thống

Hệ thống về cơ bản hoạt động như thế này:

  1. "Pre-scorers": Một số phân tích trước được thực hiện cho trạng thái trò chơi hiện tại (theo thuật ngữ Minesweeper Flag, đây thường là: Tính toán tất cả các xác suất)
  2. "Người ghi bàn": Một nhóm người ghi bàn thông thường được yêu cầu xác định điểm số cho mỗi lần di chuyển có thể, mỗi người ghi bàn áp dụng điểm số theo tiêu chí riêng của mình. Những người ghi bàn có thể kiểm tra kết quả phân tích trước đã được thực hiện.
  3. Điểm số được tính trong bước trên được tổng hợp lại với nhau và được đặt thành điểm số cho một lần di chuyển.
  4. Các bước di chuyển được sắp xếp theo điểm số của chúng và được xếp hạng sao cho tất cả các nước đi có cùng số điểm đều có cùng thứ hạng.
  5. "Người ghi điểm": Kết quả của những điều trên có thể được gửi đến "Người ghi điểm" có khả năng sửa đổi điểm số của bất kỳ trường nào theo bất kỳ cách nào họ muốn, theo quy tắc riêng của người đăng bài.

Khi kết hợp một loạt các người ghi bàn trước, người ghi bàn (với trọng số của họ) và người ghi bàn sau, nó trở thành cái mà tôi gọi là cấu hình điểm số .

Kết quả ví dụ

Đây là một ví dụ về điểm số đã được áp dụng cho Minesweeper Flag. Đây là bản đồ đã được ghi:

Bản đồ Minesweeper Flag đã được ghi

Và đây là đầu ra của một cấu hình điểm thực tế. Nó đang hiển thị thứ hạng của các nước đi có thể, trong đó 1 là thứ hạng tốt nhất và được đánh dấu màu trắng:

Ví dụ đầu ra của phương pháp cho điểm

Nhờ có mã được viết rất linh hoạt, cách tiếp cận AI này cũng có thể được chèn vào các trò chơi khác.

Ưu điểm và nhược điểm

Dưới đây là một số ưu điểm và nhược điểm của hệ thống này mà tôi có thể nghĩ về bản thân

Ưu điểm

  • Thật dễ dàng để tạo ra rất nhiều cấu hình khác nhau cho AI.
  • Có thể sử dụng với Thuật toán di truyền: Mỗi người ghi bàn có trọng lượng liên quan, trọng lượng có thể trở thành gen.
  • Sử dụng một số công cụ, có thể kiểm tra lý do tại sao một động thái cụ thể được thực hiện và những người ghi bàn nào chịu trách nhiệm chính cho động thái đó
  • Sử dụng các công cụ, có thể tạo một bản đồ về tổng điểm / thứ hạng của các bước di chuyển có thể (như ảnh chụp màn hình ở trên)
  • Bằng cách áp dụng điểm số vào cách con người chơi, có thể tạo ra một "#AI_Mirror" để cố gắng thực hiện các động tác mà nó nghĩ rằng con người sẽ thực hiện

Nhược điểm

  • Có thể cực kỳ khó khăn để điều chỉnh cấu hình điểm "chính xác", để làm cho AI chơi tốt nhất có thể.

Câu hỏi

  • Là hệ thống tôi đã xây dựng ở đây được biết đến rộng rãi trong thế giới AI? Nó sẽ được gọi là gì trong thuật ngữ AI thực sự?

  • Liệu cách tiếp cận này có ý nghĩa hay có một cách tiếp cận khác mà bạn muốn giới thiệu?

  • Những cách nào có thể làm cho quá trình điều chỉnh cấu hình điểm dễ dàng hơn?

Về câu hỏi cuối cùng, tôi nhận thức được khả năng sử dụng thuật toán di truyền, tôi cũng nhận thức được nhẹ về SARSA (và tôi nghĩ rằng những người ghi điểm của tôi giống với mô tả các tính năng của trang web với trọng số, nhưng từ hiểu biết của tôi đó không phải là chính xác những gì tôi đã tạo ra đây). Tôi nghĩ rằng một vấn đề với SARSA là bạn không biết phần thưởng cho đến khi trò chơi kết thúc, nước đi tốt nhất thường là một nước đi không mang lại phần thưởng (của tôi). Cơ hội chiến thắng hiện tại của bạn phụ thuộc vào cả điểm số hiện tại (bạn đã lấy bao nhiêu quả mìn) và bản đồ hiện tại trông như thế nào.


Câu hỏi này ban đầu được đăng trên một trang web Trí tuệ nhân tạo hiện không còn tồn tại .
Mã (Java) được sử dụng cho phương pháp này hiện đã được đăng tại Đánh giá mã .

Câu trả lời:


7

Ở một đoạn, nó là một hệ chuyên gia (như logic mờ). Vì bạn không chạy thuật toán để thực hiện phản hồi về các tham số quyết định dựa trên đầu ra, nên nó không thực sự học được. Tuy nhiên, thực hiện phản hồi không phải là chỉ số duy nhất cho dù một người ngoài hành tinh là AI. Người ta có thể lập luận rằng nếu nó hoạt động theo cách có vẻ thông minh, thì đó mới là vấn đề - đặc biệt là khi trò chơi được chơi bởi một đối thủ của con người.

Loại thuật toán bạn đã chỉ định thực sự là một phương trình được tham số hóa, loại thuật toán bạn sẽ tìm thấy trong các tính toán bảo hiểm. Sau mỗi lần di chuyển, không gian đầu vào thay đổi nhưng thuật toán không cần bộ nhớ của trạng thái trước đó, vì vậy nó xử lý mỗi lần di chuyển như một bảng mới, riêng biệt.

Sử dụng thuật toán di truyền

Có hai lựa chọn rõ ràng cho các thuật toán di truyền:

  • Sử dụng các tham số cho bộ gen (như bạn đề xuất). Bạn sẽ tối ưu hóa các quy tắc mà bạn có nhưng bạn vẫn còn một hệ thống chuyên gia.
  • Sử dụng Hệ thống phân loại học tập (LCS) để chọn các quy tắc cho bạn. LCS là một loại Thuật toán di truyền nơi bạn mã hóa các quy tắc cũng như các tham số. Chúng mất nhiều thời gian hơn để hội tụ và nhạy cảm với chức năng tập thể dục. Tôi nghĩ rằng cách chơi kết quả có thể thú vị hơn cho nó.

Ủ mô phỏng

Một cách khác để giải quyết vấn đề là sử dụng Mô phỏng luyện kim (SA). Vấn đề của bạn là một không gian đầu vào bị ràng buộc và bạn có thể phân tích một hàm tìm ra ô vuông tốt nhất để chọn trong bất kỳ kịch bản cụ thể nào. Sử dụng Mô phỏng luyện kim sẽ tìm thấy một tối ưu toàn cầu cho các tham số của bạn.

Làm cho nó quá tốt

Tôi biết bạn muốn thuật toán trở nên tốt nhất có thể nhưng đừng quên rằng một con người đang chơi với nó. Có một cách hoàn hảo về mặt chiến thuật để chơi các loại trò chơi xác định này và nếu người chơi AI chơi nó, điều đó chỉ hoàn toàn là may mắn có nghĩa là người chơi sẽ thắng.


Câu trả lời của bạn đã cho tôi rất nhiều để nghiên cứu, cảm ơn rất nhiều! Mặc dù tôi không chắc lắm nhưng tôi đồng ý với việc phân loại trò chơi đặc biệt này là "mang tính quyết định" ..
Simon Forsberg

Lý do tôi nói rằng nó mang tính quyết định là số lượng khả năng cho bất kỳ trò chơi cụ thể nào bị giới hạn và mặc dù người chơi có thể đưa ra các lựa chọn ngẫu nhiên, nhưng họ đang làm như vậy trong một không gian được xác định chặt chẽ đến mức có tính xác định. Một nguyên tắc nhỏ là nếu bạn đang sử dụng một trình tạo số ngẫu nhiên (hoặc yếu tố bên ngoài mà bạn không kiểm soát) ở bất cứ đâu, thì đó là ngẫu nhiên. Nếu không, nó mang tính quyết định.
Bác sĩ Rob Lang

Chà, Minesweeper ngẫu nhiên tôi sẽ nói, vì bạn không biết nội dung của một lĩnh vực cho đến khi bạn thực hiện một động thái để tiết lộ nó.
Simon Forsberg

1
IMHO không làm cho nó ngẫu nhiên. Sẽ là ngẫu nhiên nếu: với cùng điều kiện bắt đầu (bảng ẩn), kết quả có thể khác nhau mỗi khi hình vuông được nhấp.
Bác sĩ Rob Lang

2
Stochastic / xác định và hoàn toàn có thể quan sát / một phần có thể quan sát được là những tính chất trực giao khác nhau. Theo định nghĩa (giả sử, Russel / Norvig "Nếu trạng thái tiếp theo của môi trường được xác định hoàn toàn bởi trạng thái hiện tại và hành động được thực thi bởi tác nhân ...") Minesweeper là xác định, mặc dù điều đó không thể quan sát được.
Peteris

0

Đúng, kỹ thuật gán điểm dựa trên các khía cạnh nhất định của vị trí là tiêu chuẩn trong việc viết AI để chơi trò chơi. Ví dụ, hầu hết tất cả các chương trình cờ vua hoạt động bằng cách ghi điểm dựa trên các quân cờ có sẵn, với phần thưởng nhỏ hơn dựa trên vị trí của họ (ví dụ: cầm đồ bảo vệ lẫn nhau). Sau đó, họ cố gắng tính toán di chuyển tốt nhất có sẵn bằng cách sử dụng thuật toán tìm kiếm đối nghịch, chẳng hạn như alpha-beta.

Tìm kiếm đối thủ có thể khó khăn ở đây vì yếu tố phân nhánh lớn - ở bất kỳ vị trí nào, các động thái pháp lý là đánh dấu hoặc tiết lộ bất kỳ hình vuông không xác định nào. Mặt khác, có thể bạn có thể cắt giảm yếu tố phân nhánh rất nhiều bằng phương pháp phỏng đoán. Ví dụ, đánh dấu hoặc tiết lộ một hình vuông mà bạn không biết gì về nó rất hiếm khi là bước đi tốt nhất. Ngược lại, nếu bạn biết vị trí của một số mỏ không được đánh dấu, đánh dấu một trong số chúng có lẽ sẽ là động thái tốt nhất, hầu hết thời gian. Duy trì một bảng chuyển vị cũng có thể giúp ích.

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.