เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT) PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)

เราฝึกอบรมโครงข่ายประสาทเทียมเพื่อเล่น Minecraft โดย Video PreTraining (VPT) ในชุดข้อมูลวิดีโอขนาดใหญ่ที่ไม่มีป้ายกำกับของการเล่น Minecraft ของมนุษย์ ในขณะที่ใช้ข้อมูลผู้รับเหมาที่มีป้ายกำกับเพียงเล็กน้อยเท่านั้น ด้วยการปรับแต่งอย่างละเอียด แบบจำลองของเราสามารถเรียนรู้การสร้างเครื่องมือเพชร ซึ่งเป็นงานที่มักจะใช้มนุษย์ที่เชี่ยวชาญมากกว่า 20 นาที (24,000 การกระทำ) โมเดลของเราใช้ส่วนต่อประสานกับมนุษย์ดั้งเดิมของการกดแป้นและการเคลื่อนไหวของเมาส์ ทำให้ค่อนข้างทั่วไป และแสดงถึงขั้นตอนสู่ตัวแทนที่ใช้คอมพิวเตอร์ทั่วไป

อ่านกระดาษ


ดูรหัสและน้ำหนักรุ่น


การแข่งขัน MineRL

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

เพื่อใช้ประโยชน์จากข้อมูลวิดีโอที่ไม่มีป้ายกำกับที่มีอยู่มากมายบนอินเทอร์เน็ต เราจึงขอแนะนำวิธีการเรียนรู้แบบกึ่งมีการควบคุมที่แปลกใหม่และเรียบง่าย: Video PreTraining (VPT) เราเริ่มต้นด้วยการรวบรวมชุดข้อมูลเล็กๆ จากผู้รับเหมา ซึ่งเราไม่เพียงแต่บันทึกวิดีโอของพวกเขาเท่านั้น แต่ยังรวมถึงการดำเนินการที่พวกเขาทำ ซึ่งในกรณีของเราคือ การกดปุ่มและการเคลื่อนไหวของเมาส์ ด้วยข้อมูลนี้ เราฝึกโมเดลไดนามิกผกผัน (IDM) ซึ่งคาดการณ์การดำเนินการในแต่ละขั้นตอนในวิดีโอ ที่สำคัญ IDM สามารถใช้อดีตได้ และอนาคต ข้อมูลเพื่อเดาการดำเนินการในแต่ละขั้นตอน งานนี้ง่ายกว่ามากและต้องใช้ข้อมูลน้อยกว่างานโคลนพฤติกรรมของการคาดการณ์การกระทำที่ได้รับ เฟรมวิดีโอที่ผ่านมาเท่านั้นซึ่งต้องอนุมานว่าบุคคลนั้นต้องการทำอะไรและทำอย่างไรจึงจะบรรลุผลได้ จากนั้น เราสามารถใช้ IDM ที่ได้รับการฝึกอบรมมาเพื่อติดป้ายกำกับชุดข้อมูลวิดีโอออนไลน์ที่มีขนาดใหญ่กว่ามากและเรียนรู้ที่จะดำเนินการผ่านการโคลนตามพฤติกรรม

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
ภาพรวมวิธี VPT

ผลลัพธ์ VPT Zero-Shot

เราเลือกที่จะตรวจสอบวิธีการของเราใน Minecraft เพราะมัน (1) เป็นหนึ่งในวิดีโอเกมที่เล่นกันมากที่สุดในโลก ดังนั้นจึงมีข้อมูลวิดีโอมากมายที่หาได้ฟรี และ (2) เป็นเกมปลายเปิดที่มีสิ่งต่าง ๆ มากมาย คล้ายกับการใช้งานจริง เช่น การใช้คอมพิวเตอร์ ไม่เหมือน ก่อน โรงงาน ใน Minecraft ที่ใช้พื้นที่แอ็คชันแบบง่ายที่มุ่งเป้าไปที่การทำให้การสำรวจง่ายขึ้น AI ของเราใช้ส่วนต่อประสานดั้งเดิมที่ใช้งานได้จริงมากกว่า แม้ว่าจะยากกว่ามาก: อัตราเฟรม 20Hz ด้วยเมาส์และคีย์บอร์ด

โมเดลการโคลนตามพฤติกรรมของเรา ("โมเดลรากฐาน VPT") ได้รับการฝึกฝนบนวิดีโอออนไลน์ที่ติดป้ายกำกับ IDM กว่า 70,000 ชั่วโมง ทำงานให้สำเร็จใน Minecraft ที่แทบจะเป็นไปไม่ได้เลยที่จะบรรลุด้วยการเรียนรู้แบบเสริมกำลังตั้งแต่เริ่มต้น มันเรียนรู้ที่จะโค่นต้นไม้เพื่อรวบรวมท่อนซุง ประดิษฐ์ท่อนซุงเหล่านั้นให้เป็นแผ่น แล้วจึงประดิษฐ์แผ่นไม้เหล่านั้นลงในโต๊ะประดิษฐ์ ลำดับนี้ต้องใช้ความชำนาญของมนุษย์ใน Minecraft ประมาณ 50 วินาทีหรือเล่นเกมต่อเนื่อง 1,000 ครั้ง

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
ลำดับของสิ่งของที่จำเป็นในการประดิษฐ์โต๊ะคราฟต์ โดยระบุเวลามัธยฐานที่มนุษย์ต้องใช้อย่างเชี่ยวชาญในการเข้าถึงแต่ละขั้นตอน
การประดิษฐ์ของโต๊ะคราฟต์ "zero shot" (เช่น หลังการฝึกล่วงหน้าเท่านั้น โดยไม่มีการปรับแต่งเพิ่มเติม)

นอกจากนี้ โมเดลยังใช้ทักษะที่ซับซ้อนอื่นๆ ที่มนุษย์มักทำในเกม เช่น การว่ายน้ำ การล่าสัตว์เพื่อหาอาหาร และการกินอาหารนั้น นอกจากนี้ยังได้เรียนรู้ทักษะของ "การกระโดดเสา" ซึ่งเป็นพฤติกรรมทั่วไปใน Minecraft ในการยกระดับตัวเองด้วยการกระโดดซ้ำแล้วซ้ำเล่าและวางบล็อกไว้ใต้ตัวคุณ

ว่ายน้ำ (ซีโร่ช็อต)

สัตว์ล่าสัตว์ (zero-shot)

กินอาหาร (ซีโร่ช็อต)

กระโดดเสา (zero-shot)

ปรับแต่งด้วย Behavioral Cloning

โมเดลพื้นฐานได้รับการออกแบบให้มีโปรไฟล์พฤติกรรมที่กว้าง และโดยทั่วไปแล้วจะสามารถทำงานได้หลากหลาย ในการรวมความรู้ใหม่หรือทำให้พวกเขาเชี่ยวชาญในการกระจายงานที่แคบลง เป็นเรื่องปกติที่จะปรับแต่งแบบจำลองเหล่านี้ให้เป็นชุดข้อมูลที่มีขนาดเล็กลงและเฉพาะเจาะจงมากขึ้น จากกรณีศึกษาว่าโมเดลพื้นฐาน VPT สามารถปรับให้เข้ากับชุดข้อมูลดาวน์สตรีมได้ดีเพียงใด เราขอให้ผู้รับเหมาของเราเล่นเป็นเวลา 10 นาทีในโลก Minecraft ใหม่ล่าสุดและสร้างบ้านจากวัสดุ Minecraft พื้นฐาน เราหวังว่าสิ่งนี้จะขยายความสามารถของโมเดลพื้นฐานในการดำเนินทักษะ "เกมต้นเกม" ได้อย่างน่าเชื่อถือ เช่น การสร้างตารางการประดิษฐ์ เมื่อทำการปรับแต่งชุดข้อมูลนี้อย่างละเอียด ไม่เพียงแต่เราจะได้เห็นการพัฒนาอย่างมากในการแสดงทักษะในช่วงต้นเกมอย่างน่าเชื่อถือซึ่งมีอยู่แล้วในโมเดลพื้นฐานแล้ว แต่โมเดลที่ปรับแต่งอย่างละเอียดยังเรียนรู้ที่จะเจาะลึกลงไปในสายวิจัยด้วยการสร้างไม้ทั้งสองแบบ และเครื่องมือหิน บางครั้งเรายังเห็นการก่อสร้างที่พักพิงขั้นพื้นฐานและเจ้าหน้าที่กำลังค้นหาตามหมู่บ้านต่างๆ รวมถึงการบุกค้นหีบด้วย

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
ลำดับของสิ่งของที่จำเป็นในการประดิษฐ์หินเสียม โดยระบุเวลามัธยฐานที่มนุษย์ต้องใช้อย่างเชี่ยวชาญในการเข้าถึงแต่ละขั้น
ปรับปรุงพฤติกรรมในช่วงต้นเกมจากการปรับ BC อย่างละเอียด

ประดิษฐ์หินเสียม

การสร้างเพิงไม้เบื้องต้น

ค้นหาผ่านหมู่บ้าน

การปรับขนาดข้อมูล

บางทีสมมติฐานที่สำคัญที่สุดของงานของเราคือการใช้ข้อมูลผู้รับเหมาที่มีป้ายกำกับเพื่อฝึกอบรม IDM (ซึ่งเป็นส่วนหนึ่งของไปป์ไลน์ VPT) มีประสิทธิภาพมากกว่าการใช้แบบจำลองพื้นฐาน BC จากชุดข้อมูลผู้รับเหมาขนาดเล็กชุดเดียวกันโดยตรง เพื่อตรวจสอบสมมติฐานนี้ เราฝึกแบบจำลองพื้นฐานเกี่ยวกับปริมาณข้อมูลที่เพิ่มขึ้นจาก 1 เป็น 70,000 ชั่วโมง ผู้ที่ได้รับการฝึกอบรมเกี่ยวกับข้อมูลที่มีอายุต่ำกว่า 2,000 ชั่วโมงจะได้รับการฝึกอบรมเกี่ยวกับข้อมูลผู้รับเหมาโดยมีป้ายกำกับจริงที่รวบรวมไว้เพื่อฝึกอบรม IDM และผู้ที่ได้รับการฝึกอบรมมากกว่า 2,000 ชั่วโมงจะได้รับการฝึกอบรมเกี่ยวกับข้อมูลอินเทอร์เน็ตที่ติดป้ายกำกับ IDM ของเรา จากนั้นเราจะนำแบบจำลองฐานรากแต่ละแบบมาปรับแต่งให้เข้ากับชุดข้อมูลการสร้างบ้านที่อธิบายไว้ในส่วนก่อนหน้า

ผลของข้อมูลการฝึกโมเดลฐานรากต่อการปรับจูนอย่างละเอียด

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

ปรับแต่งด้วยการเรียนรู้การเสริมแรง

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

การสร้างเพชรเสียดสีต้องใช้ลำดับงานย่อยที่ยาวและซับซ้อน เพื่อให้งานนี้ติดตามได้ง่าย เราให้รางวัลตัวแทนสำหรับแต่ละรายการในลำดับ

เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
เรียนรู้การเล่น Minecraft ด้วย Video PreTraining (VPT)
โมเดล VPT ที่ปรับแต่งอย่างประณีตของ RL เพื่อสร้างเสียมเพชร

เราพบว่านโยบาย RL ที่ได้รับการฝึกอบรมจากการเริ่มต้นแบบสุ่ม (วิธี RL มาตรฐาน) แทบจะไม่ได้รับรางวัลใดๆ ไม่เคยเรียนรู้ที่จะรวบรวมบันทึกและแทบไม่ได้สะสมไม้เลย ในทางตรงกันข้าม การปรับแต่งแบบละเอียดจากโมเดล VPT ไม่เพียงแต่เรียนรู้การสร้างเสียมเพชร (ซึ่งทำได้ใน 2.5% ของตอน Minecraft 10 นาที) แต่ยังมีอัตราความสำเร็จในระดับมนุษย์ในการรวบรวมรายการทั้งหมดที่นำไปสู่ เสียมเพชร นี่เป็นครั้งแรกที่ทุกคนได้แสดงตัวแทนคอมพิวเตอร์ที่สามารถสร้างเครื่องมือเพชรใน Minecraft ซึ่งใช้เวลาโดยเฉลี่ยมากกว่า 20 นาที (24,000 การกระทำ) กับมนุษย์

รางวัลตอนต่างๆ

สรุป

VPT ปูทางสู่การอนุญาตให้ตัวแทน เรียนรู้ที่จะลงมือทำ โดยการดูวิดีโอจำนวนมากบนอินเทอร์เน็ต เมื่อเทียบกับการสร้างแบบจำลองวิดีโอกำเนิดหรือวิธีความคมชัดที่จะให้ผลเท่านั้น เป็นตัวแทน นักบวช VPT เสนอความเป็นไปได้ที่น่าตื่นเต้นในการเรียนรู้ขนาดใหญ่โดยตรง อุปนิสัย ในโดเมนมากกว่าแค่ภาษา แม้ว่าเราจะทดลองเฉพาะใน Minecraft เท่านั้น เกมดังกล่าวเป็นแบบปลายเปิดและอินเทอร์เฟซดั้งเดิมของมนุษย์ (เมาส์และแป้นพิมพ์) เป็นแบบทั่วไป ดังนั้นเราจึงเชื่อว่าผลลัพธ์ของเราเป็นลางดีสำหรับโดเมนอื่นๆ ที่คล้ายคลึงกัน เช่น การใช้คอมพิวเตอร์

สำหรับข้อมูลเพิ่มเติมโปรดดูที่ กระดาษของเรา. นอกจากนี้เรายังเปิดแหล่งข้อมูลผู้รับเหมา สภาพแวดล้อม Minecraft รหัสรุ่น และน้ำหนักของแบบจำลอง ซึ่งเราหวังว่าจะช่วยการวิจัยในอนาคตเกี่ยวกับ VPT นอกจากนี้ เราได้ร่วมมือกับการแข่งขัน MineRL NeurIPS ในปีนี้ ผู้เข้าแข่งขันสามารถใช้และปรับแต่งโมเดลของเราเพื่อพยายามแก้ปัญหายากๆ มากมายใน Minecraft ผู้สนใจสามารถตรวจสอบได้ที่ เพจการแข่งขัน และชิงรางวัลท้องฟ้าสีครามของ $100,000 นอกเหนือจากเงินรางวัลรวมของ $20,000. เงินช่วยเหลือมีให้สำหรับกลุ่มและบุคคลที่มีบทบาทต่ำซึ่งระบุตนเองได้


กิตติกรรมประกาศ
นี่เป็นความพยายามอย่างมากโดยทีมงานที่ทุ่มเท ผู้เขียนแต่ละคนมีส่วนได้ส่วนเสียอย่างมากในหลาย ๆ ด้านในช่วงเวลาที่ยาวนาน สมาชิกทุกคนทำงานเต็มเวลาในโครงการนานกว่าหกเดือน BB, IA, PZ และ JC อยู่ในทีมโครงการ VPT ดั้งเดิม และด้วยเหตุนี้จึงมีส่วนร่วมนานกว่านั้น (มากกว่าหนึ่งปี) นอกเหนือจากสมาชิกในทีมดั้งเดิมแล้ว ลำดับผู้เขียนจะเป็นแบบสุ่ม นอกจากนี้ยังสุ่มระหว่าง IA และ PZ

import {Runtime, Inspector, Library} from “https://unpkg.com/@observablehq/runtime@4.12.0/dist/runtime.js”; import notebookEarlyGameBehavior from “https://api.observablehq.com/d/7f62ee5a1b0ddebd.js?v=3”; import notebookRewardOverEpisodes from “https://api.observablehq.com/d/4d319198b6ab74d5.js?v=3”; import notebookBCFineTuning from “https://api.observablehq.com/d/119b327a0da6dc38.js?v=3” const customWidth = function (selector) { return (new Library).Generators.observe(function(change) { var width = change(document.querySelector(selector).clientWidth); function resized() { var w = document.querySelector(selector).clientWidth; if (w !== width) change(width = w); } window.addEventListener(“resize”, resized); return function() { window.removeEventListener(“resize”, resized); }; }); }; const earlyGameBehaviorSelector = “#chart-early-game-behavior”; const earlyGameBehaviorRenders = { “chart”: earlyGameBehaviorSelector, }; new Runtime(Object.assign(new Library, {width: customWidth(earlyGameBehaviorSelector)})).module(notebookEarlyGameBehavior, name => { const selector = earlyGameBehaviorRenders[name]; if (selector) { // key exists return new Inspector(document.querySelector(selector)); } else { return true; } }); const rewardOverEpisodesSelector = “#chart-reward-over-episodes”; const rewardOverEpisodesRenders = { “chart”: rewardOverEpisodesSelector, }; new Runtime(Object.assign(new Library, {width: customWidth(rewardOverEpisodesSelector)})).module(notebookRewardOverEpisodes, name => { const selector = rewardOverEpisodesRenders[name]; if (selector) { // key exists return new Inspector(document.querySelector(selector)); } else { return true; } }); const rewardBCFineTuningSelector = “#chart-bc-fine-tuning”; const rewardBCFineTuningRenders = { “chart”: rewardBCFineTuningSelector, }; new Runtime(Object.assign(new Library, {width: customWidth(rewardBCFineTuningSelector)})).module(notebookBCFineTuning, name => { const selector = rewardBCFineTuningRenders[name]; if (selector) { // key exists return new Inspector(document.querySelector(selector)); } else { return true; } }); var playerObjects = {}; var initVimeo = function () { var videoEls = document.querySelectorAll(‘iframe[data-vimeo]’); videoEls.forEach(function (v) { var id = v.getAttribute(‘data-id’); var player = new Vimeo.Player(v); playerObjects[id] = player; // keep track of players by id }); var triggers = document.querySelectorAll(‘.js-video-trigger’); triggers.forEach(function (t) { t.addEventListener(‘click’, function (e) { var id = this.getAttribute(‘data-video’); if (!id) return; e.preventDefault(); playerObjects[id].play(); }); }); }; function initCanvas() { let needsRecalc = true; const DESIRED_SIZE = window.innerWidth { function step() { if (needsRecalc) { needsRecalc = false; numColumns = Math.floor(window.innerWidth / DESIRED_SIZE); tileWidth = window.innerWidth / numColumns; tileHeight = ((SOURCE_HEIGHT / SOURCE_WIDTH) * tileWidth); canvas.setAttribute(‘width’, window.innerWidth); canvas.setAttribute(‘height’, tileHeight); canvas.parentNode.style.aspectRatio = `${window.innerWidth} / ${tileHeight}`; } let column = 0; for (let i = 0; i < numColumns; i++) { ctx.drawImage(video, tileWidth * i, 0, tileWidth, tileHeight); column++; } requestAnimationFrame(step) } requestAnimationFrame(step); }) } document.addEventListener('DOMContentLoaded', function() { initVimeo(); initCanvas(); });

ประทับเวลา:

เพิ่มเติมจาก OpenAI

ขอแนะนำ ChatGPT

โหนดต้นทาง: 1812221
ประทับเวลา: พฤศจิกายน 30, 2022