A3C

forkortelse for Asynchronous Advantage Actor-Critic

En forstærkningslæringsalgoritme, der kombinerer actor-critic med asynkron parallel træning for at stabilisere og fremskynde indlæring.

Kort fortalt

En metode til at træne AI-agenter, hvor flere kopier af agenten lærer samtidigt i separate miljøer og deler viden.

Kategori
teknik
Niveau
øvet
Udtale
/eɪ θriː siː/

Betydninger

1
  1. 1

    En forstærkningslæringsalgoritme, der træner en policy og en værdifunktion parallelt ved hjælp af fler asynkrone arbejdere, hver med deres egen kopi af miljøet.

    • A3C opnåede state-of-the-art resultater på Atari-spil i 2016 ved at udnytte asynkron træning.Mnih et al., 2016
    • A3C-algoritmen bruger flere tråde til at udforske miljøet samtidigt, hvilket gør læringen mere stabil.

Hvornår bruges det

A3C bruges typisk i deep reinforcement learning-opgaver, hvor agenten skal lære komplekse sekventielle beslutninger, f.eks. inden for spil (Atari) eller robotstyring. Algoritmen udnytter flere asynkrone arbejdere til at udforske miljøet parallelt, hvilket reducerer korrelationen mellem træningsdata.

Formel

∇θ J(θ) ≈ (1/N) Σ_t (A(s_t, a_t) · ∇θ log πθ(a_t|s_t) + β · H(πθ(·|s_t)))

Kodeeksempel

import threading, numpy as np

class Worker(threading.Thread):
    def __init__(self, global_network, optimizer):
        super().__init__()
        self.global_network = global_network
        self.local_network = copy.deepcopy(global_network)
        self.optimizer = optimizer
    def run(self):
        while True:
            state = env.reset()
            done = False
            while not done:
                action = self.local_network.act(state)
                next_state, reward, done = env.step(action)
                self.local_network.store(state, action, reward)
                state = next_state
            # Compute gradients and update global network
            gradients = self.local_network.compute_gradients()
            self.optimizer.apply_gradients(zip(gradients, self.global_network.weights))

Forenklet kode for A3C-arbejder, der viser asynkron træning.

Oprindelse

Introduceret af Mnih m.fl. i 2016 som en forbedring af deep Q-netværk, der muliggør effektiv træning uden brug af erfaringsbuffer.

Afledte ord

1

Kilder

1