Lære å spille Minecraft med Video PreTraining (VPT) PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Lær å spille Minecraft med Video PreTraining (VPT)

Lær å spille Minecraft med Video PreTraining (VPT)

Vi trente et nevralt nettverk til å spille Minecraft av Video PreTraining (VPT) på et massivt umerket videodatasett av menneskelig Minecraft-spilling, mens vi bare brukte en liten mengde merket entreprenørdata. Med finjustering kan modellen vår lære å lage diamantverktøy, en oppgave som vanligvis tar dyktige mennesker over 20 minutter (24,000 XNUMX handlinger). Modellen vår bruker det opprinnelige menneskelige grensesnittet med tastetrykk og musebevegelser, noe som gjør det ganske generelt, og representerer et skritt mot generelle datamaskinbrukende agenter.

Les papir


Se kode og modellvekter


MineRL-konkurranse

Internett inneholder en enorm mengde offentlig tilgjengelige videoer som vi kan lære av. Du kan se en person lage en nydelig presentasjon, en digital kunstner tegne en vakker solnedgang, og en Minecraft-spiller bygge et intrikat hus. Disse videoene gir imidlertid bare en oversikt over hva skjedde, men ikke nøyaktig hvordan det ble oppnådd, dvs. du vil ikke vite den nøyaktige sekvensen av musebevegelser og tastene som ble trykket. Hvis vi ønsker å bygge storskala grunnmodeller i disse domenene som vi har gjort i språk med GPT, denne mangelen på handlingsetiketter utgjør en ny utfordring som ikke er tilstede i språkdomenet, der "handlingsetiketter" ganske enkelt er de neste ordene i en setning.

For å utnytte rikdommen av umerket videodata som er tilgjengelig på internett, introduserer vi en ny, men enkel, semi-overvåket imitasjonslæringsmetode: Video PreTraining (VPT). Vi starter med å samle et lite datasett fra entreprenører der vi tar opp ikke bare videoen deres, men også handlingene de tok, som i vårt tilfelle er tastetrykk og musebevegelser. Med disse dataene trener vi en invers dynamikkmodell (IDM), som forutsier handlingen som utføres ved hvert trinn i videoen. Viktigere, IDM kan bruke tidligere og fremtiden informasjon for å gjette handlingen ved hvert trinn. Denne oppgaven er mye enklere og krever dermed langt mindre data enn den atferdsmessige kloningsoppgaven med å forutsi handlinger gitt bare tidligere videorammer, som krever å utlede hva personen ønsker å gjøre og hvordan man oppnår det. Vi kan deretter bruke den trente IDM-en til å merke et mye større datasett med nettvideoer og lære å handle via atferdskloning.

Lær å spille Minecraft med Video PreTraining (VPT)
Lær å spille Minecraft med Video PreTraining (VPT)
VPT metodeoversikt

VPT Zero-Shot-resultater

Vi valgte å validere metoden vår i Minecraft fordi den (1) er et av de mest aktivt spilte videospillene i verden og dermed har et vell av fritt tilgjengelig videodata og (2) er åpent med en rekke ting å gjør, i likhet med virkelige applikasjoner som datamaskinbruk. I motsetning til i forkant virker i Minecraft som bruker forenklede handlingsrom med sikte på å lette utforskningen, bruker vår AI det mye mer generelt anvendelige, men også mye vanskeligere, opprinnelige menneskelige grensesnittet: 20Hz framerate med mus og tastatur.

Opplært på 70,000 50 timer med IDM-merket nettvideo, vår atferdskloningsmodell («VPT-grunnmodellen») utfører oppgaver i Minecraft som er nesten umulige å oppnå med forsterkende læring fra bunnen av. Den lærer å hogge trær for å samle tømmerstokker, lage disse tømmerstokkene til planker, og deretter lage disse plankene til et håndverksbord; denne sekvensen tar et menneske som er dyktig i Minecraft omtrent 1,000 sekunder eller XNUMX påfølgende spillhandlinger.

Lær å spille Minecraft med Video PreTraining (VPT)
Lær å spille Minecraft med Video PreTraining (VPT)
Sekvens av gjenstander som kreves for å lage et håndverksbord, merket med mediantiden det tar dyktige mennesker å nå hvert trinn
Utforming av et håndarbeidsbord "zero shot" (dvs. kun etter forhåndstrening uten ytterligere finjustering)

I tillegg utfører modellen andre komplekse ferdigheter mennesker ofte gjør i spillet, for eksempel svømming, jakt på dyr for mat og spise den maten. Den lærte også ferdighetene "søylehopping", en vanlig oppførsel i Minecraft med å heve deg selv ved gjentatte ganger å hoppe og plassere en blokk under deg selv.

Svømming (nullskudd)

Jakt på dyr (nullskudd)

Spise mat (nullskudd)

Søylehopping (nullskudd)

Finjustering med Behavioral Cloning

Foundation-modeller er utformet for å ha en bred atferdsprofil og er generelt dyktige på tvers av et bredt spekter av oppgaver. For å inkorporere ny kunnskap eller tillate dem å spesialisere seg på en smalere oppgavefordeling, er det vanlig praksis å finjustere disse modellene til mindre, mer spesifikke datasett. Som en casestudie av hvor godt VPT-fundamentmodellen kan finjusteres til nedstrøms datasett, ba vi entreprenørene våre om å spille i 10 minutter i splitter nye Minecraft-verdener og bygge et hus fra grunnleggende Minecraft-materialer. Vi håpet at dette ville forsterke grunnmodellens evne til pålitelig å utføre «tidlige spill»-ferdigheter, som å bygge lage bord. Når vi finjusterer dette datasettet, ser vi ikke bare en massiv forbedring i pålitelig utførelse av de tidlige spillferdighetene som allerede er til stede i grunnmodellen, men den finjusterte modellen lærer også å gå enda dypere inn i teknologitreet ved å lage både tre. og steinredskaper. Noen ganger ser vi til og med noen rudimentære lykonstruksjoner og agenten som søker gjennom landsbyer, inkludert raider i kister.

Lær å spille Minecraft med Video PreTraining (VPT)
Lær å spille Minecraft med Video PreTraining (VPT)
Sekvens av gjenstander som kreves for å lage en steinhakke, merket med mediantiden det tar dyktige mennesker å nå hvert trinn
Forbedret tidlig spilloppførsel fra BC-finjustering

Lage en steinhakke

Konstruere et rudimentært trehus

Søker gjennom en landsby

Dataskalering

Den kanskje viktigste hypotesen i arbeidet vårt er at det er langt mer effektivt å bruke merkede entreprenørdata for å trene en IDM (som en del av VPT-rørledningen) enn det er å trene en BC-fundamentmodell direkte fra det samme lille entreprenørdatasettet. For å validere denne hypotesen trener vi grunnmodeller på økende datamengder fra 1 til 70,000 2,000 timer. De som er trent på under 2,000 timer med data, blir trent på entreprenørdata med sannhetsetiketter som opprinnelig ble samlet inn for å trene IDM, og de som er trent på over XNUMX timer er trent på internettdata merket med vår IDM. Vi tar deretter hver grunnmodell og finjusterer den til husbyggingsdatasettet beskrevet i forrige avsnitt.

Effekt av treningsdata for grunnmodeller på finjustering

Ettersom grunnmodelldataene øker, ser vi generelt en økning i håndverksevnen, og bare på den største dataskalaen ser vi fremveksten av steinverktøy.

Finjustering med forsterkende læring

Når det er mulig å spesifisere en belønningsfunksjon, kan forsterkende læring (RL) være en kraftig metode for å fremkalle høy, potensielt til og med overmenneskelig, ytelse. Imidlertid krever mange oppgaver å overvinne harde leteutfordringer, og de fleste RL-metoder takler disse med tilfeldig utforskningsforut, f.eks. blir modeller ofte oppmuntret til å handle tilfeldig via entropibonuser. VPT-modellen bør være en mye bedre forut for RL fordi å etterligne menneskelig atferd sannsynligvis er mye mer nyttig enn å ta tilfeldige handlinger. Vi satte modellen vår til den utfordrende oppgaven med å samle en diamanthakke, en enestående evne i Minecraft som ble desto vanskeligere ved bruk av det opprinnelige menneskelige grensesnittet.

Å lage en diamanthakke krever en lang og komplisert sekvens av deloppgaver. For å gjøre denne oppgaven håndterbar, belønner vi agenter for hvert element i sekvensen.

Lær å spille Minecraft med Video PreTraining (VPT)
Lær å spille Minecraft med Video PreTraining (VPT)
RL finjustert VPT-modell som lager en diamanthakke

Vi fant at en RL-policy trent fra en tilfeldig initialisering (standard RL-metoden) knapt oppnår noen belønning, lærer aldri å samle logger og samler bare sjelden pinner. I sterk kontrast lærer finjustering fra en VPT-modell ikke bare å lage diamanthakker (noe den gjør i 2.5 % av 10-minutters Minecraft-episoder), men den har til og med en suksessrate på menneskelig nivå når det gjelder å samle alle gjenstander frem til diamanthakken. Dette er første gang noen har vist en dataagent som er i stand til å lage diamantverktøy i Minecraft, som tar mennesker over 20 minutter (24,000 XNUMX handlinger) i gjennomsnitt.

Belønning over episoder

konklusjonen

VPT baner veien mot å tillate agenter lære å handle ved å se det store antallet videoer på internett. Sammenlignet med generativ videomodellering eller kontrastive metoder som bare ville gi representasjon tidligere, tilbyr VPT den spennende muligheten for direkte læring i stor skala atferdsmessige forutsetninger på flere domener enn bare språk. Mens vi bare eksperimenterer i Minecraft, er spillet veldig åpent og det opprinnelige menneskelige grensesnittet (mus og tastatur) er veldig generisk, så vi tror resultatene våre lover godt for andre lignende domener, f.eks. datamaskinbruk.

For mer informasjon, se vårt papir. Vi er også åpne for våre entreprenørdata, Minecraft-miljø, modellkode og modellvekter, som vi håper vil hjelpe fremtidig forskning på VPT. Videre har vi samarbeidet med MineRL NeurIPS-konkurransen i år. Deltakerne kan bruke og finjustere modellene våre for å prøve å løse mange vanskelige oppgaver i Minecraft. Interesserte kan sjekke ut konkurransens nettside og konkurrere om en blå himmel premie på $100,000 i tillegg til en vanlig premiepott på $20,000. Tilskudd er tilgjengelig for selvidentifiserte underrepresenterte grupper og enkeltpersoner.


Erkjennelsene
Dette var en stor innsats av et dedikert team. Hver forfatter ga enorme bidrag på mange fronter over lange tidsperioder. Alle medlemmene var på heltid i prosjektet i over seks måneder. BB, IA, PZ og JC var med i det opprinnelige VPT-prosjektteamet, og var dermed involvert enda lenger (over ett år). Bortsett fra de originale teammedlemmene, er forfatterrekkefølgen tilfeldig. Det ble også randomisert mellom IA og 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(); });

Tidstempel:

Mer fra OpenAI