top of page

El dilema explotación - exploración en Reinforcement Learning

  • fjroar
  • 9 nov 2021
  • 7 Min. de lectura

Este post lo inicializo con el recuerdo de unos consultores, que ya en el pasado llegaron a una empresa vendiendo algo sobre las inmensas posibilidades del Reinforcement Learning y que se podía aplicar para establecer modelos tipo Next Best Actions, y todo envuelto en una capa de humo, que ¡Oye! Consiguieron que algún “jefe” lo comprase y “hala”, una fiesta de unos cuantos cientos de miles de euro (ahora soy yo el consultor, pero tranquilos, este post no es para venderos humo, sino para más bien todo lo contrario).


Quien me conoce sabe que, incluso ahora que estoy más pegado a la consultoría, aunque puedo hacer cierta exageración, no me gusta el humo y soy quizás demasiado directo en los planteamientos, para bien o para mal y así pues me gustaría tratar de aterrizar algunas ideas básicas sobre este tipo de técnicas que habitualmente no se enseñan o se enseñan de modo muy de pasada en los cursos para Data Scientists, como resultan ser todas aquellas derivadas del Aprendizaje por Refuerzo o Reinforcement Learning, que se abreviará a partir de ahora como RL.

Antes de comenzar hay que indicar que el RL como parte de la Inteligencia Artificial, tiene una historia tan rica como las Redes Neuronales que esas sí son conocidas porque resultan mucho más sencillo de explicar y de entender, mientras que el RL hace falta aún bajar a un nivel más programático. Muchas de estas técnicas del RL vienen pues de la psicología de hecho, muchos de los padres de la Inteligencia Artificial no eran matemáticos o físicos de formación como suelen ser los actuales DS (como yo mismo, para bien o para mal), sino que eran por ejemplo psicólogos

El caso que voy a tratar es el denominado k – armed bandit que básicamente es lo más sencillo que se puede terciar por estos lares, pero que creo que va a ayudar a entender realmente en qué consiste un modelo de RL. En este problema de lo que se disponen son de esas tragaperras antiguas con manguito como la que muestro en la foto extraída de https://es.dreamstime.com/foto-de-archivo-libre-de-regal%C3%ADas-m%C3%A1quina-tragaperras-antigua-del-juguete-image6397645


En este caso, se puede imaginar que se tienen unas k = 1.000 máquinas cada una con un manguito (arm) cada una y cabe suponer que tras echar una moneda en una máquina en concreto, se puede tener jackpot (premio) o no obtenerlo, eso sí, cada máquina tendrá una función de distribución aleatoria o independiente para conceder los premios y que dependerá de muchos factores, desde el algoritmo de asignación implementado en el “software” hasta su nivel de llenado que en principio no se conoce.

Pues bien, cuando uno va a Las Vegas (yo nunca he estado, lo más en los salones recreativos de los 80 con cinco duros, …) se puede encontrar una fila interminable de este tipo de aparatos y claro el problema es ¿Qué máquina es la más generosa en premios? ¿Por dónde empezar?

Para acercar el ejemplo anterior a un caso más de negocio y no a un casino donde ya se sabe que la “banca siempre gana”, se puede suponer que queremos hacer una campaña de márketing on-line, donde por cada cliente que compre nuestro producto se obtendría 100€ de beneficio, pero claro, el anunciarte en distintas páginas de internet tiene su coste y el éxito de la campaña va a depender por tanto de que lo vea la persona adecuada en el canal adecuado, así pues cabe suponer que tras un determinado estudio, se selecciona como unas 10.000 webs donde el coste de lanzar una publicidad cabe suponerlo (me lo invento claro está, no soy experto en esto) de 1€ lanzarlo durante un día. Así pues, si un día colocamos el anuncio, nos habremos gastado unos 10.000€ y a esto puede pasar que de esas 10.000 webs existan unos 200 clientes distribuidos entre ellas que hayan comprado el producto (estoy exagerando la tasa de conversión, lo sé …) Por tanto, el beneficio de la campaña sería 20.000€ - 10.000€ = 10.000€ Se puede hacer un supuesto adicional y es que si se vuelve a lanzar la campaña 1 vez cada semana en esos mismos webs, el beneficio se mantendría estable (lo normal es que vaya decayendo, pero para efectos didácticos, lo consideramos así).

Pues bien, como puede intuirse tras aplicar la campaña durante unas 25 semanas (por poner un número) se habrá pasado por unos 5000 clientes (repetidos o no) que habrán accedido a la campaña por distintos caminos y claro la pregunta que flota en el ambiente es ¿Se puede ganar más dinero? Desde luego si sigo con esta estrategia, se sabe que semana tras semana se va a ganar 10.000€, pero puedo por ejemplo centrarme en las webs de mayor éxito e ir dejando al lado las que no aportan clientes. Aquí es donde se plantea el problema exploración – explotación. Claramente, en ningún caso conocemos la distribución real del modo de hacer click de la gente tras el anuncio, puede que por tan pocas semanas, aún no se tenga información completa y webs que no aportaba ningún cliente, después sean las que más click reporten y viceversa.

Por tanto tras un número de intentos como es aquí este de 25, se abre un mundo de estrategias que bajo un entorno Markov Decision Process (MDP) como en el de la figura inicial, permita prever, la próxima acción, es decir, ¿Qué hacer en la semana 26? Bajo el problema k – armed bandit aquí detallado se podría hacer lo siguiente:



  • Estrategia 1: A partir de esta semana, se consideran los 4.000 webs que mejor comportamiento han tenido y se invierte sólo en esos sistemáticamente. Nótese que se estaría ahorrando unos 6.000€ y se están perdiendo algunos clicks seguramente, pero si esas webs tienen mayor concentración de clicks, es posible que de los 200 clicks esperados, sólo se hayan perdido unos 40, con lo que si se hacen las cuentas el beneficio sería 160 · 100€ - 4000€ = 12.000€ (es decir, se puede aumentar y esto habría que verlo en un caso real con datos, obviamente)

  • Estrategia 2: en cada semana se invierte en los mejores 4.000 webs que han obtenido hasta la semana inmediatamente anterior mejores resultados (por eso se trata de un proceso de Markov, memoria “tipo pez” de orden 1), pero para cada elección se hará con una probabilidad p – épsilon (don épsilon estará en torno a 0.1 o 0.2) de elegir esa misma web pero con probabilidad épsilon de elegir una, de modo aleatorio de entre las otras 5.000 que no han sido seleccionadas

Como se observa, mientras que con la primera estrategia se está ante una explotación continua, donde al final es difícil de salir de una determinada situación, en la segunda, existe un nivel épsilon de exploración, es factible que nos hayamos equivocado en elegir esas primeras 5.000 webs y sea necesario revisar las otras por si acaso alguna es más efectiva.


Nótese que en este tipo de problemas donde hay muchos canales, o incluso muchos productos, es difícil o casi imposible obtener suficientes muestras y variables para crear los típicos modelos supervisados y así tener mejores previsiones, así pues, cuando en vuestro problema de negocio queráis hacer por ejemplo un NBA con muy pocos productos, o tengáis un número pequeño de canales de acceso a vuestros clientes, posiblemente otros métodos van a ser más efectivos que un RL. Hay que notar también que en el caso descrito, el RL va aprendiendo de modo que su aprendizaje toca un máximo en la Estrategia 1, mientras que la Estrategia 2, si se plantea bien el nivel de épsilon con algún coste adicional al principio va a mejorar, ya que automáticamente el RL aprende con esos datos, no existe una target del tipo contrata / no contrata donde se ajustan datos, sólo se promedia y el agente tiende a actuar sobre esas concentraciones (o se desvía ligeramente de ellas).


Se observa también que esto del RL es muy de programar, y sí, no hay aún buenas librerías (que yo conozca) que permitan automatizar la programación para llevar lo anterior a producción, sin embargo, lo que sí hay son librería que permiten hacer simulaciones para observar, bajo condiciones más o menos generales, cómo se debe graduar ese épsilon en una Estrategia 2. Para ello R ofrece la librería contextual y es muy recomendable el libro Reinforcement Learning with R, de donde saco los gráficos de más abajo simulados con las siguientes condiciones iniciales:



El código anterior se tiene en mi github en:



Y se obtienen los siguientes resultados resumen:



En el de la izquierda la estrategia es la 1, se hace una exploración inicial y luego a “la huchaca”, en la segunda, desde un momento muy inicial se aplica una estrategia tipo 2 con épsilon = 0.1 y y como se observa tras muchas simulaciones se consigue una convergencia muy estable entorno a 0.7 como en caso anterior, sólo que se aprovecha la información desde un instante más inicial incluso, mientras que en el de la derecha el épsilon = 0.5 y hay un exceso de exploración, con lo que no se alcanza claramente el éxito y la inestabilidad es muy grande y centra en un beneficio del 0.5.


Así pues, que como moraleja se tiene lo siguiente:


  • El RL (al igual que el Excel, jjj) no se debe aplicar en todo, tiene sus problemas propios donde tiene pleno sentido y potencia

  • En el dilema exploración – explotación, la exploración debe considerarse de modo moderado y no considerarla nos impide en muchos casos llegar a óptimos desconocido

  • Referente a lo anterior, decir que esto es como la vida misma, para ganar más hay que arriesgar, o explorar más, aunque tampoco hay que ser “un loco de la vida”

  • Finalmente indicar que aunque en RL se han dado grandes pasos como con el caso de los juegos de mesa como el Ajedrez o el Go, en aplicaciones empresariales aún falta aterrizar más los problemas y se observa una gran componente de programación manual, sin duda algo a mejorar tanto en R como en Python

Comments


© 2021 by Francisco J. Rodríguez Aragón. Proudly created with Wix.com

bottom of page