Minecraft leren spelen met Video PreTraining (VPT) PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Minecraft leren spelen met Video PreTraining (VPT)

Minecraft leren spelen met Video PreTraining (VPT)

We hebben een neuraal netwerk getraind om Minecraft by Video PreTraining (VPT) te spelen op een enorme ongelabelde videodataset van menselijk Minecraft-spel, terwijl we slechts een kleine hoeveelheid gelabelde aannemersgegevens gebruikten. Met fijnafstemming kan ons model leren diamantgereedschappen te maken, een taak die bekwame mensen gewoonlijk meer dan 20 minuten kost (24,000 handelingen). Ons model gebruikt de native menselijke interface van toetsaanslagen en muisbewegingen, waardoor het vrij algemeen is, en een stap in de richting van algemene computer-gebruikende agents vertegenwoordigt.

Lees Paper


Bekijk code en modelgewichten


MineRL Competitie

Het internet bevat een enorme hoeveelheid openbaar beschikbare video's waar we van kunnen leren. Je kunt zien hoe een persoon een prachtige presentatie maakt, een digitale artiest een prachtige zonsondergang tekent en een Minecraft-speler een ingewikkeld huis bouwt. Deze video's bieden echter alleen een record van: wat is gebeurd, maar niet precies hoe het werd bereikt, dwz u weet niet de exacte volgorde van muisbewegingen en ingedrukte toetsen. Als we grootschalig willen bouwen funderingsmodellen in deze domeinen zoals we hebben gedaan in taal met GPT, vormt dit gebrek aan actielabels een nieuwe uitdaging die niet aanwezig is in het taaldomein, waar "actielabels" gewoon de volgende woorden in een zin zijn.

Om de rijkdom aan niet-gelabelde videogegevens die op internet beschikbaar zijn te benutten, introduceren we een nieuwe, maar eenvoudige, semi-gesuperviseerde leermethode voor imitatie: Video PreTraining (VPT). We beginnen met het verzamelen van een kleine dataset van aannemers waarin we niet alleen hun video opnemen, maar ook de acties die ze hebben ondernomen, wat in ons geval toetsaanslagen en muisbewegingen zijn. Met deze data trainen we een inverse dynamics model (IDM), dat voorspelt welke actie er wordt ondernomen bij elke stap in de video. Belangrijk is dat de IDM verleden . kan gebruiken en toekomst informatie om de actie bij elke stap te raden. Deze taak is veel eenvoudiger en vereist dus veel minder gegevens dan de gedragsmatige kloontaak om acties te voorspellen alleen eerdere videoframes, wat vereist af te leiden wat de persoon wil doen en hoe dit te bereiken. Vervolgens kunnen we de getrainde IDM gebruiken om een ​​veel grotere dataset van online video's te labelen en te leren handelen via gedragsklonen.

Minecraft leren spelen met Video PreTraining (VPT)
Minecraft leren spelen met Video PreTraining (VPT)
Overzicht VPT-methode

VPT Zero-Shot-resultaten

We hebben ervoor gekozen om onze methode in Minecraft te valideren omdat het (1) een van de meest actief gespeelde videogames ter wereld is en dus een schat aan vrij beschikbare videogegevens heeft en (2) een open einde heeft met een breed scala aan dingen om doen, vergelijkbaar met toepassingen in de echte wereld, zoals computergebruik. in tegenstelling tot voorafgaand Bedrijven in Minecraft die gebruikmaakt van vereenvoudigde actieruimten om verkenning te vergemakkelijken, gebruikt onze AI de veel algemener toepasbare, maar ook veel moeilijkere, native menselijke interface: 20Hz framerate met de muis en het toetsenbord.

Getraind op 70,000 uur aan IDM-gelabelde online video, voert ons gedrags-klonenmodel (het "VPT-basismodel") taken uit in Minecraft die bijna onmogelijk te bereiken zijn met vanaf het begin versterkend leren. Het leert bomen omhakken om boomstammen te verzamelen, die boomstammen tot planken te maken en die planken vervolgens tot een werktafel te maken; deze reeks kost een mens die bekwaam is in Minecraft ongeveer 50 seconden of 1,000 opeenvolgende spelacties.

Minecraft leren spelen met Video PreTraining (VPT)
Minecraft leren spelen met Video PreTraining (VPT)
Volgorde van items die nodig zijn om een ​​werktafel te maken, gelabeld met de mediane tijd die bekwame mensen nodig hebben om elke stap te bereiken
Vervaardiging van een knutseltafel "zero shot" (dwz alleen na voortraining zonder extra verfijning)

Bovendien voert het model andere complexe vaardigheden uit die mensen vaak in het spel doen, zoals zwemmen, op dieren jagen voor voedsel en dat voedsel eten. Het leerde ook de vaardigheid van "pilaar springen", een veelvoorkomend gedrag in Minecraft om jezelf op te tillen door herhaaldelijk te springen en een blok onder jezelf te plaatsen.

Zwemmen (nulschot)

Jacht op dieren (zero-shot)

Voedsel eten (zero-shot)

Pijlerspringen (zero-shot)

Verfijning met gedragsklonen

Basismodellen zijn ontworpen om een ​​breed gedragsprofiel te hebben en over het algemeen geschikt te zijn voor een breed scala aan taken. Om nieuwe kennis op te nemen of hen in staat te stellen zich te specialiseren op een smallere taakverdeling, is het gebruikelijk om deze modellen af ​​te stemmen op kleinere, meer specifieke datasets. Als casestudy naar hoe goed het VPT-basismodel kan worden afgestemd op downstream-datasets, hebben we onze aannemers gevraagd om 10 minuten te spelen in gloednieuwe Minecraft-werelden en een huis te bouwen van basis Minecraft-materialen. We hoopten dat dit het vermogen van het basismodel zou versterken om op betrouwbare wijze 'vroege game'-vaardigheden uit te voeren, zoals het bouwen van knutseltafels. Bij het afstemmen op deze dataset zien we niet alleen een enorme verbetering in het betrouwbaar uitvoeren van de vroege spelvaardigheden die al aanwezig zijn in het basismodel, maar het verfijnde model leert ook om nog dieper in de technologieboom te gaan door zowel houten en stenen werktuigen. Soms zien we zelfs een rudimentaire constructie van schuilplaatsen en de agent die door dorpen zoekt, inclusief het overvallen van kisten.

Minecraft leren spelen met Video PreTraining (VPT)
Minecraft leren spelen met Video PreTraining (VPT)
Opeenvolging van items die nodig zijn om een ​​stenen houweel te maken, gelabeld met de mediane tijd die bekwame mensen nodig hebben om elke stap te bereiken
Verbeterd vroege spelgedrag van BC fine-tuning

Een stenen houweel maken

Een rudimentair houten onderkomen bouwen

Zoeken door een dorp

Gegevens schalen

Misschien wel de belangrijkste hypothese van ons werk is dat het veel effectiever is om gelabelde aannemersgegevens te gebruiken om een ​​IDM te trainen (als onderdeel van de VPT-pijplijn) dan om rechtstreeks een BC-funderingsmodel uit diezelfde kleine aannemersdataset te trainen. Om deze hypothese te valideren, trainen we funderingsmodellen op toenemende hoeveelheden data van 1 tot 70,000 uur. Degenen die getraind zijn met minder dan 2,000 uur aan gegevens, worden getraind in de gegevens van de aannemer met grondwaarheidslabels die oorspronkelijk zijn verzameld om de IDM te trainen, en degenen die zijn getraind met meer dan 2,000 uur zijn getraind op internetgegevens die zijn gelabeld met onze IDM. Vervolgens nemen we elk funderingsmodel en stemmen het af op de woningbouwdataset die in de vorige sectie is beschreven.

Effect van trainingsgegevens van funderingsmodellen op finetuning

Naarmate de gegevens van het funderingsmodel toenemen, zien we over het algemeen een toename in het maken van vaardigheden, en alleen op de grootste gegevensschaal zien we de opkomst van het maken van stenen werktuigen.

Verfijning met Reinforcement Learning

Wanneer het mogelijk is om een ​​beloningsfunctie te specificeren, kan wapeningsleren (RL) een krachtige methode zijn om hoge, mogelijk zelfs bovenmenselijke, prestaties uit te lokken. Veel taken vereisen echter het overwinnen van harde verkenningsuitdagingen, en de meeste RL-methoden pakken deze aan met: willekeurige exploratieprioriteiten, bijv. modellen worden vaak gestimuleerd om willekeurig te handelen via entropiebonussen. Het VPT-model zou een veel betere prioriteit moeten zijn voor RL, omdat het nabootsen van menselijk gedrag waarschijnlijk veel nuttiger is dan het nemen van willekeurige acties. We hebben ons model de uitdagende taak gegeven om een ​​diamanten houweel te verzamelen, een ongekende mogelijkheid in Minecraft die des te moeilijker werd bij het gebruik van de native menselijke interface.

Het maken van een diamanten houweel vereist een lange en gecompliceerde reeks subtaken. Om deze taak uitvoerbaar te maken, belonen we agenten voor elk item in de reeks.

Minecraft leren spelen met Video PreTraining (VPT)
Minecraft leren spelen met Video PreTraining (VPT)
RL verfijnd VPT-model dat een diamanten houweel maakt

We ontdekten dat een RL-beleid dat is getraind vanuit een willekeurige initialisatie (de standaard RL-methode) nauwelijks enige beloning oplevert, nooit leert logs te verzamelen en slechts zelden sticks verzamelt. In schril contrast hiermee leert het finetunen van een VPT-model niet alleen diamanten pikhouwelen te maken (wat het doet in 2.5% van de 10 minuten durende Minecraft-afleveringen), maar het heeft zelfs een succespercentage op menselijk niveau bij het verzamelen van alle items voorafgaand aan de diamanten houweel. Dit is de eerste keer dat iemand een computeragent heeft laten zien die diamantgereedschappen kan maken in Minecraft, wat mensen gemiddeld meer dan 20 minuten (24,000 acties) kost.

Beloning voor afleveringen

Conclusie

VPT effent het pad om agenten toe te staan: leren handelen door het grote aantal video's op internet te bekijken. Vergeleken met generatieve videomodellering of contrastieve methoden die alleen maar zouden opleveren representatief priors, VPT biedt de opwindende mogelijkheid om direct op grote schaal te leren gedragsprioriteiten in meer domeinen dan alleen taal. Hoewel we alleen in Minecraft experimenteren, is de game erg open en is de native menselijke interface (muis en toetsenbord) erg generiek, dus we denken dat onze resultaten een goed voorteken zijn voor andere vergelijkbare domeinen, zoals computergebruik.

Voor meer informatie, zie onze papieren. We gebruiken ook open source onze aannemersgegevens, Minecraft-omgeving, modelcode en modelgewichten, waarvan we hopen dat ze toekomstig onderzoek naar VPT zullen helpen. Bovendien zijn we dit jaar een partnerschap aangegaan met de MineRL NeurIPS-competitie. Deelnemers kunnen onze modellen gebruiken en verfijnen om te proberen veel moeilijke taken in Minecraft op te lossen. Geïnteresseerden kunnen een kijkje nemen op de wedstrijd webpagina en strijden om een ​​blauwe luchtprijs van $100,000 naast een reguliere prijzenpot van $20,000. Subsidies zijn beschikbaar voor zelf-geïdentificeerde ondervertegenwoordigde groepen en individuen.


Dankwoord
Dit was een grote inspanning van een toegewijd team. Elke auteur heeft gedurende lange perioden op vele fronten grote bijdragen geleverd. Alle leden waren ruim zes maanden fulltime bezig met het project. BB, IA, PZ en JC zaten in het oorspronkelijke VPT-projectteam en waren dus nog langer (ruim een ​​jaar) betrokken. Afgezien van de oorspronkelijke teamleden is de auteursvolgorde willekeurig. Het werd ook gerandomiseerd tussen IA en 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(); });

Tijdstempel:

Meer van OpenAI