CẬP NHẬT 2018-07-26: Thế đấy! Bây giờ chúng ta đang tiếp cận điểm mà loại trò chơi này sẽ có thể giải quyết được! Sử dụng OpenAI và dựa trên trò chơi DotA 2, một đội có thể tạo ra một AI có thể đánh bại các game thủ bán chuyên nghiệp trong trò chơi 5v5 . Nếu bạn biết DotA 2, bạn sẽ biết trò chơi này khá giống với các trò chơi giống Diablo về mặt cơ học, nhưng người ta có thể lập luận rằng nó thậm chí còn phức tạp hơn do cách chơi của đội.
Đúng như mong đợi, điều này đạt được nhờ những tiến bộ mới nhất trong việc tăng cường học tập với học sâu và sử dụng các khung trò chơi mở như OpenAI giúp giảm bớt sự phát triển của AI kể từ khi bạn có được API gọn gàng và cũng vì bạn có thể tăng tốc trò chơi (AI đã chơi tương đương với 180 năm chơi với chính nó mỗi ngày!).
Vào ngày 5 tháng 8 năm 2018 (trong 10 ngày!) , Nó đã được lên kế hoạch để hố AI này trước các game thủ DotA 2 hàng đầu. Nếu điều này diễn ra, mong đợi một cuộc cách mạng lớn, có thể không được trung gian hóa như việc giải quyết trò chơi Go, nhưng dù sao nó cũng sẽ là một cột mốc lớn cho trò chơi AI!
CẬP NHẬT 2017-01: Lĩnh vực này đang chuyển động rất nhanh kể từ thành công của AlphaGo và có các khung mới để tạo điều kiện phát triển các thuật toán học máy trên các trò chơi gần như mỗi tháng. Dưới đây là danh sách những cái mới nhất tôi tìm thấy:
- OpenAI's Universe : một nền tảng để chơi hầu như mọi trò chơi bằng cách sử dụng máy học . API có trong Python và nó chạy các trò chơi đằng sau môi trường máy tính từ xa của VNC, vì vậy nó có thể chụp ảnh của bất kỳ trò chơi nào! Bạn có thể có thể sử dụng Universe để chơi Diablo II thông qua thuật toán học máy!
- Phòng tập của OpenAI : Tương tự như Vũ trụ nhưng nhắm mục tiêu cụ thể vào các thuật toán học tập củng cố (vì vậy đây là một dạng khái quát của khung được AlphaGo sử dụng nhưng cho nhiều trò chơi hơn). Có một khóa học về Udemy bao gồm ứng dụng học máy vào các trò chơi như breakout hoặc Doom bằng OpenAI Gym.
- TorchCraft : cầu nối giữa Torch (khung học máy) và StarCraft: Brood War.
- pyGTA5 : một dự án xây dựng những chiếc xe tự lái trong GTA5 chỉ sử dụng các ảnh chụp màn hình (với rất nhiều video trực tuyến ).
Thời gian rất thú vị!
CẬP NHẬT QUAN TRỌNG (2016-06): Theo ghi nhận của OP, vấn đề đào tạo mạng nhân tạo này chỉ chơi các trò chơi trực quan hiện đang được một số tổ chức nghiêm túc giải quyết, với kết quả khá hứa hẹn, như DeepMind Deep-Qlearning-Network (DQN ) .
Và bây giờ, nếu bạn muốn tham gia thử thách cấp độ tiếp theo, bạn có thể sử dụng một trong những nền tảng phát triển trò chơi tầm nhìn AI khác nhau như ViZDoom , một nền tảng được tối ưu hóa cao (7000 khung hình / giây) để đào tạo các mạng để chơi Doom chỉ bằng các đầu vào trực quan :
ViZDoom cho phép phát triển các bot AI chơi Doom chỉ bằng thông tin hình ảnh (bộ đệm màn hình). Nó chủ yếu dành cho nghiên cứu trong học máy trực quan, và đặc biệt là học tăng cường. ViZDoom dựa trên ZDoom để cung cấp cơ chế trò chơi.
Và kết quả khá tuyệt vời, hãy xem các video trên trang web của họ và hướng dẫn hay (bằng Python) tại đây!
Ngoài ra còn có một dự án tương tự cho Quake 3 Arena, được gọi là Quagents , cũng cung cấp quyền truy cập API dễ dàng vào dữ liệu trò chơi cơ bản, nhưng bạn có thể loại bỏ nó và chỉ sử dụng ảnh chụp màn hình và API để kiểm soát tác nhân của mình.
Tại sao một nền tảng như vậy hữu ích nếu chúng ta chỉ sử dụng ảnh chụp màn hình? Ngay cả khi bạn không truy cập dữ liệu trò chơi cơ bản, một nền tảng như vậy vẫn cung cấp:
- triển khai trò chơi hiệu suất cao (bạn có thể tạo nhiều dữ liệu / lượt chơi / thế hệ học tập với ít thời gian hơn để thuật toán học tập của bạn có thể hội tụ nhanh hơn!).
- API đơn giản và nhanh nhạy để kiểm soát các tác nhân của bạn (nghĩa là, nếu bạn cố gắng sử dụng đầu vào của con người để điều khiển trò chơi, một số lệnh của bạn có thể bị mất, do đó, bạn cũng sẽ xử lý sự không tin cậy của đầu ra của mình ...).
- dễ dàng thiết lập các kịch bản tùy chỉnh .
- kết xuất tùy chỉnh (có thể hữu ích để "đơn giản hóa" hình ảnh bạn nhận được để dễ xử lý)
- Chơi đồng bộ ("lần lượt") (vì vậy ban đầu bạn không cần thuật toán của mình hoạt động trong thời gian thực, đó là một sự giảm độ phức tạp rất lớn).
- các tính năng tiện lợi bổ sung như khả năng tương thích đa nền tảng, tương thích retro (bạn không có nguy cơ bot của mình không hoạt động với trò chơi nữa khi có bản cập nhật trò chơi mới), v.v.
Tóm lại, điều tuyệt vời ở các nền tảng này là chúng làm giảm bớt nhiều vấn đề kỹ thuật trước đây mà bạn phải giải quyết (cách thao tác đầu vào trò chơi, cách thiết lập kịch bản, v.v.) để bạn chỉ phải xử lý thuật toán học tập chinh no.
Vì vậy, bây giờ, hãy làm việc và biến chúng ta thành bot hình ảnh AI tốt nhất từ trước đến nay;)
Bài đăng cũ mô tả các vấn đề kỹ thuật phát triển AI chỉ dựa vào đầu vào trực quan:
Trái ngược với một số đồng nghiệp của tôi ở trên, tôi không nghĩ vấn đề này là khó chữa. Nhưng nó chắc chắn là một khó khăn!
Vấn đề đầu tiên như đã chỉ ra ở trên là sự thể hiện trạng thái của trò chơi : bạn không thể biểu thị trạng thái đầy đủ chỉ bằng một hình ảnh duy nhất, bạn cần duy trì một số loại ghi nhớ(sức khỏe nhưng cũng có các đối tượng được trang bị và các vật phẩm có sẵn để sử dụng, nhiệm vụ và mục tiêu, v.v.). Để lấy thông tin như vậy, bạn có hai cách: bằng cách truy cập trực tiếp vào dữ liệu trò chơi, đây là cách đáng tin cậy và dễ dàng nhất; hoặc bạn có thể tạo một bản trình bày trừu tượng về những thông tin này bằng cách thực hiện một số thủ tục đơn giản (mở kho, chụp ảnh màn hình, trích xuất dữ liệu). Tất nhiên, trích xuất dữ liệu từ ảnh chụp màn hình sẽ khiến bạn phải thực hiện một số quy trình được giám sát (mà bạn xác định hoàn toàn) hoặc không được giám sát (thông qua thuật toán học máy, nhưng sau đó sẽ tăng quy mô rất phức tạp ...). Đối với học máy không giám sát, bạn sẽ cần sử dụng một loại thuật toán khá gần đây gọi là thuật toán học cấu trúc (học cấu trúc dữ liệu thay vì cách phân loại chúng hoặc dự đoán giá trị).http://techtalks.tv/talks/54422/
Sau đó, một vấn đề khác là ngay cả khi bạn đã lấy tất cả dữ liệu bạn cần, trò chơi chỉ có thể quan sát được một phần . Do đó, bạn cần đưa một mô hình trừu tượng của thế giới và cung cấp cho nó thông tin được xử lý từ trò chơi, ví dụ như vị trí của hình đại diện của bạn, nhưng cũng là vị trí của các mục nhiệm vụ, mục tiêu và kẻ thù bên ngoài màn hình. Bạn có thể xem xét Bộ lọc hạt hỗn hợp của Vermaak 2003 cho việc này.
Ngoài ra, bạn cần phải có một tác nhân tự trị , với các mục tiêu được tạo động. Một kiến trúc nổi tiếng bạn có thể thử là tác nhân BDI, nhưng có lẽ bạn sẽ phải điều chỉnh nó để kiến trúc này hoạt động trong trường hợp thực tế của bạn. Ngoài ra, còn có Petri Net đệ quy, mà bạn có thể kết hợp với tất cả các loại biến thể của lưới petri để đạt được những gì bạn muốn vì nó là một khung rất linh hoạt và được nghiên cứu kỹ lưỡng, với các quy trình chứng minh và chứng minh tuyệt vời.
Và cuối cùng, ngay cả khi bạn làm tất cả những điều trên, bạn sẽ cần tìm cách mô phỏng trò chơi ở tốc độ tăng tốc (sử dụng video có thể tốt, nhưng vấn đề là thuật toán của bạn sẽ chỉ hiển thị mà không có kiểm soát và có thể cố gắng cho bản thân nó là rất quan trọng cho việc học). Thật vậy, người ta biết rằng thuật toán hiện đại cần nhiều thời gian hơn để học điều tương tự mà con người có thể học (thậm chí nhiều hơn với việc học tăng cường), do đó, nếu không thể tăng tốc quá trình ( tức là, nếu bạn không thể tăng tốc thời gian trò chơi), thuật toán của bạn thậm chí sẽ không hội tụ trong một đời ...
Để kết luận, những gì bạn muốn đạt được ở đây là ở giới hạn (và có thể vượt xa một chút) của các thuật toán hiện đại . Tôi nghĩ rằng nó có thể là có thể, nhưng ngay cả khi nó là, bạn sẽ dành rất nhiều thời gian , bởi vì đây không phải là một vấn đề lý thuyết mà là một vấn đề thực tế bạn đang tiếp cận ở đây, và do đó bạn cần phải thực hiện và kết hợp rất nhiều phương pháp tiếp cận AI khác nhau để giải quyết nó.
Vài thập kỷ nghiên cứu với cả nhóm làm việc về nó có thể không đủ, vì vậy nếu bạn ở một mình và làm việc bán thời gian (vì bạn có thể có một công việc để kiếm sống), bạn có thể dành cả đời mà không cần đến bất cứ nơi nào gần một giải pháp làm việc.
Vì vậy, lời khuyên quan trọng nhất của tôi ở đây sẽ là bạn hạ thấp kỳ vọng của mình và cố gắng giảm sự phức tạpvề vấn đề của bạn bằng cách sử dụng tất cả thông tin bạn có thể, và tránh càng nhiều càng tốt dựa vào ảnh chụp màn hình (nghĩa là cố gắng nối trực tiếp vào trò chơi, tìm kiếm tệp DLL) và đơn giản hóa một số vấn đề bằng cách thực hiện các quy trình được giám sát, đừng để thuật toán học mọi thứ (nghĩa là bỏ xử lý hình ảnh càng nhiều càng tốt và dựa vào thông tin trò chơi nội bộ, sau này nếu thuật toán của bạn hoạt động tốt, bạn có thể thay thế một số phần của chương trình AI của mình bằng xử lý hình ảnh, do đó đạt được mục tiêu đầy đủ của bạn, ví dụ: nếu bạn có thể làm cho một cái gì đó hoạt động khá tốt, bạn có thể cố gắng phức tạp hóa vấn đề của mình và thay thế các quy trình được giám sát và dữ liệu trò chơi bộ nhớ bằng các thuật toán học máy không giám sát trên ảnh chụp màn hình).
Chúc may mắn, và nếu nó hoạt động, đảm bảo xuất bản một bài viết, bạn chắc chắn có thể nổi tiếng vì giải quyết một vấn đề thực tế khó khăn như vậy!