Copyright 2021 Los autores de TF-Agents.
Ver en TensorFlow.org | Ejecutar en Google Colab | Ver fuente en GitHub | Descargar cuaderno |
Introducción
Multi-Armed Bandit (MAB) es un marco de aprendizaje automático en el que un agente tiene que seleccionar acciones (armas) para maximizar su recompensa acumulativa a largo plazo. En cada ronda, el agente recibe información sobre el estado actual (contexto), luego elige una acción basada en esta información y la experiencia acumulada en rondas anteriores. Al final de cada ronda, el agente recibe la recompensa asociada con la acción elegida.
Quizás el ejemplo más puro es el problema que prestó su nombre al MAB: Imaginemos que nos encontramos ante k
máquinas tragaperras (máquinas tragaperras), y tenemos que averiguar cuál tiene el mejor pago, sin perder demasiado dinero.
Probar cada máquina una vez y luego elegir la que pagó más no sería una buena estrategia: el agente podría caer en la elección de una máquina que tuvo un resultado afortunado al principio pero que no es óptima en general. En cambio, el agente debe volver repetidamente a elegir máquinas que no se vean tan bien, para recopilar más información sobre ellas. Este es el principal desafío en Multi-Armed Bandits: el agente tiene que encontrar la combinación adecuada entre explotar los conocimientos previos y explorar para no pasar por alto las acciones óptimas.
Los casos más prácticos de MAB implican una información complementaria cada vez que el alumno toma una decisión. A esta información complementaria la llamamos "contexto" u "observación".
Bandidos con armas múltiples y aprendizaje reforzado
¿Por qué hay una suite MAB en la biblioteca TF-Agents? ¿Cuál es la conexión entre RL y MAB? Los bandidos de armas múltiples se pueden considerar como un caso especial de aprendizaje por refuerzo. Para citar Introducción a RL :
En cada paso de tiempo, el agente toma una acción sobre el medio ambiente sobre la base de su política \(\pi(a_t|s_t)\), donde \(s_t\) es la observación actual desde el medio ambiente, y recibe una recompensa \(r_{t+1}\) y la siguiente observación \(s_{t+1}\) desde el entorno . El objetivo es mejorar la política para maximizar la suma de recompensas (retorno).
En el caso general RL, la siguiente observación \(s_{t+1}\) depende del estado previo \(s_t\) y la acción \(a_t\) tomada por la política. Esta última parte es lo que separa a MAB de RL: en MAB, el siguiente estado, que es la observación, no depende de la acción elegida por el agente.
Esta similitud nos permite reutilizar todos los conceptos que existen en TF-Agents.
- Un entorno emite observaciones, y responde a las acciones con las recompensas.
- Una política da salida a una acción basada en una observación, y
- Un agente actualiza repetidamente la política basada en la observación anteriores tuplas-acción-recompensa.
El entorno de los hongos
Para fines ilustrativos, utilizamos un ejemplo de juguete llamado "Entorno de hongos". El conjunto de datos de hongos ( Schlimmer, 1981 ) consta de ejemplos etiquetados de hongos comestibles y venenosas. Las características incluyen formas, colores, tamaños de diferentes partes del hongo, así como olor y muchos más.
El conjunto de datos de hongos, al igual que todos los conjuntos de datos de aprendizaje supervisado, se puede convertir en un problema contextual de MAB. Utilizamos el método también utilizado por Riquelme et al. (2018) . En esta conversión, el agente recibe las características de un hongo, decide comerlo o no. Comer un hongo comestible da como resultado una recompensa de +5, mientras que comer un hongo venenoso dará +5 o -35 con la misma probabilidad. No comer el hongo da como resultado 0 recompensa, independientemente del tipo de hongo. La siguiente tabla resume las asignaciones de recompensa:
| edible | poisonous -----------|--------|---------- eating it | +5 | -35 / +5 leaving it | 0 | 0
El agente de LinUCB
Un buen desempeño en un entorno de bandidos contextual requiere una buena estimación de la función de recompensa de cada acción, dada la observación. Una posibilidad es estimar la función de recompensa con funciones lineales. Es decir, para cada acción \(i\), estamos tratando de encontrar el parámetro \(\theta_i\in\mathbb R^d\) para los cuales las estimaciones
\(r_{t, i} \sim \langle v_t, \theta_i\rangle\)
están lo más cerca posible de la realidad. Aquí \(v_t\in\mathbb R^d\) es el contexto recibido al paso de tiempo \(t\). Entonces, si el agente está muy confiado en sus estimaciones, se puede elegir \(\arg\max_{1, ..., K}\langle v_t, \theta_k\rangle\) para obtener la más alta recompensa esperada.
Como se explicó anteriormente, simplemente elegir el brazo con la mejor recompensa estimada no conduce a una buena estrategia. Hay muchas maneras diferentes para mezclar explotación y exploración en agentes estimador lineales, y uno de los más famoso es la confianza Linear límite superior (LinUCB) algoritmo (véase, por ejemplo Li et al. 2010 ). LinUCB tiene dos bloques de construcción principales (con algunos detalles omitidos):
- Mantiene las estimaciones de los parámetros de cada brazo con lineales de mínimos cuadrados: \(\hat\theta_i\sim X^+_i r_i\), donde \(X_i\) y \(r_i\) son los contextos y las recompensas de rondas apilados donde brazo \(i\) fue elegido, y \(()^+\) es la seudo inversa .
- Mantiene elipsoides de confianza definidos por el inverso de covarianza \(X_i^\top X_i\) para las estimaciones anteriores.
La idea principal de LinUCB es la de "Optimismo ante la incertidumbre". El agente incorpora la exploración impulsando las estimaciones en un monto que corresponde a la varianza de esas estimaciones. Ahí es donde los elipsoides de confianza entran en escena: por cada brazo, la estimación optimista es \(\hat r_i = \max_{\theta\in E_i}\langle v_t, \theta\rangle\), donde \(E_i\) es el elipsoide alrededor \(\hat\theta_i\). Los agentes elige mejor aspecto brazo \(\arg\max_i\hat r_i\).
Por supuesto, la descripción anterior es solo un resumen intuitivo pero superficial de lo que hace LinUCB. Una aplicación se puede encontrar en nuestra base de código aquí
¿Que sigue?
Si usted quiere tener un tutorial más detallada en nuestra biblioteca Bandidos echar un vistazo a nuestro tutorial para los bandidos . Si, en cambio, le gustaría comenzar a explorar nuestra biblioteca de inmediato, usted lo puede encontrar aquí . Si usted es aún más ganas de empezar a entrenar, vistazo a algunos de nuestros ejemplos de extremo a extremo aquí , incluyendo el entorno de setas se ha descrito anteriormente con LinUCB aquí .