Paper · 2022-06-17 · cs.LG, cs.AI, cs.CL, cs.CV
MineDojo: Building Open-Ended Embodied Agents with Internet-Scale Knowledge
Trains a Minecraft agent on free-form task prompts with MineCLIP, a video-text contrastive model pre-trained on 640K YouTube clip-transcript pairs, used as a dense reward for PPO with self-imitation. Author-reported: close to hand-made rewards on 8 Programmatic tasks (paired t-test p=0.3991) and well above CLIP-guided agents on 4 Creative tasks.
Contrastive learningVision-language pre-trainingPolicy gradientreinforcement-learningreward-modelingvideo-language-modelsembodied-agentsminecraft
arXivPDFCodeMarkdown18 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Teaching a game character to do a task from a sentence usually means someone writes a score for each task by hand, for example a score that rewards getting closer to an animal. This paper tries to skip that step. It takes videos of Minecraft players with their spoken narration or subtitles and learns which short clip matches which sentence. That learned matcher then scores what the character sees while it plays, and the character improves from those scores with ordinary trial-and-error learning.
The approach is aimed at tasks with no clear finish line, such as building a house or finding an ocean. For those, the same matcher also judges finished attempts, and its judgements line up closely with human judges on the four tasks the paper tests.
It is a research proof of concept. The matcher is large and slow to query, and the video it learns from looks different from the game's own graphics, which the paper notes as a gap it did not close with special techniques.
TL;DR
MineDojo is a Minecraft framework with a simulator, a task suite and a knowledge base built from videos, wiki pages and forum posts §1 §2 §3. This card covers its agent-learning part §4: MineCLIP, a video-text contrastive model trained on 640K video-transcript pairs §4.1, gives a dense reward to a PPO agent with self-imitation §4.2. Author-reported results are competitive with hand-made rewards on 8 Programmatic tasks and well above a CLIP-guided baseline on 4 Creative tasks §5 tab. 1. The released repository contains the model and reward wrappers, but not the pre-training loop or the RL trainer.
Problem
Embodied agents are usually trained from scratch in narrow environments and generalise poorly across tasks §1. The paper's aim is an agent that follows open-ended language tasks in Minecraft §1 §4.
For many of these tasks a dense reward is hard or impossible to write by hand §4. Creative tasks (for example "find a nether portal" or "dig a hole") have no programmatic success test, so the reward must also serve as an evaluator §5 app. C app. G.1. The card's scope is this reward-learning and RL method §4; the benchmark and knowledge base are described in §2 and §3.
Assumed setting: one language-conditioned policy trained with reinforcement learning on several tasks at once, with raw pixels as input and discrete control actions as output §4. Each task prompt is a short English goal string app. G.1.
Method
The method has two parts: a video-text model pre-trained on YouTube data (MineCLIP), and an RL loop that uses the model's score as the reward §4.
MineCLIP pre-training §4.1
- Data. The authors take 640K pairs of video snippets and time-aligned English transcripts, after a keyword filter, following the VideoCLIP procedure §4.1. The steps are: build a keyword list of Minecraft entities, blocks and items; string-match the transcripts; grow each matched transcript to 16–77 tokens; pick a random timestamp inside the match as the clip centre; grow the clip to 8–16 seconds app. E.1. The main text calls the clips "16-second" snippets §4.1; see Pitfalls.
- Video encoder. A frame encoder φ_I (ViT-B/16, 512-d embedding per frame) runs on each frame, then a temporal aggregator φ_a summarises the frame sequence, then two residual CLIP-adapter layers are applied §4.1 app. E.2. The frame encoder starts from OpenAI CLIP's public weights, and only its last two layers are fine-tuned §4.1 app. E.2. Inputs are 160 × 256 pixels, and the positional embeddings are bicubically interpolated to that size app. E.2.
- Aggregator variants. MineCLIP-avg uses average pooling over time, which is fast but ignores frame order. MineCLIP-attn uses a 2-layer transformer encoder with 512-d embeddings, 8 heads and a GLU variant with Swish activation §4.1 app. E.2. The paper says MineCLIP-attn gives a better reward in general §4.1; Table 1 does not show that for every task (see Paper vs code).
- Text encoder. Initialised from CLIP's 12-layer, 512-wide text encoder (8 heads, byte-pair vocabulary of 49,152, at most 77 tokens); only its last two layers are fine-tuned app. E.2.
- Objective. An InfoNCE contrastive loss pulls each clip towards its own transcript §4.1. The paper does not give the exact form (for example whether it is symmetric or what temperature is used).
# Pre-train the video and text encoders on matched pairs [§4.1] [app. E.2]
def pretrain_step(videos, transcripts):
# videos: (B, 16, 3, 160, 256) snippets; transcripts: B strings
frame_features = frame_encoder(videos) # (B, 16, 512)
video_embeddings = aggregator(frame_features) # (B, 512)
text_embeddings = text_encoder(transcripts) # (B, 512)
# Pull each clip towards its own transcript, push others away [§4.1]
return info_nce_loss(video_embeddings, text_embeddings)RL with the MineCLIP reward §4.2
- Reward. The learned reward is a function of a goal string G and a clip V that returns one real number §4.1. During RL, the snippet is the agent's latest 16 egocentric RGB frames, and each task prompt is used zero-shot with no further fine-tuning §4.2.
- Two reward forms. "Direct" turns the probability of the goal among the goal and its negative prompts into a reward: the chance level 1/N_T is subtracted and the result is clipped at zero. A variant without the clip is called Direct-Naive. "Delta" uses the change in goal probability since the previous step app. F.1. Direct is used for Animal-Zoo and Mob-Combat, and Delta for Creative app. G.3.
- Speed-ups. The model has about 150M parameters, so the authors (1) compute the goal's text features once per task, (2) reuse the frozen frame encoder as the agent's RGB encoder, (3) cache frame features shared by overlapping windows, and (4) add self-imitation learning §4.2.
- Policy network. Inputs are the frozen frame feature (512-d), the goal text feature, sine and cosine of yaw and pitch through an MLP, GPS through an MLP, the 3×3×3 voxel block names embedded and flattened, and the previous action app. F.2. The fused features feed a policy head and a value head, each a 3-layer MLP with 256 hidden units app. F.2 app. G.3.
- Actions. 89 discrete choices: 81 camera moves (a 9 × 9 grid of yaw and pitch from −60° to 60° in 15° steps), 6 movement actions, and "use" and "attack"; no-op is merged into the camera set app. G.2.
- PPO. The policy is trained with PPO and GAE advantages; the clip parameter is ε = 0.2 §4.2 app. G.3 eq. 1 eq. 2.
- Self-imitation. Each task has a buffer. A trajectory is kept if it succeeded, or if its return is above a threshold based on the buffer's mean and standard deviation. Successful trajectories are sampled with equal probability, and the others with a probability that grows with return. Training alternates PPO updates with supervised updates on the buffers §4.2 app. F.3 alg. 1.
- Action smoothing. An extra KL term over a sliding window of action distributions is added to the PPO objective app. G.3 eq. 3.
- Multi-stage training. Animal-Zoo and Creative are each split into two stages of two tasks, sharing one policy. The buffers carry over, and the policy head is reset at stage 2. Mob-Combat is trained in one stage app. G.3.
# Direct reward: goal probability above chance, clipped at zero [app. F.1]
def direct_reward(goal_probability, num_prompts):
# 1 / N_T is the chance level among the prompts [app. F.1]
chance = 1.0 / num_prompts
return max(goal_probability - chance, 0.0)# Delta reward: change in goal probability since the last step [app. F.1]
def delta_reward(goal_probability, previous_probability):
return goal_probability - previous_probability# Interleave PPO with self-imitation on good trajectories [alg. 1]
def train_ppo_si(policy, value_fn, tasks, threshold, frequency):
# one self-imitation buffer per task [app. F.3]
buffers = {task: [] for task in tasks}
env_steps = 0
while not finished():
# roll out the current policy on every task [alg. 1]
rollouts = collect_rollouts(policy, tasks)
for task, trajectory in rollouts.items():
# keep successes, and returns above mean + threshold * std [alg. 1]
if is_good(trajectory, buffers[task], threshold):
buffers[task].append(trajectory)
env_steps += steps_taken(rollouts)
# clipped PPO update, then value regression [eq. 1] [eq. 2]
ppo_update(policy, value_fn, rollouts)
fit_value_function(value_fn, rollouts)
# every `frequency` env steps, imitate the buffers [alg. 1]
if env_steps % frequency == 0:
# use the smallest buffer's size from every buffer [alg. 1]
count = min(len(buffer) for buffer in buffers.values())
# successes equally likely; others weighted by return [app. F.3]
batch = prioritized_sample(buffers, count)
self_imitation_update(policy, batch)Hyperparameters
MineCLIP pre-training app. E.3 app. E.2 §4.1:
| Name | Value | Where | Notes |
|---|---|---|---|
| Training pairs | 640K video-transcript pairs | §4.1 app. E.1 | keyword-filtered |
| Epochs | 2 | app. E.3 | |
| Frames per clip | 16, sampled uniformly per video | §4.1 app. E.3 | |
| Input resolution | 160 × 256 | app. E.2 | positional embeddings bicubically interpolated |
| Frame encoder | ViT-B/16, 512-d output | app. E.2 | initialised from OpenAI CLIP; last 2 layers fine-tuned |
| Text encoder | 12 layers, width 512, 8 heads, 49,152 BPE vocab, 77 tokens | app. E.2 | last 2 layers fine-tuned |
| Aggregator | avg, or 2-layer transformer (512-d, 8 heads, GLU + Swish) | app. E.2 §4.1 | |
| Residual adapters | 2 layers after the aggregator | app. E.2 | residual weight starts near identity |
| LR schedule | cosine with warmup | app. E.3 | |
| Warmup steps | 500 | app. E.3 | |
| Peak LR | 1.5e-4 | app. E.3 | |
| Final LR | 1e-5 | app. E.3 | |
| Weight decay | 0.2 | app. E.3 | |
| Layer-wise LR decay | 0.65 | app. E.3 | which layers form a "layer" not stated |
| LR multiplier, pre-trained layers | 0.5× | app. E.3 | |
| Batch size per GPU | 64 | app. E.3 | |
| GPUs | 8 (one node of 8 × V100) | app. E.3 | global batch 512 is derived (64 × 8), not stated |
| Precision | FP16 mixed (PyTorch amp) | app. E.3 | |
| Augmentation | temporally consistent random resized crop | app. E.3 | |
| Optimizer | not stated | ||
| Contrastive temperature / logit scale | not stated in the paper | the released code initialises it at log(1/0.07) clip.py |
RL training app. G.3 app. F.2 (table values for each task group):
| Hyperparameter | Animal-Zoo | Mob-Combat | Creative | Where |
|---|---|---|---|---|
| RGB feature size | 512 | 512 | 512 | app. G.3 |
| Task prompt feature size | 512 | 512 | 512 | app. G.3 |
| State MLP hidden / output / depth | 128 / 128 / 2 | 128 / 128 / 2 | 128 / 128 / 2 | app. G.3 |
| Embedding dimension | 8 | 8 | 8 | app. G.3 |
| Feature fusion layers / output | 1 / 512 | 1 / 512 | 1 / 512 | app. G.3 |
| Previous-action conditioning | True | True | True | app. G.3 |
| Policy head hidden / depth | 256 / 3 | 256 / 3 | 256 / 3 | app. G.3 |
| Value head hidden / depth | 256 / 3 | 256 / 3 | 256 / 3 | app. G.3 |
| Learning rate | 1e-4 | 1e-4 | 1e-4 | app. G.3 |
| Cosine decay minimum LR | 5e-6 | 5e-6 | 5e-6 | app. G.3 |
| Discount γ | 0.99 | 0.99 | 0.99 | app. G.3 |
| Entropy weight, stage 1 | 5e-3 | 5e-3 | 5e-3 | app. G.3 |
| Entropy weight, stage 2 | 1e-2 | N/A | 1e-2 | app. G.3 |
| PPO optimiser | Adam | Adam | Adam | app. G.3 |
| SI learning rate | 1e-4 | 1e-4 | 1e-4 | app. G.3 |
| SI cosine decay minimum LR | 1e-6 | 1e-6 | 1e-6 | app. G.3 |
| SI epochs | 10 | 10 | 10 | app. G.3 |
| SI frequency (env steps) | 100K | 100K | 100K | app. G.3 |
| SI optimiser | Adam | Adam | Adam | app. G.3 |
| SI buffer threshold | 2σ | 2σ | 0.5σ | app. G.3 |
| PPO buffer size | 100K (unit not stated) | 100K (unit not stated) | 100K (unit not stated) | app. G.3 |
| Frame stack | 1 | 1 | 1 | app. G.3 |
| Value-loss weight | 0.5 | 0.5 | 0.5 | app. G.3 |
| GAE λ | 0.95 | 0.95 | 0.95 | app. G.3 |
| Gradient clip | 10 | 10 | 10 | app. G.3 |
| PPO ε | 0.2 | 0.2 | 0.2 | app. G.3 |
| Action smoothing weight | 1e-7 | 1e-7 | 1e-7 | app. G.3 |
| Action smoothing window | 3 | 3 | 3 | app. G.3 |
| MineCLIP reward form | Direct | Direct | Delta | app. G.3 |
| Manual reward weights | per task, see text below | λ_attack 5, λ_success 200 | none (no manual reward) | app. G.1 |
Other values from the text:
- Manual navigation reward for Milk Cow: λ_nav 10, λ_success 200; the navigation term is based on geodesic distance from privileged LIDAR app. G.1.
- Action smoothing loss: L_smooth = (1/|W|) Σ_{i=1}^{|W|−1} KL(π_t ‖ π_{t−|W|+i}) app. G.3 eq. 3.
- Creative-task evaluation: K-means with K = 2 on trajectory scores, threshold set at the mean of the two centroids app. G.4.
- Hardware for RL, the number of parallel simulators, and the total environment budget are not stated.
Results
Author-reported. Setup: 12 tasks from the MineDojo suite: 8 Programmatic tasks in two groups (Animal-Zoo, Mob-Combat) and 4 Creative tasks §5 app. G.1. Each entry is a success rate in percent, averaged over 3 seeds with 200 test episodes per seed tab. 1 §5. Baselines: a manual dense reward using privileged simulator state app. G.1, a sparse success-only reward, and OpenAI CLIP as the reward model §5. For Creative tasks, success is judged by MineCLIP itself tab. 1.
Table 1: success rate (%), mean ± std over 3 seeds tab. 1
| Group | Task | Ours (Attn) | Ours (Avg) | Manual reward | Sparse-only | OpenAI CLIP |
|---|---|---|---|---|---|---|
| Animal-Zoo | Milk Cow | 64.5 ± 37.1 | 6.5 ± 3.5 | 62.8 ± 40.1 | 0.0 ± 0.0 | 0.0 ± 0.0 |
| Animal-Zoo | Hunt Cow | 83.5 ± 7.1 | 0.0 ± 0.0 | 48.3 ± 35.9 | 0.3 ± 0.4 | 0.0 ± 0.0 |
| Animal-Zoo | Shear Sheep | 12.1 ± 9.1 | 0.6 ± 0.2 | 52.3 ± 33.2 | 0.0 ± 0.0 | 0.0 ± 0.0 |
| Animal-Zoo | Hunt Sheep | 8.1 ± 4.1 | 0.0 ± 0.0 | 41.9 ± 33.0 | 0.3 ± 0.4 | 0.0 ± 0.0 |
| Mob-Combat | Combat Spider | 80.5 ± 13.0 | 60.1 ± 42.5 | 87.5 ± 4.6 | 47.8 ± 33.8 | 0.0 ± 0.0 |
| Mob-Combat | Combat Zombie | 47.3 ± 10.6 | 72.3 ± 6.4 | 49.8 ± 26.9 | 8.8 ± 12.4 | 0.0 ± 0.0 |
| Mob-Combat | Combat Pigman | 1.6 ± 2.3 | 0.0 ± 0.0 | 13.6 ± 9.8 | 0.0 ± 0.0 | 0.0 ± 0.0 |
| Mob-Combat | Combat Enderman | 0.0 ± 0.0 | 0.0 ± 0.0 | 0.3 ± 0.2 | 0.0 ± 0.0 | 0.0 ± 0.0 |
| Creative | Find Nether Portal | 37.4 ± 40.8 | 89.8 ± 5.7 | N/A | N/A | 26.3 ± 32.6 |
| Creative | Find Ocean | 33.4 ± 45.6 | 54.3 ± 40.7 | N/A | N/A | 9.9 ± 14.1 |
| Creative | Dig Hole | 91.6 ± 5.9 | 88.1 ± 13.3 | N/A | N/A | 0.0 ± 0.0 |
| Creative | Lay Carpet | 97.6 ± 1.9 | 98.8 ± 1.0 | N/A | N/A | 0.0 ± 0.0 |
Table 2: F1 of MineCLIP as a success judge on Creative tasks, against human labels (%) tab. 2
Each task has 100 successful and 100 failed trajectories labelled by humans app. G.4.
| Task | Ours (Attn) | Ours (Avg) | OpenAI CLIP |
|---|---|---|---|
| Find Nether Portal | 98.7 | 100.0 | 48.7 |
| Find Ocean | 100.0 | 100.0 | 98.4 |
| Dig Hole | 99.4 | 100.0 | 80.6 |
| Lay Carpet | 97.4 | 98.4 | 54.1 |
Table 3: zero-shot generalisation to unseen weather, lighting and terrain (27 scenarios) tab. 3
Numbers are success rates in %, averaged over 3 seeds with 200 episodes each. Brackets give the relative change from the training scenarios. The OpenAI CLIP baseline here was trained by imitation learning, not RL §5.
| Task | Ours (Attn), train | Ours (Attn), unseen | OpenAI CLIP, train | OpenAI CLIP, unseen |
|---|---|---|---|---|
| Milk Cow | 64.5 ± 37.1 | 64.8 ± 31.3 (+0.8%) | 90.0 ± 0.4 | 29.2 ± 3.7 (−67.6%) |
| Hunt Cow | 83.5 ± 7.1 | 55.9 ± 7.2 (−32.9%) | 72.7 ± 3.5 | 16.7 ± 1.6 (−77.0%) |
| Combat Spider | 80.5 ± 13.0 | 62.1 ± 29.7 (−22.9%) | 79.5 ± 2.5 | 54.2 ± 9.6 (−31.8%) |
| Combat Zombie | 47.3 ± 10.6 | 39.9 ± 25.3 (−15.4%) | 50.2 ± 7.5 | 30.8 ± 14.4 (−38.6%) |
Table 4: one agent for all 12 tasks tab. 4
Success rate in %, mean ± std over 3 seeds with 200 episodes each. The "original" column repeats the Ours (Attn) column of Table 1. The 12-task agent is trained by self-imitating successful trajectories from the self-imitation pipeline §5.
| Task | Single agent, all 12 tasks | Original (Table 1, Ours Attn) | Direction vs original |
|---|---|---|---|
| Milk Cow | 91.5 ± 0.7 | 64.5 ± 37.1 | up |
| Hunt Cow | 46.8 ± 3.7 | 83.5 ± 7.1 | down |
| Shear Sheep | 73.5 ± 0.8 | 12.1 ± 9.1 | up |
| Hunt Sheep | 27.0 ± 1.0 | 8.1 ± 4.1 | up |
| Combat Spider | 72.1 ± 1.3 | 80.5 ± 13.0 | down |
| Combat Zombie | 27.1 ± 2.7 | 47.3 ± 10.6 | down |
| Combat Pigman | 6.5 ± 1.2 | 1.6 ± 2.3 | up |
| Combat Enderman | 0.0 ± 0.0 | 0.0 ± 0.0 | equal |
| Find Nether Portal | 99.1 ± 0.4 | 37.4 ± 40.8 | up |
| Find Ocean | 95.1 ± 1.5 | 33.4 ± 45.6 | up |
| Dig Hole | 85.8 ± 1.2 | 91.6 ± 5.9 | down |
| Lay Carpet | 96.5 ± 0.8 | 97.6 ± 1.9 | equal |
Table 5: novel tasks, zero-shot and after RL fine-tuning tab. 5
Success rate in %, mean ± std over 3 seeds with 200 episodes each. The baseline was trained from scratch with RL using the same MineCLIP encoders and reward. Fine-tuning used about 5% of the total environment samples §5.
| Task | Ours, zero-shot | Ours, after RL fine-tune | Baseline, RL from scratch |
|---|---|---|---|
| Hunt Pig | 1.3 ± 0.6 | 46.0 ± 15.3 | 0.0 ± 0.0 |
| Harvest Spider String | 1.6 ± 1.3 | 36.5 ± 16.9 | 12.5 ± 12.7 |
Statistical tests reported by the authors: a paired Student's t-test over the 8 Programmatic tasks gives p = 0.3991 for Ours (Attn) against the manual reward, which the authors read as "not significantly different" §5. A second paired test gives p = 0.3720 for the 12-task agent against the group-trained agents §5. The introduction's "up to 73%" improvement is a relative gain on Hunt Cow (83.5 against 48.3) §1 tab. 1.
Paper vs code
Repository: https://github.com/MineDojo/MineCLIP at commit
e6c06a0245fac63dceb38bc9bd4fecd033dae735, MIT licence license. The
MineDojo repository's README (https://github.com/MineDojo/MineDojo, the paper's
codebase app. B) links this repository as its MineCLIP reward model and agent
code, which ties it to the authors.
What the repository contains: the MineCLIP model and its CLIP-style components, a checkpoint loader (pretrained weights are hosted externally), the MineAgent policy network, reward wrappers for the Animal-Zoo and Mob-Combat tasks, and small demo scripts. The README says the in-loop demo runs a random policy README.md.
What is not in the repository: the pre-training loop and loss, the optimiser and schedule, the PPO and self-imitation trainer, the Direct and Delta reward code, and the action-smoothing loss. The only imitation loss is a helper on the actor distribution distribution.py; it is not the self-imitation loop. So the training hyperparameters come only from the paper.
Discrepancies found:
- Action space. The paper uses 89 flat discrete actions app. G.2. The demo policy uses a multi-categorical actor with head sizes [3, 3, 4, 25, 25, 8] run_env_in_loop.py. The two do not match.
- Hunt Cow reward values. The paper gives λ_attack 5, λ_nav 1, λ_success 200 app. G.1. The demo script uses nav_reward_scale 0.1, attack_reward 1 and success_reward 10 run.py.
- Mob-Combat reward values. The paper gives λ_attack 5 and λ_success 200 app. G.1. The demo uses attack_reward 1 and success_reward 10 run.py.
- Navigation reset after an attack. The paper says d_min is reset every time the agent hits the target app. G.1. The code resets the running minimum after a valid attack dense_reward.py, but it does not clear the two-entry distance history, so the first navigation term after a hit compares against the pre-hit distance.
- Demo action mapping. In the demo's
transform_action, the conditionaction[-1] != 0 or action[-1] != 1 or action[-1] != 3is always true, so the last action component is always set to 0 run_env_in_loop.py. - Reward form. The paper's Direct form is max(P_G − 1/N_T, 0) app. F.1. The released code exposes a softmax over the prompt scores in the reward head base.py, but not the clip or the Delta form.
- Input normalisation (not in paper). The released code uses fixed per-channel mean (0.3331, 0.3245, 0.3051) and standard deviation (0.2439, 0.2493, 0.2873) computed from 21K clips base.py. The paper does not state these values.
- Logit scale (not in paper). The released code initialises the logit scale at log(1/0.07) and clamps it to at most 100 clip.py clip.py. The trained value is not in the repository.
Items that agree:
- Aggregator: attn.d2.nh8.glusw means 2 layers, 8 heads, GLU with Swish, matching §4.1 and app. E.2 attn.yaml transformer.py.
- Adapters: "v0-2.t0" means no image adapter before pooling, 2 video adapter layers after pooling and no text adapter conf.yaml. The residual weight starts at 4.0, so its sigmoid is about 0.98, close to identity head.py, matching app. E.2.
- Input resolution 160 × 256 and ViT-B/16 conf.yaml conf.yaml.
- Policy and value heads: 256 hidden units, depth 3 conf.yaml, matching app. G.3.
No discrepancies were checked for the feature-fusion depth: the paper lists one fusion layer app. G.3 and the code sets hidden_depth 0 with output 512 conf.yaml; these may describe the same layer but this was not verified.
Pitfalls
- Training is not reproducible from the repository. The pre-training loss, optimiser, data loader and PPO trainer are absent. An implementer must choose the InfoNCE form, the temperature, the optimiser (not stated), and how layer-wise decay groups layers (not stated) from scratch.
- Snippet length is inconsistent inside the paper. The main text describes "16-second" snippets §4.1, while the appendix grows clips to 8–16 seconds around a centre point app. E.1.
- Frame timing is not stated. Training samples 16 frames uniformly per video app. E.3. At RL time the reward uses the latest 16 frames from the simulator §4.2. The frame rate and spacing are not stated for either case. Training uses no special domain adaptation for the gap between YouTube frames and simulator frames §4.2; zero-shot visual robustness is reported in tab. 3.
- Negative prompts are not specified. Direct reward depends on the set of negative goals. The appendix gives one example ("milk a cow", "hunt a sheep", "hunt a cow" for "shear a sheep") app. F.1, and does not say how negatives are chosen for each task.
- Prompt wording is part of the reward. The Mob-Combat prompt template is "Combat {monster}" app. G.1. The paper does not examine sensitivity to wording.
- Self-imitation threshold. The buffer threshold is 2σ for two groups and 0.5σ for Creative app. G.3. Whether μ and σ are computed over the whole buffer or a recent window is not stated.
- Self-imitation schedule depends on counting. The update fires when the step counter is a multiple of the frequency alg. 1. If the counter is advanced in chunks, the check may fire late or skip. The paper says only that the counter is "increased accordingly".
- Action-smoothing loss is ambiguous. The formula averages over |W| but sums only |W| − 1 terms, and it is written as KL(π_t ‖ past). Whether it is summed or averaged over the batch is not stated. The weight is 1e-7 app. G.3 eq. 3, so its effect is small.
- Multi-stage training resets part of the policy. Stage 2 resets the policy head, and buffers carry over app. G.3. The appendix ablations cover only the reward form and self-imitation app. F.1 app. F.3, so the effect of the reset is not measured.
- Compute cost. The reward model has about 150M parameters and is queried at every step §4.2. The caching tricks in §4.2 reduce, but do not remove, this cost. Hardware and environment counts are not stated.
- Variant choice is mixed. The paper says MineCLIP-attn gives a better reward "in general" §4.1. In Table 1, MineCLIP-avg is higher on 4 of the 12 tasks: Combat Zombie, Find Nether Portal, Find Ocean and Lay Carpet.
- "Outperforms manual reward" applies to different variants. The text says the agents outperform the hand-engineered reward on three tasks §5. In Table 1, Ours (Attn) is above the manual reward on Milk Cow (64.5 against 62.8, well within the spread) and Hunt Cow, and Ours (Avg) is above it on Combat Zombie. The manual reward uses privileged simulator state and LIDAR app. G.1, so this is not a like-for-like comparison.
- Statistical power is low. The paired t-test compares 8 task means and gives p = 0.3991. A non-significant result does not show equivalence. Standard deviations are large (for example 64.5 ± 37.1), and there are only 3 seeds.
- Table 3 baseline is not comparable with Table 1. The OpenAI CLIP numbers in Table 3 come from imitation-trained agents, while the Table 1 CLIP column comes from RL §5. The two columns are not interchangeable.
- Table 4 uses a different recipe. The 12-task agent is trained mainly by self-imitating successful trajectories §5, not with the per-group RL recipe.
- Creative evaluation is narrow. Table 2 covers only 4 tasks, each with 200 labelled trajectories. Five more tasks in the appendix use 50 segments each, and the authors call the agreement "not perfect" app. G.4.
- Zero-shot success on new tasks is near zero. Hunt Pig and Harvest Spider String reach 1.3% and 1.6% without fine-tuning tab. 5.
Lineage
- Builds on: CLIP, for the contrastive objective and the initial encoder weights §4.1; CLIP4Clip, for the video architecture §4.1; VideoCLIP, for the sampling procedure §4.1 app. E.1; CLIP Adapter app. E.2; PPO §4.2; and self-imitation learning §4.2. No arXiv identifiers are recorded here.
- Compared against: a manual dense reward, a sparse success-only reward, and OpenAI CLIP as a reward §5 tab. 1.
- Superseded by: not stated in this wiki yet.
Source and license
Adapted from “MineDojo: Building Open-Ended Embodied Agents with Internet-Scale Knowledge” by Linxi Fan, Guanzhi Wang, Yunfan Jiang, Ajay Mandlekar, Yuncong Yang, Haoyi Zhu, Andrew Tang, De-An Huang, Yuke Zhu, Anima Anandkumar (arXiv:2206.08853), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/MineDojo/MineCLIP at commit e6c06a0245fa (MIT). Any quoted code is shown under that license.