Dạy một mạng lưới thần kinh để chơi một trò chơi bài


9

Tôi hiện đang viết một công cụ để chơi một trò chơi bài, vì chưa có công cụ nào cho trò chơi đặc biệt này.

Tôi hy vọng có thể giới thiệu một mạng lưới thần kinh cho trò chơi sau đó, và để nó học cách chơi trò chơi.

Tôi đang viết công cụ theo cách hữu ích cho người chơi AI. Có những điểm lựa chọn, và tại những điểm đó, một danh sách các tùy chọn hợp lệ được trình bày. Lựa chọn ngẫu nhiên sẽ có thể chơi trò chơi (mặc dù không tốt).

Tôi đã học được rất nhiều về các mạng thần kinh (chủ yếu là NEAT và HyperNEAT) và thậm chí còn xây dựng triển khai của riêng tôi. Tôi vẫn không chắc chắn cách xây dựng một AI tốt nhất có thể tính đến tất cả các biến trong một trong những loại trò chơi này. Có một cách tiếp cận chung? Tôi biết rằng Keldon đã viết một AI tốt cho RftG có độ phức tạp khá cao, tôi không chắc anh ta đã chế tạo được một AI như thế nào.

Có lời khuyên nào không? Nó là khả thi? Có bất kỳ ví dụ tốt về điều này? Làm thế nào các đầu vào được ánh xạ?

EDIT: Tôi đã xem trực tuyến và tìm hiểu cách các mạng thần kinh hoạt động và thường là cách chúng liên quan đến nhận dạng hình ảnh hoặc điều khiển một tác nhân đơn giản. Tôi không chắc chắn liệu tôi có thể áp dụng nó vào việc lựa chọn với các thẻ có sức mạnh tổng hợp phức tạp hay không. Bất kỳ hướng nào đối với những gì tôi nên xem xét sẽ được đánh giá rất cao.

Về trò chơi: Trò chơi tương tự như Magic: The Gathering. Có một chỉ huy có sức khỏe và khả năng. Người chơi có một nhóm năng lượng mà họ sử dụng để đặt minion và phép thuật lên bảng. Minions có sức khỏe, giá trị tấn công, chi phí, v.v. Thẻ cũng có khả năng, những thứ này không dễ dàng được liệt kê. Thẻ được chơi từ tay, thẻ mới được rút ra từ một cỗ bài. Đây là tất cả các khía cạnh nó sẽ hữu ích cho mạng lưới thần kinh để xem xét.


Chào mừng bạn đến với AI.SE! Vì điều này hiện đang đứng, có vẻ hơi quá rộng để chúng tôi có thể trả lời tốt. Bạn có nghĩ rằng bạn có thể chỉnh sửa nó để thu hẹp nó xuống một chút không? Cảm ơn!
Mithical

Trong khi câu hỏi là rộng, nó là một câu hỏi rõ ràng và phổ biến cho ai đó mới vào lĩnh vực này. Ngoài ra, một câu trả lời khó tìm thấy khi sử dụng Google (vì hầu hết các hướng dẫn về NN dường như tập trung vào nhận dạng hình ảnh và ví dụ ngôn ngữ). Tôi nghĩ rằng nó xứng đáng có một câu trả lời chỉ ra các nguồn lực tốt về cách tiếp cận và kỹ thuật sử dụng NN để chơi trò chơi, trong trường hợp này là các trò chơi bài cụ thể.
dùng12889

Cảm ơn vì bạn đã phản hồi. Tôi đã chỉnh sửa câu hỏi của mình một chút. Bất kỳ hướng tới tài liệu học tập sẽ hữu ích. Tôi tìm thấy chủ yếu là nhận dạng hình ảnh như bạn đề cập. Tôi háo hức tìm hiểu và rất vui khi có một lượng lớn các bài đọc được đề xuất, thay vì chỉ là một câu trả lời đơn giản.
pcaston2

Câu trả lời:


3

Tôi nghĩ rằng bạn đưa ra một câu hỏi hay, đặc biệt là WRT về cách các đầu vào và đầu ra của NN được ánh xạ vào cơ chế của một trò chơi bài như MtG nơi các hành động khả dụng thay đổi rất nhiều theo ngữ cảnh.

Tôi không có câu trả lời thực sự thỏa mãn để đưa ra, nhưng tôi đã chơi AI của Keldon's Race for the Galaxy NN - đồng ý rằng nó rất tuyệt vời - và đã xem xét cách giải quyết vấn đề này.

Mã mới nhất cho AI của Keldon hiện có thể tìm kiếm và duyệt được trên github .

Mã ai nằm trong một tập tin . Nó sử dụng 2 NN khác nhau, một cho "đánh giá tay và thẻ hoạt động" và một để "dự đoán lựa chọn vai trò".

Những gì bạn sẽ nhận thấy là nó sử dụng một số tiền hợp lý trên mã không phải NN để mô hình hóa cơ chế trò chơi. Rất nhiều một giải pháp lai.

Việc ánh xạ trạng thái trò chơi vào đánh giá NN được thực hiện ở đây . Các tính năng khác nhau có liên quan được mã hóa một lần, ví dụ: số lượng hàng hóa có thể được bán trong lượt đó.


Một trường hợp nghiên cứu xuất sắc khác trong việc ánh xạ một trò chơi phức tạp vào NN là Môi trường học tập Starcraft II được tạo bởi Deepmind phối hợp với Blizzard Entertainment. Bài viết này cung cấp một cái nhìn tổng quan về cách trò chơi Starcraft được ánh xạ lên một tập hợp các tính năng mà NN có thể diễn giải và cách các tác nhân NN có thể đưa ra cho mô phỏng trò chơi.


2

Điều này là hoàn toàn khả thi, nhưng cách các đầu vào được ánh xạ sẽ phụ thuộc rất nhiều vào loại trò chơi bài và cách chơi.

Tôi sẽ tính đến một vài khả năng:

  1. Thời gian có quan trọng trong trò chơi này? Liệu một quá khứ sẽ ảnh hưởng đến một tương lai? Trong trường hợp này, bạn nên sử dụng Mạng thần kinh tái phát (LSTM, GRU, v.v.) tốt hơn.
  2. Bạn có muốn Mạng thần kinh tìm hiểu dữ liệu bạn thu thập hoặc tự học không? Nếu tự nó thì thế nào? Nếu bạn thu thập dữ liệu của chính mình khi chơi trò chơi hàng chục hoặc hàng trăm lần, hãy đưa dữ liệu đó vào Mạng lưới thần kinh và làm cho nó học hỏi từ bạn, thì bạn đang thực hiện một thứ gọi là "Nhân bản hành vi". Tuy nhiên, nếu bạn muốn NN tự học, bạn có thể thực hiện theo 2 cách sau:

    a) Học tăng cường - RL cho phép Mạng lưới thần kinh học bằng cách chơi với chính nó rất nhiều lần.

    b) NEAT / Thuật toán di truyền - NEAT cho phép Mạng lưới thần kinh học bằng cách sử dụng thuật toán di truyền.

Tuy nhiên, một lần nữa, để hiểu cụ thể hơn về cách mã hóa đầu vào và đầu ra của Mạng thần kinh, tôi phải biết thêm về chính trò chơi bài.


Xin chào, cảm ơn câu trả lời! Tôi sẽ điều tra các khu vực này để xem những gì áp dụng. Tôi đã thêm một mô tả ngắn về trò chơi với hy vọng điều này thu hẹp nó cho bạn. Công cụ của tôi hỗ trợ hoàn tác để có thể hữu ích khi kết hợp với NN. Vì công cụ chưa hoàn thành, tôi không có bộ mẫu mà chỉ có kế hoạch giữ tất cả lịch sử trò chơi từ máy chủ lưu trữ giữa 2 người chơi. Tôi đã xem xét sử dụng tuyên truyền trở lại để đẩy nhanh quá trình.
pcaston2

Nếu trạng thái trò chơi có vấn đề, nhưng không phải là cách bạn đến trạng thái đó , thì bạn có nói rằng thời gian đó quan trọng không? Bạn có thể đưa ra bất kỳ ví dụ nào về các trò chơi khi thời gian quan trọng và một số thời gian không quan trọng? Tại thời điểm này tôi chỉ có thể nghĩ đến những tình huống mà các vấn đề nhà nước hiện hành (người là biến nó là, những thẻ hoặc mảnh trò chơi nổi tiếng đang ở đâu) nhưng không làm thế nào bạn có ở đó (điều duy nhất mà vấn đề là họ đang ở đâu tại , không phải là nơi họ là hai lượt trước)
Simon Forsberg

2

Bạn chắc chắn sẽ muốn mạng của mình biết thông tin quan trọng về trò chơi, như thẻ mà tác nhân AI có (giá trị và loại của chúng), nhóm mana, có bao nhiêu thẻ trên bàn và giá trị của chúng, số lượt chơi, v.v. Những điều bạn phải tự mình tìm ra, câu hỏi bạn nên tự hỏi mình là "Nếu tôi thêm giá trị này vào đầu vào như thế nào và tại sao nó sẽ cải thiện hệ thống của tôi". Nhưng điều đầu tiên cần hiểu là hầu hết các NN được thiết kế để có kích thước đầu vào không đổi và tôi cho rằng đây là vấn đề trong trò chơi này vì người chơi có thể có một lượng thẻ khác nhau trong tay hoặc trên bàn. Ví dụ: bạn muốn cho NN biết nó có thẻ gì, giả sử người chơi có thể có tối đa 5 thẻ trong tay và mỗi thẻ có thể có 3 giá trị (mana, tấn công và sức khỏe), vì vậy bạn có thể mã hóa thành 5 thẻ * 3 vectơ, trong đó 3 giá trị đầu tiên đại diện cho thẻ số một, v.v. Nhưng nếu người chơi hiện có 3 thẻ, một cách tiếp cận đơn giản sẽ là gán số không cho 6 đầu vào cuối cùng, nhưng điều này có thể gây ra vấn đề vì một số thẻ có thể có 0 mana chi phí hoặc 0 tấn công. Vì vậy, bạn cần phải tìm ra cách giải quyết vấn đề này. Bạn có thể tìm kiếm các mô hình NN có thể xử lý kích thước đầu vào thay đổi hoặc tìm ra cách mã hóa đầu vào dưới dạng một vectơ có kích thước không đổi.

Thứ hai, đầu ra cũng là các vectơ kích thước không đổi. Trong trường hợp của loại trò chơi này, nó có thể là một vectơ mã hóa các hành động mà tác nhân có thể thực hiện. Vì vậy, giả sử chúng ta có 3 hành động: đặt thẻ, bỏ qua lượt và thủng lưới. Vì vậy, nó có thể là một bộ mã hóa nóng, ví dụ nếu bạn có đầu ra 1 0 0, điều này có nghĩa là tác nhân đó nên đặt một số thẻ. Để biết nên đặt thẻ nào, bạn có thể thêm một yếu tố khác vào đầu ra, nó sẽ tạo ra một số trong phạm vi từ 1 đến 5 (5 là số lượng thẻ tối đa trong tay).

Nhưng phần quan trọng nhất của việc đào tạo một mạng lưới thần kinh là bạn sẽ phải tìm ra một chức năng mất phù hợp với nhiệm vụ của mình. Có thể các hàm mất tiêu chuẩn như Mất bình phương trung bình hoặc L2 sẽ tốt, có thể bạn sẽ cần thay đổi chúng để phù hợp với nhu cầu của mình. Đây là phần mà bạn sẽ cần để thực hiện một nghiên cứu. Tôi chưa bao giờ làm việc với NEAT trước đây, nhưng theo tôi hiểu chính xác thì nó sử dụng một số thuật toán di truyền để tạo và huấn luyện NN, và GA sử dụng một số chức năng thể dục để chọn một cá nhân. Vì vậy, về cơ bản, bạn sẽ cần phải biết số liệu nào bạn sẽ sử dụng để đánh giá mức độ hiệu quả của mô hình và dựa trên số liệu này, bạn sẽ thay đổi các tham số của mô hình.

Tái bút Có thể giải quyết vấn đề này với mạng lưới thần kinh, tuy nhiên, mạng lưới thần kinh không phải là phép thuật và không phải là giải pháp phổ quát cho tất cả các vấn đề. Nếu mục tiêu của bạn là giải quyết vấn đề nhất định này, tôi cũng khuyên bạn nên tìm hiểu lý thuyết trò chơi và ứng dụng của nó trong AI. Tôi có thể nói, việc giải quyết vấn đề này sẽ đòi hỏi kiến ​​thức phức tạp từ các lĩnh vực khác nhau của AI.

Tuy nhiên, nếu mục tiêu của bạn là tìm hiểu về các mạng thần kinh, tôi sẽ khuyên bạn nên thực hiện các nhiệm vụ đơn giản hơn nhiều. Ví dụ: bạn có thể triển khai NN sẽ hoạt động trên tập dữ liệu điểm chuẩn, ví dụ: NN sẽ phân loại các chữ số từ tập dữ liệu MNIST. Lý do cho điều này là rất nhiều bài báo đã được viết về cách thực hiện phân loại trên bộ dữ liệu này và bạn sẽ học được rất nhiều và bạn sẽ học nhanh hơn từ việc thực hiện những điều đơn giản.


1

Đúng. Đó là khả thi.

Tổng quan về câu hỏi

Mục tiêu thiết kế của hệ thống dường như đạt được lợi thế chiến lược bằng cách sử dụng một hoặc nhiều mạng nhân tạo kết hợp với một công cụ chơi trò chơi bài.

Câu hỏi cho thấy nhận thức chung về những điều cơ bản của chơi trò chơi như được nêu trong Lý thuyết trò chơi của Morgenstern và von Neuman .

  • Tại các điểm cụ thể trong khi chơi trò chơi, người chơi có thể được yêu cầu thực hiện di chuyển.
  • Có một tập hợp các tùy chọn di chuyển theo quy tắc của trò chơi.
  • Một số chiến lược để chọn một nước đi tạo ra những kỷ lục chiến thắng cao hơn nhiều lần chơi so với các chiến lược khác.
  • Một mạng nhân tạo có thể được sử dụng để tạo ra các chiến lược chơi trò chơi chiến thắng thường xuyên hơn đó là lựa chọn di chuyển ngẫu nhiên.

Các tính năng khác của trò chơi có thể hoặc không rõ ràng.

  • Tại mỗi điểm di chuyển đều có trạng thái trò chơi, cần thiết bởi bất kỳ thành phần nào liên quan đến việc cải thiện thành công chơi trò chơi.
  • Ngoài việc không biết khi nào đối thủ sẽ vô tội vạ, trong các trò chơi bài, thứ tự bí mật của các thẻ được xáo trộn có thể giới thiệu tương đương với một người chơi ảo các động tác trong đó tính ngẫu nhiên gần đúng.
  • Trong ba hoặc nhiều trò chơi người chơi, tín hiệu của các đối tác hoặc đối tác tiềm năng có thể thêm một yếu tố phức tạp để xác định chiến lược trò chơi chiến thắng tại bất kỳ thời điểm nào. Dựa trên các chỉnh sửa, có vẻ như trò chơi này không phức tạp như vậy.
  • Các yếu tố tâm lý như sự đe dọa cũng có thể đóng một vai trò trong chiến thắng trò chơi. Có hay không động cơ thể hiện một khuôn mặt cho đối thủ là không rõ, vì vậy câu trả lời này sẽ bỏ qua điều đó.

Gợi ý cách tiếp cận phổ biến

Có một cách tiếp cận chung để ánh xạ cả đầu vào và đầu ra, nhưng có quá nhiều điều để giải thích trong câu trả lời Stack Exchange. Đây chỉ là một vài nguyên tắc cơ bản.

  • Tất cả các mô hình có thể được thực hiện rõ ràng nên được thực hiện. Ví dụ, mặc dù về mặt lý thuyết, mạng nhân tạo có thể học cách đếm thẻ (theo dõi vị trí có thể có của mỗi thẻ), thuật toán đếm đơn giản có thể làm điều đó, vì vậy hãy sử dụng thuật toán đã biết và đưa các kết quả đó vào mạng nhân tạo như đầu vào.
  • Sử dụng làm đầu vào bất kỳ thông tin nào tương quan với đầu ra tối ưu, nhưng không sử dụng làm đầu vào bất kỳ thông tin nào không thể tương quan với đầu ra tối ưu.
  • Mã hóa dữ liệu để giảm sự dư thừa trong vectơ đầu vào, cả trong quá trình đào tạo và trong khi chơi trò chơi tự động. Trừu tượng hóa và khái quát hóa là hai cách phổ biến để đạt được điều này. Trích xuất tính năng có thể được sử dụng như các công cụ để trừu tượng hóa hoặc khái quát hóa. Điều này có thể được thực hiện ở cả đầu vào và đầu ra. Một ví dụ là nếu trong trò chơi này, J> 10 giống như cách A> K, K> Q, Q> J và 10> 9, sau đó mã hóa các thẻ thành số nguyên từ 2 đến 14 hoặc 0 đến 12 trừ đi một. Mã hóa các bộ quần áo từ 0 đến 3 thay vì bốn chuỗi văn bản.

Công việc nhận dạng hình ảnh chỉ liên quan từ xa, quá khác biệt so với chơi trò chơi thẻ để sử dụng trực tiếp, trừ khi bạn cần nhận ra thẻ từ hình ảnh trực quan, trong trường hợp đó có thể cần LSTM để xem những người chơi khác đã chọn cách di chuyển. Học các chiến lược chiến thắng sẽ có nhiều lợi ích hơn từ các thiết kế MLP hoặc RNN, hoặc một trong những thiết kế mạng nhân tạo phái sinh của họ.

Mạng nhân tạo sẽ làm gì và đào tạo ví dụ

Vai trò chính của các mạng nhân tạo thuộc các loại này là tìm hiểu một chức năng từ dữ liệu mẫu. Nếu bạn có các chuỗi di chuyển của các trò chơi thực sự, đó là một tài sản tuyệt vời để có cho dự án của bạn. Một số lượng rất lớn trong số họ sẽ rất hữu ích cho việc đào tạo.

Cách bạn sắp xếp các ví dụ và liệu và cách bạn gắn nhãn chúng là đáng để xem xét, tuy nhiên nếu không có các quy tắc trò chơi bài, rất khó để đưa ra bất kỳ hướng đáng tin cậy nào. Cho dù có các đối tác, cho dù đó là dựa trên điểm số, liệu số lần di chuyển đến một chiến thắng và hàng tá các yếu tố khác cung cấp các tham số của kịch bản cần thiết để đưa ra các quyết định đó.

Học cao lên

Lời khuyên chính tôi có thể đưa ra là đọc, không quá nhiều bài viết chung chung trên web, nhưng hãy đọc một số sách và một số bài báo bạn có thể hiểu về các chủ đề trên. Sau đó tìm một số mã bạn có thể tải xuống và thử sau khi bạn hiểu rõ thuật ngữ đủ để biết những gì cần tải xuống.

Điều này có nghĩa là tìm kiếm sách và tìm kiếm học thuật có nhiều khả năng giúp bạn đi đúng hướng hơn so với tìm kiếm trên web nói chung. Có hàng ngàn người đặt ra trong không gian web nói chung, giải thích các nguyên tắc AI với một số lượng lớn lỗi. Các nhà xuất bản sách và học thuật đòi hỏi nhiều hơn về sự siêng năng trong các tác giả của họ.

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.