Introduktion till djup förstärkningsinlärning

Djup förstärkningsinlärning i Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Varför djup förstärkningsinlärning?

 

  • Traditionell RL lämpar sig för lågdimensionella uppgifter

 

 

  • Många tillämpningar har högdimensionella tillstånds- och/eller aktionsutrymmen

 

En agent som utforskar Frozen Lake-miljön

En agent som spelar det klassiska TV-spelet Space Invaders

Djup förstärkningsinlärning i Python

Ingredienserna i DRL

 

  1. Koncept inom förstärkningsinlärning
  2. Djupinlärning och PyTorch

 

  • DRL kombinerar dessa med djupa neurala nätverk

 

Pixelillustration av en kock som blandar ingredienser

Djup förstärkningsinlärning i Python

RL-ramverket

 

  • Steg t:

 

En stor ruta med två mindre rutor inuti märkta "Agent" och "Environment"

Djup förstärkningsinlärning i Python

RL-ramverket

 

  • Steg t:
    • Agenten observerar tillstånd $s_t$

 

En röd pil med etiketten State s_t går från miljön till agenten.

Djup förstärkningsinlärning i Python

RL-ramverket

 

  • Steg t:
    • Agenten observerar tillstånd $s_t$
    • Agenten utför aktion $a_t$

 

En röd pil med etiketten action a_t går från agenten till miljön. Tillståndspilen är nu svart.

Djup förstärkningsinlärning i Python

RL-ramverket

 

  • Steg t:
    • Agenten observerar tillstånd $s_t$
    • Agenten utför aktion $a_t$
  • Steg t+1:
    • Miljön ger belöning $r_t$
    • Tillståndet övergår till $s_{t+1}$

 

Pilen för tillstånd s_t uppdaterar sin etikett till state s_t+1 och är röd igen. En ny röd pil med etiketten reward r_t+1 går från miljön till agenten. Aktionspilen är nu svart.

Djup förstärkningsinlärning i Python

RL-ramverket

 

  • Steg t:
    • Agenten observerar tillstånd $s_t$
    • Agenten utför aktion $a_t$
  • Steg t+1:
    • Miljön ger belöning $r_t$
    • Tillståndet övergår till $s_{t+1}$
  • Upprepa tills episoden är avslutad

 

Samma bild som föregående slide, men alla pilar är svarta.

Djup förstärkningsinlärning i Python

Policy $\pi(s_t)$

 

  • Avbildning från tillstånd till aktion som beskriver agentens beteende i ett givet tillstånd $s_t$

 

  • Deterministisk:
    • Returnerar den valda aktionen
  • Stokastisk:
    • Returnerar en fördelning över aktioner
    • Policyn är en sannolikhetsfördelning över möjliga aktioner
Djup förstärkningsinlärning i Python

Trajektoria och episodens avkastning

 

Trajektoria tau: sekvens av alla tillstånd och aktioner i en episod; tau = ((s0, a0), (s1, a1), ... (sT, aT))

 

Episodens avkastning Rtau: totala (diskonterade) belöningar ackumulerade längs trajektorian tau. Rtau = summa över t av gamma upphöjt till t gånger r_t

Djup förstärkningsinlärning i Python

Sätta upp miljön

env = gym.make("ALE/SpaceInvaders-v5")

# Define neural network architecture class Network(nn.Module): def __init__(self, dim_inputs, dim_outputs): super(Network, self).__init__() self.linear = nn.Linear(dim_inputs, dim_outputs) def forward(self, x): return self.linear(x)
# Instantiate network network = Network(dim_inputs, dim_outputs)
# Instantiate optimizer optimizer = optim.Adam(network.parameters(), lr=0.0001)
Djup förstärkningsinlärning i Python

Grundloopen

for episode in range(1000):
  state, info = env.reset()
  done = False

while not done:
action = select_action(network, state)
next_state, reward, terminated, truncated, _ = ( env.step(action)) done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done) optimizer.zero_grad() loss.backward() optimizer.step()
state = next_state

 

  • Yttre loop: iterera genom episoder
  • Inre loop: iterera genom steg
    • Välj en aktion
    • Observera nytt tillstånd och belöning
    • Beräkna förlusten och uppdatera nätverket
    • Uppdatera tillståndet
  • (Förlust?)
Djup förstärkningsinlärning i Python

Vad kommer härnäst

 

 

  • DRL är kraftfullt!
  • Värdebaserade och policybaserade metoder
  • DQN och vidareutvecklingar
  • Policygradientmetoder

En DataCamp-kursdeltagare som dyker djupt ner i havet för att utforska djup förstärkningsinlärning

Djup förstärkningsinlärning i Python

Nu kör vi en övning!

Djup förstärkningsinlärning i Python

Preparing Video For Download...