Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Gradientbandietenalgoritme | Multi-Armed Bandit Probleem
Introductie tot Reinforcement Learning
course content

Cursusinhoud

Introductie tot Reinforcement Learning

Introductie tot Reinforcement Learning

1. Kernprincipes van RL
2. Multi-Armed Bandit Probleem
3. Dynamisch Programmeren
4. Monte Carlo-Methoden
5. Temporale Verschil Leren

book
Gradientbandietenalgoritme

Bij het werken met multi-armed bandits schatten traditionele methoden zoals epsilon-greedy en UCB actie-waarden om te bepalen welke actie genomen moet worden. Gradient bandits hanteren echter een andere benadering — zij leren voorkeuren voor acties in plaats van hun waarden te schatten. Deze voorkeuren worden in de loop van de tijd aangepast met behulp van stochastische gradient ascent.

Voorkeuren

In plaats van het bijhouden van actie-waarde schattingen Q(a)Q(a), houden gradient bandits voorkeurswaarden H(a)H(a) bij voor elke actie aa. Deze voorkeuren worden bijgewerkt met een stochastische gradient ascent-benadering om de verwachte beloningen te maximaliseren. De kans op het kiezen van een actie wordt berekend met een softmax-functie:

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)

waarbij:

  • Ht(a)H_t(a) de voorkeur is voor actie aa op tijdstip tt;
  • P(At=a)P(A_t = a) de kans is om actie aa te selecteren op tijdstip tt;
  • De noemer zorgt ervoor dat de kansen optellen tot 1.

Softmax is een essentiële functie in ML, vaak gebruikt om lijsten van reële getallen om te zetten in lijsten van kansen. Deze functie fungeert als een vloeiende benadering van de arg max\argmax-functie, waardoor natuurlijke exploratie mogelijk wordt door acties met een lagere voorkeur een niet-nul kans te geven om geselecteerd te worden.

Update-regel

Na het selecteren van een actie AtA_t op tijdstip tt, worden de voorkeurwaarden bijgewerkt volgens de volgende 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}

waarbij:

  • α\alpha de stapgrootte is;
  • RtR_t de ontvangen beloning is;
  • Rˉt\bar R_t het gemiddelde van de tot nu toe waargenomen beloningen is.

Intuïtie

Bij elke tijdstap worden alle voorkeuren enigszins aangepast. De aanpassing hangt voornamelijk af van de ontvangen beloning en het gemiddelde van de beloningen, en kan als volgt worden uitgelegd:

  • Als de ontvangen beloning hoger is dan het gemiddelde, wordt de geselecteerde actie meer geprefereerd en worden andere acties minder geprefereerd;
  • Als de ontvangen beloning lager is dan het gemiddelde, neemt de voorkeur voor de geselecteerde actie af, terwijl de voorkeuren voor andere acties toenemen, wat exploratie stimuleert.

Voorbeeldcode

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)

Aanvullende informatie

Gradient bandits hebben verschillende interessante eigenschappen:

  • Relativiteit van voorkeuren: de absolute waarden van actievoorkeuren beïnvloeden het selectieproces van acties niet — alleen hun relatieve verschillen zijn van belang. Het verschuiven van alle voorkeuren met dezelfde constante (bijvoorbeeld 100 optellen) resulteert in dezelfde kansverdeling;
  • Effect van de baseline in de update-regel: hoewel de updateformule doorgaans het gemiddelde van de beloning als baseline bevat, kan deze waarde worden vervangen door een willekeurige constante die onafhankelijk is van de gekozen actie. De baseline beïnvloedt de snelheid van convergentie, maar verandert de optimale oplossing niet;
  • Invloed van de stapgrootte: de stapgrootte dient te worden afgestemd op de betreffende taak. Een kleinere stapgrootte zorgt voor stabieler leren, terwijl een grotere waarde het leerproces versnelt.

Samenvatting

Gradient bandieten bieden een krachtig alternatief voor traditionele bandietalgoritmen door gebruik te maken van voorkeursgebaseerd leren. Hun meest opvallende kenmerk is het vermogen om op natuurlijke wijze exploratie en exploitatie in balans te brengen.

question mark

Wat is het belangrijkste voordeel van het gebruik van gradient bandieten ten opzichte van traditionele bandietalgoritmen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

course content

Cursusinhoud

Introductie tot Reinforcement Learning

Introductie tot Reinforcement Learning

1. Kernprincipes van RL
2. Multi-Armed Bandit Probleem
3. Dynamisch Programmeren
4. Monte Carlo-Methoden
5. Temporale Verschil Leren

book
Gradientbandietenalgoritme

Bij het werken met multi-armed bandits schatten traditionele methoden zoals epsilon-greedy en UCB actie-waarden om te bepalen welke actie genomen moet worden. Gradient bandits hanteren echter een andere benadering — zij leren voorkeuren voor acties in plaats van hun waarden te schatten. Deze voorkeuren worden in de loop van de tijd aangepast met behulp van stochastische gradient ascent.

Voorkeuren

In plaats van het bijhouden van actie-waarde schattingen Q(a)Q(a), houden gradient bandits voorkeurswaarden H(a)H(a) bij voor elke actie aa. Deze voorkeuren worden bijgewerkt met een stochastische gradient ascent-benadering om de verwachte beloningen te maximaliseren. De kans op het kiezen van een actie wordt berekend met een softmax-functie:

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)

waarbij:

  • Ht(a)H_t(a) de voorkeur is voor actie aa op tijdstip tt;
  • P(At=a)P(A_t = a) de kans is om actie aa te selecteren op tijdstip tt;
  • De noemer zorgt ervoor dat de kansen optellen tot 1.

Softmax is een essentiële functie in ML, vaak gebruikt om lijsten van reële getallen om te zetten in lijsten van kansen. Deze functie fungeert als een vloeiende benadering van de arg max\argmax-functie, waardoor natuurlijke exploratie mogelijk wordt door acties met een lagere voorkeur een niet-nul kans te geven om geselecteerd te worden.

Update-regel

Na het selecteren van een actie AtA_t op tijdstip tt, worden de voorkeurwaarden bijgewerkt volgens de volgende 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}

waarbij:

  • α\alpha de stapgrootte is;
  • RtR_t de ontvangen beloning is;
  • Rˉt\bar R_t het gemiddelde van de tot nu toe waargenomen beloningen is.

Intuïtie

Bij elke tijdstap worden alle voorkeuren enigszins aangepast. De aanpassing hangt voornamelijk af van de ontvangen beloning en het gemiddelde van de beloningen, en kan als volgt worden uitgelegd:

  • Als de ontvangen beloning hoger is dan het gemiddelde, wordt de geselecteerde actie meer geprefereerd en worden andere acties minder geprefereerd;
  • Als de ontvangen beloning lager is dan het gemiddelde, neemt de voorkeur voor de geselecteerde actie af, terwijl de voorkeuren voor andere acties toenemen, wat exploratie stimuleert.

Voorbeeldcode

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)

Aanvullende informatie

Gradient bandits hebben verschillende interessante eigenschappen:

  • Relativiteit van voorkeuren: de absolute waarden van actievoorkeuren beïnvloeden het selectieproces van acties niet — alleen hun relatieve verschillen zijn van belang. Het verschuiven van alle voorkeuren met dezelfde constante (bijvoorbeeld 100 optellen) resulteert in dezelfde kansverdeling;
  • Effect van de baseline in de update-regel: hoewel de updateformule doorgaans het gemiddelde van de beloning als baseline bevat, kan deze waarde worden vervangen door een willekeurige constante die onafhankelijk is van de gekozen actie. De baseline beïnvloedt de snelheid van convergentie, maar verandert de optimale oplossing niet;
  • Invloed van de stapgrootte: de stapgrootte dient te worden afgestemd op de betreffende taak. Een kleinere stapgrootte zorgt voor stabieler leren, terwijl een grotere waarde het leerproces versnelt.

Samenvatting

Gradient bandieten bieden een krachtig alternatief voor traditionele bandietalgoritmen door gebruik te maken van voorkeursgebaseerd leren. Hun meest opvallende kenmerk is het vermogen om op natuurlijke wijze exploratie en exploitatie in balans te brengen.

question mark

Wat is het belangrijkste voordeel van het gebruik van gradient bandieten ten opzichte van traditionele bandietalgoritmen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5
some-alt