Imparare a giocare a Minecraft con Video PreTraining (VPT) PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Imparare a giocare a Minecraft con il Video PreTraining (VPT)

Imparare a giocare a Minecraft con il Video PreTraining (VPT)

Abbiamo addestrato una rete neurale a riprodurre Minecraft tramite Video PreTraining (VPT) su un enorme set di dati video senza etichetta di gioco umano di Minecraft, utilizzando solo una piccola quantità di dati di appaltatori etichettati. Con la messa a punto, il nostro modello può imparare a creare utensili diamantati, un'attività che di solito richiede agli esseri umani esperti più di 20 minuti (24,000 azioni). Il nostro modello utilizza l'interfaccia umana nativa della pressione dei tasti e dei movimenti del mouse, il che lo rende abbastanza generale e rappresenta un passo verso gli agenti generici che utilizzano i computer.

Leggi la carta


Visualizza codice e pesi del modello


Competizione MineRL

Internet contiene un'enorme quantità di video pubblicamente disponibili da cui possiamo imparare. Puoi guardare una persona fare una presentazione meravigliosa, un artista digitale disegnare un bellissimo tramonto e un giocatore di Minecraft costruire una casa intricata. Tuttavia, questi video forniscono solo una registrazione di che cosa successo ma non precisamente come è stato raggiunto, cioè non si conoscerà l'esatta sequenza dei movimenti del mouse e dei tasti premuti. Se vogliamo costruire su larga scala modelli di fondazione in questi domini come abbiamo fatto in lingua con GPT, questa mancanza di etichette di azione pone una nuova sfida non presente nel dominio della lingua, dove le "etichette di azione" sono semplicemente le parole successive in una frase.

Al fine di utilizzare la ricchezza di dati video senza etichetta disponibili su Internet, introduciamo un nuovo, ma semplice, metodo di apprendimento per imitazione semi-supervisionato: Video PreTraining (VPT). Iniziamo raccogliendo un piccolo set di dati dagli appaltatori in cui registriamo non solo i loro video, ma anche le azioni che hanno intrapreso, che nel nostro caso sono pressioni di tasti e movimenti del mouse. Con questi dati formiamo un modello a dinamica inversa (IDM), che prevede l'azione intrapresa in ogni fase del video. È importante sottolineare che l'IDM può utilizzare passato e futuro informazioni per indovinare l'azione ad ogni passaggio. Questo compito è molto più semplice e quindi richiede molti meno dati rispetto al compito di clonazione comportamentale di prevedere le azioni fornite solo fotogrammi video passati, che richiede di dedurre ciò che la persona vuole fare e come realizzarlo. Possiamo quindi utilizzare l'IDM addestrato per etichettare un set di dati molto più ampio di video online e imparare ad agire tramite la clonazione comportamentale.

Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Panoramica del metodo VPT

Risultati a tiro zero del VPT

Abbiamo scelto di convalidare il nostro metodo in Minecraft perché (1) è uno dei videogiochi più giocati al mondo e quindi ha una vasta gamma di dati video disponibili gratuitamente e (2) è a tempo indeterminato con un'ampia varietà di cose da do, simile alle applicazioni del mondo reale come l'utilizzo del computer. A differenza di precedente lavori in Minecraft che utilizzano spazi di azione semplificati volti a facilitare l'esplorazione, la nostra IA utilizza l'interfaccia umana nativa molto più generalmente applicabile, sebbene anche molto più difficile: framerate di 20Hz con mouse e tastiera.

Formato su 70,000 ore di video online con etichetta IDM, il nostro modello di clonazione comportamentale (il "modello di base VPT") esegue in Minecraft compiti quasi impossibili da ottenere con l'apprendimento per rinforzo da zero. Impara ad abbattere gli alberi per raccogliere tronchi, trasformarli in tavole e poi trasformarle in un tavolo da lavoro; questa sequenza richiede a un essere umano esperto in Minecraft circa 50 secondi o 1,000 azioni di gioco consecutive.

Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Sequenza degli oggetti necessari per creare un tavolo da lavoro, etichettata con il tempo medio impiegato dagli esseri umani esperti per raggiungere ogni passaggio
Creazione di un tavolo da lavoro "colpo zero" (cioè solo dopo il pre-allenamento senza ulteriori regolazioni)

Inoltre, il modello esegue altre abilità complesse che gli esseri umani spesso fanno nel gioco, come nuotare, cacciare animali per il cibo e mangiare quel cibo. Ha anche imparato l'abilità del "salto del pilastro", un comportamento comune in Minecraft di elevarsi saltando ripetutamente e posizionando un blocco sotto di sé.

Nuoto (colpo zero)

Animali da caccia (colpo zero)

Mangiare cibo (zero shot)

Pillar jumping (colpo zero)

Ottimizzazione con la clonazione comportamentale

I modelli di base sono progettati per avere un profilo di comportamento ampio ed essere generalmente in grado di affrontare un'ampia varietà di attività. Per incorporare nuove conoscenze o consentire loro di specializzarsi su una distribuzione di attività più ristretta, è pratica comune mettere a punto questi modelli su insiemi di dati più piccoli e più specifici. Come caso di studio su quanto bene il modello di base VPT possa essere messo a punto per i set di dati a valle, abbiamo chiesto ai nostri appaltatori di giocare per 10 minuti nei nuovissimi mondi di Minecraft e costruire una casa con i materiali di base di Minecraft. Speravamo che questo avrebbe amplificato la capacità del modello base di eseguire in modo affidabile abilità di "gioco iniziale" come la costruzione di tavoli da lavoro. Durante la messa a punto di questo set di dati, non solo vediamo un enorme miglioramento nell'esecuzione affidabile delle prime abilità di gioco già presenti nel modello di base, ma il modello perfezionato impara anche ad andare ancora più in profondità nell'albero tecnologico realizzando entrambi e strumenti di pietra. A volte vediamo anche la costruzione di rifugi rudimentali e l'agente che perquisisce i villaggi, comprese le razzie di casse.

Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Sequenza degli oggetti necessari per fabbricare un piccone di pietra, etichettata con il tempo medio impiegato dagli esseri umani esperti per raggiungere ogni passo
Migliorato il comportamento all'inizio del gioco dalla messa a punto di BC

Realizzare un piccone di pietra

Realizzazione di un rudimentale rifugio in legno

Ricerca in un villaggio

Ridimensionamento dei dati

Forse l'ipotesi più importante del nostro lavoro è che è molto più efficace utilizzare i dati degli appaltatori etichettati per addestrare un IDM (come parte della pipeline VPT) che addestrare direttamente un modello di fondazione BC da quello stesso set di dati di piccoli appaltatori. Per convalidare questa ipotesi, formiamo modelli di base su quantità crescenti di dati da 1 a 70,000 ore. Coloro che sono stati formati su meno di 2,000 ore di dati vengono addestrati sui dati dell'appaltatore con etichette di verità di base originariamente raccolte per addestrare l'IDM e quelli addestrati su oltre 2,000 ore vengono addestrati su dati Internet etichettati con il nostro IDM. Quindi prendiamo ogni modello di fondazione e lo adattiamo al set di dati di costruzione di case descritto nella sezione precedente.

Effetto dei dati di addestramento del modello di base sulla messa a punto

Con l'aumento dei dati del modello di fondazione, generalmente vediamo un aumento delle capacità di creazione e solo alla scala di dati più ampia vediamo l'emergere della creazione di strumenti in pietra.

Messa a punto con l'apprendimento per rinforzo

Quando è possibile specificare una funzione di ricompensa, l'apprendimento per rinforzo (RL) può essere un metodo potente per ottenere prestazioni elevate, potenzialmente anche superumane. Tuttavia, molte attività richiedono il superamento di difficili sfide di esplorazione e la maggior parte dei metodi RL le affronta casuale priori di esplorazione, ad esempio i modelli sono spesso incentivati ​​ad agire in modo casuale tramite bonus di entropia. Il modello VPT dovrebbe essere molto migliore per RL perché emulare il comportamento umano è probabilmente molto più utile che intraprendere azioni casuali. Abbiamo impostato il nostro modello per l'impegnativo compito di raccogliere un piccone di diamante, una capacità senza precedenti in Minecraft resa ancora più difficile quando si utilizza l'interfaccia umana nativa.

La creazione di un piccone di diamante richiede una lunga e complicata sequenza di attività secondarie. Per rendere questo compito trattabile, premiamo gli agenti per ogni oggetto nella sequenza.

Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Imparare a giocare a Minecraft con il Video PreTraining (VPT)
Modello VPT perfezionato di RL che realizza un piccone diamantato

Abbiamo scoperto che una politica RL addestrata da un'inizializzazione casuale (il metodo RL standard) ottiene a malapena alcuna ricompensa, non imparando mai a raccogliere registri e solo raramente raccogliendo stick. In netto contrasto, la messa a punto da un modello VPT non solo impara a creare picconi di diamante (cosa che fa nel 2.5% degli episodi di Minecraft da 10 minuti), ma ha anche una percentuale di successo a livello umano nel raccogliere tutti gli oggetti che portano a il piccone di diamante. Questa è la prima volta che qualcuno mostra un agente informatico in grado di creare strumenti diamantati in Minecraft, che richiede agli umani in media più di 20 minuti (24,000 azioni).

Ricompensa per gli episodi

Conclusione

VPT spiana la strada per consentire agli agenti di farlo impara ad agire guardando il gran numero di video su Internet. Rispetto alla modellazione video generativa o ai metodi contrastanti che avrebbero solo fruttato Rappresentativo precedenti, VPT offre l'entusiasmante possibilità di apprendere direttamente su larga scala priori comportamentali in più domini oltre alla semplice lingua. Sebbene sperimentiamo solo in Minecraft, il gioco è molto aperto e l'interfaccia umana nativa (mouse e tastiera) è molto generica, quindi riteniamo che i nostri risultati siano di buon auspicio per altri domini simili, ad esempio l'utilizzo del computer.

Per ulteriori informazioni, vedere la nostra carta. Stiamo anche reperindo i dati degli appaltatori, l'ambiente Minecraft, il codice del modello e i pesi del modello, che speriamo possano aiutare la ricerca futura su VPT. Inoltre, quest'anno abbiamo collaborato con il concorso MineRL NeurIPS. I concorrenti possono utilizzare e mettere a punto i nostri modelli per provare a risolvere molti compiti difficili in Minecraft. Chi è interessato può dare un'occhiata al pagina web del concorso e gareggia per un premio cielo blu di $100,000 oltre a un normale montepremi di $20,000. Le sovvenzioni sono disponibili per gruppi e individui sottorappresentati autoidentificati.


Ringraziamenti
Questo è stato un grande sforzo da parte di un team dedicato. Ogni autore ha dato enormi contributi su molti fronti per lunghi periodi di tempo. Tutti i membri sono stati a tempo pieno nel progetto per oltre sei mesi. BB, IA, PZ e JC facevano parte del team del progetto VPT originale e quindi sono stati coinvolti ancora più a lungo (oltre un anno). A parte quei membri del team originale, l'ordine degli autori è casuale. È stato anche randomizzato tra IA e 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:

Di più da OpenAI