Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Gradientbanditalgoritm | Multi-Armed Bandit-Problemet
Introduktion till Förstärkningsinlärning
course content

Kursinnehåll

Introduktion till Förstärkningsinlärning

Introduktion till Förstärkningsinlärning

1. RL Kärnteori
2. Multi-Armed Bandit-Problemet
3. Dynamisk Programmering
4. Monte Carlo-metoder
5. Temporär Differensinlärning

book
Gradientbanditalgoritm

Vid hantering av multi-armed banditer uppskattar traditionella metoder som epsilon-girig och UCB aktionsvärden för att avgöra vilken åtgärd som ska väljas. Gradientbanditer använder dock en annan metod — de lär sig preferenser för åtgärder istället för att uppskatta deras värden. Dessa preferenser justeras över tid med hjälp av stokastisk gradientuppstigning.

Preferenser

Istället för att underhålla aktionsvärdesuppskattningar Q(a)Q(a), underhåller gradientbanditer preferensvärden H(a)H(a) för varje åtgärd aa. Dessa preferenser uppdateras med en stokastisk gradientuppstigningsmetod för att maximera förväntad belöning. Sannolikheten för varje åtgärd beräknas med en softmax-funktion:

P(At=a)=eHt(a)b=1neHt(b)=πt(a)P(A_t = a) = \frac{e^{H_t(a)}}{\sum_{b=1}^n e^{H_t(b)}} = \pi_t(a)

där:

  • Ht(a)H_t(a) är preferensen för åtgärd aa vid tidpunkt tt;
  • P(At=a)P(A_t = a) är sannolikheten att välja åtgärd aa vid tidpunkt tt;
  • Nämnaren säkerställer att sannolikheterna summerar till 1.

Softmax är en central funktion inom ML, ofta använd för att omvandla listor av reella tal till listor av sannolikheter. Denna funktion fungerar som en mjuk approximation av arg max\argmax-funktionen, vilket möjliggör naturlig utforskning genom att ge åtgärder med lägre preferens en icke-noll chans att väljas.

Uppdateringsregel

Efter att en åtgärd AtA_t har valts vid tidpunkt tt, uppdateras preferensvärdena enligt följande regel:

Ht+1(At)Ht(At)+α(RtRˉt)(1π(At))Ht+1(a)Ht(a)α(RtRˉt)π(a)aAt\begin{aligned} &H_{t+1}(A_t) \gets H_t(A_t) + \alpha (R_t - \bar R_t)(1 - \pi(A_t))\\ &H_{t+1}(a) \gets H_t(a) - \alpha (R_t - \bar R_t)\pi(a) \qquad \forall a \ne A_t \end{aligned}

där:

  • α\alpha är stegstorleken;
  • RtR_t är mottagen belöning;
  • Rˉt\bar R_t är genomsnittlig belöning observerad hittills.

Intuition

Vid varje tidpunkt justeras alla preferenser något. Förändringen beror huvudsakligen på mottagen belöning och genomsnittlig belöning, och kan förklaras så här:

  • Om mottagen belöning är högre än genomsnittet, blir den valda åtgärden mer föredragen och övriga åtgärder blir mindre föredragna;
  • Om mottagen belöning är lägre än genomsnittet, minskar preferensen för den valda åtgärden, medan preferenserna för övriga åtgärder ökar, vilket uppmuntrar utforskning.

Exempelkod

def softmax(x):
  """Simple softmax implementation"""
  return np.exp(x) / np.sum(np.exp(x))

class GradientBanditsAgent:
  def __init__(self, n_actions, alpha):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.alpha = alpha # alpha
    self.H = np.zeros(n_actions) # Preferences
    self.reward_avg = 0 # Average reward
    self.t = 0 # Time step counter

  def select_action(self):
    """Select an action according to the gradient bandits strategy"""
    # Compute probabilities from preferences with softmax
    probs = softmax(self.H)
    # Choose an action according to the probabilities
    return np.random.choice(self.n_actions, p=probs)

  def update(self, action, reward):
    """Update preferences"""
    # Increase the time step counter
    self.t += 1
    # Update the average reward
    self.reward_avg += reward / self.t

    # Compute probabilities from preferences with softmax
    probs = softmax(self.H) # Getting action probabilities from preferences

    # Update preference values using stochastic gradient ascent
    self.H -= self.alpha * (reward - self.reward_avg) * probs
    self.H[action] += self.alpha * (reward - self.reward_avg)

Ytterligare information

Gradientbanditer har flera intressanta egenskaper:

  • Preferensrelativitet: de absoluta värdena för åtgärdspreferenser påverkar inte urvalsprocessen — endast deras relativa skillnader spelar roll. Om alla preferenser förskjuts med samma konstant (t.ex. genom att addera 100) erhålls samma sannolikhetsfördelning;
  • Effekten av baslinjen i uppdateringsregeln: även om uppdateringsformeln vanligtvis inkluderar den genomsnittliga belöningen som baslinje, kan detta värde ersättas med vilken konstant som helst som är oberoende av vald åtgärd. Baslinjen påverkar konvergenshastigheten men ändrar inte den optimala lösningen;
  • Steglängdens påverkan: steglängden bör justeras utifrån aktuell uppgift. En mindre steglängd ger stabilare inlärning, medan ett större värde påskyndar inlärningsprocessen.

Sammanfattning

Gradientbanditer erbjuder ett kraftfullt alternativ till traditionella banditalgoritmer genom att utnyttja preferensbaserat lärande. Deras mest intressanta egenskap är förmågan att på ett naturligt sätt balansera utforskning och exploatering.

question mark

Vad är den främsta fördelen med att använda gradientbanditer jämfört med traditionella banditalgoritmer?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Introduktion till Förstärkningsinlärning

Introduktion till Förstärkningsinlärning

1. RL Kärnteori
2. Multi-Armed Bandit-Problemet
3. Dynamisk Programmering
4. Monte Carlo-metoder
5. Temporär Differensinlärning

book
Gradientbanditalgoritm

Vid hantering av multi-armed banditer uppskattar traditionella metoder som epsilon-girig och UCB aktionsvärden för att avgöra vilken åtgärd som ska väljas. Gradientbanditer använder dock en annan metod — de lär sig preferenser för åtgärder istället för att uppskatta deras värden. Dessa preferenser justeras över tid med hjälp av stokastisk gradientuppstigning.

Preferenser

Istället för att underhålla aktionsvärdesuppskattningar Q(a)Q(a), underhåller gradientbanditer preferensvärden H(a)H(a) för varje åtgärd aa. Dessa preferenser uppdateras med en stokastisk gradientuppstigningsmetod för att maximera förväntad belöning. Sannolikheten för varje åtgärd beräknas med en softmax-funktion:

P(At=a)=eHt(a)b=1neHt(b)=πt(a)P(A_t = a) = \frac{e^{H_t(a)}}{\sum_{b=1}^n e^{H_t(b)}} = \pi_t(a)

där:

  • Ht(a)H_t(a) är preferensen för åtgärd aa vid tidpunkt tt;
  • P(At=a)P(A_t = a) är sannolikheten att välja åtgärd aa vid tidpunkt tt;
  • Nämnaren säkerställer att sannolikheterna summerar till 1.

Softmax är en central funktion inom ML, ofta använd för att omvandla listor av reella tal till listor av sannolikheter. Denna funktion fungerar som en mjuk approximation av arg max\argmax-funktionen, vilket möjliggör naturlig utforskning genom att ge åtgärder med lägre preferens en icke-noll chans att väljas.

Uppdateringsregel

Efter att en åtgärd AtA_t har valts vid tidpunkt tt, uppdateras preferensvärdena enligt följande regel:

Ht+1(At)Ht(At)+α(RtRˉt)(1π(At))Ht+1(a)Ht(a)α(RtRˉt)π(a)aAt\begin{aligned} &H_{t+1}(A_t) \gets H_t(A_t) + \alpha (R_t - \bar R_t)(1 - \pi(A_t))\\ &H_{t+1}(a) \gets H_t(a) - \alpha (R_t - \bar R_t)\pi(a) \qquad \forall a \ne A_t \end{aligned}

där:

  • α\alpha är stegstorleken;
  • RtR_t är mottagen belöning;
  • Rˉt\bar R_t är genomsnittlig belöning observerad hittills.

Intuition

Vid varje tidpunkt justeras alla preferenser något. Förändringen beror huvudsakligen på mottagen belöning och genomsnittlig belöning, och kan förklaras så här:

  • Om mottagen belöning är högre än genomsnittet, blir den valda åtgärden mer föredragen och övriga åtgärder blir mindre föredragna;
  • Om mottagen belöning är lägre än genomsnittet, minskar preferensen för den valda åtgärden, medan preferenserna för övriga åtgärder ökar, vilket uppmuntrar utforskning.

Exempelkod

def softmax(x):
  """Simple softmax implementation"""
  return np.exp(x) / np.sum(np.exp(x))

class GradientBanditsAgent:
  def __init__(self, n_actions, alpha):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.alpha = alpha # alpha
    self.H = np.zeros(n_actions) # Preferences
    self.reward_avg = 0 # Average reward
    self.t = 0 # Time step counter

  def select_action(self):
    """Select an action according to the gradient bandits strategy"""
    # Compute probabilities from preferences with softmax
    probs = softmax(self.H)
    # Choose an action according to the probabilities
    return np.random.choice(self.n_actions, p=probs)

  def update(self, action, reward):
    """Update preferences"""
    # Increase the time step counter
    self.t += 1
    # Update the average reward
    self.reward_avg += reward / self.t

    # Compute probabilities from preferences with softmax
    probs = softmax(self.H) # Getting action probabilities from preferences

    # Update preference values using stochastic gradient ascent
    self.H -= self.alpha * (reward - self.reward_avg) * probs
    self.H[action] += self.alpha * (reward - self.reward_avg)

Ytterligare information

Gradientbanditer har flera intressanta egenskaper:

  • Preferensrelativitet: de absoluta värdena för åtgärdspreferenser påverkar inte urvalsprocessen — endast deras relativa skillnader spelar roll. Om alla preferenser förskjuts med samma konstant (t.ex. genom att addera 100) erhålls samma sannolikhetsfördelning;
  • Effekten av baslinjen i uppdateringsregeln: även om uppdateringsformeln vanligtvis inkluderar den genomsnittliga belöningen som baslinje, kan detta värde ersättas med vilken konstant som helst som är oberoende av vald åtgärd. Baslinjen påverkar konvergenshastigheten men ändrar inte den optimala lösningen;
  • Steglängdens påverkan: steglängden bör justeras utifrån aktuell uppgift. En mindre steglängd ger stabilare inlärning, medan ett större värde påskyndar inlärningsprocessen.

Sammanfattning

Gradientbanditer erbjuder ett kraftfullt alternativ till traditionella banditalgoritmer genom att utnyttja preferensbaserat lärande. Deras mest intressanta egenskap är förmågan att på ett naturligt sätt balansera utforskning och exploatering.

question mark

Vad är den främsta fördelen med att använda gradientbanditer jämfört med traditionella banditalgoritmer?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5
some-alt