Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Algoritmo de Bandidos de Gradiente | Problema del Bandido de Varios Brazos
Introducción al Aprendizaje por Refuerzo
course content

Contenido del Curso

Introducción al Aprendizaje por Refuerzo

Introducción al Aprendizaje por Refuerzo

1. Teoría Central de RL
2. Problema del Bandido de Varios Brazos
3. Programación Dinámica
4. Métodos de Monte Carlo
5. Aprendizaje por Diferencia Temporal

book
Algoritmo de Bandidos de Gradiente

Al tratar con problemas de multi-armed bandits, los métodos tradicionales como epsilon-greedy y UCB estiman los valores de acción para decidir qué acción tomar. Sin embargo, los gradient bandits adoptan un enfoque diferente: aprenden preferencias por las acciones en lugar de estimar sus valores. Estas preferencias se ajustan con el tiempo utilizando ascenso estocástico por gradiente.

Preferencias

En lugar de mantener estimaciones de valor de acción Q(a)Q(a), los gradient bandits mantienen valores de preferencia H(a)H(a) para cada acción aa. Estas preferencias se actualizan utilizando un enfoque de ascenso estocástico por gradiente para maximizar las recompensas esperadas. La probabilidad de cada acción se calcula usando una función softmax:

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)

donde:

  • Ht(a)H_t(a) es la preferencia por la acción aa en el paso de tiempo tt;
  • P(At=a)P(A_t = a) es la probabilidad de seleccionar la acción aa en el paso de tiempo tt;
  • El denominador asegura que las probabilidades sumen 1.

Softmax es una función crucial en ML, utilizada comúnmente para convertir listas de números reales en listas de probabilidades. Esta función actúa como una aproximación suave a la función arg max\argmax, permitiendo una exploración natural al otorgar a las acciones de menor preferencia una probabilidad distinta de cero de ser seleccionadas.

Regla de actualización

Después de seleccionar una acción AtA_t en el tiempo tt, los valores de preferencia se actualizan utilizando la siguiente regla:

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}

donde:

  • α\alpha es el tamaño del paso;
  • RtR_t es la recompensa recibida;
  • Rˉt\bar R_t es la recompensa promedio observada hasta ahora.

Intuición

En cada paso de tiempo, todas las preferencias se ajustan ligeramente. El ajuste depende principalmente de la recompensa recibida y la recompensa promedio, y puede explicarse de la siguiente manera:

  • Si la recompensa recibida es mayor que la promedio, la acción seleccionada se vuelve más preferida y las demás acciones se vuelven menos preferidas;
  • Si la recompensa recibida es menor que la promedio, la preferencia de la acción seleccionada disminuye, mientras que las preferencias de las otras acciones aumentan, fomentando la exploración.

Código de ejemplo

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)

Información adicional

Los gradient bandits presentan varias propiedades interesantes:

  • Relatividad de las preferencias: los valores absolutos de las preferencias de acción no afectan el proceso de selección de acciones; solo importan sus diferencias relativas. Desplazar todas las preferencias por la misma constante (por ejemplo, sumando 100) resulta en la misma distribución de probabilidad;
  • Efecto de la línea base en la regla de actualización: aunque la fórmula de actualización normalmente incluye la recompensa promedio como línea base, este valor puede ser reemplazado por cualquier constante que sea independiente de la acción elegida. La línea base influye en la velocidad de convergencia, pero no altera la solución óptima;
  • Impacto del tamaño del paso: el tamaño del paso debe ajustarse según la tarea. Un tamaño de paso menor asegura un aprendizaje más estable, mientras que un valor mayor acelera el proceso de aprendizaje.

Resumen

Los bandits de gradiente ofrecen una alternativa poderosa a los algoritmos tradicionales de bandit al aprovechar el aprendizaje basado en preferencias. Su característica más interesante es la capacidad de equilibrar de forma natural la exploración y la explotación.

question mark

¿Cuál es la principal ventaja de utilizar bandits de gradiente sobre los algoritmos tradicionales de bandit?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

Introducción al Aprendizaje por Refuerzo

Introducción al Aprendizaje por Refuerzo

1. Teoría Central de RL
2. Problema del Bandido de Varios Brazos
3. Programación Dinámica
4. Métodos de Monte Carlo
5. Aprendizaje por Diferencia Temporal

book
Algoritmo de Bandidos de Gradiente

Al tratar con problemas de multi-armed bandits, los métodos tradicionales como epsilon-greedy y UCB estiman los valores de acción para decidir qué acción tomar. Sin embargo, los gradient bandits adoptan un enfoque diferente: aprenden preferencias por las acciones en lugar de estimar sus valores. Estas preferencias se ajustan con el tiempo utilizando ascenso estocástico por gradiente.

Preferencias

En lugar de mantener estimaciones de valor de acción Q(a)Q(a), los gradient bandits mantienen valores de preferencia H(a)H(a) para cada acción aa. Estas preferencias se actualizan utilizando un enfoque de ascenso estocástico por gradiente para maximizar las recompensas esperadas. La probabilidad de cada acción se calcula usando una función softmax:

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)

donde:

  • Ht(a)H_t(a) es la preferencia por la acción aa en el paso de tiempo tt;
  • P(At=a)P(A_t = a) es la probabilidad de seleccionar la acción aa en el paso de tiempo tt;
  • El denominador asegura que las probabilidades sumen 1.

Softmax es una función crucial en ML, utilizada comúnmente para convertir listas de números reales en listas de probabilidades. Esta función actúa como una aproximación suave a la función arg max\argmax, permitiendo una exploración natural al otorgar a las acciones de menor preferencia una probabilidad distinta de cero de ser seleccionadas.

Regla de actualización

Después de seleccionar una acción AtA_t en el tiempo tt, los valores de preferencia se actualizan utilizando la siguiente regla:

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}

donde:

  • α\alpha es el tamaño del paso;
  • RtR_t es la recompensa recibida;
  • Rˉt\bar R_t es la recompensa promedio observada hasta ahora.

Intuición

En cada paso de tiempo, todas las preferencias se ajustan ligeramente. El ajuste depende principalmente de la recompensa recibida y la recompensa promedio, y puede explicarse de la siguiente manera:

  • Si la recompensa recibida es mayor que la promedio, la acción seleccionada se vuelve más preferida y las demás acciones se vuelven menos preferidas;
  • Si la recompensa recibida es menor que la promedio, la preferencia de la acción seleccionada disminuye, mientras que las preferencias de las otras acciones aumentan, fomentando la exploración.

Código de ejemplo

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)

Información adicional

Los gradient bandits presentan varias propiedades interesantes:

  • Relatividad de las preferencias: los valores absolutos de las preferencias de acción no afectan el proceso de selección de acciones; solo importan sus diferencias relativas. Desplazar todas las preferencias por la misma constante (por ejemplo, sumando 100) resulta en la misma distribución de probabilidad;
  • Efecto de la línea base en la regla de actualización: aunque la fórmula de actualización normalmente incluye la recompensa promedio como línea base, este valor puede ser reemplazado por cualquier constante que sea independiente de la acción elegida. La línea base influye en la velocidad de convergencia, pero no altera la solución óptima;
  • Impacto del tamaño del paso: el tamaño del paso debe ajustarse según la tarea. Un tamaño de paso menor asegura un aprendizaje más estable, mientras que un valor mayor acelera el proceso de aprendizaje.

Resumen

Los bandits de gradiente ofrecen una alternativa poderosa a los algoritmos tradicionales de bandit al aprovechar el aprendizaje basado en preferencias. Su característica más interesante es la capacidad de equilibrar de forma natural la exploración y la explotación.

question mark

¿Cuál es la principal ventaja de utilizar bandits de gradiente sobre los algoritmos tradicionales de bandit?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
some-alt