Ir al contenido principal

Explicación del Teorema del Gradiente Político: Una introducción práctica

Conoce el teorema del gradiente de la política en RL y cómo deducirlo matemáticamente. Implementa un algoritmo basado en gradientes de política para resolver un entorno RL sencillo en Gimnasio.
Actualizado 16 feb 2025  · 15 min de lectura

Los gradientes de política en el aprendizaje por refuerzo (RL) son una clase de algoritmos que optimizan directamente la política del agente estimando el gradiente de la recompensa esperada con respecto a los parámetros de la política. 

En este tutorial, explicamos el teorema del gradiente de la política y su derivación, y mostramos cómo implementar el algoritmo del gradiente de la política utilizando PyTorch. 

¿Qué es el Teorema del Gradiente Político?

En el aprendizaje por refuerzo, la política del agente se refiere al algoritmo que utiliza para decidir su acción basándose en sus observaciones del entorno. El objetivo de los problemas de RL es maximizar las recompensas que obtiene el agente al interactuar con el entorno. La política que da lugar a las máximas recompensas es la política óptima.

Las dos grandes clases de algoritmos utilizados para maximizar los rendimientos son los métodos basados en políticas y los métodos basados en valores:

  • Los métodos basados en políticas, como el algoritmo de gradiente de políticas, aprenden directamente la política óptima aplicando el ascenso de gradiente sobre la recompensa esperada. No se basan en una función de valor. La política se expresa en forma parametrizada. Cuando la política se aplica mediante una red neuronal, los parámetros de la política se refieren a los pesos de la red. La red aprende la política óptima utilizando el ascenso gradiente sobre los parámetros de la política. 
  • Métodos basados en el valorcomo el aprendizaje Q, estiman el valor de los estados o de los pares estado-acción. Derivan la política indirectamente seleccionando las acciones con el valor más alto. La política que conduce a la función de valor óptima se elige como política óptima. Las ecuaciones de Bellman describen las funciones estado-valor y las funciones estado-acción-valor óptimas. 

Según el teorema del gradiente de la política, la derivada de la rentabilidad esperada es la expectativa del producto de la rentabilidad y la derivada del logaritmo de la política (expresada normalmente como una distribución de probabilidad). 

Una política suele modelarse como una función parametrizada. Cuando la política se modela como una red neuronal, los parámetros de la política se refieren a los pesos de la red. Así, calcular el gradiente del rendimiento esperado (recompensas acumuladas) con respecto a los parámetros de la política lleva a actualizar la política para mejorar su rendimiento. Este gradiente puede utilizarse para actualizar iterativamente los parámetros de la política en la dirección que aumente el rendimiento esperado. El entrenamiento debe converger en la política óptima que maximice el rendimiento esperado. 

En secciones posteriores, explicaremos detalladamente este teorema y mostraremos cómo deducirlo.

Desarrollar aplicaciones de IA

Aprende a crear aplicaciones de IA utilizando la API OpenAI.
Empieza a hacer Upskilling gratis

¿Por qué utilizar métodos de gradiente político?

Una ventaja clave de los métodos de gradiente político es su capacidad para manejar espacios de acción complejos, donde los enfoques tradicionales basados en valores tienen dificultades.

Manejo de espacios de acción de alta dimensión

Los métodos basados en el valor, como el aprendizaje Q, funcionan estimando la función de valor para todas las acciones posibles. Esto resulta difícil cuando el espacio de acción del entorno es continuo o discreto pero grande. 

Los métodos de gradiente de la política parametrizan la política y estiman el gradiente de las recompensas acumuladas con respecto alos parámetros de la política. Utilizan este gradiente para optimizar directamente la política actualizando sus parámetros. Por lo tanto, pueden manejar eficazmente espacios de acción de alta dimensión o continuos. Los gradientes de política también son la base de los métodos de Aprendizaje por Refuerzo mediante Retroalimentación Humana (RLHF)

Al parametrizar la política y ajustar sus parámetros basándose en gradientes, los gradientes de la política pueden manejar eficazmente acciones continuas y de alta dimensión. Este enfoque directo permite una mejor generalización y una exploración más flexible, por lo que es muy adecuado para tareas como el control robótico y otros entornos complejos.

Aprendizaje de políticas estocásticas

Dado un conjunto de observaciones: 

  • Una política determinista especifica qué acción realiza el agente. 
  • Una política estocástica da un conjunto de acciones y la probabilidad de que el agente elija cada acción. 

Cuando se sigue una política estocástica, la misma observación puede llevar a elegir acciones diferentes en iteraciones distintas. Esto favorece la exploración del espacio de acción y evita que la política se estanque en óptimos locales. Por ello, las políticas estocásticas son útiles en entornos en los que la exploración es esencial para descubrir el camino que conduce a los máximos rendimientos. 

En los métodos basados en políticas, el resultado de la política se convierte en una distribución de probabilidad, asignando una probabilidad a cada acción posible. El agente elige una acción muestreando esta distribución, lo que permite aplicar una política estocástica. Así, los métodos de gradiente político combinan la exploración con la explotación, lo que resulta útil en entornos con estructuras de recompensa complejas. 

Derivación del Teorema del Gradiente Político

Antes de entrar en la derivación, es importante establecer la notación matemática y los conceptos clave utilizados a lo largo de la demostración.

Notación matemática y preliminares

Como se ha mencionado en un apartado anterior, el teorema del gradiente de la política afirma que la derivada del rendimiento esperado es la expectativa del producto del rendimiento y la derivada del logaritmo de la política. 

Antes de derivar el teorema del gradiente de la política, introducimos la notación:

  • E[X] se refiere a la expectativa probabilística de una variable aleatoria X.
  • Matemáticamente, la política se expresa como una matriz de probabilidades que da la probabilidad de elegir distintas acciones en función de distintas observaciones. Una política se modela típicamente como una función parametrizada, con los parámetros representados como θ.
    • πθ se refiere a una política parametrizada por θ. En la práctica, estos parámetros son los pesos de la red neuronal que modela la política. 
  • La trayectoria, τse refiere a una secuencia de estados, que suele partir de un estado inicial aleatorio hasta el paso de tiempo actual o el estado terminal.
  • θf se refiere al gradiente de una función f respecto al parámetro(s) θ.
  • J(πθ) se refiere a la rentabilidad esperada obtenida por el agente siguiendo la política πθ. Ésta es también la función objetivo del ascenso gradiente. 
  • El entorno da una recompensa en cada paso temporal, en función de la acción del agente. El retorno se refiere a las recompensas acumuladas desde el estado inicial hasta el paso de tiempo actual. 
    • R(τ) se refiere al rendimiento generado a lo largo de la trayectoria τ.

Pasos de la derivación

Mostramos cómo deducir y demostrar el teorema del gradiente de la política a partir de los primeros principios, empezando por la expansión de la función objetivo y utilizando el truco de la derivada logarítmica. 

La función objetivo (Ecuación 1)

La función objetivo en el método del gradiente de la política es el rendimiento 

J acumulada siguiendo la trayectoria basada en la política π expresada en términos de parámetros θ. Esta función objetivo viene dada como 

En la ecuación anterior: 

  • El lado izquierdo (LHS) es la rentabilidad esperada obtenida siguiendo la política πθ.
  • El lado derecho (RHS) es la expectativa (sobre la trayectoria τ generada al seguir la política πθ en cada paso) de los rendimientos R(τ) generados sobre la trayectoria τ.

El diferencial de la función objetivo (ecuación 2)

Diferenciando (con respecto a θ) ambos lados de la ecuación anterior da:

El gradiente de la expectativa (Ecuación 3)

La expectativa (en el lado derecho) puede expresarse como una integral sobre el producto de: 

  • La probabilidad de seguir una trayectoria τ
  • Los rendimientos generados a lo largo de la trayectoria τ

Así pues, el lado derecho de la ecuación 2 se replantea como: 

El gradiente de una integral es igual a la integral del gradiente. Así, en la expresión anterior, podemos llevar el gradiente θ bajo el signo de la integral. Por tanto, la RHS se convierte en: 

Así, la ecuación 2 puede reescribirse como:

La probabilidad de la trayectoria (ecuación 4)

Ahora examinamos más detenidamente P(τ|θ), la probabilidad de que el agente siga la trayectoria τ dados los parámetros de la política θ (y, por tanto, la política πθ). Una trayectoria consiste en un conjunto de pasos. Así: 

  • La probabilidad de obtener la trayectoria τ es el producto de
    • La probabilidad de seguir todos los pasos individuales. 

  • En el paso de tiempo tel agente pasa del estado s al estado st+1 siguiendo la acción at. La probabilidad de que esto ocurra viene dada por el producto de:
    • La probabilidad de que la política prediga una acción at en el estado st
    • La probabilidad de acabar en el estado st+1 dada la acción at y el estado st

Así, partiendo de un estado inicial s0la probabilidad de que el agente siga la trayectoria τ según la política πθ viene dada como

Para simplificar las cosas, queremos expresar el producto en el RHS anterior como una suma. Por tanto, tomamos el logaritmo de ambos lados de la ecuación anterior:

 

La derivada de la probabilidad logarítmica (ecuación 5) 

Tomamos ahora la derivada (respecto a θ) de la probabilidad logarítmica en la ecuación anterior.

En el lado derecho de la ecuación anterior: 

  • El primer término log ρ0(s0) es constante con respecto a θ. Por tanto, su derivada es 0. 
  • El primer término dentro de la suma P(st+1|st, at) también es independiente de θ y su derivada respecto a θ también es 0.

Eliminando los términos cero anteriores de la ecuación, nos queda (Ecuación 5): 

Recuerda de la ecuación 2 que 

La ecuación 5 evalúa el logaritmo de la primera parte del lado derecho de la ecuación 2. Necesitamos relacionar la derivada de un término con su logaritmo. Para ello utilizamos la regla de la cadena y el truco de la derivada logarítmica. 

El truco de la derivada logarítmica

Damos un rodeo y utilizamos las reglas del cálculo para deducir un resultado, que utilizaremos para simplificar la ecuación anterior y hacerla apta para los métodos computacionales. 

En cálculo, la derivada de un logaritmo puede expresarse como: 

Así, reordenando la ecuación anterior, la derivada de x puede expresarse en términos de la derivada del logaritmo de x:

Esto se llama a veces el truco del logaritmo-derivado. 

La regla de la cadena

Según la regla de la cadena, dada z(y) en función de ydonde y es una función de θ, y(θ)la derivada de z con respecto a θ viene dada como

En este caso y(θ) representa P(θ) y z(y) representa log(y). Así, 

Aplicación de la regla de la cadena

Sabemos por cálculo que d(log(y)) / dy = 1/y. Utilízalo en la primera expresión de la RHS anterior. 

Mueve y al LHS y utiliza la notación:

y representa P(θ). Por tanto, la ecuación anterior equivale a 

Aplicando el truco de la derivada logarítmica

El resultado anterior da la primera expresión del lado derecho de la ecuación 2 (mostrada a continuación).  

Utilizando el resultado del lado derecho de la ecuación 2, obtenemos: 

Reordenamos los términos bajo la integral RHS como se indica a continuación:

Obtención del resultado final

Observa que la expresión anterior contiene la expansión integral de una expectativa: P(θ)∇logP(θ) = E[∇logP(θ)].

Por lo tanto, el RHS anterior puede expresarse como la expectativa: 

Sustituimos la derivada de la probabilidad logarítmica en la expresión de la recompensa esperada: 

En la ecuación anterior, sustituye el valor de logP(θ) de la Ecuación 5 para obtener

Esta es la expresión del gradiente de la función de recompensa según el teorema del gradiente de la política. 

La intuición del gradiente político

Los métodos de gradiente de la política convierten el resultado de la política en una distribución de probabilidad. El agente muestrea esta distribución para elegir una acción. Los métodos de gradiente de la política ajustan los parámetros de la política. Esto lleva a actualizar esta distribución de probabilidad en cada iteración. La distribución de probabilidad actualizada tiene una mayor probabilidad de elegir acciones que conducen a mayores recompensas. 

El algoritmo del gradiente de la política calcula el gradiente del rendimiento esperado con respecto a los parámetros de la política. Moviendo los parámetros de la política en la dirección de este gradiente, el agente aumenta la probabilidad de elegir acciones que den lugar a mayores recompensas durante el entrenamiento. 

Esencialmente, las acciones que condujeron a mejores resultados tienen más probabilidades de ser elegidas en el futuro, mejorando gradualmente la política para maximizar las recompensas a largo plazo.

Implementar gradientes de política en Python

Una vez discutidos los principios fundamentales de los gradientes políticos, mostramos cómo ponerlos en práctica utilizando PyTorch y Gymnasium. 

Configurar el entorno

Como primer paso, necesitamos instalar gymnasium y algunas bibliotecas de apoyo como NumPy y PyTorch.

Para instalar gymnasium y sus dependencias en un servidor o máquina local, ejecuta

$ pip install gymnasium 

Para instalarlo utilizando un bloc de notas como Google Colab o DataLab, utiliza 

!pip install gymnasium

Importas estos paquetes dentro del entorno Python:

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torch.distributions as distributions
import numpy as np
import gymnasium as gym  

Codificación de un agente de gradiente de política simple

Crea una instancia del entorno utilizando el método .make().

env = gym.make('CartPole-v1')

Al igual que con otros métodos de aprendizaje automático, utilizamos una red neuronal para aplicar el agente de gradiente de la política. 

CartPole-v1 es un entorno sencillo, por lo que diseñamos una red sencilla con 1 capa oculta con 64 neuronas. La dimensión de la capa de entrada es igual a las dimensiones del espacio de observación. La dimensión de la capa de salida es igual al tamaño del espacio de acción del entorno. Así, la red política asigna los estados observados a las acciones. Dada una observación como entrada, la red emite la acción prevista según la política. 

El código siguiente implementa la red de políticas: 

class PolicyNetwork(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, dropout):
        super().__init__()

        self.layer1 = nn.Linear(input_dim, hidden_dim)
        self.layer2 = nn.Linear(hidden_dim, output_dim)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x):
        x = self.layer1(x)
        x = self.dropout(x)
        x = F.relu(x)
        x = self.layer2(x)
        return x

Formación del agente

El entorno da una recompensa en cada paso de tiempo en función del estado y la acción del agente. El enfoque de gradiente de la política consiste en ejecutar el descenso de gradiente sobre las recompensas acumuladas (retorno). El objetivo es maximizar el rendimiento total. 

Para calcular el rendimiento en un episodio, acumulas (con un factor de descuento) las recompensas de todos los pasos temporales de ese episodio. Además, normalizar los rendimientos es útil para garantizar un entrenamiento suave y estable. El código siguiente muestra cómo hacerlo:

def calculate_stepwise_returns(rewards, discount_factor):
    returns = []
    R = 0

    for r in reversed(rewards):
        R = r + R * discount_factor
        returns.insert(0, R)
    returns = torch.tensor(returns)
    normalized_returns = (returns - returns.mean()) / returns.std()
    return normalized_returns

En cada iteración del paso adelante, realizamos los siguientes pasos: 

  • Ejecuta el agente basándote en la política actual mediante la función .step(). La política predice la probabilidad de realizar la acción elegida en cada paso temporal.
  • Recibir la recompensa del entorno en función de la acción del agente.
  • Acumula recompensas escalonadas y las probabilidades logarítmicas de las acciones hasta que el agente alcance un estado terminal.

El código siguiente implementa el pase hacia delante:

def forward_pass(env, policy, discount_factor):
    log_prob_actions = []
    rewards = []
    done = False
    episode_return = 0

    policy.train()
    observation, info = env.reset()

    while not done:
        observation = torch.FloatTensor(observation).unsqueeze(0)
        action_pred = policy(observation)
        action_prob = F.softmax(action_pred, dim = -1)
        dist = distributions.Categorical(action_prob)
        action = dist.sample()
        log_prob_action = dist.log_prob(action)

        observation, reward, terminated, truncated, info = env.step(action.item())
        done = terminated or truncated

        log_prob_actions.append(log_prob_action)
        rewards.append(reward)
        episode_return += reward

    log_prob_actions = torch.cat(log_prob_actions)
    stepwise_returns = calculate_stepwise_returns(rewards, discount_factor)

    return episode_return, stepwise_returns, log_prob_actions

Utilizar la retropropagación y el ascenso gradiente para actualizar la política

En el aprendizaje automático tradicional:

  • La pérdida se refiere a la diferencia entre la producción prevista y la real. 
  • Minimizamos la pérdida mediante el descenso gradiente.

In RL:

  • La pérdida es una aproximación a la cantidad sobre la que se va a aplicar el descenso (o ascenso) de gradiente
  • Maximizamos el rendimiento (recompensas acumuladas) mediante el ascenso gradiente.
  • El valor de retorno esperado se utiliza como sustituto de la pérdida para el descenso por gradiente. El valor de retorno esperado es el producto de:
    • Los rendimientos esperados de cada paso con 
    • La probabilidad de elegir la acción muestreada en cada paso. 
  • Para aplicar el ascenso gradiente mediante retropropagación, utilizamos el negativo de la pérdida. 

El código siguiente calcula la pérdida:

def calculate_loss(stepwise_returns, log_prob_actions):
    loss = -(stepwise_returns * log_prob_actions).sum()
    return loss

De forma similar a los algoritmos estándar de aprendizaje automático, para actualizar la política, ejecutas la retropropagación con respecto a la función de pérdida. El siguiente método update_policy() invoca al método calculate_loss(). A continuación, ejecuta la retropropagación sobre esta pérdida para actualizar los parámetros de la política, es decir, los pesos del modelo de la red política. 

def update_policy(stepwise_returns, log_prob_actions, optimizer):
    stepwise_returns = stepwise_returns.detach()
    loss = calculate_loss(stepwise_returns, log_prob_actions)
    
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    return loss.item()

El bucle de entrenamiento 

Utilizamos las funciones definidas anteriormente para entrenar la política. Antes de empezar la formación, necesitamos 

  • Una política no entrenada inicializada como una instancia aleatoria de la clase PolicyNetwork. 
  • Un optimizador que utiliza el algoritmo Adam. 
  • Hiperparámetros para el factor de descuento, la tasa de aprendizaje, la tasa de abandono, el umbral de recompensa y el número máximo de épocas de entrenamiento. 

Iteramos por el bucle de entrenamiento hasta que el rendimiento medio supere el umbral de recompensa. En cada iteración, ejecutamos los siguientes pasos: 

  • Para cada episodio, ejecuta el paso adelante una vez. Recoge la probabilidad logarítmica de las acciones, los rendimientos escalonados y el rendimiento total de ese episodio. Acumula los rendimientos episódicos en una matriz. 
  • Calcula la pérdida utilizando las probabilidades logarítmicas y los retornos escalonados. Ejecuta la retropropagación sobre la pérdida. Utiliza el optimizador para actualizar los parámetros de la política. 
  • Comprueba si la rentabilidad media en N_TRIALS supera el umbral de recompensa .

El código siguiente implementa estos pasos:

def main(): 
    MAX_EPOCHS = 500
    DISCOUNT_FACTOR = 0.99
    N_TRIALS = 25
    REWARD_THRESHOLD = 475
    PRINT_INTERVAL = 10
    INPUT_DIM = env.observation_space.shape[0]
    HIDDEN_DIM = 128
    OUTPUT_DIM = env.action_space.n
    DROPOUT = 0.5

    episode_returns = []

    policy = PolicyNetwork(INPUT_DIM, HIDDEN_DIM, OUTPUT_DIM, DROPOUT)

    LEARNING_RATE = 0.01
    optimizer = optim.Adam(policy.parameters(), lr = LEARNING_RATE)

    for episode in range(1, MAX_EPOCHS+1):
        episode_return, stepwise_returns, log_prob_actions = forward_pass(env, policy, DISCOUNT_FACTOR)
        _ = update_policy(stepwise_returns, log_prob_actions, optimizer)

        episode_returns.append(episode_return)
        mean_episode_return = np.mean(episode_returns[-N_TRIALS:])

        if episode % PRINT_INTERVAL == 0:
            print(f'| Episode: {episode:3} | Mean Rewards: {mean_episode_return:5.1f} |')

        if mean_episode_return >= REWARD_THRESHOLD:
            print(f'Reached reward threshold in {episode} episodes')
            break

Ejecuta el programa de entrenamiento llamando a la función main():

main()

Este cuaderno DataLab contienens la implementación anterior del algoritmo de gradiente de la política. Puedes ejecutarlo directamente o utilizarlo como punto de partida para modificar el algoritmo.

Obtén una certificación superior en IA

Demuestra que puedes utilizar la IA de forma eficaz y responsable.

Ventajas y retos de los métodos de gradiente político

Los métodos de gradiente político ofrecen varias ventajas, como:

  • Manejo de espacios de acción continua: Los métodos basados en valores (como el aprendizaje Q) son ineficaces con espacios de acción continuos, porque necesitan estimar valores en todo el espacio de acción. Los métodos de gradiente de la política pueden optimizar directamente la política utilizando el gradiente de los rendimientos esperados. Este enfoque funciona bien con distribuciones de acción continuas. Así, los métodos de gradiente de política son adecuados para tareas como el control robótico, que se basan en espacios de acción continuos.
  • Políticas estocásticas: Los métodos de gradiente de política pueden aprender políticas estocásticas, que dan una probabilidad de seleccionar cada acción posible. Esto permite al agente probar diversas acciones y reduce el riesgo de quedarse atascado en óptimos locales. Ayuda en entornos complejos en los que el agente necesita explorar el espacio de acción para encontrar la política óptima. La naturaleza estocástica ayuda a equilibrar la exploración (probar nuevas acciones) y la explotación (elegir las acciones más conocidas), lo que es crucial para entornos con incertidumbre o recompensas escasas.
  • Optimización directa de la política: Los gradientes de política optimizan la política directamente en lugar de utilizar funciones de valor. En espacios de acción continuos o de alta dimensión, aproximar los valores de cada acción puede resultar costoso desde el punto de vista informático. Por tanto, los métodos basados en políticas funcionan bien en esos entornos. 

A pesar de sus muchas ventajas, los métodos de gradiente político tienen algunos retos inherentes:

  • Elevada varianza en las estimaciones del gradiente: Los métodos de gradiente de política seleccionan las acciones mediante el muestreo de una distribución de probabilidad. En efecto, muestrean la trayectoria para estimar el rendimiento esperado. Como el proceso de muestreo es intrínsecamente aleatorio, los rendimientos estimados en iteraciones posteriores pueden tener una varianza elevada. Esto puede dificultar que el agente aprenda eficazmente, porque las actualizaciones de la política pueden fluctuar significativamente entre iteraciones. 
  • Inestabilidad durante el entrenamiento:
    • Los métodos de gradiente político son sensibles a hiperparámetros como el. Si la tasa de aprendizaje es demasiado alta, las actualizaciones de los parámetros de la política pueden ser demasiado grandes, haciendo que el entrenamiento no alcance los parámetros óptimos. Por otra parte, si la tasa de aprendizaje es demasiado pequeña, la convergencia puede ser lenta. 
    • Los métodos de gradiente político deben equilibrar la exploración y la explotación. Si el agente no explora lo suficiente, puede que no llegue a la vecindad de la política óptima. Por el contrario, si explora demasiado, no convergerá en la política óptima y oscilará alrededor del espacio de acción. 
  • Muestra de ineficacia: Los métodos de gradiente de política estiman el rendimiento siguiendo cada política hasta su finalización y acumulando las recompensas de cada paso. Por tanto, necesitan muchas interacciones con el entorno para dibujar un gran número de trayectorias de muestra. Esto es ineficaz y caro para entornos con grandes espacios de estados o acciones. 

Soluciones para la estabilidad

Dado que la inestabilidad es un problema relativamente común en los métodos de gradiente político, los desarrolladores han adoptado diversas soluciones para estabilizar el proceso de entrenamiento. A continuación, presentamos soluciones comunes para estabilizar el entrenamiento utilizando gradientes de política: 

Utilizar funciones de línea de base

Debido a un muestreo ineficaz, los gradientes de los retornos estimados durante las iteraciones de entrenamiento pueden tener una varianza elevada, lo que hace que el entrenamiento sea inestable y lento. Un enfoque habitual para reducir la varianza consiste en utilizar funciones de base, como el método Actor-Crítico de Ventaja (A2C). La idea es utilizar un sustituto (la función de ventaja) en lugar del rendimiento estimado para la función objetivo. 

La ventaja se calcula como la diferencia entre el rendimiento real de la trayectoria muestreada y el rendimiento esperado dado el estado inicial. Este enfoque implica utilizar la función de valor como valor esperado de los estados y pares estado-acción. Al representar la pérdida como la diferencia entre el rendimiento real y el rendimiento esperado, en lugar de como los rendimientos por sí solos, la A2C reduce la varianza en la función de pérdida y, por tanto, en los gradientes, haciendo que el entrenamiento sea más estable. 

Utilizar la regularización entrópica

En determinados entornos, como los que tienen recompensas dispersas (sólo muy pocos estados dan una recompensa), la política adopta rápidamente un enfoque determinista. También adopta un enfoque codicioso y explota los caminos que ya ha explorado. Esto impide seguir explorando y a menudo conduce a la convergencia a óptimos locales y a políticas subóptimas. 

La solución es fomentar la exploración sobre la penalización de la política cuando se vuelve demasiado determinista. Esto se hace añadiendo un término basado en la entropía a la función objetivo. La entropía mide la cantidad de aleatoriedad de la política. Cuanto mayor sea la entropía, mayor será la aleatoriedad en las acciones elegidas por el agente. Este término basado en la entropía es el producto del coeficiente de entropía y la entropía de la política actual. 

Hacer que la entropía forme parte de la función objetivo ayuda a conseguir un equilibrio entre explotación y exploración. 

Extensiones del Gradiente de Política

Entre las diversas extensiones de los métodos de gradiente político, una de las más fundamentales es el algoritmo REINFORCE. Proporciona una aplicación directa del teorema del gradiente político y es la base de técnicas más avanzadas.

Algoritmo REINFORCE

El algoritmo REINFORCE, también conocido como Monte Carlo Reinforce, es una de las implementaciones básicas del teorema del gradiente de la política. Utiliza métodos de Montecarlo para estimar los rendimientos y los gradientes de las políticas. Cuando se sigue el algoritmo REINFORCE, el agente muestrea directamente todas las acciones (desde el estado inicial hasta el estado terminal) del entorno. Esto contrasta con otros métodos como el Aprendizaje TD y la Programación Dinámica, que basan sus acciones en estimaciones de la función de valor. 

A continuación, presentamos los pasos básicos del algoritmo REINFORCE:

  • Inicializa la política con parámetros aleatorios
  • Repite varios episodios de entrenamiento. Para cada episodio: 
    • Genera cada paso del episodio completo como se indica a continuación: 
      • Pasa el estado a la función política. 
      • La función política genera probabilidades para cada acción posible.
      • Toma una muestra aleatoria de una acción de esta distribución de probabilidad.
    • Para cada estado del episodio, estima los rendimientos (recompensas acumuladas descontadas) hasta el paso.
    • Estima el gradiente de la función objetivo (según el teorema del gradiente de la política), expresado como el producto de los rendimientos escalonados y las probabilidades de acción de cada escalón. 
    • Actualiza los parámetros de la política aplicando los gradientes

Para cada política, puedes muestrear una sola trayectoria para estimar el gradiente (como se muestra arriba) o promediar el gradiente de varias trayectorias muestreadas con la misma política. 

Métodos crítico-actores

Los métodos actor-críticos combinan métodos de gradiente de políticas (como REINFORCE) con funciones de valor.

  • El funcionamiento del actor es similar al de los métodos de gradiente político. El actor aplica la política, seleccionando acciones en cada paso en función de la política. Actualiza la política siguiendo el gradiente del rendimiento esperado. 
  • El crítico implementa la función de valor, que se utiliza como línea de base (comentada en el apartado anterior). Esto ayuda a que el entrenamiento sea más eficaz y estable. 

Los métodos de gradiente político como REINFORCE estiman los gradientes a lo largo de cada trayectoria utilizando el retorno bruto. Como un proceso de muestreo dibuja estas trayectorias, puede dar lugar a grandes variaciones en los rendimientos y gradientes. Utilizar una función de ventaja en lugar de los retornos brutos resuelve este problema. La función de ventaja es la diferencia entre el rendimiento real y el esperado (es decir, la función de valor). Los métodos actor-críticos son una clase de algoritmos. Cuando el crítico se implementa utilizando la función de ventaja (el enfoque más habitual), también se denomina Actor-Crítico de Ventaja (A2C). 

Optimización de la Política Próxima (OPP)

En entornos complejos, los métodos actor-críticos como el A2C no bastan por sí solos para controlar la varianza de los rendimientos y los gradientes. En estos casos, restringir artificialmente la cantidad en que puede cambiar la política en cada iteración ayuda. Esto obliga a la política actualizada (tras el ascenso gradiente) a situarse en la vecindad de la política antigua. 

Los métodos como la Optimización de la Política Próxima realizan dos modificaciones en los gradientes de la política:

  • Utiliza una función de ventaja. Normalmente, esta función de ventaja utiliza la función de valor como línea de base. En esto, son similares a los métodos A2C. 
  • Restringe la cantidad en que pueden cambiar los parámetros de la política en cada iteración. Para ello se utiliza una función objetivo sustitutiva recortada. El algoritmo especifica un intervalo dentro del cual debe estar la relación entre la nueva política y la antigua. Cuando la relación (tras la actualización del gradiente) supera estos valores predeterminados, se recorta para que quede dentro del intervalo. 

Así pues, la OPP mejora significativamente los métodos de gradiente de la política de vainilla, lo que mejora la estabilidad en entornos complejos. La función objetivo recortada evita que las grandes variaciones en los rendimientos y gradientes desestabilicen las actualizaciones de la política. Para lograr un equilibrio entre exploración y explotación, también es posible modificar la OPP para que utilice la regularización de entropía. Esto se hace añadiendo un término de entropía (un parámetro de escala multiplicado por la entropía de la política) a la función objetivo. 

Avances recientes

Los gradientes políticos se encuentran entre los primeros métodos utilizados para resolver problemas de RL. Tras la llegada de las GPU rápidas, se han propuesto varios enfoques nuevos para aplicar las técnicas modernas de ML a los gradientes de las políticas. 

Aprendizaje por refuerzo con refuerzo gradual 

En los últimos años, se ha avanzado en la aplicación de métodos como el refuerzo de gradiente a los algoritmos de RL. El refuerzo de gradiente combina las predicciones de múltiples modelos débiles para generar un único modelo fuerte. Es lo que se denomina Aprendizaje por Refuerzo de Gradiente (GBRL). GBRL es un paquete Python similar a XGBoost que implementa estas técnicas para algoritmos RL.

Aprendizaje por Refuerzo de Transferencia 

El aprendizaje por transferencia (TL) es una técnica en la que los conocimientos adquiridos por un modelo se aplican para mejorar el rendimiento de otro modelo. El aprendizaje por transferencia es útil porque entrenar modelos ML desde cero es caro. Los enfoques TL se han utilizado con gradientes de política para mejorar el rendimiento de los modelos RL. Este enfoque se denomina Aprendizaje por Transferencia de Refuerzo (TRL). 

Conclusión

Los gradientes políticos se encuentran entre los enfoques más fundamentales para resolver los problemas de RL.

 En este artículo, presentamos los primeros principios de los gradientes políticos y mostramos cómo deducir el teorema del gradiente político. También demostramos cómo implementar un algoritmo sencillo basado en el gradiente utilizando PyTorch en un entorno Gymnasium. Por último, debatimos los retos prácticos y las ampliaciones habituales del algoritmo básico de gradiente de política.

Si quieres profundizar en el aprendizaje por refuerzo y el aprendizaje profundo con PyTorch, consulta estos cursos:


Arun Nanda's photo
Author
Arun Nanda
LinkedIn

Arun es un antiguo fundador de startups que disfruta construyendo cosas nuevas. Actualmente explora los fundamentos técnicos y matemáticos de la Inteligencia Artificial. Le encanta compartir lo que ha aprendido, así que escribe sobre ello.

Además de en DataCamp, puedes leer sus publicaciones en Medium, Airbyte y Vultr.

Temas

Aprende más sobre IA con estos cursos

Curso

Conceptos de la IA generativa

2 h
82.3K
Aprovecha la IA generativa con responsabilidad, aprende cómo se desarrollan estos modelos de IA y cómo afectarán a la sociedad en el futuro.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

¿Qué es un modelo generativo?

Los modelos generativos utilizan el machine learning para descubrir patrones en los datos y generar datos nuevos. Conoce su importancia y sus aplicaciones en la IA.
Abid Ali Awan's photo

Abid Ali Awan

11 min

Tutorial

Introducción al Q-Learning: Tutorial para principiantes

Conozca el algoritmo de aprendizaje por refuerzo sin modelos más popular con un tutorial de Python.
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Tutorial del Optimizador Adam: Intuición e implementación en Python

Comprender y aplicar el optimizador Adam en Python. Aprende la intuición, las matemáticas y las aplicaciones prácticas del aprendizaje automático con PyTorch
Bex Tuychiev's photo

Bex Tuychiev

Python

Tutorial

Comprender la regresión logística en el tutorial de Python

Aprende sobre la regresión logística, sus propiedades básicas, y construye un modelo de machine learning sobre una aplicación del mundo real en Python.
Avinash Navlani's photo

Avinash Navlani

Tutorial

Comprender la deriva de los datos y la deriva de los modelos: Detección de deriva en Python

Navegue por los peligros de la deriva de modelos y explore nuestra guía práctica para la supervisión de la deriva de datos.
Moez Ali's photo

Moez Ali

Tutorial

Ajuste fino de GPT-3 mediante la API OpenAI y Python

Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Zoumana Keita 's photo

Zoumana Keita

Ver másVer más