คุณจะออกแบบระบบการเรียนรู้ของเครื่องเพื่อเล่น Angry Birds ได้อย่างไร?


22

หลังจากเล่น Angry Birds มากเกินไปฉันเริ่มสังเกตกลยุทธ์ของตัวเอง ปรากฎว่าฉันพัฒนาวิธีที่เฉพาะเจาะจงมากในการรับ 3 ดาวในแต่ละระดับ

นั่นทำให้ฉันสงสัยเกี่ยวกับความท้าทายในการพัฒนาระบบการเรียนรู้ของเครื่องที่สามารถเล่น Angry Birds ได้ การมีปฏิสัมพันธ์กับเกมและการยิงนกเป็นเรื่องเล็กน้อย แต่คำถามหนึ่งที่ฉันมีคือเกี่ยวกับ "การสร้างบล็อค" ของระบบ

ระบบการเรียนรู้ของเครื่องดูเหมือนจะทำงานกับแนวคิดที่เรียบง่ายหรือความเข้าใจเกี่ยวกับปัญหา สิ่งนี้มักถูกเข้ารหัสเป็นฟีเจอร์เช่นอินพุต ดังนั้นดูเหมือนว่าระบบจะต้องมีความสามารถในการเข้าใจแนวคิดระดับสูงบางอย่างเพื่อสร้างกลยุทธ์

มันเป็นเรื่องจริงเหรอ? นอกจากนี้ความท้าทายหรือส่วนที่ยากของการพัฒนาระบบดังกล่าวคืออะไร?

แก้ไข # 1:

นี่คือคำชี้แจงบางอย่าง รับ 3 ดาวเป็นปัญหายากเนื่องจากคุณต้องเพิ่มคะแนน วิธีนี้สามารถทำได้สองวิธีที่ไม่พิเศษ: 1) ลดจำนวนนกที่ใช้ (คุณจะได้รับ 10,000 คะแนนสำหรับนกที่ไม่ได้ใช้ทุกครั้ง) 2) เพิ่มการทำลายกระจกไม้และวัตถุอื่น ๆ วัตถุแต่ละชิ้นที่ถูกทำลายจะให้คะแนนกับคุณ เป็นไปได้ที่จะทำลายวัตถุมากกว่า 10,000 แต้มด้วยนกเพียงตัวเดียว

ต่อไปนี้เป็นคำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับ "แนวคิดระดับสูง" เพื่อให้ได้คะแนนสูงสุดตามที่อธิบายไว้ข้างต้นคุณต้องใช้พลังพิเศษของนกแต่ละตัว ดังนั้นนั่นหมายถึงการเปิดตัวนกที่แตกต่างกันด้วยวิถีที่แตกต่างกันขึ้นอยู่กับรูปแบบของแผนที่ และในขณะที่เล่นฉันพัฒนากลยุทธ์ที่ทำลายพื้นที่บางอย่างกับนกบางตัวในลำดับที่แน่นอน

ดูเหมือนว่าหากไม่มีความเข้าใจในการใช้นกแต่ละตัวเพื่อทำลายพื้นที่เฉพาะระบบจะไม่สามารถเรียนรู้ที่จะได้รับ 3 ดาว ดังนั้นคุณจะจัดการและเข้ารหัสสิ่งเช่นนั้นได้อย่างไร คุณมั่นใจได้อย่างไรว่าระบบสามารถเรียนรู้แนวคิดระดับสูงเหล่านี้ได้?

คำตอบ:


13

สมมติว่าคุณได้รับสิทธิในซอฟต์แวร์ (หรือคุณทำงานกับจำลองของคุณเอง) บางสิ่งจะง่ายที่นี่และบางอย่างก็น้อยลง นี่เป็นปัญหาที่ยากมากสำหรับฉัน ดังที่ carlosdc กล่าวไว้การเรียนรู้เสริมแรง (RL)เป็นอีกหนทางหนึ่งที่เป็นไปได้แม้ว่าฉันจะไม่แน่ใจว่าเป็นสิ่งที่ถูกต้องก็ตาม

เมื่อคุณเริ่มต้นคุณจะต้องกำหนดสิ่งที่คุณสภาพพื้นที่ , พื้นที่การกระทำ , การเปลี่ยนแปลงการเปลี่ยนแปลงและฟังก์ชั่นได้รับรางวัลเป็น พื้นที่ของรัฐ / การดำเนินการสามารถต่อเนื่องหรือไม่ต่อเนื่องและการเปลี่ยนแปลงการเปลี่ยนแปลงอาจได้รับจากปัญหาหรือแบบจำลองทางคณิตศาสตร์ ในที่สุดฟังก์ชั่นของรางวัลอาจได้รับa-initialiหรืออาจจะถูกสุ่มตัวอย่าง (โดยมีหรือไม่มีเสียงรบกวน)

พื้นที่การกระทำนั้นเรียบง่าย: มันเป็นเพียงทิศทางและพลังที่คุณยิงนกปัจจุบันที่ สำหรับมนุษย์นี่เป็นปัญหาที่ไม่ต่อเนื่อง (เมาส์ / หน้าจอสัมผัสเป็นอุปกรณ์อินพุตดิจิตอล) - สมมติว่า (ตัวอย่าง) มี 32 ทิศทางที่เป็นไปได้และ 10 กำลังที่เป็นไปได้ให้ 320 การกระทำที่เป็นไปได้

ฟังก์ชั่นของรางวัลนั้นค่อนข้างง่ายที่จะได้รับ: เป้าหมายคือการกำจัดหมูทั้งหมดด้วยจำนวนนกที่น้อยที่สุด (ตกลงดังนั้นมีคะแนนพิเศษสำหรับสิ่งอื่น ๆ แต่ตอนนี้เราไม่สนใจเลย) สิ่งที่ดีที่สุดคือถ้าเรารู้ว่าฟังก์ชั่นจริงที่สร้างคะแนนจากการฆ่าหมู (ขึ้นอยู่กับขนาดของหมูเป็นต้น IIRC) - แต่สำหรับระดับเดียวสิ่งนี้สามารถจำลองได้อย่างสมบูรณ์แบบ

รัฐพื้นที่และการเปลี่ยนแปลงการเปลี่ยนแปลงมีมากขึ้นยาก ในการสร้างแบบจำลองนี้อย่างถูกต้องเราต้องรู้เลย์เอาต์ทั้งหมดของแผนที่และฟิสิกส์ของเกม พลวัตการเปลี่ยนแปลงกล่าวว่า "ถ้าฉันอยู่ในสถานะxและฉันดำเนินการกับyฉันจะลงจอดในสถานะz " คุณสามารถเห็นความยากลำบากของสิ่งนี้ประการแรกเมื่อฟิสิกส์เชิงซ้อนของระบบหมายความว่ามันจะยากมากในการสร้างแบบจำลองอย่างถูกต้องและอย่างที่สองเนื่องจากมีสถานะผลลัพธ์ที่เป็นไปได้มากมายหลังจากรอบแรก (320) และนี่คือถ้า เราคิดว่าไม่มีความสุ่มในเครื่องยนต์ฟิสิกส์ซึ่งจากการเล่นมันฉันสงสัยว่ามี ฉันคิดว่าในขั้นตอนนี้คุณจะยอมแพ้และกลับบ้าน

วิธีการอีกวิธีหนึ่งคือการปฏิบัติต่อมนุษย์เหมือนเริ่มแรก - การทดลองและข้อผิดพลาด อย่างน้อยที่สุดมนุษย์ก็จะเริ่มทำการยิงแบบสุ่ม (แม้ว่าจะมีความแข็งแกร่งพอสมควรก่อนที่จะส่งนกไปยังสุกร แต่สิ่งนี้สามารถเข้ารหัสได้ง่าย) จนกระทั่งพบการกระทำที่ดีมากมาย นี่เป็นเหมือนโจรติดอาวุธหลายคนการตั้งค่า "อาวุธ" ของโจรที่นี่คือการกระทำที่เป็นไปได้ อัลกอริทึมพยายามที่จะสร้างความสมดุลในการสำรวจและการใช้ประโยชน์ - เช่นการสำรวจพื้นที่การกระทำและการใช้ประโยชน์จากการกระทำที่ดีเมื่อพวกเขาพบว่า สำหรับสิ่งนี้คุณไม่จำเป็นต้องรู้อะไรเกี่ยวกับการเปลี่ยนแปลงพื้นฐาน - คุณเพียงแค่ต้องรู้เกี่ยวกับการกระทำและผลตอบแทน ในการทำอย่างเต็มที่คุณจะต้องมีแขนสำหรับการกระทำที่เป็นไปได้ในแต่ละรอบ (เช่นคุณมีนก 5 ตัว * การกระทำ 320 ครั้ง = 320 ^ 5 = การกระทำประมาณ 10 ^ 12) ดังนั้นพื้นที่ปฏิบัติการจึงมีขนาดใหญ่มาก! อย่างไรก็ตามคุณสามารถใช้เทคนิคเพื่อปรับปรุงสิ่งนี้ถ้าคุณรู้เพียงเล็กน้อยเกี่ยวกับพื้นที่ของรัฐ ตัวอย่างเช่นคุณอาจแยกแยะการกระทำที่ส่งนกออกไปจากหมูลงไปที่พื้นหรือไม่มีพลังเพียงพอที่จะไปถึงพวกมัน นอกจากนี้คุณจะต้องไปถึงนกที่ 5 หากคุณไม่ได้ฆ่าหมูในรอบก่อนหน้าดังนั้นสัดส่วนของสถานะการกระทำจึงเป็นไปไม่ได้ นี่เป็นการระลึกถึงวิธีที่ใช้ในอัลกอริทึมMoGoซึ่งเป็นโปรแกรมคอมพิวเตอร์สำหรับการเล่น Go ตามขอบเขตความเชื่อมั่นสูงสุดที่ใช้กับต้นไม้ซึ่งเป็นวิธีหนึ่งในการแก้ปัญหาโจรติดอาวุธที่หลากหลาย


1
คำตอบที่ดี! ฉันคิดว่าพื้นที่ปฏิบัติการมีขนาดใหญ่กว่า 320 การกระทำที่เป็นไปได้ ทุกพิกเซลที่ถูกกวาดโดยส่วนโค้งที่อาจเป็น. 7 นิ้ว (บน iPad) จากแนวนอนซ้ายไปจนถึงแนวตั้งจะทำให้เกิดวิถีและผลลัพธ์ที่แตกต่างกัน iPad มีความละเอียด 132 dpi ดังนั้นอาจมีพิกเซลที่เป็นไปได้ประมาณ 8,000 พิกเซลที่จะเปิดตัว ฉันไม่ต้องการอยู่ในรายละเอียด แต่เพิ่มพื้นที่การดำเนินการเป็น 8,000 คำตอบหรือไม่ คุณจะทำงานกับพื้นที่ปฏิบัติการขนาดใหญ่ได้อย่างไร
B เซเว่น

การพยายามจำลองพลวัตเป็นคำถามที่แตกต่างอย่างสิ้นเชิง (และยาก) ฉันคิดว่าสำหรับการสนทนานี้เราควรสมมติว่าเราสามารถเข้าถึงซอร์สโค้ดและสามารถรับข้อมูลสถานะได้อย่างถูกต้อง นอกจากนี้ฟังก์ชั่นการให้รางวัลไม่เพียง แต่จะฆ่าหมูจำนวนมากเท่านั้น เพื่อให้ได้ 3 ดาวในระดับคุณต้องทำอะไรยากขึ้น ดูการแก้ไขคำถาม
B เซเว่น

@Beven ในหลักการไม่มีพื้นที่ปฏิบัติการขนาดใหญ่ไม่เปลี่ยนคำตอบแม้ว่าคุณอาจต้องทำการตัดแต่งกิ่งมากขึ้นและใช้พลังในการคำนวณมากขึ้น ;-) โปรดทราบว่านี่เป็นตัวเลือกที่สมบูรณ์แบบสำหรับการประมวลผลแบบขนาน คำถามของดวงดาวนั้นยุ่งยากเพราะนี่ก็หมายความว่าไม่มีการทำแผนที่ง่าย ๆ จากการฆ่าไปยังดวงดาวแม้ว่าฉันคิดว่าคุณมีดาวมากขึ้นเพียงแค่ข้ามจุดเปลี่ยน (ปกติแล้วจะใช้นกน้อยกว่า) ถ้าไม่คุณจะต้องเพิ่มปริมาณการสำรวจโดยไม่ตั้งใจเพื่อหลีกเลี่ยงการตกตะกอนบนเส้นทางที่ไม่ดีเร็วเกินไป
tdc

8

คำถามเจ๋ง!

ดูเหมือนว่าคำถามนี้เป็นเรื่องเกี่ยวกับเทคนิคธรรมชาติสำหรับปัญหาประเภทนี้ ฉันคิดว่าเทคนิคตามธรรมชาติของปัญหาประเภทนี้คือ การเรียนรู้เสริม (RL) RL เป็นเรื่องเกี่ยวกับวิธีที่เอเจนต์ควรดำเนินการในสภาพแวดล้อมเพื่อเพิ่มความคิดของรางวัลสะสมให้มากที่สุด บางทีอาจจะเป็นสิ่งที่ดีที่สุดสำหรับขั้นตอนวิธีการที่รู้จักกันเป็น RL Q-การเรียนรู้ ฉันคิดว่านี่เป็นคำถามแรกในเว็บไซต์นี้เกี่ยวกับการเรียนรู้การเสริมแรง

ฉันคิดว่าสิ่งที่คุณขอเป็นจริงถ้าคุณพยายามที่จะเข้าถึงสิ่งนี้เป็นการจำแนก / ถดถอย แต่สิ่งเหล่านั้นดูเหมือนจะไม่เป็นเครื่องมือที่เหมาะสมสำหรับปัญหานี้ นี่เป็นปัญหา RL โดยธรรมชาติที่ต้องคำนึงถึงลำดับของการกระทำและผลลัพธ์


5

ตรวจสอบที่นี่ว่าคนอื่นทำได้อย่างไรหรือมีส่วนร่วมกับคุณ: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html


บางทีคุณสามารถสรุปได้ว่าลิงก์นั้นเกี่ยวข้องกับอะไรและเกี่ยวข้องกับคำถามอย่างไร ตามที่ตอนนี้คำตอบของคุณดีกว่าเป็นความคิดเห็น
FredrikD

4

เพิ่งพูดถึงเรื่องนี้ในเมตาดาต้า มีการใช้อัลกอริทึมทางพันธุกรรมบุกเบิกโดย Koza เพื่อแก้ปัญหาวิดีโอเกม Pacman เขาสร้างขั้นตอนวิธีดั้งเดิมที่สามารถสัมผัสและกระทำได้ ในขณะที่ฉันจำได้ว่าสิ่งเหล่านี้รวมกันในต้นไม้ที่เหมือนเสียงกระเพื่อมเพื่อสร้างอัลกอริทึมที่ใหญ่ขึ้น ครอสโอเวอร์ที่มีต้นไม้เสียงกระเพื่อมเกี่ยวข้องกับการทดแทนหรือแลกเปลี่ยนทรีย่อยที่เป็นตัวแทนของการแสดงออกอัลกอริทึม ฟังก์ชั่นความสำเร็จคือบางสิ่งเช่น "จุดที่กิน" หรือ "จุดบวกกับผีที่กิน" หรือ "เวลายังมีชีวิตอยู่" ยังมีงานบางส่วนในพื้นที่นี้ มีการอ้างอิง koza ในบทความนี้ เวลาการฝึกอบรมอาจนานมากและ "ลู่เข้าหากัน" อย่างค่อยเป็นค่อยไปสำหรับปัญหาประเภทนี้

เรียนรู้ที่จะเล่น Pac-Man: แนวทางวิวัฒนาการตามกฎโดย Gallagher และ Ryan

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.