อัพเดท 2018-07-26: แค่นั้นแหละ! เรากำลังเข้าใกล้จุดที่เกมประเภทนี้จะสามารถแก้ไขได้! ใช้ OpenAI และขึ้นอยู่กับเกม DotA 2 ทีมสามารถทำให้ AI ที่สามารถเอาชนะนักเล่นเกมกึ่งมืออาชีพในเกม 5v5 ถ้าคุณรู้จัก DotA 2 คุณจะรู้ว่าเกมนี้ค่อนข้างคล้ายกับเกม Diablo ในแง่ของกลไก แต่อาจมีคนโต้แย้งว่ามันมีความซับซ้อนมากขึ้นเนื่องจากการเล่นเป็นทีม
ตามที่คาดไว้สิ่งนี้สำเร็จได้ด้วยความก้าวหน้าล่าสุดในการเสริมแรงการเรียนรู้ด้วยการเรียนรู้ลึกและการใช้กรอบเกมแบบเปิดเช่น OpenAI ซึ่งช่วยลดการพัฒนา AI เนื่องจากคุณได้รับ API ที่เรียบร้อยและเพราะคุณสามารถเร่งเกมได้ เทียบเท่ากับ 180 ปีของการเล่นเกมกับตัวเองทุกวัน!)
ในวันที่ 5 สิงหาคม 2018 (ใน 10 วัน!)มีการวางแผนที่จะเจาะ AI นี้กับผู้เล่น DotA 2 ชั้นนำ หากวิธีนี้ใช้ได้ผลคาดหวังว่าการปฏิวัติครั้งยิ่งใหญ่อาจจะไม่ได้ไกล่เกลี่ยเหมือนการแก้ไขของเกม Go แต่มันจะเป็นก้าวสำคัญสำหรับเกม AI!
อัปเดต 2017-01:ฟิลด์กำลังเคลื่อนไหวอย่างรวดเร็วตั้งแต่ความสำเร็จของ AlphaGo และมีกรอบใหม่เพื่ออำนวยความสะดวกในการพัฒนาอัลกอริทึมการเรียนรู้ของเครื่องในเกมเกือบทุกเดือน นี่คือรายการล่าสุดที่ฉันได้พบ:
- จักรวาลของ OpenAI : แพลตฟอร์มที่จะเล่นจริงเกมใด ๆ โดยใช้การเรียนรู้เครื่อง API อยู่ใน Python และรันเกมที่อยู่เบื้องหลังสภาพแวดล้อมเดสก์ท็อประยะไกล VNC ดังนั้นจึงสามารถจับภาพของเกมใด ๆ ได้! คุณอาจใช้ Universe เล่น Diablo II ผ่านอัลกอริทึมการเรียนรู้ของเครื่อง!
- โรงยิมของ OpenAI : คล้ายกับจักรวาล แต่ตั้งเป้าหมายอัลกอริธึมการเรียนรู้การเสริมแรงโดยเฉพาะ มีหลักสูตรเกี่ยวกับ Udemy ที่ครอบคลุมการประยุกต์ใช้การเรียนรู้ของเครื่องกับเกมเช่นการฝ่าวงล้อมหรือ Doom โดยใช้ OpenAI Gym
- TorchCraft : สะพานเชื่อมระหว่างTorch (กรอบการเรียนรู้ของเครื่อง) และ StarCraft: Brood War
- pyGTA5 : โครงการสร้างรถยนต์ที่ขับเคลื่อนด้วยตนเองใน GTA5 ด้วยการจับภาพหน้าจอเท่านั้น (มีวิดีโอออนไลน์จำนวนมาก)
เวลาที่น่าตื่นเต้นมาก!
การอัปเดตที่สำคัญ (2016-06):ตามที่ระบุไว้โดย OP ปัญหาของการฝึกอบรมเครือข่ายประดิษฐ์นี้เพื่อเล่นเกมโดยใช้อินพุตภาพเท่านั้นขณะนี้ถูกจัดการโดยสถาบันที่จริงจังหลายแห่งพร้อมผลที่น่าสนใจเช่นDeepMind Deep-Qlearning-Network (DQN) ) .
และตอนนี้ถ้าคุณต้องการที่จะก้าวต่อไปในความท้าทายระดับต่อไปคุณสามารถใช้หนึ่งในแพลตฟอร์มพัฒนาเกม AI visionเช่นViZDoomแพลตฟอร์มที่ได้รับการปรับให้เหมาะสมที่สุด (7000 fps) เพื่อฝึกอบรมเครือข่ายเพื่อเล่น Doom โดยใช้อินพุตภาพเท่านั้น :
ViZDoom อนุญาตให้พัฒนาบอท AI ที่เล่น Doom โดยใช้ข้อมูลภาพ (บัฟเฟอร์หน้าจอ) เท่านั้น มันมีวัตถุประสงค์หลักเพื่อการวิจัยในการเรียนรู้ด้วยเครื่องและโดยเฉพาะอย่างยิ่งการเรียนรู้การเสริมแรง ViZDoom ตั้งอยู่บน ZDoom เพื่อให้กลไกเกม
และผลลัพธ์ค่อนข้างน่าทึ่งดูวิดีโอบนหน้าเว็บของพวกเขาและแบบฝึกหัดที่ดี (ใน Python) ที่นี่!
นอกจากนี้ยังมีโครงการที่คล้ายกันสำหรับ Quake 3 Arena เรียกว่าQuagentsซึ่งให้การเข้าถึง API ที่ง่ายต่อการเข้าถึงข้อมูลเกมพื้นฐาน แต่คุณสามารถคัดลอกมันและใช้ภาพหน้าจอและ API เท่านั้นเพื่อควบคุมเอเจนต์ของคุณ
ทำไมแพลตฟอร์มดังกล่าวถึงมีประโยชน์ถ้าเราใช้ภาพหน้าจอเท่านั้น? แม้ว่าคุณจะไม่เข้าถึงข้อมูลเกมพื้นฐาน แต่แพลตฟอร์มดังกล่าวก็มีให้:
- การติดตั้งเกมประสิทธิภาพสูง (คุณสามารถสร้างข้อมูล / บทละคร / การเรียนรู้มากขึ้นโดยใช้เวลาน้อยลงเพื่อให้อัลกอริทึมการเรียนรู้ของคุณสามารถมาบรรจบกันได้เร็วขึ้น!)
- API ที่ใช้งานง่ายและตอบสนองต่อการควบคุมเอเจนต์ของคุณ (เช่นถ้าคุณพยายามใช้อินพุตมนุษย์เพื่อควบคุมเกมคำสั่งบางคำอาจหายไปดังนั้นคุณต้องจัดการกับเอาท์พุตที่ไม่น่าเชื่อถือ ... )
- ติดตั้งง่ายของสถานการณ์ที่กำหนดเอง
- การปรับแต่งการแสดงผล (สามารถเป็นประโยชน์ในการ "ลดความซับซ้อน" ภาพที่คุณได้รับเพื่อความสะดวกในการประมวลผล)
- ทำข้อมูลให้ตรงกัน ("ทีละเลี้ยว") เล่น (ดังนั้นคุณไม่จำเป็นต้องใช้อัลกอริทึมของคุณในการทำงานในเรียลไทม์ในตอนแรกนั่นคือการลดความซับซ้อนมาก)
- คุณสมบัติความสะดวกเพิ่มเติมเช่นความเข้ากันได้ของ crossplatform, retrocompatibility (คุณไม่ต้องเสี่ยงกับ bot ของคุณไม่สามารถทำงานกับเกมได้อีกต่อไปเมื่อมีการอัพเดทเกมใหม่) เป็นต้น
เพื่อสรุปสิ่งที่ยอดเยี่ยมเกี่ยวกับแพลตฟอร์มเหล่านี้คือสิ่งเหล่านั้นช่วยลดปัญหาทางเทคนิคก่อนหน้านี้จำนวนมากที่คุณต้องรับมือกับ (วิธีการจัดการอินพุตเกมวิธีตั้งค่าสถานการณ์ ฯลฯ ) เพื่อให้คุณต้องจัดการกับอัลกอริทึมการเรียนรู้ตัวเอง
ตอนนี้มาทำงานและทำให้เราเป็น AI visual bot ที่ดีที่สุดเท่าที่เคยมีมา;)
โพสต์เก่าที่อธิบายถึงปัญหาทางเทคนิคของการพัฒนา AI ที่พึ่งพาเฉพาะอินพุตภาพ:
ตรงกันข้ามกับเพื่อนร่วมงานบางคนของฉันด้านบนฉันไม่คิดว่าปัญหานี้จะแก้ไม่ได้ แต่แน่นอนว่าเป็นเฮลลาที่ยาก!
ปัญหาแรกตามที่กล่าวไว้ข้างต้นคือการเป็นตัวแทนของสถานะของเกม : คุณไม่สามารถแสดงสถานะเต็มด้วยภาพเดียวคุณจำเป็นต้องรักษาความจำบางอย่างไว้(สุขภาพ แต่ยังติดตั้งวัตถุและรายการที่พร้อมใช้งานเควสและเป้าหมาย ฯลฯ ) เพื่อดึงข้อมูลดังกล่าวคุณมีสองวิธี: โดยการเข้าถึงข้อมูลเกมโดยตรงซึ่งเชื่อถือได้และง่ายที่สุด; หรือคุณสามารถสร้างข้อมูลที่เป็นนามธรรมของข้อมูลเหล่านี้ได้โดยการใช้ขั้นตอนง่าย ๆ (คลังโฆษณาแบบเปิด, จับภาพหน้าจอ, ดึงข้อมูล) แน่นอนว่าการดึงข้อมูลจากภาพหน้าจออาจทำให้คุณต้องทำตามขั้นตอนการดูแล (ซึ่งคุณกำหนดไว้อย่างสมบูรณ์) หรือไม่ได้รับการดูแล (ผ่านอัลกอริทึมการเรียนรู้ของเครื่อง สำหรับการเรียนรู้ของเครื่องที่ไม่ได้รับการจัดการคุณจะต้องใช้อัลกอริทึมชนิดล่าสุดที่เรียกว่าอัลกอริธึมการเรียนรู้เชิงโครงสร้าง (ซึ่งเรียนรู้โครงสร้างของข้อมูลมากกว่าจะจำแนกพวกมันหรือทำนายค่า)http://techtalks.tv/talks/54422/
แล้วปัญหาก็คือว่าแม้เมื่อคุณมีความจริงข้อมูลทั้งหมดที่คุณต้องการเกมเป็นเพียงบางส่วนสังเกต ดังนั้นคุณต้องฉีดโมเดลนามธรรมของโลกและป้อนข้อมูลประมวลผลจากเกมตัวอย่างเช่นตำแหน่งของอวตารของคุณ แต่ยังเป็นที่ตั้งของไอเท็มเควสเป้าหมายและศัตรูนอกจอ คุณอาจมองเข้าไปใน Mixture Particle Filter โดย Vermaak 2003 สำหรับสิ่งนี้
นอกจากนี้คุณต้องมีตัวแทนอิสระด้วยเป้าหมายที่สร้างขึ้นแบบไดนามิก สถาปัตยกรรมที่รู้จักกันดีที่คุณสามารถลองได้คือตัวแทน BDI แต่คุณอาจต้องปรับแต่งเพื่อให้สถาปัตยกรรมนี้ทำงานในกรณีที่ใช้งานได้จริง เป็นอีกทางเลือกหนึ่งนอกจากนี้ยังมี Recursive Petri Net ซึ่งคุณสามารถรวมกับรูปแบบต่างๆของมุ้ง Petri เพื่อให้ได้สิ่งที่คุณต้องการเนื่องจากเป็นกรอบการศึกษาที่ดีและยืดหยุ่น
และในที่สุดแม้ว่าคุณจะทำตามข้างต้นคุณจะต้องหาวิธีที่จะเลียนแบบเกมด้วยความเร็วเร่ง (การใช้วิดีโออาจจะดี แต่ปัญหาก็คืออัลกอริทึมของคุณจะมองเห็นได้โดยไม่ต้องควบคุมและสามารถ การลองด้วยตัวเองเป็นสิ่งสำคัญมากสำหรับการเรียนรู้) เป็นที่ทราบกันดีว่าอัลกอริทึม state-of-the-art ในปัจจุบันใช้เวลามากขึ้นในการเรียนรู้ในสิ่งเดียวกันกับที่มนุษย์สามารถเรียนรู้ (ยิ่งกว่านั้นด้วยการเรียนรู้เสริม) ดังนั้นหากไม่สามารถเร่งกระบวนการได้ กล่าวคือถ้าคุณไม่สามารถเร่งความเร็วของเกม) อัลกอริทึมของคุณจะไม่มาบรรจบกันในช่วงเวลาเดียว ...
เพื่อสรุปสิ่งที่คุณต้องการบรรลุที่นี่อยู่ที่ขีด จำกัด (และอาจเกินกว่า) ของอัลกอริธึมที่ทันสมัยที่สุดในปัจจุบัน ฉันคิดว่ามันอาจเป็นไปได้ แต่ถึงแม้ว่ามันจะเป็นคุณจะใช้เวลามากกับเฮลลาเพราะนี่ไม่ใช่ปัญหาเชิงทฤษฎี แต่เป็นปัญหาเชิงปฏิบัติที่คุณกำลังเข้าใกล้ที่นี่ดังนั้นคุณจึงจำเป็นต้องดำเนินการและรวมสิ่งต่าง ๆ มากมาย วิธี AI ที่แตกต่างกันเพื่อแก้ปัญหา
การวิจัยเป็นเวลาหลายทศวรรษกับทีมงานทั้งหมดอาจไม่พอดังนั้นถ้าคุณอยู่คนเดียวและทำงานนอกเวลา (เพราะคุณอาจมีงานทำหาเลี้ยงชีพ) คุณอาจใช้เวลาตลอดชีวิตโดยไม่ต้องไปใกล้ ๆ ทางออกการทำงาน
ดังนั้นคำแนะนำที่สำคัญที่สุดของฉันในที่นี้คือคุณลดความคาดหวังลงและพยายามลดความซับซ้อนลงปัญหาของคุณโดยใช้ข้อมูลทั้งหมดที่คุณสามารถทำได้และหลีกเลี่ยงการพึ่งพาภาพหน้าจอมากที่สุด (เช่นพยายามเชื่อมต่อเข้ากับเกมโดยตรงค้นหาการฉีด DLL) และทำให้ปัญหาบางอย่างง่ายขึ้นโดยการใช้ขั้นตอนการดูแลอย่าให้ อัลกอริทึมเรียนรู้ทุกอย่าง (เช่นการประมวลผลภาพหล่นให้มากที่สุดเท่าที่จะเป็นไปได้และพึ่งพาข้อมูลเกมภายในหลังจากนั้นหากอัลกอริทึมของคุณทำงานได้ดีคุณสามารถแทนที่บางส่วนของโปรแกรม AI ของคุณด้วยการประมวลผลภาพ ตัวอย่างเช่นหากคุณสามารถทำให้บางอย่างทำงานได้ค่อนข้างดีคุณสามารถลองแก้ปัญหาของคุณให้ซับซ้อนและแทนที่ขั้นตอนการดูแลและข้อมูลเกมหน่วยความจำโดยอัลกอริทึมการเรียนรู้ของเครื่องที่ไม่ได้รับการดูแล
โชคดีและถ้าได้ผลอย่าลืมตีพิมพ์บทความคุณจะได้รับชื่อเสียงในการแก้ปัญหาในทางปฏิบัติที่ยากเช่นนี้!