Rainbow
Rainbow DQN merges double Q-learning, prioritized replay, dueling networks, multi-step returns, distributional values and noisy nets. See how it works and when to use it.
Overview
Rainbow is a deep reinforcement learning agent that combines six separate improvements to DQN into one system. The six parts are double Q-learning, prioritized replay, dueling networks, multi-step returns, distributional value estimates and noisy networks. Each part fixes a different weakness of the original agent, and the combination learns faster and reaches higher scores than any single fix.
Rainbow is aimed at problems with a small, discrete set of actions. It is a strong value-based baseline when you have a simulator or a large log of interactions. It is also a good teaching case, because it shows how independent ideas stack. This article explains each piece, shows how they fit together, gives a code outline, and explains how this style of agent connects to models that learn from raw tables.
What it is
Rainbow is an agent design, not a single new trick. Its authors asked a simple question: do the many DQN extensions help each other, or do they overlap? They combined six of them and ran ablations, which means removing one part at a time to see what it contributed.
The six components are:
- Double Q-learning. Pick the next action with one network and score it with another to cut overestimation.
- Prioritized experience replay. Replay transitions with large learning error more often.
- Dueling networks. Split the network into a state-value stream and an advantage stream.
- Multi-step learning. Use returns over several steps, not one, to build targets.
- Distributional RL. Learn the whole distribution of returns instead of the mean.
- Noisy networks. Add learned noise to layer weights for exploration instead of epsilon-greedy.
An everyday analogy
Imagine a student preparing for an exam. Double Q-learning is double checking an answer with a second source. Prioritized replay is spending more time on the questions you got wrong. A dueling network is separating "how hard is the whole exam" from "how hard is this question". Multi-step learning is checking your answer after several steps of reasoning, not after the first. Distributional learning is knowing the range of likely scores, not only the average. Noisy networks are trying unusual study methods in a systematic way. Rainbow is a student who does all six.
What each component fixes
| Component | Problem in plain DQN | Fix |
|---|---|---|
| Double learning | Max over noisy values is too high | Separate choosing from scoring |
| Prioritized replay | Uniform sampling wastes updates | Replay surprising data more |
| Dueling head | Relearning state value per action | Share a value stream |
| Multi-step target | Slow reward propagation | Use several real rewards |
| Distributional head | Mean hides variation | Learn the full return shape |
| Noisy layers | Blind random exploration | Learned, state-dependent noise |
When to choose it
- The actions are discrete and the set is not huge.
- Interaction data is costly, so reuse matters.
- You want a strong value-based result before trying policy methods.
When to choose something else
- Actions are continuous.
- You can simulate millions of steps cheaply and prefer simple code, where PPO may be easier.
- You need a stochastic policy as the output.
What it is not
- It is not for continuous actions. Use DDPG, TD3 or SAC there.
- It is not a policy-gradient method like PPO or A2C.
- It is not a single formula. It is a recipe with several moving parts.
Where it came from
The story starts with the DQN work published in 2013 and in a 2015 journal paper, which showed a deep network could learn to play many games from pixels. After that, researchers published many fixes, each targeting one problem.
- Double DQN (2015) addressed overestimation bias, building on older work on double Q-learning.
- Prioritized experience replay (2015) made replay focus on surprising transitions.
- Dueling networks (2015, presented 2016) split value and advantage.
- Multi-step returns came from classic temporal difference theory, in work that long predates deep learning.
- Distributional reinforcement learning (2017) modeled the full return distribution, with the C51 agent as the best known example.
- Noisy networks (2017) replaced hand-tuned exploration with learned parametric noise.
The paper "Rainbow: Combining Improvements in Deep Reinforcement Learning" appeared in 2017 and combined these ideas. It reported strong results on a standard suite of video game tasks and showed through ablations that prioritized replay and multi-step learning were among the most important parts, while the contribution of other parts varied by game.
Rainbow later became a common reference baseline. Many later value-based agents were compared against it, and data-efficient variants tuned it for small sample budgets.
How it works
Rainbow keeps the DQN skeleton: an online network, a target network, a replay buffer, and an update that moves predictions toward a bootstrapped target. Each of the six ideas modifies one part of that skeleton.
Step 1: acting with noisy layers
The agent acts using a network whose final dense layers have noisy weights. Each weight is a mean plus a learned scale times random noise. The noise changes the actions the agent prefers, which creates exploration. The scale is learned, so the agent can reduce noise where it is confident. This replaces epsilon-greedy.
Step 2: storing transitions with priorities
Each transition goes into the replay buffer with a priority. New transitions get the highest priority so they are seen at least once. The buffer samples in proportion to priority raised to a power, so surprising transitions come back more often.
Because this sampling changes the data distribution, the update uses importance weights to correct the bias. The correction strength is annealed up over training.
Step 3: n-step targets
Rather than using a single reward plus a bootstrapped value, Rainbow builds the target from n rewards in a row:
R = r_t + gamma * r_(t+1) + ... + gamma^(n-1) * r_(t+n-1)
and then bootstraps from the state n steps later. This passes reward information backward faster, which helps when rewards are delayed. A typical n is around three.
Step 4: a distributional dueling network
The network outputs, for each action, a probability distribution over a fixed set of return values called atoms. Instead of one Q number per action, there is a histogram per action.
The dueling idea applies here too. A value stream outputs a distribution over atoms for the state, an advantage stream outputs per-action logits, and they are combined with mean subtraction before a softmax over atoms. For the plain version of this split, see Dueling DQN.
Step 5: double Q-learning inside the distribution
To build the target distribution, the online network picks the best next action by its expected value, and the target network provides the distribution for that action. This is the double Q-learning step. It reduces the tendency to pick actions whose value is overestimated. See Double DQN.
Step 6: project and compare distributions
The n-step return shifts and shrinks the target distribution. The shifted atoms no longer line up with the fixed support, so the agent projects the target onto the original atoms by splitting probability mass between the two nearest atoms.
The loss is the cross-entropy (a KL divergence) between the projected target distribution and the predicted distribution for the taken action.
Step 7: update priorities
After the update, the per-transition loss becomes the new priority for that sample. Transitions that still produce a large loss are replayed again soon. Transitions that are well learned fade.
Step 8: refresh the target network
Every fixed number of steps the target network copies the online network. This keeps targets stable between copies, as in DQN.
Putting the loop together
| Stage | Component that acts | Effect |
|---|---|---|
| Action selection | Noisy network | Learned exploration |
| Storage | Prioritized buffer | Focus on surprising data |
| Target building | N-step return and double selection | Faster credit, less bias |
| Prediction | Distributional dueling head | Richer learning signal |
| Loss | Cross-entropy between distributions | Stable gradients |
| Sampling correction | Importance weights | Unbiased updates |
| Stability | Target network | Fixed bootstrap between copies |
Why learn a distribution
A mean can hide structure. Two actions might both have an expected return of ten, but one always returns ten and the other returns zero or twenty with equal chance. A distribution keeps that difference. Even when the agent still acts on the mean, training against a full distribution gives the network a richer error signal, which has been found to help representation learning.
Why the combination works
The parts fix different problems. Double learning reduces bias in targets. Multi-step returns speed up reward propagation. Prioritized replay uses data more efficiently. Dueling and distributional heads improve what the network can represent. Noisy layers improve exploration. Because the problems are mostly separate, the fixes mostly add up.
Key concepts and terms
| Term | Meaning |
|---|---|
| Value-based RL | Learn action values and act greedily on them |
| Q-value | Expected return after taking an action in a state |
| Overestimation | Upward bias from taking a max over noisy estimates |
| Prioritized replay | Sampling transitions in proportion to their learning error |
| Importance weight | A correction factor for non-uniform sampling |
| N-step return | Target built from n real rewards then a bootstrap |
| Atom | One fixed return value in a discretized distribution |
| Support | The set of atoms covering the return range |
| Projection | Mapping a shifted target distribution back onto the atoms |
| Noisy layer | Dense layer with learned parametric noise on weights |
| Advantage | How much better an action is than average in a state |
| Target network | Lagged copy used to compute targets |
| Ablation | Removing one component to measure its effect |
| C51 | A well known distributional agent using 51 atoms |
A worked example
This example sketches the key parts of Rainbow in PyTorch. It is not a full production agent, but it shows how each idea maps to code.
Noisy linear layer
import math
import torch
import torch.nn as nn
import torch.nn.functional as F
class NoisyLinear(nn.Module):
def __init__(self, n_in, n_out, sigma0=0.5):
super().__init__()
self.n_in, self.n_out = n_in, n_out
self.mu_w = nn.Parameter(torch.empty(n_out, n_in))
self.sig_w = nn.Parameter(torch.empty(n_out, n_in))
self.mu_b = nn.Parameter(torch.empty(n_out))
self.sig_b = nn.Parameter(torch.empty(n_out))
bound = 1.0 / math.sqrt(n_in)
self.mu_w.data.uniform_(-bound, bound)
self.mu_b.data.uniform_(-bound, bound)
self.sig_w.data.fill_(sigma0 / math.sqrt(n_in))
self.sig_b.data.fill_(sigma0 / math.sqrt(n_in))
self.register_buffer("eps_in", torch.zeros(n_in))
self.register_buffer("eps_out", torch.zeros(n_out))
self.reset_noise()
@staticmethod
def _f(x):
return x.sign() * x.abs().sqrt()
def reset_noise(self):
self.eps_in.copy_(self._f(torch.randn(self.n_in)))
self.eps_out.copy_(self._f(torch.randn(self.n_out)))
def forward(self, x):
if self.training:
w = self.mu_w + self.sig_w * torch.outer(self.eps_out, self.eps_in)
b = self.mu_b + self.sig_b * self.eps_out
else:
w, b = self.mu_w, self.mu_b
return F.linear(x, w, b)
Distributional dueling head
class RainbowNet(nn.Module):
def __init__(self, state_dim, n_actions, atoms=51, vmin=-10.0, vmax=10.0):
super().__init__()
self.n_actions, self.atoms = n_actions, atoms
self.register_buffer("support", torch.linspace(vmin, vmax, atoms))
self.body = nn.Sequential(nn.Linear(state_dim, 128), nn.ReLU())
self.v1, self.v2 = NoisyLinear(128, 128), NoisyLinear(128, atoms)
self.a1, self.a2 = NoisyLinear(128, 128), NoisyLinear(128, n_actions * atoms)
def forward(self, x, log=False):
h = self.body(x)
v = self.v2(F.relu(self.v1(h))).view(-1, 1, self.atoms)
a = self.a2(F.relu(self.a1(h))).view(-1, self.n_actions, self.atoms)
q_logits = v + a - a.mean(dim=1, keepdim=True)
return F.log_softmax(q_logits, dim=2) if log else F.softmax(q_logits, dim=2)
def reset_noise(self):
for m in (self.v1, self.v2, self.a1, self.a2):
m.reset_noise()
Projection and loss
def project_target(next_dist, rewards, dones, support, gamma_n, vmin, vmax):
B, atoms = next_dist.shape
dz = (vmax - vmin) / (atoms - 1)
tz = rewards.unsqueeze(1) + (1 - dones.unsqueeze(1)) * gamma_n * support.unsqueeze(0)
tz = tz.clamp(vmin, vmax)
b = (tz - vmin) / dz
lo, hi = b.floor().long(), b.ceil().long()
m = torch.zeros(B, atoms)
for i in range(B):
for j in range(atoms):
if lo[i, j] == hi[i, j]:
m[i, lo[i, j]] += next_dist[i, j]
else:
m[i, lo[i, j]] += next_dist[i, j] * (hi[i, j] - b[i, j])
m[i, hi[i, j]] += next_dist[i, j] * (b[i, j] - lo[i, j])
return m
One update step in outline
def update(batch, online, target, opt, support, n=3, gamma=0.99, vmin=-10.0, vmax=10.0):
s, a, rn, sn, done, w = batch # n-step reward and state, weights
log_p = online(s, log=True)[range(len(a)), a]
with torch.no_grad():
best = (online(sn) * support).sum(2).argmax(1) # double selection
next_dist = target(sn)[range(len(a)), best] # target evaluation
m = project_target(next_dist, rn, done, support, gamma ** n, vmin, vmax)
loss_each = -(m * log_p).sum(1)
loss = (w * loss_each).mean()
opt.zero_grad(); loss.backward()
torch.nn.utils.clip_grad_norm_(online.parameters(), 10.0)
opt.step()
online.reset_noise(); target.reset_noise()
return loss_each.detach() # use as new priorities
A numeric look at the n-step target
Take n = 3, gamma = 0.9, rewards 1, 0, 2, and a bootstrapped value of 10 three steps later.
- n-step reward: 1 + 0.9 * 0 + 0.81 * 2 = 2.62
- bootstrap term: 0.729 * 10 = 7.29
- target: 2.62 + 7.29 = 9.91
A one-step target would have used only the first reward and the value one step later, so it would depend entirely on a possibly poor estimate. The n-step target uses three real rewards and so leans less on the estimate.
Expected behavior
On a sparse-reward task, you would expect prioritized replay and n-step returns to speed up early learning. Noisy layers should reduce the need to tune an epsilon schedule. Evaluate with several seeds and compare against a plain DQN and a DQN with only one or two of the extras to see what matters for your problem.
Strengths and limitations
Strengths
- Strong baseline. It consistently ranks among the best value-based agents on discrete-action benchmarks.
- Complementary parts. The six ideas address different weaknesses, so the benefits mostly add.
- Good sample use. Prioritized replay and multi-step targets help when interaction data is costly.
- Less exploration tuning. Learned noise removes the epsilon schedule.
- Richer learning signal. Distributional training can improve the learned representation.
- Ablation friendly. You can switch parts off to see what your task needs.
Limitations
- Complexity. Six interacting parts are harder to implement and debug than DQN.
- Memory. Prioritized buffers and per-action atom outputs cost memory.
- Discrete actions only. It cannot output continuous controls.
- Hyperparameters. Number of atoms, value range, n, priority exponent and noise scale all matter.
- Value range sensitivity. If returns fall outside the support, the distribution is clipped.
- Off-policy bias with long n. Large n with stale replay data adds bias because old data came from older policies.
- Not always needed. For simple tasks, a well tuned DQN with one or two extras can match it.
How it compares with alternatives
| Method | Type | Action space | Strength | Weakness |
|---|---|---|---|---|
| DQN | Value-based | Discrete | Simple baseline | Overestimates, sample hungry |
| Double DQN | Value-based | Discrete | Reduces bias | Only one fix |
| Dueling DQN | Value-based | Discrete | Better with similar actions | Task dependent gain |
| Rainbow | Value-based | Discrete | Strongest in this family | Many parts to tune |
| REINFORCE | Policy gradient | Both | Simple, unbiased | High variance |
| A2C / A3C | Actor-critic | Both | Fast wall-clock with parallel workers | On-policy, less sample efficient |
| PPO | Policy gradient | Both | Stable, widely used | On-policy |
| SAC | Off-policy actor-critic | Continuous | Sample efficient | Complex |
A rule of thumb: if actions are discrete and data is limited, Rainbow-style agents are a good first choice. If actions are continuous, pick TD3 or SAC. If you need simplicity and stability and can simulate cheaply, PPO is a common default.
Role in tabular foundation models
Rainbow is a reinforcement learning agent, so it does not read tables on its own. Still, it connects to tabular foundation models in several concrete ways. A tabular foundation model such as TabPFN is pre-trained on many synthetic or real tables and predicts on a new table in one forward pass through in-context learning. It handles row and column structure, mixed numeric and categorical types, and missing values, and it does not depend on column names. See /model/research and /model/architecture.
Table-driven decision problems
Many table problems are decisions in sequence: which record to review, which column to impute next, which alert to escalate, which action to offer a customer. These are discrete-action problems with delayed reward. Rainbow is built for exactly this shape. The state can be a row embedding or a summary of a table, and the actions are the discrete options.
The encoder is the bridge
Rainbow needs a state vector. A tabular encoder, for example FT-Transformer style embeddings of numeric and categorical columns or a representation from a pre-trained tabular model, turns raw rows into that vector. The encoder deals with missing values and mixed types so the value-based agent does not have to. This division of labor keeps the agent small.
Imputation and data preparation as decisions
When imputation or cleaning is framed as a sequence of actions, such as which column to fill or which rule to apply, delayed reward (final model quality) fits n-step returns well. A distributional head also records the risk: some cleaning actions help a lot or hurt a lot, and the mean alone hides that. See imputation networks.
Anomaly handling and triage
In anomaly detection pipelines, the choice to flag, review or ignore a row has costs. Rainbow can learn a triage policy from analyst feedback. Prioritized replay is helpful because confirmed anomalies are rare, and rare surprising events get replayed more.
Continual learning
Off-policy replay lets an agent keep learning as new data arrives, a key need when tables drift. The replay buffer acts like a memory, and priorities decide what to keep revisiting. This relates to continual learning in foundation models, where the challenge is to adapt without forgetting. A bounded buffer with a mix of recent and old transitions is a practical compromise.
Semantic and sector classification
When a tabular model infers the semantic type of a column or the sector of a dataset without column names, those labels can enter the agent state. The agent can then learn that different sectors need different actions, for example in how aggressively to treat outliers.
Honest limits
Rainbow does not do in-context learning, and it is not pre-trained on synthetic tables. It learns from interaction with its own reward signal, which must be designed. The pairing with tabular foundation models is a system design pattern, not a built-in feature. Check results against the simpler baselines first. For model-level results see /model/benchmarks.
Practical guidance and best practices
Start simple, then add parts
Reproduce a plain DQN. Add Double DQN targets, then n-step returns, then prioritized replay. Add the dueling and distributional heads and noisy layers last. Measure at each step so you know what helped.
Choose the value range carefully
Set the minimum and maximum of the support to cover the returns you expect. If you clip rewards, the range is easy to bound. If you do not, estimate typical returns from a random policy and a good policy.
Number of atoms
Fifty-one atoms is a common default. More atoms give a finer distribution at higher cost. Fewer atoms are fine for simple tasks.
N-step choice
Small n (about three) is a safe choice. Larger n speeds reward propagation but adds off-policy bias.
Prioritized replay settings
- Use a priority exponent below one so sampling is not too greedy.
- Anneal the importance weight exponent toward one.
- Give new transitions maximum priority.
- Add a small constant to priorities so none reaches zero.
Noisy layers
Use noisy layers only in the heads. Reset noise each step or each update. Do not also use epsilon-greedy unless you want extra exploration.
Data and state design for tables
- Standardize numeric inputs and embed categorical inputs.
- Provide explicit missing-value indicators.
- Keep evaluation rows out of the replay buffer.
- Define the reward from a business or quality metric, and test that it cannot be gamed.
Typical hyperparameter ranges
| Setting | Typical value | Note |
|---|---|---|
| Atoms | 51 | More atoms cost more memory |
| Support range | Cover expected returns | Clip rewards to bound it |
| N-step | 3 | Larger n adds off-policy bias |
| Discount | 0.99 | Lower for short horizons |
| Priority exponent | About 0.5 | Below one avoids greedy sampling |
| Importance weight exponent | Anneal toward 1.0 | Fully corrects bias late in training |
| Noise scale | About 0.5 initial | Learned during training |
| Replay size | Large enough for many episodes | Memory heavy with priorities |
| Learning rate | Small, Adam | Often around 1e-4 |
| Target update | Every few thousand steps | Or a soft update |
Which pieces to try first on a new problem
- Double targets: nearly free and rarely harmful.
- N-step returns: cheap and often a big win when rewards are delayed.
- Prioritized replay: helps most when useful transitions are rare.
- Dueling head: helps when many actions are similar.
- Noisy layers: helps when epsilon tuning is a burden.
- Distributional head: helps representation learning and gives risk information.
Reading ablation results
Ablation studies show average effects across many tasks. Your task is one sample. If removing a part makes no difference on your problem, you can drop it and save memory and time. If removing it hurts, keep it. Do the same test on your own data rather than trusting a table from another domain.
Memory planning
Prioritized buffers store a priority per transition and need a sum tree for fast sampling. Distributional heads output atoms per action, so the final layer is larger by a factor equal to the atom count. For large action sets and many atoms, check GPU memory before you start a long run.
Monitoring during training
- Track mean episode return and its spread across seeds.
- Track the mean priority and how much it changes.
- Track the entropy of predicted distributions to see if they collapse.
- Track the fraction of target mass that falls on the edge atoms, which signals a poor support range.
- Track the loss per component if you can, for example by logging with one part disabled.
Use several seeds
Run at least five seeds and plot mean and spread. Report the number of environment steps, not only final score.
Checklist
- Plain DQN works
- Each extra added and measured
- Support range covers the returns
- Priorities and weights implemented correctly
- Several seeds compared
Common mistakes
- Turning everything on at once. If the result is poor, you cannot tell which part is wrong.
- Wrong support range. Returns outside the range are clipped and the agent cannot represent them.
- Forgetting importance weights. Prioritized sampling without correction biases the updates.
- Using a large n with an old buffer. Stale data adds bias to multi-step targets.
- Mixing noisy layers and a high epsilon. The agent explores too much.
- Picking actions with the wrong network in the double step. The online network picks, the target network scores.
- Bugs in the projection step. An off-by-one between atoms silently breaks learning. Test projection on simple cases.
- Not resetting noise. Frozen noise gives the same exploratory bias for long periods.
- Weak baselines. Compare to a well tuned DQN to know what Rainbow adds.
- Reward leaks. In table decisions, a reward computed from data the agent can edit lets it cheat.
Frequently asked questions
What is Rainbow in reinforcement learning?
Rainbow is a deep reinforcement learning agent that combines six improvements to DQN: double Q-learning, prioritized replay, dueling networks, multi-step returns, distributional value estimates and noisy networks. Together they give faster learning and higher scores than any one change on its own.
Why is it called Rainbow?
The name reflects the combination of many different parts into one agent, like the colors of a rainbow. Each color is a separate improvement, and the full set is meant to work together.
Which part of Rainbow matters most?
It depends on the task. Ablation studies found that prioritized replay and multi-step returns were often the most important, while other parts such as the dueling head mattered more on some tasks and less on others. The practical advice is to add parts one at a time and measure each on your own problem.
Does Rainbow work with continuous actions?
No. It relies on a finite set of actions and takes a maximum over them. For continuous control, algorithms such as DDPG, TD3 and SAC are the usual choices. You can discretize actions, but this scales poorly as the number of action dimensions grows.
How is distributional RL different from standard Q-learning?
Standard Q-learning learns the average return for each action. Distributional methods learn the whole distribution of possible returns, represented as probabilities over fixed return values. This keeps information about risk and variability and gives the network a richer training signal.
Is Rainbow on-policy or off-policy?
It is off-policy. It learns from a replay buffer of transitions that may have been collected by earlier versions of the agent. This is what allows data reuse and prioritized sampling, though long multi-step returns add some bias when the data is old.
Do I need all six components?
No. You can use any subset. Some simple problems work well with just double learning and multi-step returns. Rainbow is a menu as much as a recipe, and ablations on your task will show which parts are worth their complexity.
How does Rainbow relate to PPO?
They are different families. Rainbow is value-based and off-policy, learning from a replay buffer. PPO is a policy-gradient method that is mostly on-policy and learns a stochastic policy directly. PPO is a common default when simulation is cheap, and Rainbow is attractive when interaction data is costly and actions are discrete.
Can Rainbow be used with tabular data?
Yes, when the problem is a sequence of discrete decisions over tabular states. A table encoder converts rows or table summaries into a state vector, and Rainbow learns which action to take. It does not replace a tabular predictor for ordinary classification or regression.
How many atoms and what value range should I use?
A common default is fifty-one atoms. The value range should cover the returns you expect, so estimate them from random and good policies, or bound them by clipping rewards. If the range is too narrow the distribution is clipped, and if it is too wide the resolution suffers.
Glossary
- Atom: One fixed return value in a distribution over returns.
- Ablation: An experiment that removes one component to measure its effect.
- C51: A distributional agent that uses fifty-one atoms.
- Distributional RL: Learning the full distribution of returns, not just the mean.
- Double Q-learning: Selecting and evaluating the next action with different estimates to reduce bias.
- Dueling network: A network with separate value and advantage streams.
- Importance weight: A factor that corrects for non-uniform sampling.
- KL divergence: A measure of how different two probability distributions are.
- Multi-step return: A target built from several real rewards plus a bootstrap.
- Noisy network: A network whose weights include learned random noise for exploration.
- Off-policy: Learning from data produced by a different policy.
- Prioritized replay: Sampling past transitions in proportion to their learning error.
- Projection: Mapping a shifted distribution back onto the fixed atoms.
- Support: The range and spacing of atoms.
Summary
Rainbow combines double Q-learning, prioritized replay, dueling networks, multi-step returns, distributional values and noisy networks into one agent. The parts fix different weaknesses of DQN and mostly add up, which makes Rainbow a strong value-based baseline for discrete actions.
It is complex to build and tune, so add parts one at a time and test with several seeds. For tables, pair it with an encoder such as FT-Transformer or a representation from TabPFN and use it for sequential decisions such as triage, imputation order or anomaly review. See Dueling DQN, Double DQN, experience replay and reinforcement learning for the building blocks, and /model/benchmarks for model-level results.
Related
It belongs to Reinforcement learning in my stack, under AI and machine learning. Others in the same group: