deep Q-network
forkortelse for DQN
Deep Q-network (DQN) er en forstærkningslæringsalgoritme, der bruger et dybt neuralt netværk til at approksimere Q-værdifunktionen, så en agent kan lære optimale politikker direkte fra højdimensionelle sensoriske input.
Kort fortalt
Deep Q-network (DQN) er en metode, hvor et dybt neuralt netværk lærer at træffe beslutninger ved at vurdere, hvor godt det er at handle i forskellige tilstande.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /diːp kjuː ˈnɛtwɜːrk/
Betydninger
1- 1
En værdiebaseret forstærkningslæringsalgoritme, der kombinerer Q-læring med dybe neurale netværk, og som bruger erfarenhedsreplay og et målernetværk for at stabilisere træning.
- Deep Q-network opnåede overmenneskelig præstation på 49 Atari-spil kun ved hjælp af rå pixelinput. — Mnih et al., Nature, 2015
- DQN's erfarenhedsreplay-mekanisme stabiliserer træning ved at bryde korrelationer i dataene. — Mnih et al., NIPS, 2013
Hvornår bruges det
DQN anvendes i forstærkningslæringsopgaver med store tilstandsrum, såsom computerspil, robotstyring og autonom navigation. Det blev populariseret af DeepMinds Atari-spillende agent.
Formel
L = (r + γ · max_{a'} Q(s', a') - Q(s, a))²Kodeeksempel
import torch
import torch.nn as nn
import torch.optim as optim
class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.fc = nn.Sequential(
nn.Linear(state_dim, 128),
nn.ReLU(),
nn.Linear(128, 128),
nn.ReLU(),
nn.Linear(128, action_dim)
)
def forward(self, x):
return self.fc(x)
# Training step
optimizer = optim.Adam(dqn.parameters())
loss_fn = nn.MSELoss()
# Sample batch from replay buffer
states, actions, rewards, next_states, dones = buffer.sample(batch_size)
# Compute Q values
q_values = dqn(states).gather(1, actions.unsqueeze(1)).squeeze()
with torch.no_grad():
max_next_q = target_dqn(next_states).max(1)[0]
targets = rewards + gamma * max_next_q * (1 - dones)
loss = loss_fn(q_values, targets)
optimizer.zero_grad()
loss.backward()
optimizer.step()En simpel PyTorch-implementering af DQN-netværket og et træningstrin med MSE-tab.
Oprindelse
'Deep' henviser til brugen af dybe neurale netværk; 'Q-network' stammer fra Q-læring, hvor Q(s,a) angiver den forventede fremtidige belønning for at handle a i tilstand s.
Afledte ord
3Kilder
2- Playing Atari with Deep Reinforcement Learning (2013)
- Human-level control through deep reinforcement learning (Nature, 2015)