Làm thế nào bạn sẽ thiết kế một hệ thống máy học để chơi Angry Birds?


22

Sau khi chơi quá nhiều Angry Birds, tôi bắt đầu quan sát các chiến lược của riêng mình. Hóa ra tôi đã phát triển một cách tiếp cận rất cụ thể để đạt được 3 sao trên mỗi cấp độ.

Điều đó khiến tôi băn khoăn về những thách thức trong việc phát triển một hệ thống máy học có thể chơi Angry Birds. Tương tác với trò chơi và tung ra những chú chim là chuyện nhỏ. Nhưng một câu hỏi mà tôi có là về "các khối xây dựng" của hệ thống.

Các hệ thống máy học dường như hoạt động với các khái niệm đơn giản hoặc hiểu về vấn đề. Điều này thường được mã hóa như các tính năng như đầu vào. Vì vậy, dường như hệ thống cần có khả năng hiểu một số khái niệm cấp cao để tạo ra một chiến lược.

Điều này có đúng không? Ngoài ra, những thách thức hoặc phần khó khăn của việc phát triển một hệ thống như vậy là gì?

EDIT # 1:

Dưới đây là một số làm rõ. Đạt 3 sao là một vấn đề khó khăn vì bạn phải tối đa hóa điểm. Điều này có thể được thực hiện theo hai cách không độc quyền: 1) Tối thiểu hóa số lượng chim được sử dụng (bạn nhận được 10.000 điểm cho mỗi con chim không sử dụng). 2) Tối đa hóa sự phá hủy thủy tinh, gỗ và các vật thể khác. Mỗi đối tượng bị phá hủy cung cấp cho bạn điểm. Có thể phá hủy các vật thể trị giá hơn 10.000 điểm bằng một con chim.

Dưới đây là một chút giải thích về "khái niệm cấp cao". Để tối đa hóa các điểm được mô tả ở trên, bạn cần sử dụng sức mạnh đặc biệt của mỗi con chim. Vì vậy, điều đó có nghĩa là phóng các loài chim khác nhau với các quỹ đạo khác nhau, tùy thuộc vào bố cục của bản đồ. Và, trong khi chơi, tôi phát triển một chiến lược phá hủy các khu vực nhất định với một số loài chim theo một trật tự nhất định.

Dường như không có cách hiểu về cách sử dụng mỗi con chim để phá hủy một khu vực cụ thể, hệ thống không thể học được 3 sao. Vì vậy, làm thế nào để bạn quản lý và mã hóa một cái gì đó như thế? Làm thế nào để bạn đảm bảo rằng hệ thống có thể học các khái niệm cấp cao này?

Câu trả lời:


13

Giả sử bạn có thể có được các móc nối phù hợp vào phần mềm (hoặc bạn làm việc với bản mô phỏng của riêng bạn), một số thứ sẽ dễ dàng ở đây, và một số ít như vậy. Đây là một vấn đề khá khó khăn tôi nghĩ. Như carlosdc đã đề cập, Học tăng cường (RL) là một con đường khả thi, mặc dù tôi không chắc đó là phương án đúng.

Khi bạn bắt đầu, bạn phải xác định không gian trạng thái , không gian hành động , động lực chuyển tiếpchức năng phần thưởng của bạn là gì. Các không gian trạng thái / hành động có thể liên tục hoặc rời rạc và động lực chuyển tiếp có thể được đưa ra bởi vấn đề hoặc được mô hình hóa bằng toán học. Cuối cùng, chức năng phần thưởng có thể được đưa ra a-prori , hoặc có thể được lấy mẫu (có hoặc không có tiếng ồn).

Không gian hành động rất đơn giản: nó chỉ đơn giản là hướng và sức mạnh mà bạn bắn con chim hiện tại. Đối với con người, đây là một vấn đề riêng biệt (chuột / màn hình cảm ứng là một thiết bị đầu vào kỹ thuật số) - giả sử (ví dụ) có 32 hướng khả thi và 10 sức mạnh có thể, đưa ra 320 hành động có thể.

Chức năng phần thưởng cũng khá dễ dàng để đạt được: mục tiêu là loại bỏ tất cả những con lợn có số lượng chim ít nhất (OK để có thêm điểm cho những thứ khác nhưng bây giờ hãy bỏ qua điều đó). Điều tốt nhất sẽ là nếu chúng ta biết chức năng thực tế tạo ra các điểm từ việc giết lợn (phụ thuộc vào kích thước của lợn, vv IIRC) - nhưng ở một cấp độ duy nhất, điều này có thể được mô hình hóa hoàn hảo.

Không gian và chuyển động trạng thái là nhiều khó khăn hơn. Để mô hình hóa chính xác, chúng ta phải biết toàn bộ bố cục của bản đồ vật lý của trò chơi. Các động lực chuyển tiếp nói "Nếu tôi ở trạng thái x và tôi thực hiện hành động y , tôi sẽ hạ cánh ở trạng thái z ". Bạn có thể thấy sự khó khăn của điều này, thứ nhất là vật lý phức tạp của hệ thống có nghĩa là điều này sẽ cực kỳ khó để mô hình chính xác, và thứ hai là có rất nhiều trạng thái kết quả có thể xảy ra sau vòng đầu tiên (320), và đây là nếu chúng tôi cho rằng không có sự ngẫu nhiên trong động cơ vật lý, mà từ khi chơi nó, tôi nghi ngờ là có. Tôi nghĩ ở giai đoạn này bạn sẽ bỏ cuộc và về nhà.

Một cách tiếp cận khác là đối xử với nó như con người ngay từ đầu - tức là thử và sai. Con người, ít nhất là bắt đầu, bắn ra gần như ngẫu nhiên (mặc dù khá mạnh trước khi đưa chim về phía lợn, nhưng điều này có thể dễ dàng được mã hóa), cho đến khi tìm thấy một loạt các hành động tốt. Điều này giống như tên cướp đa vũ trangcài đặt. "Vũ khí" của bọn cướp ở đây là những hành động có thể. Thuật toán cố gắng cân bằng giữa thăm dò và khai thác - tức là khám phá không gian hành động và khai thác các hành động tốt khi chúng được tìm thấy. Đối với điều này, bạn không cần biết bất cứ điều gì về động lực cơ bản - bạn chỉ cần biết về hành động và phần thưởng. Để thực hiện đầy đủ, bạn sẽ phải có một cánh tay cho mỗi hành động có thể trong tất cả các vòng (ví dụ: bạn có 5 con chim * 320 hành động = 320 ^ 5 = khoảng 10 ^ 12 hành động), vì vậy không gian hành động là rất lớn! Tuy nhiên, bạn có thể sử dụng một số thủ thuật để cải thiện điều này nếu bạn biết một chútvề không gian nhà nước. Ví dụ, bạn có thể loại trừ các hành động khiến con chim rời khỏi lợn, xuống đất hoặc không có đủ sức mạnh để tiếp cận bất kỳ con nào trong số chúng. Ngoài ra, bạn chỉ cần tiếp cận con chim thứ 5 nếu bạn chưa giết được lợn trong các vòng trước, do đó, một tỷ lệ các trạng thái hành động không thực sự có thể. Điều này phần nào gợi nhớ đến cách tiếp cận được sử dụng trong thuật toán MoGo , đây là một chương trình máy tính để chơi Go dựa trên giới hạn Độ tin cậy được áp dụng cho Cây , một cách tiếp cận để giải quyết vấn đề tên cướp đa vũ trang.


1
Câu trả lời chính xác! Tôi nghĩ rằng không gian hành động lớn hơn nhiều so với 320 hành động có thể. Mỗi pixel bị quét bởi một vòng cung có lẽ .7 inch (trên iPad) từ ngang trái sang dọc xuống sẽ tạo ra một quỹ đạo và kết quả khác nhau. IPad có độ phân giải 132 dpi, do đó có thể có khoảng 8.000 pixel có thể chọn để khởi chạy. Tôi không muốn tìm hiểu chi tiết, nhưng việc tăng không gian hành động lên 8.000 có thay đổi câu trả lời không? Làm thế nào bạn có thể làm việc với một không gian hành động lớn hơn?
B Bảy

Cố gắng mô phỏng động lực học là một câu hỏi hoàn toàn khác (và khó). Tôi nghĩ cho cuộc thảo luận này, chúng ta nên cho rằng chúng ta có quyền truy cập vào mã nguồn và có thể lấy chính xác thông tin trạng thái. Ngoài ra, chức năng phần thưởng không chỉ là bạn giết bao nhiêu con lợn. Để có được 3 sao trên một cấp độ, bạn phải làm một điều gì đó khó khăn hơn. Xem chỉnh sửa để đặt câu hỏi.
B Bảy

@BSeven Về nguyên tắc không, không gian hành động lớn hơn không thay đổi câu trả lời, mặc dù bạn có thể phải cắt tỉa nhiều hơn và sử dụng nhiều năng lực tính toán hơn ;-) Lưu ý rằng đây là một ứng cử viên hoàn hảo để xử lý song song. Câu hỏi về các ngôi sao rất khó, vì điều này ngụ ý rằng không có ánh xạ đơn giản nào từ giết đến sao, mặc dù tôi nghĩ rằng bạn có nhiều sao hơn chỉ bằng cách vượt qua các điểm (thường điều này được thực hiện bằng cách sử dụng ít chim hơn). Nếu không, bạn sẽ phải tăng số lượng thăm dò một cách giả tạo để tránh giải quyết các con đường dưới mức tối ưu quá sớm.
tdc

8

Câu hỏi hay!

Có vẻ như câu hỏi này là về kỹ thuật tự nhiên cho loại vấn đề này. Tôi nghĩ rằng kỹ thuật tự nhiên cho loại vấn đề này là học tăng cường (RL). RL là về cách một tác nhân nên thực hiện các hành động trong một môi trường để tối đa hóa một số khái niệm về phần thưởng tích lũy. Có lẽ thuật toán được biết đến nhiều nhất cho RL là Q-learning . Tôi nghĩ rằng đây là câu hỏi đầu tiên trong trang web này về học tập củng cố.

Tôi nghĩ những gì bạn đang hỏi là đúng nếu bạn cố gắng tiếp cận điều này như phân loại / hồi quy, nhưng những điều đó dường như không phải là công cụ phù hợp cho vấn đề này. Đây tự nhiên là một vấn đề RL trong đó các chuỗi hành động và kết quả cần phải được tính đến.


5

Kiểm tra xem người khác đang làm điều đó như thế nào hoặc tham gia vào chính mình: Thử thách AI của Angry Birds http://ai2012.web.cse.unsw.edu.au/abc.html


có lẽ bạn có thể tóm tắt nội dung của liên kết và howvit liên quan đến câu hỏi. Như bây giờ, câu trả lời của bạn là tốt hơn như là một nhận xét.
FredrikD

4

chỉ đề cập đến điều này trong meta. Koza đã sử dụng tiên phong các thuật toán di truyền để giải quyết trò chơi video Pacman. ông đã xây dựng các nguyên thủy thuật toán có thể cảm nhận và hành động. khi tôi nhớ chúng được kết hợp trong các cây giống Lisp để tạo ra các thuật toán lớn hơn. giao thoa với cây Lisp liên quan đến việc thay thế hoặc trao đổi các cây con đại diện cho các biểu thức thuật toán. chức năng thành công là một cái gì đó như "chấm ăn" hoặc "chấm cộng với ma ăn" hoặc "thời gian tồn tại". vẫn còn một số công việc trong lĩnh vực này. Có một tham chiếu koza trong bài báo này sau đây. thời gian đào tạo có thể rất dài và "hội tụ" rất từ ​​từ cho các loại vấn đề này.

Học cách chơi Pac-Man: Cách tiếp cận dựa trên quy tắc, tiến hóa của Gallagher và Ryan

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.