Aprendendo a jogar Minecraft com Video PreTraining (VPT) PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)

Treinamos uma rede neural para jogar Minecraft por Video PreTraining (VPT) em um enorme conjunto de dados de vídeo não rotulado de jogo humano de Minecraft, usando apenas uma pequena quantidade de dados de contratados rotulados. Com o ajuste fino, nosso modelo pode aprender a criar ferramentas de diamante, uma tarefa que geralmente leva humanos proficientes em mais de 20 minutos (24,000 ações). Nosso modelo usa a interface humana nativa de pressionamentos de teclas e movimentos do mouse, tornando-o bastante geral, e representa um passo em direção a agentes gerais de uso de computador.

Leia o artigo


Ver código e pesos de modelo


Competição MineRL

A internet contém uma enorme quantidade de vídeos disponíveis publicamente com os quais podemos aprender. Você pode assistir a uma pessoa fazer uma apresentação linda, um artista digital desenhar um belo pôr do sol e um jogador de Minecraft construir uma casa intrincada. No entanto, esses vídeos apenas fornecem um registro de o que aconteceu, mas não precisamente como foi alcançado, ou seja, você não saberá a seqüência exata de movimentos do mouse e teclas pressionadas. Se quisermos construir em larga escala modelos de fundação nesses domínios como fizemos na linguagem com GPT, essa falta de rótulos de ação representa um novo desafio não presente no domínio da linguagem, onde “rótulos de ação” são simplesmente as próximas palavras em uma frase.

A fim de utilizar a riqueza de dados de vídeo não rotulados disponíveis na Internet, apresentamos um método de aprendizado de imitação semi-supervisionado novo, porém simples: Video PreTraining (VPT). Começamos reunindo um pequeno conjunto de dados de contratados, onde gravamos não apenas o vídeo, mas também as ações que eles realizaram, que no nosso caso são pressionamentos de teclas e movimentos do mouse. Com esses dados treinamos um modelo de dinâmica inversa (IDM), que prevê a ação a ser tomada em cada etapa do vídeo. Importante, o IDM pode usar passado e futuro informações para adivinhar a ação em cada etapa. Essa tarefa é muito mais fácil e, portanto, requer muito menos dados do que a tarefa de clonagem comportamental de prever ações dadas apenas quadros de vídeo anteriores, o que requer inferir o que a pessoa quer fazer e como realizá-lo. Podemos então usar o IDM treinado para rotular um conjunto de dados muito maior de vídeos online e aprender a agir por meio de clonagem comportamental.

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Visão geral do método VPT

Resultados VPT Zero-Shot

Escolhemos validar nosso método no Minecraft porque (1) é um dos videogames mais jogados do mundo e, portanto, possui uma riqueza de dados de vídeo disponíveis gratuitamente e (2) é aberto com uma ampla variedade de coisas para fazer, semelhante aos aplicativos do mundo real, como o uso do computador. Diferente prévio trabalho no Minecraft que usa espaços de ação simplificados destinados a facilitar a exploração, nossa IA usa a interface humana nativa muito mais aplicável, embora também muito mais difícil: taxa de quadros de 20Hz com o mouse e o teclado.

Treinado em 70,000 horas de vídeo on-line rotulado por IDM, nosso modelo de clonagem comportamental (o “modelo de base VPT”) realiza tarefas no Minecraft que são quase impossíveis de alcançar com aprendizado por reforço do zero. Ele aprende a derrubar árvores para coletar troncos, transformar esses troncos em tábuas e, em seguida, criar essas tábuas em uma mesa de trabalho; esta sequência leva um humano proficiente em Minecraft aproximadamente 50 segundos ou 1,000 ações consecutivas do jogo.

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Sequência de itens necessários para criar uma mesa de trabalho, rotulada com o tempo médio que humanos proficientes levam para alcançar cada etapa
Elaboração de uma mesa de trabalho "tiro zero" (ou seja, somente após o pré-treinamento, sem ajustes adicionais)

Além disso, o modelo executa outras habilidades complexas que os humanos costumam fazer no jogo, como nadar, caçar animais para comer e comer essa comida. Ele também aprendeu a habilidade de “salto de pilar”, um comportamento comum no Minecraft de se elevar pulando repetidamente e colocando um bloco embaixo de si.

Natação (tiro zero)

Animais de caça (tiro zero)

Comer comida (injeção zero)

Salto de pilar (tiro zero)

Ajuste fino com clonagem comportamental

Os modelos de base são projetados para ter um perfil de comportamento amplo e serem geralmente capazes em uma ampla variedade de tarefas. Para incorporar novos conhecimentos ou permitir que eles se especializem em uma distribuição de tarefas mais restrita, é prática comum ajustar esses modelos para conjuntos de dados menores e mais específicos. Como um estudo de caso sobre o quão bem o modelo de fundação VPT pode ser ajustado para conjuntos de dados downstream, pedimos aos nossos contratados que jogassem por 10 minutos em novos mundos de Minecraft e construíssem uma casa com materiais básicos de Minecraft. Esperávamos que isso ampliasse a capacidade do modelo básico de executar de maneira confiável as habilidades do “início do jogo”, como construir mesas de trabalho. Ao ajustar esse conjunto de dados, não apenas vemos uma grande melhoria na execução confiável das habilidades iniciais do jogo já presentes no modelo básico, mas o modelo ajustado também aprende a ir ainda mais fundo na árvore de tecnologia, criando e ferramentas de pedra. Às vezes até vemos alguma construção rudimentar de abrigos e o agente vasculhando as aldeias, incluindo baús invadidos.

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Sequência de itens necessários para criar uma picareta de pedra, rotulada com o tempo médio que humanos proficientes levam para alcançar cada etapa
Comportamento aprimorado no início do jogo do ajuste fino do BC

Criando uma picareta de pedra

Construindo um abrigo de madeira rudimentar

Procurando através de uma aldeia

Escalonamento de dados

Talvez a hipótese mais importante de nosso trabalho seja que é muito mais eficaz usar dados de contratados rotulados para treinar um IDM (como parte do pipeline VPT) do que treinar diretamente um modelo de fundação BC a partir desse mesmo conjunto de dados de pequenos contratados. Para validar essa hipótese, treinamos modelos de base em quantidades crescentes de dados de 1 a 70,000 horas. Aqueles treinados em menos de 2,000 horas de dados são treinados nos dados do contratado com rótulos de verdade que foram originalmente coletados para treinar o IDM, e aqueles treinados em mais de 2,000 horas são treinados em dados da Internet rotulados com nosso IDM. Em seguida, pegamos cada modelo de fundação e o ajustamos ao conjunto de dados de construção de casas descrito na seção anterior.

Efeito dos dados de treinamento do modelo básico no ajuste fino

À medida que os dados do modelo de fundação aumentam, geralmente vemos um aumento na capacidade de fabricação e apenas na maior escala de dados vemos o surgimento da fabricação de ferramentas de pedra.

Ajuste fino com aprendizado por reforço

Quando é possível especificar uma função de recompensa, o aprendizado por reforço (RL) pode ser um método poderoso para obter alto desempenho, potencialmente até super-humano. No entanto, muitas tarefas exigem a superação de desafios difíceis de exploração, e a maioria dos métodos de RL os aborda com acaso a priori de exploração, por exemplo, os modelos são frequentemente incentivados a agir aleatoriamente por meio de bônus de entropia. O modelo VPT deve ser muito melhor antes de RL porque emular o comportamento humano é provavelmente muito mais útil do que tomar ações aleatórias. Definimos ao nosso modelo a tarefa desafiadora de coletar uma picareta de diamante, uma capacidade sem precedentes no Minecraft que se torna ainda mais difícil ao usar a interface humana nativa.

Criar uma picareta de diamante requer uma longa e complicada sequência de subtarefas. Para tornar essa tarefa tratável, recompensamos os agentes por cada item na sequência.

Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Aprendendo a jogar Minecraft com vídeo pré-treinamento (VPT)
Modelo VPT afinado RL criando uma picareta de diamante

Descobrimos que uma política RL treinada a partir de uma inicialização aleatória (o método RL padrão) quase não alcança qualquer recompensa, nunca aprendendo a coletar logs e raramente coletando bastões. Em contraste, o ajuste fino de um modelo VPT não apenas aprende a criar picaretas de diamante (o que faz em 2.5% dos episódios de Minecraft de 10 minutos), mas ainda tem uma taxa de sucesso de nível humano na coleta de todos os itens que levam a a picareta de diamante. Esta é a primeira vez que alguém mostra um agente de computador capaz de criar ferramentas de diamante no Minecraft, o que leva humanos mais de 20 minutos (24,000 ações) em média.

Recompensa por episódios

Conclusão

O VPT abre o caminho para permitir que os agentes aprenda a agir assistindo ao grande número de vídeos na internet. Em comparação com a modelagem de vídeo generativa ou métodos contrastivos que só renderiam representativo priors, o VPT oferece a excitante possibilidade de aprender diretamente em larga escala antecedentes comportamentais em mais domínios do que apenas a linguagem. Embora experimentemos apenas no Minecraft, o jogo é muito aberto e a interface humana nativa (mouse e teclado) é muito genérica, por isso acreditamos que nossos resultados são um bom presságio para outros domínios semelhantes, por exemplo. uso do computador.

Para obter mais informações, consulte o nosso papel. Também estamos abrindo o código de nossos dados de contratados, ambiente Minecraft, código de modelo e pesos de modelo, que esperamos que ajudem em pesquisas futuras sobre VPT. Além disso, fizemos parceria com a competição MineRL NeurIPS este ano. Os participantes podem usar e ajustar nossos modelos para tentar resolver muitas tarefas difíceis no Minecraft. Os interessados ​​podem conferir página da competição e concorrer a um prêmio céu azul de $100,000 além de uma premiação regular de $20,000. Os subsídios estão disponíveis para grupos e indivíduos sub-representados auto-identificados.


Agradecimentos
Este foi um grande esforço de uma equipe dedicada. Cada autor fez enormes contribuições em muitas frentes durante longos períodos de tempo. Todos os membros estiveram em tempo integral no projeto por mais de seis meses. BB, IA, PZ e JC faziam parte da equipe original do projeto VPT e, portanto, estiveram envolvidos por ainda mais tempo (mais de um ano). Além dos membros originais da equipe, a ordem dos autores é aleatória. Também foi randomizado entre 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(); });

Carimbo de hora:

Mais de OpenAI