Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Epsilon-Grådig Algoritme | Multi-Armed Bandit-Problem
Introduktion til Reinforcement Learning med Python

Epsilon-Grådig Algoritme

Stryg for at vise menuen

Epsilon-greedy (ε\varepsilon-greedy) algoritmen er en enkel, men yderst effektiv strategi til at løse multi-armed bandit-problemet. Selvom den måske ikke er lige så robust som nogle andre metoder til denne specifikke opgave, gør dens enkelhed og alsidighed den bredt anvendelig inden for reinforcement learning.

Sådan fungerer det

Algoritmen følger disse trin:

  1. Initialiser estimater for handlingsværdier Q(a)Q(a) for hver handling aa;
  2. Vælg en handling ved hjælp af følgende regel:
    • Med sandsynlighed ε\varepsilon: vælg en tilfældig handling (udforskning);
    • Med sandsynlighed 1ε1 - \varepsilon: vælg handlingen med den højeste estimerede værdi (udnyttelse).
  3. Udfør handlingen og observer belønningen;
  4. Opdater estimatet for handlingsværdien Q(a)Q(a) baseret på den observerede belønning;
  5. Gentag trin 2-4 i et fast antal tidssteg.

Hyperparameteren ε\varepsilon (epsilon) styrer balancen mellem udforskning og udnyttelse:

  • En høj ε\varepsilon (f.eks. 0,5) fremmer mere udforskning;
  • En lav ε\varepsilon (f.eks. 0,01) favoriserer udnyttelse af den bedst kendte handling.
billede

Eksempelkode

class EpsilonGreedyAgent:
  def __init__(self, n_actions, epsilon):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.epsilon = epsilon # epsilon
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters

  def select_action(self):
    """Select an action according to the epsilon-greedy strategy"""
    # With probability epsilon - random action
    if np.random.rand() < self.epsilon:
      return np.random.randint(self.n_actions)
    # Otherwise - action with highest estimated action value
    else:
      return np.argmax(self.Q)

  def update(self, action, reward):
    """Update the values using sample average estimate"""
    # Increasing the action selection counter
    self.N[action] += 1
    # Updating the estimated action value
    self.Q[action] += (reward - self.Q[action]) / self.N[action]

Yderligere information

Effektiviteten af ε\varepsilon-grådig algoritmen afhænger i høj grad af værdien af ε\varepsilon. To strategier anvendes ofte til at vælge denne værdi:

  • Fast ε\varepsilon: dette er den mest generiske mulighed, hvor værdien af ε\varepsilon vælges som en konstant (f.eks. 0,1);
  • Aftagende ε\varepsilon: værdien af ε\varepsilon falder over tid i henhold til en tidsplan (f.eks. starter ved 1 og falder gradvist til 0) for at fremme udforskning i de tidlige faser.

Resumé

ε\varepsilon-grådig algoritme som en grundlæggende tilgang til at balancere udforskning og udnyttelse. Selvom den er enkel, danner den grundlag for forståelse af mere avancerede strategier som upper confidence bound (UCB) og gradient bandits.

question mark

Hvad er et primært kendetegn ved ε\varepsilon-grådig algoritme?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 3
some-alt