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. 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

3

Kilder

2
  • Playing Atari with Deep Reinforcement Learning (2013)
  • Human-level control through deep reinforcement learning (Nature, 2015)