Învățați să jucați Minecraft cu Video PreTraining (VPT) PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Învățați să jucați Minecraft cu Video PreTraining (VPT)

Învățați să jucați Minecraft cu Video PreTraining (VPT)

Am antrenat o rețea neuronală pentru a juca Minecraft by Video PreTraining (VPT) pe un set de date video masiv neetichetat de joc Minecraft uman, utilizând în același timp doar o cantitate mică de date etichetate ale contractorului. Cu reglajul fin, modelul nostru poate învăța să creeze unelte diamantate, o sarcină care necesită, de obicei, oamenilor pricepuți peste 20 de minute (24,000 de acțiuni). Modelul nostru folosește interfața umană nativă a apăsărilor de taste și mișcărilor mouse-ului, făcându-l destul de general și reprezintă un pas către agenții generali care folosesc computerul.

Citiți hârtia


Vedeți codul și greutățile modelului


Concursul MineRL

Internetul conține o cantitate enormă de videoclipuri disponibile public din care putem învăța. Puteți urmări o persoană care face o prezentare superbă, un artist digital desenând un apus de soare frumos și un jucător Minecraft construind o casă complicată. Cu toate acestea, aceste videoclipuri oferă doar o înregistrare a ceea ce s-a întâmplat, dar nu tocmai cum a fost realizat, adică nu veți ști secvența exactă a mișcărilor mouse-ului și a tastelor apăsate. Dacă am dori să construim pe scară largă modele de fundație în aceste domenii, așa cum am făcut în limbaj GPT, această lipsă de etichete de acțiune reprezintă o nouă provocare care nu este prezentă în domeniul lingvistic, unde „etichetele de acțiune” sunt pur și simplu următoarele cuvinte dintr-o propoziție.

Pentru a utiliza multitudinea de date video neetichetate disponibile pe internet, introducem o metodă de învățare prin imitație nouă, dar simplă, semi-supravegheată: Video PreTraining (VPT). Începem prin a aduna un mic set de date de la contractori în care înregistrăm nu numai videoclipul lor, ci și acțiunile pe care le-au întreprins, care în cazul nostru sunt apăsări de taste și mișcări ale mouse-ului. Cu aceste date antrenăm un model de dinamică inversă (IDM), care prezice acțiunea întreprinsă la fiecare pas din videoclip. Important este că IDM-ul poate folosi trecutul și viitor informații pentru a ghici acțiunea la fiecare pas. Această sarcină este mult mai ușoară și, prin urmare, necesită mult mai puține date decât sarcina de clonare comportamentală de a prezice acțiunile date numai cadre video anterioare, ceea ce necesită deducerea a ceea ce persoana dorește să facă și cum să-l realizeze. Apoi putem folosi IDM-ul instruit pentru a eticheta un set de date mult mai mare de videoclipuri online și pentru a învăța să acționăm prin clonarea comportamentală.

Învățați să jucați Minecraft cu Video PreTraining (VPT)
Învățați să jucați Minecraft cu Video PreTraining (VPT)
Prezentare generală a metodei VPT

Rezultate VPT Zero-Shot

Am ales să ne validăm metoda în Minecraft deoarece (1) este unul dintre cele mai jucate jocuri video din lume și, prin urmare, are o mulțime de date video disponibile gratuit și (2) este deschis cu o mare varietate de lucruri de face, similar cu aplicațiile din lumea reală, cum ar fi utilizarea computerului. Spre deosebire de anterior fabrică în Minecraft, care utilizează spații de acțiune simplificate, menite să ușureze explorarea, AI-ul nostru folosește interfața umană nativă mult mai general aplicabilă, deși mult mai dificilă: framerate de 20 Hz cu mouse-ul și tastatura.

Antrenat pe 70,000 de ore de videoclipuri online etichetate IDM, modelul nostru de clonare comportamentală („modelul de bază VPT”) îndeplinește sarcini în Minecraft care sunt aproape imposibil de realizat prin învățare prin consolidare de la zero. Învață să taie copaci pentru a colecta bușteni, să transforme acei bușteni în scânduri și apoi să transforme acele scânduri într-o masă de lucru; Această secvență durează un om expert în Minecraft aproximativ 50 de secunde sau 1,000 de acțiuni consecutive de joc.

Învățați să jucați Minecraft cu Video PreTraining (VPT)
Învățați să jucați Minecraft cu Video PreTraining (VPT)
Secvența de articole necesare pentru a crea o masă de lucru, etichetată cu timpul mediu necesar oamenilor pricepuți pentru a ajunge la fiecare pas
Crearea unei mese de crafting „zero shot” (adică numai după antrenament prealabil fără reglaj fin suplimentar)

În plus, modelul îndeplinește alte abilități complexe pe care oamenii le fac adesea în joc, cum ar fi înotul, vânarea animalelor pentru hrană și consumul acelei alimente. A învățat, de asemenea, abilitățile de „săritură de stâlpi”, un comportament obișnuit în Minecraft de a te ridica sărind în mod repetat și plasând un bloc sub tine.

Înot (zero-shot)

Animale de vânătoare (zero-shot)

Mâncarea alimentelor (zero-shot)

Săritura de stâlp (zero-shot)

Ajustare fină cu clonarea comportamentală

Modelele de fundație sunt concepute pentru a avea un profil larg de comportament și, în general, sunt capabile pentru o mare varietate de sarcini. Pentru a încorpora cunoștințe noi sau a le permite să se specializeze pe o distribuție mai restrânsă a sarcinilor, este o practică obișnuită să ajustați aceste modele la seturi de date mai mici și mai specifice. Ca un studiu de caz despre cât de bine poate fi ajustat modelul de fundație VPT la seturile de date din aval, am cerut contractorilor noștri să se joace timp de 10 minute în lumi Minecraft noi și să construiască o casă din materiale Minecraft de bază. Am sperat că acest lucru va amplifica capacitatea modelului de fundație de a efectua în mod fiabil abilitățile de „joc timpuriu”, cum ar fi construirea de mese de crafting. La ajustarea fină a acestui set de date, nu numai că vedem o îmbunătățire masivă în realizarea în mod fiabil a abilităților timpurii de joc deja prezente în modelul de bază, dar modelul ajustat învață, de asemenea, să meargă și mai adânc în arborele tehnologic, creând atât lemn. și unelte de piatră. Uneori vedem chiar o construcție rudimentară de adăposturi și agentul căutând prin sate, inclusiv cu raid în cufăr.

Învățați să jucați Minecraft cu Video PreTraining (VPT)
Învățați să jucați Minecraft cu Video PreTraining (VPT)
Secvența de articole necesare pentru a crea un târnăcop de piatră, etichetată cu timpul mediu necesar oamenilor pricepuți pentru a ajunge la fiecare pas
Comportament îmbunătățit la începutul jocului din reglajul BC

Fabricarea unui târnăcop de piatră

Construirea unui adăpost rudimentar din lemn

Căutând printr-un sat

Scalare de date

Poate cea mai importantă ipoteză a muncii noastre este că este mult mai eficient să folosim datele etichetate ale contractorului pentru a instrui un IDM (ca parte a conductei VPT) decât să antrenezi direct un model de fundație BC din același set de date de contractor mic. Pentru a valida această ipoteză, antrenăm modele de bază pe cantități crescânde de date de la 1 la 70,000 de ore. Cei instruiți pe mai puțin de 2,000 de ore de date sunt instruiți cu privire la datele contractorului cu etichete de adevăr la sol care au fost colectate inițial pentru a instrui IDM-ul, iar cei instruiți pe peste 2,000 de ore sunt instruiți pe datele de internet etichetate cu IDM-ul nostru. Apoi luăm fiecare model de fundație și îl reglam fin la setul de date pentru clădirea casei descris în secțiunea anterioară.

Efectul datelor de antrenament al modelului de fundație asupra reglajului fin

Pe măsură ce datele modelului de fundație cresc, în general observăm o creștere a capacității de fabricare și doar la cea mai mare scară de date vedem apariția confecționării instrumentelor din piatră.

Ajustare fină cu învățare prin întărire

Când este posibil să se specifice o funcție de recompensă, învățarea prin întărire (RL) poate fi o metodă puternică pentru a obține performanțe ridicate, potențial chiar supraumane. Cu toate acestea, multe sarcini necesită depășirea provocărilor grele de explorare și majoritatea metodelor RL le abordează cu acestea aleator anterioarele de explorare, de exemplu modelele sunt adesea stimulate să acționeze aleatoriu prin bonusuri de entropie. Modelul VPT ar trebui să fie un prealabil mult mai bun pentru RL, deoarece emularea comportamentului uman este probabil mult mai utilă decât acțiuni aleatorii. Am stabilit modelul nostru sarcina provocatoare de a colecta un târnăcop de diamant, o capacitate fără precedent în Minecraft, care este și mai dificilă atunci când se folosește interfața umană nativă.

Crearea unui târnăcop de diamant necesită o secvență lungă și complicată de sarcini secundare. Pentru a face această sarcină manevrabilă, recompensăm agenții pentru fiecare articol din secvență.

Învățați să jucați Minecraft cu Video PreTraining (VPT)
Învățați să jucați Minecraft cu Video PreTraining (VPT)
Model VPT reglat fin RL care creează un târnăcop de diamant

Am constatat că o politică RL antrenată dintr-o inițializare aleatorie (metoda RL standard) abia dacă obține nicio recompensă, niciodată nu învață să colecteze jurnalele și doar rareori colectând stick-uri. În contrast puternic, reglajul de la un model VPT nu numai că învață să creeze târnăcopi de diamant (ceea ce face în 2.5% din episoadele Minecraft de 10 minute), dar are chiar și o rată de succes la nivel uman la colectarea tuturor articolelor care duc la târnăcopul de diamant. Este pentru prima dată când cineva arată un agent de computer capabil să creeze unelte diamantate în Minecraft, care durează oamenilor peste 20 de minute (24,000 de acțiuni) în medie.

Recompensă pe episoade

Concluzie

VPT deschide calea către a permite agenților să facă invata sa actionezi prin vizionarea unui număr mare de videoclipuri de pe internet. În comparație cu modelarea video generativă sau cu metodele contrastive care ar avea doar randament reprezentativ anterior, VPT oferă posibilitatea interesantă de a învăța direct la scară largă anterioare comportamentale în mai multe domenii decât doar limbaj. Deși experimentăm doar în Minecraft, jocul este foarte deschis și interfața umană nativă (mouse și tastatură) este foarte generică, așa că credem că rezultatele noastre sunt de bun augur pentru alte domenii similare, de exemplu, utilizarea computerului.

Pentru mai multe informații, vă rugăm să vedeți hârtia noastră. De asemenea, avem aprovizionare deschisă cu datele contractorilor noștri, mediul Minecraft, codul modelului și greutățile modelului, ceea ce sperăm că va ajuta cercetările viitoare în VPT. În plus, am colaborat cu competiția MineRL NeurIPS anul acesta. Concurenții pot folosi și ajusta modelele noastre pentru a încerca să rezolve multe sarcini dificile în Minecraft. Cei interesați pot consulta pagina web a competiției și concura pentru un premiu de cer albastru de $100,000 pe lângă un fond obișnuit de premii de $20,000. Granturile sunt disponibile pentru grupuri și persoane autoidentificate subreprezentate.


recunoasteri
Acesta a fost un efort mare al unei echipe dedicate. Fiecare autor a adus contribuții uriașe pe mai multe fronturi pe perioade lungi de timp. Toți membrii au fost cu normă întreagă pe proiect timp de peste șase luni. BB, IA, PZ și JC au făcut parte din echipa originală de proiect VPT și, prin urmare, au fost implicați și mai mult timp (peste un an). În afară de acești membri originali ai echipei, ordinea autorilor este aleatorie. De asemenea, a fost randomizat între IA și 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(); });

Timestamp-ul:

Mai mult de la OpenAI