Saltar al contenido
Aprendizaje por Refuerzo con Python

Técnicas de exploración y explotación en Aprendizaje por Refuerzo

Introducción

En el Aprendizaje por Reforzamiento

En el Aprendizaje por Reforzamiento, un agente aprende a tomar acciones en un ambiente de forma autónoma, maximizando su recompensa a lo largo del tiempo. El agente se enfrenta a un dilema entre tomar una acción que conoce que es buena (explotar) y tomar acciones que no ha probado antes pero que podrían ser aún mejores (explorar). Para resolver este problema, se usan técnicas de exploración y explotación.

Exploración

La exploración se refiere a la toma de decisiones que lleven a conocer nuevas acciones y recompensas. Para ello, el agente puede tratar de buscar nuevas rutas en el espacio de acciones, elegir al azar entre diferentes acciones, o también basarse en modelos de predicción inciertos.

Explotación

Por otro lado, la explotación toma en cuenta lo aprendido anteriormente y toma decisiones basadas en conocimientos previos. Esta técnica busca maximizar las recompensas en base a lo que se ha aprendido previamente.

Equilibrio óptimo

Para encontrar el equilibrio óptimo entre explotar y explorar, se deben usar técnicas que optimicen ambos procesos. Las probabilidades de exploración y explotación dependen de la estrategia y del entorno específico en el que se encuentra el agente. El diseño de estas estrategias y la mejora de las mismas han sido objeto de investigación y desarrollo en Aprendizaje por Reforzamiento.

Resumen

En el Aprendizaje por Refuerzo

En el Aprendizaje por Refuerzo, las técnicas de exploración y explotación son fundamentales para lograr que el agente de aprendizaje descubra y aprenda la mejor estrategia o política de acción para un problema específico.

Exploración

La exploración se refiere a la selección de acciones que el agente no ha probado previamente en el entorno de aprendizaje. Si el agente solo selecciona acciones que ha tomado en el pasado, es posible que nunca descubra una mejor estrategia. La exploración permite al agente aprender acerca de las consecuencias de las acciones que no ha tomado y así descubrir nuevas y potencialmente mejores políticas.

Explotación

Por otro lado, la explotación se refiere a la selección de acciones que el agente ha probado previamente y que han producido un alto valor de recompensa en el pasado. La explotación es importante porque permite al agente utilizar su conocimiento previo para tomar decisiones que tienen altas probabilidades de producir recompensas en el futuro.

Equilibrio adecuado

En general, el desafío en el Aprendizaje por Refuerzo es encontrar el equilibrio adecuado entre la exploración y la explotación, ya que tanto la selección de acciones totalmente al azar como la selección puramente basada en conocimiento previo pueden ser subóptimas.

Técnicas

Existen varias técnicas para implementar la exploración y la explotación, tales como la política ε-greedy, softmax, UCB1 y Thompson sampling, por nombrar algunas. Estas técnicas se utilizan para construir políticas de selección de acciones más equilibradas y para mejorar el desempeño general del agente en el entorno de aprendizaje.

Aplicación teórica

Aplicación de Técnicas de Exploración y Explotación en un Robot Recolector de Manzanas

Imaginemos que tenemos un robot encargado de recolectar manzanas en un huerto. El huerto tiene muchos árboles y cada árbol tiene diferentes cantidades de manzanas. Para que el robot pueda recolectar todas las manzanas de forma eficiente, podemos aplicar técnicas de exploración y explotación.

Exploración inicial

Al principio, podemos utilizar una estrategia de exploración en la que el robot se mueve alrededor del huerto de forma aleatoria, recolectando manzanas de los árboles que no ha visitado antes. Esto ayuda al robot a explorar el entorno y obtener una idea general de la cantidad de manzanas disponibles en cada árbol.

Explotación precisa

Luego, podemos aplicar una estrategia de explotación más precisa, en la que el robot se concentra en recolectar manzanas de los árboles que tienen más manzanas. Esta estrategia permite al robot recolectar la mayor cantidad de manzanas en el menor tiempo posible, maximizando así la recompensa que recibe por su tarea.

Importancia en el Aprendizaje por Refuerzo

En resumen, las técnicas de exploración y explotación son importantes en el Aprendizaje por Refuerzo, ya que permiten a los agentes encontrar un equilibrio entre explorar el entorno en busca de nuevas oportunidades y explotar las acciones que han demostrado ser efectivas en el pasado.

Aplicación práctica

Una técnica común para la exploración y explotación en Aprendizaje por Refuerzo es la política epsilon-greedy.

Esta técnica es bastante sencilla, consiste en seleccionar la acción óptima (en base a lo que se ha aprendido hasta el momento) con una probabilidad alta (1-epsilon) y seleccionar una acción aleatoria con una probabilidad baja (epsilon).

Aquí te dejo un código en Python que implementa esta técnica en un entorno de RL:


import random

def epsilon_greedy(q_table, state, epsilon):
    if random.uniform(0, 1) < epsilon:
        # selecciona una acción aleatoria
        return random.randint(0, len(q_table[state]) - 1)
    else:
        # selecciona la acción óptima
        return q_table[state].index(max(q_table[state]))

# ejemplo de uso
q_table = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
state = 0  # estado actual del agente
epsilon = 0.1  # probabilidad de exploración
action = epsilon_greedy(q_table, state, epsilon)
print(action)  # imprimirá la acción seleccionada por la política epsilon-greedy
    

En este ejemplo, el agente se encuentra en el estado 0 y tiene un Q-table (tabla Q) que indica la acción óptima en función del estado en el que se encuentra. La función epsilon_greedy selecciona la acción óptima con una probabilidad de 1-epsilon y una acción aleatoria con una probabilidad de epsilon, y devuelve la acción seleccionada. En este caso, la acción seleccionada se imprime en la última línea del código.