DDPG

forkortelse for Deep Deterministic Policy Gradient

DDPG er en reinforcement learning-algoritme, der kombinerer en deterministisk policy-gradient-metode med deep learning til kontinuerlige handlingsrum.

Kort fortalt

DDPG er en metode, der træner en AI til at lære kontinuerlige handlinger (f.eks. styring af en robotarm) ved at bruge to neurale netværk: en aktør, der vælger handlinger, og en kritiker, der vurderer dem.

Kategori
træning
Niveau
øvet

Betydninger

1
  1. 1

    En off-policy reinforcement learning-algoritme, der bruger en aktør-kritiker-arkitektur med deterministisk policy og eksploration via støj (f.eks. Ornstein-Uhlenbeck). Den lærer både en Q-funktion (kritiker) og en policy (aktør) gennem replay-buffer og målnetværk for at stabilisere træning.

    • DDPG opnåede state-of-the-art resultater på flere simulerede robotopgaver i MuJoCo.Lillicrap et al., 2015
    • For at stabilisere træning anvender DDPG bløde opdateringer af målnetværkene.

Hvornår bruges det

DDPG anvendes i opgaver med kontinuerlige handlingsrum, såsom robotstyring, simuleret fysik og autonome køretøjer. Det kræver omhyggelig tuning af hyperparametre og bruges ofte som et udgangspunkt i moderne deep RL.

Formel

Kritiker-tab: L = 1/N ∑(y_i - Q(s_i,a_i))^2, hvor y_i = r_i + γ Q'(s_i', μ'(s_i')). Aktør-opdatering: ∇_θ J ≈ 1/N ∑ ∇_a Q(s,a) ∇_θ μ(s).

Kodeeksempel

# Simplified DDPG training loop
for episode in range(MAX_EPISODES):
    state = env.reset()
    for t in range(MAX_STEPS):
        action = actor(state) + noise()
        next_state, reward, done, _ = env.step(action)
        replay_buffer.add(state, action, reward, next_state, done)
        if len(replay_buffer) > BATCH_SIZE:
            batch = replay_buffer.sample(BATCH_SIZE)
            # Update critic
            target_q = critic_target(batch.next_states, actor_target(batch.next_states))
            y = batch.rewards + GAMMA * target_q * (1 - batch.dones)
            critic_loss = MSE(critic(batch.states, batch.actions), y)
            critic_optimizer.zero_grad(); critic_loss.backward(); critic_optimizer.step()
            # Update actor
            actor_loss = -critic(batch.states, actor(batch.states)).mean()
            actor_optimizer.zero_grad(); actor_loss.backward(); actor_optimizer.step()
            # Soft update targets
            soft_update(critic_target, critic)
            soft_update(actor_target, actor)
        if done: break

Forenklet træningsloop for DDPG med replay-buffer, kritiker- og aktør-opdatering samt bløde opdateringer af målnetværk.

Oprindelse

Introduceret af Lillicrap et al. i 2015 i artiklen 'Continuous control with deep reinforcement learning' som en udvidelse af DPG (Deterministic Policy Gradient) med deep neural networks.

Afledte ord

2

Kilder

1