Reinforcement Learning: Policy Optimization Avanzada.  A2C, A3C, PPO y TRPO #artificialintelligence
1:42:16

Reinforcement Learning: Policy Optimization Avanzada. A2C, A3C, PPO y TRPO #artificialintelligence

The Machine Learning Engineer 16.05.2026 17 просмотров

Machine-readable: Markdown · JSON API · Site index

Поделиться Telegram VK Бот
Транскрипт Скачать .md
Анализ с AI
Описание видео
En este video exploraremos los algoritmos mas avanzados de Policy Optimization A2C, A3C, PPO y TRPO. Una pequeña introducción también a GRPO En la Parte 1 (https://youtu.be/CZgASJmRLvg) vimos cómo REINFORCE aprende directamente desde episodios completos, pero sufre alta varianza. En esta segunda sesión construimos los cuatro algoritmos que solucionan ese problema, uno por uno, arrancando desde la misma base matemática. Empezamos con **A2C**, que introduce un Critic — una red que aprende a predecir cuánto vale cada estado. Con eso, el agente ya no juzga sus acciones por el return crudo sino por la *ventaja*: si la acción fue mejor o peor de lo esperado. Menos ruido, gradientes más útiles. **A3C** toma la misma arquitectura actor-critic y la paraleliza: múltiples workers corren en paralelo, cada uno en su propia copia del entorno. Los datos llegan decorrelacionados de forma natural — sin necesidad de replay buffer — y el entrenamiento escala casi linealmente con los cores de CPU disponibles. **PPO** ataca el problema desde otro ángulo: permite reutilizar los datos recolectados para múltiples actualizaciones, pero introduce un mecanismo de clipping que limita cuánto puede cambiar la policy en cada paso. Si el ratio entre política nueva y antigua sale de la banda `[0.8, 1.2]`, el gradiente se anula — el agente no puede dar saltos que lo lleven a un punto sin retorno. PPO usa además GAE (Generalized Advantage Estimation) para calcular ventajas balanceando sesgo y varianza con un parámetro `λ`. Es el algoritmo detrás del finetuning con RLHF de ChatGPT y otros LLMs. **TRPO** formaliza esa misma idea de "no cambiar demasiado la policy" como un problema de optimización con restricción explícita de divergencia KL. Tiene garantía teórica de mejora monótona, pero requiere gradiente conjugado y line search — más costoso por update. En el repositorio se implementa con dos backends: uno sobre `sb3-contrib` para comportamiento estable de producción, y uno nativo que expone todos los internals del algoritmo. Cerramos con el flujo completo de benchmark: cómo ejecutar los cinco métodos con el orquestador unificado, agregar corridas con múltiples seeds, y comparar resultados reproducibles. También cubrimos brevemente **GRPO**, el algoritmo de DeepSeek-R1 que elimina el critic completamente y estima la ventaja comparando respuestas dentro de un grupo — la frontera actual de RL para razonamiento en LLMs. --- **Código:** - a2c.py, a3c.py, ppo.py, trpo.py - run_all_comparison.py — comparación multi-algoritmo con seeds - aggregate_results.py — agregación y reporte de resultados #ReinforcementLearning #DeepLearning #MachineLearning #DistributionalRL #PyTorch #Python Codigo: https://github.com/olonok69/Reinforcement_Learning_Policy_Optimization/blob/main/README_es.md

Оглавление (21 сегментов)

Segment 1 (00:00 - 05:00)

Hola, bienvenidos a mi canal de Machine Learning Engineer. Hoy vamos a ver otro vídeo más en la serie Reinforcement Ring y hoy veremos de nuevo en la segunda parte de los algoritmos de policy optimization. Eh, veremos la parte avanzada de los algoritmos de esta de este tipo. Veremos el A2C, A3C, of Criticit, actos Critic asíncrono con múltiples eh workers. Luego veremos uno muy común, dos muy comunes la eh bueno, uno muy común y la introducción a uno muy común que se utiliza estos dos PPO y GRPO se han utilizado y se utilizan para tanto para la optimización de vía reinforcement Ring de LLMs. es el que se utiliza para los modelos GPT y GRPO, para aquellos que no lo sabéis, es el que se ha utilizado para Dixic, el modelo de el modelo chino. Y luego veremos un algoritmo también dentro de esta serie que es el TRPO. Con esto terminaremos la parte de policy optimization y tendremos un vídeo más para ver la los modelos híbridos eh de DPGT de 3 Isaac y luego pasaremos a la parte posiblemente más interesante que será de cómo aplicar todas estas técnicas, especialmente policy optimization, que es lo que se utiliza en el reinforcement learning, eh, perdón, en el fine tuning de modelos del LM y veremos emos las diferentes técnicas que se utilizan y como cómo se aplican a al al tuneado de los LLMs. Mi nombre es Juan, como bien sabéis, soy un ingeniero de sistemas con más de 30 años de experiencia en el sector de la tecnología y los 10 últimos, bueno, ya 11 dedicados a este mundo interesantísimo del eh de la inteligencia artificial, el machine learning, de learning y todas estas cosas que nos gustan tanto. Bueno, vamos a hacer un poco de recap, no entraremos de nuevo en el NDP, todos los fundamentos, simplemente vámonos a ir al tema directamente de la de los métodos de optimización de policy, eh que de lo que trataban esencialmente, pues trataban de generar de actualizar más bien, ¿no?, una eh una policy de forma completa y la póli se va actualizando, se van actualizando las probabilidades. Eh una póli está compuesta por una serie de probabilidades de los estados que nos hacen llevar desde el principio al final de nuestro objetivo, desde el estado inicial al estado final. O sea, en cada paso de la trayectoria que vamos ampliando, que vamos muestreando, pues vamos actualizando la policy conforme vamos entrenando nuestra red neurona. Hay distintas eh distintas formas que serán las que veremos hoy en cómo se hace este muestreo, pero principalmente no el muestreo, sino cómo se resuelve la ecuación, cómo se resuelven los el gradiente, que es esta parte que tenemos aquí, que si bueno, os recomiendo sobre todo que veáis el vídeo anterior donde explicamos cuál es la la, o sea, cómo funciona al el entrenamiento eh como esta parte que es eh el gradiente eh el que digamos el que utilizamos en la parte de la P propagation de la propagación hacia atrás de los gradientes cuando estamos entrenando la reina neuronal. cómo se calcula este gradiente para también para como calculamos en todo caso el error eh de nuestra red neuronal y cómo lo propagamos hacia atrás. Recordar como siempre que estos algoritmos en vez de minimizar el error lo que tratamos es de maximizar que al final de cuentas pues es lo mismo. es que es minimizar cambiándole el signo, porque lo que tratamos en todos estos algoritmos es de maximizar el la recompensa y no de minimizar el error como solemos hacer en los problemas de eh entrenamiento de una red neuronal convencional, ya sean de clasificación o de regresión o de cualquier otro tipo. tenemos un problema de minimización de error y esto pues lo hacemos con gradient de scen y para el reinforcement learning eh utilizamos gradin ascen que es lo mismo, pero cambiando el sismo. Si recordáis de

Segment 2 (05:00 - 10:00)

todos los vídeos que hemos hecho ya en la serie de reinforcement learning, estamos utilizando los mismos optimizadores, el Adan de Python y este lo único que hacemos al final es cambiarle el signo al los y hacer la propagación de los gradientes en la fase de B propagation, pero eso es exactamente igual que lo que haces en un en un entrenamiento de modelo para superviso o supervisar con una minimización del error. Si recordáis este cálculo, bueno, había un truco matemático para resolver el problema que era un problema intratable. Esto ya lo vimos ahí. Y bueno, pues había un segundo, pues perdonar que ataque de tos, pero bueno, en lo dicho, en el tema del cálculo del cómputo del gradiente, pues como recordábamos en el vídeo anterior, en la introducción al policy, a la policy optimization, a la optimización de las de los algoritmos de optimización de policy, Pues teníamos distintas formas de hacer el cálculo. Estuvimos, exploramos la que lleva el algoritmo fundacional del Policy Optimization, que es el reinforce, que está basado en Monteclo, eh, que es un algoritmo que esencialmente lo que hace es hacer muestreo de distintas trayectorias. En nuestro caso, las trayectorias son los episodios que mueven a nuestra gente desde el estado inicial al estado final o eh a un estado troncado que llaman, a un estado intermedio, pero que no es satisfactorio y que hemos llegado al final de los del número de pasos disponibles. Entonces el veíamos que había distintas formas de hacer el cálculo de del incremento y cada una de ellas pues lo que trataba de hacer era lo primero reducir la varianza la de del cálculo para evitar que haya grandes incrementos de del gradiente en la fase de de prop de back propagation y luego pues también el utilizar correctamente ente eh pues los retornos, ¿no? Cuando este paso en el cual estamos calculando el multiplicamos el log de la probabilidad por el retorno eh el retorno de esa trayectoria, si recordáis en el algoritmo puro de Reinforce se utilizaba toda todo el retorno o la recompensa de la trayectoria. En este caso, pues estábamos utilizando para el cálculo del gradiente en un paso concreto, en un paso intermedio, toda todo el retorno de la trayectoria, lo que hacía que ya quizás un poco hasta de sentido común el utilizar los retornos de los estados anteriores, pues tenía como que poco sentido. Entonces se introduce eh pero bueno, es lo que en el propio papel de investigación que presenta el algoritmo reinforce se utiliza todo el retorno de la trayectoria y esto hacía que estuviéramos, como os digo, utilizando retornos de estados anteriores para calcular, digamos, el gradiente o la ventaja, o sea, la recompensa de un estado en concreto. Y esto hacía, pues si tenemos desde el paso eh cero o del paso inicial al paso final tenemos 10 pasos en el medio. Imaginaros que para el cálculo del paso cinco, pues estés calculando los retornos que han que se generan de los pasos anteriores. conceptualmente no tenía mucho sentido y entonces se utilizan otras técnicas como el reward to go, que es simplemente calcular el retorno desde ese paso en adelante y eh y luego otros como el baseless sustraction que se utilizaba. Esto es, digamos, como un concepto traído de la separación de una señal como en una como en time series forecasting o en la en el cual pues tú una señal la descompones en lo que es una baseline, que es digamos la el la base de la señal más luego una componente de seasonality, otra componente de tendencia y otra componente de ruido. Entonces, lo que hacía aquí es eh esa componente base que tienen todos los retornos desde el desde

Segment 3 (10:00 - 15:00)

ese estado hasta el final, pues todos tienen una componente común que digamos que la puedes sustraer y de esa manera entiendes qué bueno o qué malo, o sea, si tiene una componente adicional esa la señal obtenida en ese estado en concreto. a lo que la base subustraction, que es un concepto un poco como traído del cálculo, o sea, de lo que llaman en bueno, lo que conocemos como la separación en componentes de una señal que se suele aplicar mucho en time series forecasting. Y luego teníamos el policy vanila policy gradient utilizando la función de ventaja, que si recordáis también la función de ventaja pues no era más que un concepto traído del cool learning en el cual pues la el valor de el Q value de un estado, de tomar una acción en un estado se podía descomponer en el valor propio de ese estado y la ventaja de tomar una acción en ese estado con respecto a la media, la media de las ventajas o desventajas que tienen todas las acciones disponibles en ese estado. Entonces, la función de ventaja es uno de los dos componentes que tiene el Q value de un de una acción en un estado en concreto. Y como os digo, es la parte la parte que nos dice qué buena es una venta, una acción con respecto al resto. Y lo dicho, el componente segundo que hay en la Q function, en el en la Q function es el valor del estado. Qué bueno es el estado. Que va estado a en no en comparación, sino qué bueno es estar en este estado en concreto. No es lo mismo estar en el estado inicial o más un que estar en el estado final menos un no sé. O sea, si estás en el estado final -1, pues estás muy cerca del objetivo, ¿no? Eh, intuitivamente estar muy cerca del objetivo pues tiene más valor que estar pues eh un paso eh después del estado inicial, ¿no?, O sea, conceptualmente esto en Coolarning, si recordáis, se introducían las DUEL Network en las cuales eh había un componente, o sea, descomponíamos el valor Q en dos en los dos componentes y los aplicábamos al cálculo eh digamos a la optimización de del cvalue para poder determinar no solo qué bueno fuera el valor obtenido, el Q value obtenido, sino poder discriminar entre buenos estados y acciones buenas o malas, ¿no? Buenos y malos estados y acciones buenas y malas y aplicarlo. Pues ese es un poco el concepto que se utilizaba aquí. que en vez de utilizar el reguar como señal para incrementar o decrementar el gradiente, pues utilizamos la función de ventaja diciendo, pues para esta policy, en ese estado o en esa acción la ventaja es positiva o negativa. Y este es el concepto que utilizan en los algoritmos, principalmente en todos los algoritmos modernos PPO, eh A2C, GRPO, todos estos están utilizando ya la función de ventaja de una manera u otra. Luego hay otro tipo de eh de mejoras, por decirlo alguna de ellas, como es el Gae, que también es uno de los de las mejoras que se utilizan en PPO, que la veremos ahora en breve, y luego la normalización de los valores para para pues para garantizar también que no hay grandes incrementos, ¿no? Los incrementos pues están dentro de un rango que es, como veis aquí, siempre que se obtiene un retorno de una trayectoria, ya sea el completo que es no se suele utilizar, se suele utilizar como mínimo el retorno desde el estado en adelante con reward to go, pues luego normalizar significa restarle el min de todas las ganancias dividido por el deviation. está segura de que al menos pues estamos dentro de eh est Bueno, normalizar significa de que no vas a utilizar, digamos, los números en crudo, los vas a, digamos, filtrar para que, digamos, podamos hacer unos

Segment 4 (15:00 - 20:00)

incrementos más discretos, ¿no? El gran problema que tiene el policy optimization, como veremos ahora, es siempre el mismo que cuando estás actualizando una policy, como veíamos en el en esta, no sé si estaba por aquí, no lo veremos aquí. Bueno, lo tenemos en el inicio. El gran problema de los algoritmos de policy optimization es el incremento o decremento del gradiente. El estimar cuánto incrementas eh, o sea, cuánto actualizas la policy es eh es fundamental. Empíricamente se ha demostrado que eh gran, o sea, pequeños incrementos son más estables y llegan siempre o normalmente llegan siempre al punto óptimo, a la policia, a la optimal policy que se llama. Con incrementos grandes puedes entrenar más rápido, pero puedes tener lo primero un colapso de los gradientes. Ya no aprendes más. Esto es como en una red neuronal. que digamos eh deja de aprender. Pues aquí en reinforcement Renning no es que dejes de aprender, sino que un gradiente muy un paso muy largo, pues te puede hacer, como veis aquí en la figura, llegarte a un es un paso muy bueno, pero en vez tienes el riesgo de caer en una trayectoria que, como veis aquí, eh, el siguiente paso pues te apunta al abismo y luego recuperar de aquí es muy difícil. Entonces, lo que se ha hecho en los algoritmos de policy optimization es siempre buscar una forma de actualizar la policy de forma controlada, no pegar grandes saltos para evitar lo que veis aquí, un gran paso, un gradiente muy alto que se va que se propaga hacia atrás en la red neuronal y que nos hace llevar luego a una policy, no idónea. Pequeños pasos nos hacen quedarnos en el camino idóneo para llegar al objetivo. Y esto es en principio lo que hacen todos estos algoritmos de una forma u otra. La cuestión es el cálculo. Bueno, vamos a empezar con el primero, que es el A2C, el A2C, eh, no, no me llega aquí. que lo llaman pues Advance Actor Critics, ¿no? En Rainforce, como decíamos, usaba retornos completos y directos y esto puede ser muy rudioso, como vimos y de hecho en el propio la propia demo que hicimos ni siquiera estábamos utilizando el algoritmo puro eh que está explicado en el papel de investigación, sino que ya estábamos utilizando el reward to go y luego también eh estandarización de los rewards para evitar ruido, para evitar ar varianza para evitar estos saltos grandes en los gradientes. ¿Qué es lo que empieza a hacer Actor Critis? Pues utilizar como eh como os decía antes, la función de ventaja. ¿Cómo utilizada la función de ventaja? Pues en el en la propia red neuronal, pues como hacíamos en Coolarning, pues divide eh digamos que tiene una segunda cabeza que nos por un lado calcula las probabilidades de la acción. Esto es exactamente igual a lo que hace policy optimization, pero a la vez también mira el eh calcula la función de ventaja y esa función de ventaja la utiliza para dos eh digamos funciones, una para mejorar la crítica y otra para mejorar la policy que te estamos entrenando. Esto eh lo puedes hacer una analogía con un videojuego en el cual pues el actor, que es el que está eh entrenando la policy eh juega y elige una acción, ¿no? Y al lado tienes alguien, un crítico que está diciendo, "Oye, observa el movimiento que te dice, oye, qué bueno, ¿no? " O te dice, "Oye, terrible eso que has hecho es una porquería y tal, ¿no? O sea, te está dando una visión, digamos, imparcial diciéndote, pues bueno, qué malo ha sido el movimiento. Entonces, el concepto es bastante simple.

Segment 5 (20:00 - 25:00)

El concepto, como os digo, es bastante simple. Si la función de ventaja es mayor de cero, la acción era mejor que lo esperado, esta acción le tienes que dar más probabilidad. Y lo inverso, si la acción es menor que cero en la función de ventaja, el valor que es un escalar, es un valor que te da la función en la predicción, en la fase de fit forward, pues si te da menor que cero, pues la acción es peor que lo esperado, pues se desaconseja tomar, o sea, reduce la probabilidad. Y entonces, pues bueno, el cálculo de la policyis es exactamente igual al que veíamos en la en la en Reinforce. Lo único que aquí este valor lo vamos a multiplicar por el coeficiente, el coeficiente que es un valor que vamos a obtener de la función de ventaja. Y luego por una cosa que llaman entropía, que lo que simplemente hace es, digamos, facilitar, bueno, más que facilitar, sí, facilitar, ¿no? el la entropía nos está haciendo es como digamos un bono de curiosidad, ¿no? Es eh decir recompensa un poco a la policía, pero para no volverse demasiado rígida, ¿no? Para no digamos, oye, sí está muy bien, pero tampoco te pases, ¿no? por decirlo de alguna manera, si eh si sin entropía la gente pues puede obsesionarse temprano con una sola acción y promoverla demasiado, reinforzarla demasiado. La entropía lo que va a hacer es que oye, bien, aquí ha podido ser un golpe de suerte, ¿no? Y entonces dice, "Vale, eh, sí, eh, está bien, incrementamos la probabilidad, pero tampoco digamos tampoco te pases, ¿no? por decirlo de eh o sea que lo que se trata aquí también estos algoritmos eh como os decía, pues tiene tienden a eh colapsar, ¿no? Colapsar por un gradiente alto, ¿no? Y entonces para lo que tratan, como os decía antes, siempre es de evitar estos incrementos grandes de gradiente. Entonces, en un momento dado, si tú tienes un valor muy alto de la función de ventaja, como veis aquí, va crudo, pues en todo caso eh para evitar esto, pues eh este valor de coeficiente va a ser alto y eh para evitar que ese incremento del gradiente se propague hacia atrás, pues utilizas un coecificiente de entropía para evitar que este esto digamos haga que la red se vaya por un camino equivocado. Minimizas un poco la euforia, ¿no? Por decirlo de alguna manera. Entonces, con la entropía mantenemos también la diversidad de acciones al inicio, se descubren mejores estrategias y evita que nos atasquemos en un en una acción en concreto. Entonces, vamos a ver esto en el código, el A2C, como veis en la red inicial, bueno, la puerta de entrada la es idéntica eh con nuestro input side, que es el espacio de observaciones, luego pues eh tenemos dos eh las dos cabezas, el la propia cabeza que nos saca las probabilidades por acción. Esto es exactamente igual que el policy gradient. Acordaros el policy gradient, pues simplemente eh sacábamos las el número de acciones y luego calculábamos, o sea, vía soft mats. Eh, y luego hací creábamos una distribución de las de las acciones. En el caso del carpol que estábamos viendo, pues eran dos y con esa distribución pues hacíamos un sample, hacíamos un muestreo, sacábamos una muestra de esa distribución, lo que hacíamos era esta probabilidad iba variando conforme el entrenamiento cambiaba, ¿no? O sea, variaba. Pues aquí esto queda igual en el A2C. Lo único que cambia es que también vamos a generar un valor de crítica, de esa acción, una función de valor, ¿de acuerdo?

Segment 6 (25:00 - 30:00)

El value estimate que llaman. Luego aquí tenemos unos coeficientes, el coeficiente de entropía y el coeficiente de valor, que son los multiplicadores al que vamos a utilizar en nuestra función, ¿no? Y entonces, ¿cómo funciona el entrenamiento? Pues eh como en todos los casos se recolecta un episodio completo que estamos creando la red, el optimizer, como decíamos siempre, esto no cambia en absoluto de cómo de cómo configuramos el policy optimization en el en policy gradient y veréis que los otros, o sea, el muestreo se hace igual, ¿no? creas una haces cobres una trayectoria que es la que estamos viendo aquí por cada uno episodio, pues hasta que no se cubra la trayectoria, pues vas a estar eh, como veis aquí obtenemos con el aquí inicializamos el entorno, eh lo pasamos a un tensor, lo pasamos por nuestra policy. Obtenemos los logics y la función valor. Convertimos los logics en probabilidades, las probabilidades en una distribución y sampleamos la acción, o sea, muestreamos de la distribución para obtener una acción. Esa acción la ponemos en el la ejecutamos en el entorno. Obtenemos el valor terminado o no terminado. Añadimos nuestras probabilidades, los valores, los reguar, las entropías. Todo esto pues estamos capturándolo hasta que termine el episodio y una vez que termina el episodio calculamos los rewards. Aquí recordar que estamos calculando con el reward to go y luego pues eh en este caso convertimos las todo en tensores y aquí ya eh con creamos la función de ventaja y eh calculamos la policy, el policy loss que es el valor de nuestro, o sea, el para el cálculo de las probabilidades, ¿no? lo mismo que hacíamos en el policy optimization. calculamos nuestro valor de crítica y calculamos el los. Lo único que estamos haciendo aquí es utilizar un cálculo de los en el cual estamos incorporando la crítica, o sea, eh la función de ventaja con un coeficiente de entropía y un coeficiente de valor para implementar para mejorar, digamos, la el bisleno. Pero el policilos, que es lo que estamos calculando aquí en el policy gradient, es este de aquí. Esto es exactamente igual que en el Esto es idéntico al a lo que vimos en policy gradient. Y lo único que cambia es que ahora introducimos el valor de la crítica basado en la función de ventaja. Adicionalmente, como os digo, introducimos el valor de la entropía para evitar que entre el, digamos, la el algoritmo en una zona eh o que sea demasiado eufórico, ¿no? Por eso veis que aquí resta. ¿De acuerdo? Y una vez que hemos calculado el loss, pues eh esto funciona exactamente igual que eh que el otro algoritmo. Eh digamos que calculamos los gradientes y eh hacemos la fase de B propagation en nuestra red neuronal. El resto queda exactamente igual. que el polishidradio. ¿De acuerdo? Vamos a ver ahora A3C. Eh, bueno, un momentito antes de que pasemos eh del esto. ¿Qué es lo que arregla la 2x con respecto a la 3C? Pues bueno, la mejora la varianza, el baseline de la función de ventaja elimina ruido. ¿Por qué? Porque es cierto que en los retornos pues hay, como os decía, el retorno es un componente eh calculado con el es un Q value en definitiva, ¿no? Entonces ese

Segment 7 (30:00 - 35:00)

qvue pues tiene un componente que es de error, o sea, más o sea del estado y que bueno que puede ser muy grande y es muy ruidoso, tiene mucha variabilidad, mucha varianza y entonces de esta manera, solo mirando la tomando la función de ventaja, ¿qué es lo que hacemos? pues remover el valor del estado, eh, y solo quedarnos con qué buena ha sido la acción. ¿Para qué? Pues para decir mejorar o no mejorar, o sea, reenforzar o sea, aconsejar o desaconsejar el incremento de probabilidad de esa acción en concreto. Y esto es lo que hacemos. Dice, ¿por qué? Porque intuitivamente si la acción si la función de ventaja es qué buena es esta acción con respecto a la media, pues obviamente de ahí tenemos una señal muchísimo más clara de que qué buena es esa acción con respecto al si esto me ha generado al final un reg harto alto, perdón, pero esta acción en concreta dentro de las 18 que he tomado desde este punto en concreto a al punto final no es la mejor. eh pues obtenemos una seña, un feedback claro de que mira, sí, el regular ha sido bueno, pero no es precisamente por esta acción. Entonces, pues te sigo te puedo aconsejar más claramente con una señal muchísimo más pura si eh la acción que tomas le incrementas la probabilidad o se la decrementas. Bien. Eh, vamos a pasar al A3C. El, ¿qué es el A3C? Bueno, pues el A3C es el A el A2C, pero en vez de se amplear de un única de un único entorno, lo que hace es amplear de múltiples entornos. ¿Por qué? Porque eh un cuando como en DQN, no sé si recordaréis cuando vimos los vídeos de DQN, cuando una gente interactúa con un solo entorno o está entrenando con una sola red, en una sola red, ¿eh? O sea, los estados consecutivos yo normalmente son similares. Esto imaginaros en un en un problema concreto, ¿no? Estáis conduciendo, entonces estáis conduciendo en una línea recta, entonces el siguiente paso, el siguiente estado es prácticamente el mismo. A no ser que haya una incidencia, pues que ha frenado el coche de delante o que tienes una curva o que tienes que torcer a la derecha, los siguientes pasos suelen ser muy eh similares, ¿no? Lo mismo pasa si quieres ir del punto A punto B. tienes eh de estás en una ciudad, quieres ir del punto A punto B, tienes múltiples trayectorias, pero vamos, si estás dentro de una calle, lo normal eh si hasta que llegues a la siguiente al siguiente cruce es que los siguientes pasos van a ser muy similares. Eh, pues estás por una cera, eh, y vas a el siguiente paso es siguiente, ir hacia delante, ir hacia adelante, ir hacia adelante. Entonces, esto hace que al los los si simplemente entrenas con pasos consecutivos, pues la experiencia está muy correlacionada y aquí pues eh digamos que se que esta correlación entre los distintos pasos no era no es adecuada para eh para el entrenamiento de una red neuronal. Recordar cuando estáis entrando una renunar en función en supervisar, que normalmente lo que haces es hacer un una un una randomización, como dice, estás mezclando el batch para que los distintos componentes del batch se le presenten al a la red en distintas posiciones. ¿Para qué? Pues para evitar esto mismo también para evitar la correlación y para darle una cierta entropía al entrenamiento. Pues esto en reinforcement learning lo tenemos que hacer en el caso de cool learning con una con un buffer. Si recordáis, creábamos un buffer en el cual íbamos metiendo las experiencias y cuando ya habías el tamaño del buffer era más grande que el tamaño del bat, empezabas a samplear del buffer de forma aleatoria. creamos el buffer con prioridad, el cual pues eh le dabas más

Segment 8 (35:00 - 40:00)

prioridad a aquellas transacciones que eran eh producían más aprendizaje con respecto a otras que tenían menos aprendizaje. Lo mismo que hacíamos en Coolarning lo hacemos aquí con el A3C. En vez de un único entorno, lo que hacemos es crear múltiples entornos. muestreamos en esos múltiples entornos. Entonces, tú tienes eh transacciones o trayectorias creadas por diferentes entornos que están ampliando de forma completamente aislada. Y esas trayectorias se las devolvemos a un agente eh que las va a utilizar para actualizar la póicy. ¿Qué es lo que estamos haciendo con esto? pues estamos eh digamos eh aumentando la entropía del sistema eh y de esa forma evitamos que las propias eh trayectorias que se generan en el mismo entorno pues estén correlacionadas. puede como tú vas a ir muestreando en un número de entornos, pues una vez le va a tocar una trayectoria del worker 1, otra del worker 2, otra del worker 3, otra del worker n y así hasta que llegues al final de los episodios y de esa manera evitas que eh lo que está pasando también, por ejemplo, en el propio AC2, que como solo tienes un único entorno, las trayectorias pueden estar correlacionadas las unas con las otras. Pues este el mismo concepto que utilizábamos en Coolarning con el buffer, utilizamos aquí en actor critic con el o utiliza A3C eh para evitar esa correlación entre los est el como vais a ver en el código, el A3CD es exactamente igual que el A2C. Lo único que tiene pues el tema de el multientorno. Veréis que aquí tenemos un actor critic. Eh, es la misma clase que la 2D, exactamente la misma. Eh, tienes la estás produciendo dos valores de salida, las probabilidades de las acciones y la función valor. Y lo único que cambia aquí es que vamos a tener una función worker. Esta función worker va a hacer va a calcular, o sea, la trayectoria. Como veréis aquí no calculamoslos en este en el worker, no calculámoslos, simplemente ejecutamos la trayectoria hasta que llegue el final. Eh, estamos sampleando una trayectoria. Sampleamos nuestra trayectoria eh con de la misma manera que estábamos haciendo en tanto en Rainforce como en A2C. Tomamos nuestros valores de acción. Eh, qué buena, perdón, aquí estamos eh creando la acción y lo único que estamos es eh digamos tomando los valores. Una vez que tomas esos valores, entras en tu runner y tu runner. Aquí vas a tener el la red que sí que va a aprender, pero va a aprender de qué? de trayectorias que estás ampliando de múltiples entornos. Aquí lo que estamos haciendo es crear una cola de que va poniendo, digamos, trayectorias que provienen de los diferentes entornos. Y aquí pues simplemente eh vamos a entrar en nuestra configuración eh por cada uno de los workers va a crear una trayectoria y aquí desde eh entraremos en otro bucle que es el que nos mide eh el número de episodios. Lo único que introduce de adicionar el A3C es que en vez de ampliar de un único entorno, vas a ampliar de múltiples entornos. Entonces, cuando estás entrenando, que es cuando le llega el este tipo de mensaje que estás haciendo aquí después de que has obtenido un un de las de los episodios o de lo que te ha retornado el worker, te puede retornar o fin de episodio que continúas en el batch. Si continúas en el batch, pues lo que haces pues es tomas lo que te ha retornado uno de los

Segment 9 (40:00 - 45:00)

workers y lo utilizas pues para el cálculo de la función exactamente igual que hacíamos en el A2C. Si veis aquí teníamos nuestro nuestras probabilidades, calculábamos la distribución, calculábamos las probabilidades, calculábamos la entropía, calculábamos las función de la función de ventaja, el policy, el valor, el cálculo del los y en esta red sí que hacemos la B propagation, tan simple como esto. Lo dicho, la única diferencia es que eh vamos a mejorar eh digamos la entropía, ya que muestreamos de múltiples entornos. problema es más complejo, obviamente más complejo porque hay procesos, hay más procesos, hay colas, hay sincronización y bueno, pues eh el proceso de entrenamiento es más complejo, pero es cierto de que eh de que bueno, pues eh al obtener más entropía, pues eh digamos que por un lado mejoras el tiempo de entrenamiento, ya que si estás en un entorno con múltiples CPUs, pues asignar workers a cada una de tus CPUs y eh hay una exploración diversa. Esto es un poco como lo que también introducíamos en la en el aprendizaje de exploración, explotación en el propio esto, o sea, mejoras la exploración, por supuesto, porque en vez de utilizar un único entorno con su semilla de entropía, pues utilizas múltiples y la exploración pues es muchísimo más rica. problema que complicase el entrenamiento pues con todo el tema de coordinación de los workers y de los y de los procesos. Pero en definitiva, eh, conceptualmente lo que estamos haciendo es exactamente lo mismo. Y bueno, lo dicho, aquí tenéis en esto y luego en la documentación ya podréis leer todo en detalle. Pues veis que esto, pero lo que quiero que os quedéis con la idea es que el algoritmo no cambia. Lo que cambia es la exploración y la riqueza. La riqueza de la exploración y del muestreo. Policy optimization. Proximal policy optimization. Bueno, aquí ya entramos en uno de los algoritmos más eh digamos más populares y como os he dicho ya varias veces es el algoritmo utilizado en el entrenamiento de eh CH GPT. Eh, y esto pues el concepto es bastante simple. lo que, como os decía antes, trata de evitar los gradientes eh muy grandes, o sea, trata de de evitar las actualizaciones de gradientes grandes. Entonces, lo que hace pues es hacer un recorte, o sea, el gradiente tiene que quedar entre estos dos entre estos valores, ¿no? utiliza también el GAE, pero bueno, la principal eh la principal novedad en este algoritmo es que en vez de utilizar el propio valor de ventaja, pues utiliza un rango y dentro de ese rango pues se decide si se actualiza o no se actualiza. Esto lo veremos ahora. Si veis aquí este rango esencialmente, bueno, vamos a un momento antes que entremos en el rango. La analogía de esto es eh si lo siguiente. Imagínate que estás aquí en esta ladera la montaña y el gradiente te dice, "Da un paso a la derecha", ¿no? Entonces, claro, dice, si has tomado, si estás aquí, que es exactamente lo mismo que estar aquí en cuestión de para la red neuronal, pues si te dice, bueno, si das un paso a la derecha, si estás aquí, eh, pues claro, si estás en el medio del camino, dar un paso a la derecha es una buena opción. Aquí, perdón, a la izquierda. dar un paso a la derecha es una buena opción porque sigue subiendo, pero si estás eh o dar a la izquierda que sería aquí, pero si has tomado este gradiente aquí, pues eh te puede llegar a decir, "Oye, también dar un paso a la izquierda, pues ve que aquí hay un incremento grande también del gradiente. Oye, ¿me puede llevar esto al objetivo? "

Segment 10 (45:00 - 50:00)

No, o sea, esto para el algoritmo esto es un regto, ¿eh? Entonces, él no sabe si está yendo por un camino o por bueno o un camino malo. De lo que se trata es de que evitar este escenario. ¿Por qué? porque este escenario me va a llegar a un punto de no retorno y el training va a colapsar, lo que llaman el catastrophic collapse, ¿no? Y entonces si tú en un momento dado, por tomar un gradiente muy alto, pues lo que haces es irte por un camino que me lleva un a un colapso a un camino de no retorno, pues es preferible pues ir pasito a pasito, incrementos más pequeños que me van a garantizar que me quede en este camino estrechito que me lleva hasta la cima. Y entonces el paso, como os digo, aquí le puede decir, "Oye, mira, aquí vas a tener esta ventaja. Él no sabe si esto le llega al final, ¿no? Dice, pero porcentualmente aquí tengo un gran incremento, pues de per sé, oye, esto es un buen movimiento, te acercas a la cima, que es tu objetivo. Pero esto, como te digo, puede ser que este paso tan grande, como veis aquí, eh, en vez de llegarte esto, pues resulta que caes un poquito aquí ladeado y lo que haces es que ya de aquí no puedes regresar al camino, sino lo que haces es simplemente estás aquí y dices, "Bueno, puedes irte para acá, quizás a lo mejor recupera, Pero lo más seguro es que te caigas al precipicio, ¿no? O va a tomar muchísimo más tiempo volver a subir, ¿no? Volver a encaminar esto. Entonces, lo dicho, eh lo que trata de hacer el PPO es simplemente que y esto es un problema que tiene el Reformer Learning en diferencia al supervisar, en el supervisning tienes las etiquetas y entonces los malos pasos los corrigen los las etiquetas buenas, ¿no? Entonces ahí como tienes las etiquetas pues tienes una guía, ¿no? Por eso se llama supervisar, ¿no? En cambio, en reinformar tú no tienes esa guía, tú la estás aprendiendo vía prueba y error. Como esta lo tienes que aprender, dice, los datos para tu actualización solo dependen de tu policy, de tu polic de la policía actual. Si das un mal paso, como es aquí, te metes en, imagínate que te metes aquí en esta zona de aquí. Si un mal paso, tus datos futuros vienen de una policimala. O sea, el siguiente paso, estando aquí, va a ser malo también, que va a costar mucho volver a subir al camino final. O sea, y esto, el siguiente paso va a ser malo también y el siguiente malo y esto crea una espiral descendente, descendiente a lo malo, de la cual es muy difícil de que te puedas recuperar. Entonces, de lo que se trata es lo mismo. Dice, "Vamos a dar pasos más pequeños. " dice, "Tardaremos más en llegar a la cumbre, pero nos vamos a asegurar de que, bueno, el los incrementos que le hacemos al gradiente, o sea, pasamos de la policí a la policy a prima en este paso, pues van a ser eh digamos no tan grandes y de esta manera pues evitamos caernos al precipicio. " Bien, entonces de lo que se trata, como veis en el papel original, o sea, el se calcula un ratio. El ratio es eh un exponencial eh de qué digamos de cuánto se eh mejora la eh el gradiente con respecto a la policía anterior. Esto te da un ratio. Este ratio lo multiplicas por la ventaja. Ahí tienes un componente del incremento y luego el otro componente es ese mismo ratio en el rango de 1,8 a 1,2 y también lo multiplicas por la función de ventaja. los lo vas a calcular como el mínimo de el componente uno con respecto al componente dos y la min para calcular todo lo que hay en el batch. El concepto lo vamos a ver aquí y es cómo se comporta el cálculo en el

Segment 11 (50:00 - 55:00)

eh con respecto a este que esté subiendo o bajando por un camino, ¿no? Eh, esto es cómo se comporta la función de ventaja. Esto es cuando te da la función de ventaja positivo y negativo. Estos son los distintos escenarios. tenemos el caso uno y el caso dos, ¿no? Caso uno y caso dos es que estás dentro del rango, dentro del 08, o sea, el ratio te ha dado entre 0,8 y 1,2. Entonces, este caso es el caso convencional, el mismo caso que pudieras tener en actor critic o en policy optimization. ¿Y qué es lo qué es la situación uno? es que tenemos una ventaja positiva. Entonces, esto nos dice que la acción es mejor que la que la media de las otras acciones. En este caso reinforce, este aumenta la probabilidad de esa acción. En el caso contrario, que la ventaja eh la función de ventaja ha sido menor, significa que te vas para abajo. Entonces, esta función te la recomiendas que no que, o sea, le das una probabilidad menor en el entrenado. Los casos tres y cuatro, eh, que la probabilidad del ratio está por debajo del lower bower band. Entonces tienes este escenario y este escenario, este escenario que entras dentro de que o que te aproximas a una zona de ventaja desventaja. Entonces, eh la situación tres, la eh la ventaja estima positivo. Entonces, quieres incrementar la posibilidad porque te estás acertando acercando a una zona de ventaja. Y en el caso contrario, lo contrario, si esto significa, si la función de ventaja te dice que te que estás menor de cero, significa que te estás acercando una función de a una zona de descenso. Recordar que esto es gradinas. Eh, entonces pues se también se tiene que eh decrementar la probabilidad. Y luego tenemos la parte 5 y la parte seis, que también están fuera del rango 1 - e 1 + e, ¿no?, que es el entre el 08 y el ratio queda esto, o sea, si está mayor del 1,2, ¿no? Y entonces si lo mismo la probabilidad de tomar una acción en ese estado en la política actual es mayor que en la política el pasada. No, si estás en la posición cinco y la ventaja es positiva, esto eh significa que hay que decrementar porque eh esto significa que te está siendo demasiado eh está siendo demasiado avaricioso, ¿no? Y lo contrario en el otro caso, para evitar que se descenda más, pues lo que haces es incrementar aquí para evitar que te seas estes evitar que te vuelvas demasiado eufórico y aquí pesimista y de esta manera también activas la exploración, ¿no? O sea, oye, lo he dicho, vamos a seguir. No le decimos a nada que no, pero tampoco le decimos a una cosa que parece muy buena. Le decimos, "Mega por aquí siempre, ni tampoco le decimos a una cosa que a priori parece malo por aquí nunca, ¿eh? O sea, siempre, o sea, un tipo moderado, como se dice en política, eh, siempre nos quedamos en el centro de todo. " ¿De acuerdo? Y esto es un poco la explicación de cómo actualiza el PPO, ¿no? Si nos vamos al PPO, la función, la clase, nuestra clase es eh exactamente igual. Vamos a utilizar eh las una salida con probabilidades para nuestras acciones y una función valor. Vamos a utilizar GaE, que es el el concepto Gae que se llama Generaliz Advance estimation. lo que hace es que mezcla los errores con eh pasos como hacíamos en el en este de cool learning, tan simple como esto. Y eh lo que hacemos en este caso, tú tomas una policy, calculas las ventajas con GAE en este caso, bueno, más que perdonar que

Segment 12 (55:00 - 60:00)

me estoy haciendo un lío, un poco un lío. tú calculas aquí vas a utilizar como estamos en los discount retowns que estábamos utilizando en el en cool learning. Este es el concepto de GA que me estaba pasando a lo siguiente, ¿no?, que era como cómo funcionaba el algoritmo. El GAE lo único que trata es también pues de de introducir una variable para eh digamos suavizar la varianza y minimizar y eh el sesgo, ¿no? Si este parámetro landa que utilizamos para el GAE lo llevamos a cero, este es el TD puro, ¿no? O sea, tenemos en cuenta solo un paso, como hacíamos en Coolarning, en state uno, solo mirábamos el paso uno. Si miramos eh si Landa es igual a 1, esto es que miramos todos los pasos que hay hasta el final. El papel de investigación que introduce el Gae nos dice que un GAE, un LANDA adecuado es 0. 95. mirar casi hasta el final, pero no todo. Como veis, todo va a no intentar no cómo se dice, minimizar el los incrementos o no minimizarlos, sino intentar que los incrementos sean los adecuados para hacernos llegar al objetivo, ¿no? ni mucho ni poco y siempre pues intentando no utilizar todo el valor para que nos introduzca ruido. Esta es nuestra función de computar el BUE y aquí tenemos el RAN del PPO. El RAN del PPO pues es muy similar al de AOR Critic. Como veis, creamos nuestra red, nuestro optimizador, entramos en el bucle de episodios. Aquí eh hace un poco eh también de baches dentro del episodio. Eh, aquí está calculando, ah, perdón, está calculando los logics, como sabéis, de esto calcula las probabilidades, de la probabilidades, saca eh esto, el roll up state son como los número el número de pasos que teníamos en el cool learning y eh aquí calculábamos, sacábamos la acción y una vez que tenía eh que hemos llegado al número de pasos en este de este batch, ¿no? O de este mini batch dentro del batch, pues calcula, sacábamos la acción, la implementábamos en el entorno, tomábamos todos los cálculos, estado, acción, probabilidades, retornos, don values. Y si terminábamos, pues lo único que hacíamos era calcular los, ¿cómo se dice? actualizábamos las listas y aquí una vez que hemos terminado el mini batch, pues calculábamos eh pasábamos el hacíamos el hacemos un boostrapid desde el desde el estado inmediatamente eh posterior al que se había al que se ha colectado y empezamos a hacer el la vuelta atrás, el despliegue para calcular los retornos. Calculábamos el retorno con el Gae. E. Aquí se normaliza. Esto es otro de las cosas que hicimos también en el policy optimization. Convertimos todos a tensores y aquí simplemente haces la optimización para el minibatch. Una vez que has eh vas a hacer optimizaciones en PPO, en vez de hacerlos para el bas completo, las haces múltiples dividiendo ese bash completo en minibates y a los cuales, fijaros, fijaros a lo que llega por cada uno de estos minibas vas a calcular un gradiente, no solo eh divides el batch completo, haces una, si acordáis en el policy gradiente o en A2C, tú miras una trayectoria completa y en esa trayectoria completa calculas gradientes con el método que sea, ¿no? En a en PPO todavía lo hace más eh pequeñito. el batch, que es el la trayectoria completa, la divide en mini batches y cada uno de esos les hace

Segment 13 (60:00 - 65:00)

el cálculo, o sea, calcula eh cuánto aquí está calculando cuál es el ratio de mejora. Eh, aquí genera el componente uno de nuestra función eh de nuestra función del de error. El componente uno. Aquí calcula el componente dos para ver si eh si el ratio está dentro del o el valor obtenido de la función de ventaja está dentro de el 0,8 al 1,2. y luego aplica la función de ventaja. Si os recordáis aquí, nuestra función de ventaja era el mínimo del el ratio por la función de ventaja. O sea, un componente es el ratio por la función de ventaja y el otro componente es la función de ventaja por el clip del ratio. El ratio es la diferencia entre la policy anterior y la nueva policy eh entre el 1 el 0,8 y el 1,2. El mínimo de estos dos componentes es el los que vamos a calcular. ¿De acuerdo? Lo dicho, el ratio es el la comparación entre la política anterior y la política nueva. El componente uno de nuestra función eh o lo que llaman función subrogada es el ratio por el valor de ventaja. Y el valor dos es el clip entre 0,8 y 1,2 de el ratio que hemos obtenido por la función de ventaja del el mínimo de esos dos valores es el que vamos a aplicar como los y esto esencialmente es lo que estamos haciendo aquí en esta parte del código de aquí calculamos la función de los y lo dicho, la lo que hemos cambiado aquí es la policy los cómo calculamos el resto queda igual que todos los organismos avanzados. le aplicamos la entropía y eh la función eh el coeficiente de valor de para que multiplica al Señor al valor del estado. Y una vez hecho eso, pues obtenemos la eh hacemos la propagación del entorno, ¿de acuerdo? Eh, ¿qué tenemos eh con el PPO? Bueno, el es un algoritmo muy estable, probado. Eh, como veis, lo están utilizando para el entrenamiento del de CH GPT. Eso yo creo que os da una indicación de qué bueno puede ser este algoritmo en el entrenamiento de un en Reforcement Learning. Es simple, eh, ya que como veremos ahora en el TRPO, donde utilizamos la divergencia KL, eh, que es la como cómo de diferentes son distribuciones de probabilidades, es bastante más complejo de entender y implementar. Eh, y eh es bastante eh eficiente, ya que reutiliza poch por cada rollout que tenemos, ¿no? Y entonces un algoritmo que está bastante, mira, no solo se está utilizando en SGBT, sino que también lo utilizan otros proveedores de AI, como pueda ser eh Meta o como pueda ser Cloud, ¿no? Los está este es un algoritmo que están utilizando para hacer el tuneado de todos estos modelos modernos. Eh, a diferencia de lo que vamos a ver luego en un segundito del GRPO, que es otra variante que lo simplifica, pero quedaos con la idea de lo que trata en al final el algoritmo es de intentar no salirte del camino óptimo. Y esto lo hace pues con una serie de de métodos para evitar de que los eh

Segment 14 (65:00 - 70:00)

los gradientes que estamos propagando hacia atrás en el entrenamiento de la red sean muy grandes y evitar que tomar un paso eh o un incremento muy grande porque hemos tomado una acción eh en concreto o vemos que hay un paso que nos da muchísimo mucho reguar, pues evitemos que ese esa acción que tomemos en un momento dado pues nos lleve a un punto de no retorno y que no lleguemos al objetivo final. El algoritmo es sencillo de implementar, es muy eficiente y como veis lo están utilizando los principales proveedores de de IA para entrenar sus modelos. TRPO es eh una es muy similar al PPO. En concepto es exactamente igual. estás eh digamos, imagínate aquí que estás en la ala de una montaña y que tiene una serie de formas extrañas, ¿no? Baches, eh pequeños ondulaciones y tú al final lo que quieres, que es lo que hace el graden as en la optimización de reles llegar al a lo alto de la montaña, ¿no? Entonces, bueno, eh en el grade ascen convencional, pues bueno, va a intentar hacer lo que veis aquí. Pero esto, como veis, eh lo dicho, puedes tener eh va a tomar el si digamos el camino con la vertical más pronunciada, que esto es lo que en principio hace la optimización de policy, el optimizador de gradiente va a tomar siempre el incremento. Esto, como os decía, en todos estos algoritmos, lo que estamos tratando de hacer es intentar no tomar estos incrementos grandes. Lo primero para estabilizar el entrenamiento y para que haya menos varianza en los en los retornos obtenidos y que estos introduzcan menos varianza en los gradientes. Y por el otro lado evitar que se caiga en un pozo sin salida, ¿no? Entonces, eh la similitud kill es lo mismo. en en un momento dado eh puedes encontrarte, como he explicado antes, que estás escalando una montaña y hay un gradiente que te dice, "Dar un paso a la derecha es un buen paso, pero es un peso un poquito más adelante ves que ese paso ha sido una mala decisión y que te lanza a un pozo completamente diferente y que además aún recuperarse de Ahí va a ser muy diferente. Esto es como caer en un local mínima. O sea, el objetivo de del policy optimization no es caer en un local máxima, un máximo local, sino llegar al máximo global. Y entonces en cuando estás entrenando un modelo de reinforcementing eh perdón, de supervise learning, como os decía antes, los datos corrigen los datos etiquetados corrigen los malos datos porque sabes cuál es el lo digamos la etiqueta buena, pero en reinforcement learning esto no pasa. ¿Por qué? Porque los datos son no estacionarios, dependen de tu policy actual. Entonces, si un update malo lleva acciones malas, todos los datos futuros de entrenamiento vienen de esas malas acciones, lo cual se crea un ciclo vicioso. En TRPO, esto se corrige creando una zona de confianza. Entonces, esa zona de confianza, que es muy similar a lo que hacemos en aquí es esta zona de confianza, es dónde me puedo mover de una forma eh digamos eh confianza para no caer en el pozo. ¿Por qué conceptualmente es más complicado el el en reinforcement learning, el entrenamiento que en supervis learning? Como he dicho, en supervised learning, nosotros tenemos las etiquetas y aunque des un paso de gradiente que sea malo, el siguiente las otras etiquetas te van a corregir el error. Aquí esto no pasa. Si das un mal un paso en falso, caes en el pozo o caes en un

Segment 15 (70:00 - 75:00)

local máxima y salir de ahí es muy complicado. Imagínate que entras, que estás llegando, no sé, estás entras aquí, o sea, aquí el, por ejemplo, seguramente la el camino óptimo sería por aquí. ¿Por qué? Porque podría llegarte al a la conclusión de que esta barriguita de aquí es el camino final. No sé si me explico. Entonces, partiendo del mismo punto, eh una acción que te lleve por este camino te puede llegar a la conclusión de que esto es el objetivo final. En cambio, si te lleva por aquí, pues tiene muchísimas más probabilidades de que llegue a este punto final. De eso se trata al final, tanto PPO como GRP como TRPO. los eh en este en este entorno donde nos movemos, donde no los gradientes van a depender de los outes de nuestra policy, siempre hay que tratar de hacerte conservadores y principiados y garantizar eh tener una garantía teórica de la mejora. Y esto es un poco también por dónde va TRPO. CRPO al basarse en la divergencia KL eh mide eh qué diferentes son las dos distribuciones de probabilidades, la que tenemos en la probabilidad la en la policy vieja y la que tenemos en la policy nueva. El esto nos dice, mejoramos la policy, pero el cambio que no sea tanto como, o sea, pero que no cambie demasiado con respecto a la policía. Es el mismo concepto que os explicaba antes. Lo único es la forma de calcularlo. En vez de tener estos dos, el clipping del gradiente, esto lo hace con el cálculo de la divergencia KL. Eh, la divergencia KL pues es la como de diferentes son dos distribuciones de probabilidades. Tú tienes una distribución de probabilidad de la policía, en esta policí. Si miras el ratio, pues con ese ratio pues actúas. Si en terrepeo, si el el ratio es muy grande, pues dice, te está dando una indicación eh de cuánto uy dice, mira, si el la diferencia KL es muy grande, ¿no? Entonces, como veis, aquí tenemos un delta eh de cuál es si el delta es muy grande, pues oye, aquí hay una actualización muy grande, hay que ser conservador, hay que moverse siempre dentro de la zona de confianza. Si el delta es muy pequeño, bueno, estamos en la zona segura. Eh, al final trata de lo mismo, como he dicho, eh, tratar de no dar pasos grandes en el en la actualización de la política. ¿Cómo resuelve exactamente? TRPO va a resolver la optimización restringida exactamente al digamos al cálculo de la distribución de las dos probabilidades. La mejora monótona siempre va a estar garantizada porque es un cálculo de una el, ¿cómo se dice? Una comparación entre dos distribuciones de probabilidades. Aquí no hay ninguna heurística, que es lo que estamos haciendo en PPO. está soportado por un papel de investigación, pero no deja de ser un método que está demostrado por otro lado. Pero aquí digamos que obtienes, digamos, un score. El score te lo está dando la KL divergencial y entonces esto es muchísimo más, digamos, matemático, ¿no? La el problema que tiene es que muchísimo más costoso. En el PPO aproximamos la misma idea, pero de un con un clip en simple. es mucho más barato, es casi igual de estable y es muchísimo más fácil de implementar. O sea, bueno, pues lo que os estaba comentando, otra parada, pero bueno. Eh, bien. Entonces, lo dicho, TRPO, como os decía, eh al final el concepto es exactamente el mismo. Tenemos que hacer eh pequeños eh incrementos del gradiente o trata de hacer gradiente. ¿Y cómo lo hace? Como os decía, el KL utiliza KL, la divergencia KL, que es la medida de que nos dice que diferentes son dos distribuciones de probabilidad y eh la restricción eh

Segment 16 (75:00 - 80:00)

digamos esta medida nos dice cómo mejorar la policía la política, pero que no la eh no la no la cambiemos demasiado. El mismo concepto, como os decía, que tiene PPO, tratar de hacer que los de los cambios de la policy no sean demasiado grandes. Esto, ¿cómo lo hace? pues lo utiliza lo que llaman el gradiente conjugado más eh otra cosa se llama eh búsqueda de la de la horizontal de la línea de ascendente y esto es bast matemáticamente bastante riguroso, pero como os decía, es bastante es bastante más eh costoso de calcular y complejo de calcular y en este caso eh, como lo que hace TRPO no es como PPO que hace un digamos una TI basado en heurística, una libre de la póis, resuelve el problema con una restricción, mejor la recompensa sin alejarse del objetivo, ¿no? Eh, sin alejarse demasiado de la póliza anterior, o sea, con el límite siempre de la divergencia KL. Para resolverlo, como os decía, usa una aproximación de segundo orden, lo que llaman el gradiente conjugado, que es eh que calcula de una forma eficiente la dirección de mejora sin invertir eh sin utilizar grandes matrices, sin simplemente utiliza un gradiente conjugado y luego lo que llaman el linear este que es el otro componente que es una prueba de tamaño de paso hasta encontrar uno que mejora el objetivo y respeta la restricción. Es, como digo, matemáticamente muy riguroso, pero y tiene una fuerte base matemática, no es como lo que veíamos antes de que esto pues al final os puede parecer, bueno, ¿y cómo has decidido + 8 -1,2? Sí, está basado en un paper que está eh luego os paso el link que es un papel de investigación y bueno, la prueba, de hecho, como veis lo usan los pero no deja de ser pues digamos algo que digamos se ha probado o se ha testeado de que es eficiente pero no tiene una base matemática detrás de sino que es a veces llegamos a las cosas pues como hacer reinformer no por no bueno reinformer llen todavía menos matemáticamente riguroso, por decirlo de alguna manera, sino que es prueba y error, ¿no? Esto me va bien, esta esta acción me va bien, la tomo. Hay otras formas que son pues matemáticamente menos compactas, pero que funcionan, ¿no? Que esto es el caso PPO TRPO. Entonces, en el TRPo vamos a dar eh pasos más seguros y controlados, pero el ¿cómo se dice? El cada cálculo de cada paso es muchísimo más costoso que en PP en PPO. en PPO aproximamos, o sea, eh lo mismo y que y lo que quiero que os quedéis es con lo mismo. concepto es lo mismo, intentar eh optimizar eh en una zona de confianza o en una zona donde nos sentamos seguros, pero eh eh esta forma con el hacerlo de una forma, digamos, muchísimo más suave. En lo que llaman el primer orden de optimización es lo que utiliza el gradient, la búsqueda del gradiente, la búsqueda de la vertical o la búsqueda de del de la mejora más alta. En el en TRPO y PPO buscamos una zona que es lo que ha un segundo orden de optimización más moderado, o sea, intentar no escalar tanto ni tan rápido. Es como, no sé si os puede servir también el símil. Cuando estáis en una pendiente muy elevada, pues lo que se hacen las carreteras es zizzaguear y lo hacemos también cuando subimos una pendiente muy pronunciada. Pues aquí un poco similar a esto. En vez de utilizar la máxima pendiente para llegar al objetivo, lo más hacer zigzagueo, como veis aquí, y uno lo hace de una forma matemáticamente comprobada y la otra la hace con una que funciona. De hecho, se usa más, pero eh para hacer lo que llaman una eh optimización de segundo grado, no tanto, sino como os digo, ser bastante más conservadores en la actualización de los gradientes. Y ahora vamos a ver una de las más modernas que es que se está utilizando

Segment 17 (80:00 - 85:00)

en el en el tuneado de los LLMs, que es el GRPO, que como os decía anteriormente, es lo que se ha utilizado para el tuneado del DIxic R1. Y esto pues utiliza también un una eh, ¿cómo se dice?, una simplificación bastante eh simple, pero también os lo advierto, funciona solo dentro de el fine tuning de los LLMs. ¿Por qué? Pues porque cuando te haces un f tuning de LM hay ya mucho camino hecho. Si recordáis cuando hemos hecho, tenemos bastantes ejemplos en el canal de Fine Tuning de LLMs, eh el un LLM ya tiene eh está entrenando con millones de tokens, ¿no? Y entonces ya tienes mucha mucho camino andado. O sea, cuando haces un fine tuning, lo que estás haciendo es especializarlo en una tarea en concreta. Entonces, ahí sí que vale lo que hace el GRPO. El GRPO H digamos que bueno es una variante del PPO y lo que hace es en vez de depender de un valor de la función de crítica del val del value mode y del el guide y de con ese valor e y luego o utilizas el KL divergencia o utilizas el eh el clipping, pues actualizas en base a esa zona de confianza actualizase la policy o la probabilidad de la acción. Aquí en vez en veces depender de ese valor que lo estás entrenando también y lo estás aprendiendo durante el entrenamiento, lo que hace es eh compara las respuestas dentro de un grupo de muestras para el mismo prom contexto, ¿no? Por eso os digo que ¿Por qué? Porque aquí ya tienes, como os digo, estáis eh haciendo un fine tuning del modelo, eh lo ya tienes mucho hecho, ya tienes los pesos están depurados, lo único que los quieres es depurar más. Entonces ya no necesitas saber si eh qué buena es esta respuesta con respecto a las otras, a la media de las otras, sino que lo que vas a hacer es simplemente utilizar una media. Mira, se lo paso por una muestra de de las que tengo disponibles y hago una media y dependiendo de esa media pues hago mando una señal de de mejorar la mejorar la probabilidad a ese a esa o no mejorarla o decrementarla, ¿no? Lo que hace aquí, como dice, se compara GRPO, compara las respuestas dentro de un grupo de muestras para el mismo pron contexto y a cada repuesta se le asign una señal relativa, mejor o peor que las otras dentro del grupo, no solo una señal absoluta. Luego se aplica tipo PPO ratio clipping, pero esta vez con esa ventaja recompensa relativa al grupo. Lo dicho, aquí estamos haciendo un poco como lo que se definía aquí del baseline, ¿no? Eh, donde estábamos, algo así como esto, quitarle. Eh, lo que haces aquí es eh trazas varias póliis, no calculas la función de ventaja, sino que eh digamos le quitas lo común y o haces una media de todas ellas y miras qué buena es esta en comparación con eh o sea, al final de todos los ventajas que me han eh de todas las recompensas dado todas estas eh observaciones que estoy tomando, pues le calculo la media, le calculo la estándar divisation y se la resto a la que me da esta en concreto, con lo cual estás, digamos, como estandarizando. Y bueno, pues esa este esta resta, esta función de ventaja es lo que le vas a restar al componente principal para nuestro gradiente. ¿De acuerdo? En vez de utilizar un único valor, lo que utilizas es muestreas un montón de ellos, lo estandarizas, se lo restas al que te da una en concreto y le calculas el

Segment 18 (85:00 - 90:00)

gradiente para esa en particular. Es una cosa que ha funcionado muy bien, como les ha funcionado a la gente de GRPO, eh, Dipsic y bueno, pues es una alternativa que está demostrada lo mismo cuando dónde se ha demostrado que, perdón, don eh la intuición de todo esto no se dice esta acción fue buena, sino fue mejor que sus alternativas cercanas en el mismo contexto. O sea, está muy orientado al entrenamiento de o alfine tuning de modelos, o sea, que su utilización dentro de entornos convencionales como juegos y todo esto dentro del reinformering o otros tipos de programas de problemas que querramos resolver, pues está por ver. Lo que es cierto que dentro del fine tuning de los modelos de los LLMs ha sido bastante satisfactoria y de hecho, pues como veis eh en algunas series eh como la razonación matemática, la generación de código está utilizándose en modelos. Esto el Queen, por si no lo conocéis también está es un modelo de que viene de Alibaba, de la alternativa cloud que tienen en China. Dixic también viene de por allá y Olmo 3, ¿no? O sea, que el es una alternativa que exploraremos en el momento que nos metamos, que terminemos con toda la exploración de los modelos de los algoritmos de reinformess learning, empezaremos con ver ya ejemplos que nos sirven para el objetivo que es el entrenamiento o el fine tuning de modelos. iremos utilizando todas estas técnicas. Las diferencias entre GRPO, eh, PPO y TRPO, bueno, pues están por un lado la señal principal. Eh, la señal principal es la eh GRPO es el ranking con de ventaja con respecto con respecto al grupo de observaciones que tenemos en el PPO. es la ventaja usualmente con eh del de con una con la parte de la cabeza de crítica, ¿no? Con el componente crítica más GAE y en el TRP utilizamos la ventaja con la restricción de KL, ¿no? Explícito, ¿no? El control de del late en GRPO lo hacemos clipping como hacemos en PPO y en el TRPO una costra directamente derivada de la divergencia KL y la complejidad práctica al final que es una cosa que nos tiene hacer que medir dónde lo vamos a utilizar. GRPO tiene una complejidad media, eh, PPO baja, muy baja, de hecho es muy simple de implementar y TRPO, de hecho, vais a ver que muchos eh de los algoritmos utilizan TRPO como una función objetivo cuando estáis utilizando el fine tuning de modelos. De hecho, R reinforce Merlin for human feedback, todo este tipo de algoritmos están utilizando eh variantes de PPO, no GRPO ni TRPO, o sea, TRPO no se utiliza, ya que eh la complejidad que tiene es muy alta eh de implementación. Y si ya per sé eh hacer un fine tuning del de un modelo es complejo y costoso, pues si además le añades el la el costo de tener que calcular una función de de los compleja, pues esto va a hacer que todavía el costo se aumente más y que el tiempo de de Fun se aumente más. Y el uso típico de GRPO es ajuste de políticas con preferencias comparativas, que esto es muy común en el en el tuneado de LMS con de con reinforcement learning. El PPO se utiliza en general, es una baseline para todo tipo de de entrenado de reinforcement learning y el TRPO solo en aquellos casos donde se prioriza la garantía teórica y conservadora del incremento de eh de la policí eh simplemente también el incidir un poco más en el tema de GRPO que solo se diferencia de PPO en que eliminamos la red crítica, esta red crítica que teníamos en nuestra en nuestra, a ver si lo digo, en nuestra

Segment 19 (90:00 - 95:00)

red neuronal, recordar que teníamos dos cabezas, una cabeza que se acaba las probabilidades de cada acción y la otra cabeza que se acaba la función valor, pues esto en el GRPO se elimina, no queremos saber, simplemente lo calculamos por la ventaja se va a calcular con la estandarización del retorno con respecto a un grupo de retornos calculados. Como veis, aquí vamos a tener un número de observaciones. Vamos a calcular los retornos y los retornos van a ser eh la función de ventaja se va a calcular el retorno. En comparación se le resta la media de los retornos de todas las observaciones que hemos tenido y se le divide para la estándar de viso. Estamos estandarizando el retorno. Bien. Eh, vamos a ver un poco ya el final, los model los algoritmos que hemos visto. Tenemos el A2C, la 3C, el PPO y TRPO. La idea principal, el Baseline en el A2C, biseline Critic más función de ventaja. Eh, el la 3D lo mismo, pero con múltiples eh workers que te dan que te dan más riqueza als ampleado de trayectorias. El PPO se utiliza clipping para hacer outage eh de la ganancia de del gradiente con mini batch repetidos, o sea, dividimos el batch principal en mini batches y podemos ir eh ampleando también de esos minibatches, repetir eh cómo se dice, eh baches de ese eh de esos miniatches, o sea, podemos crear minibates dentro de los baches que teníamos en el policy gradient y en el TRPO utilizábamos un restringidos a la región de confianza. Muy bien. Eh, vamos a ver un momento la comparación. Eh, como en otros casos, a ver, ¿dónde lo tengo, pues hemos utilizado un algoritmo eh tengo hemos utilizado nuestro policy gradient benchmark, eh, este no era, perdonar que me Sí, exactamente. Policy gradi enent benchmark. No, este no es la ventana. Tengo tantas ventanas abiertas como siempre. Un segundito. Bueno, eh al final he debido cerrar la ventana donde tenía el entrenamiento. Bueno, lo vamos a empezar de nuevo. Simplemente eh ejecutamos nuestro scrit para comparar todos los métodos. le pasamos los métodos que queremos eh pasar, que queremos comparar. En este caso le eh queremos grabar vídeos, también le pasamos el director donde tenemos los vídeos y luego el número de episodios de eh con la policy entrenada que queremos grabar. Aquí ya tenemos el policy gradient. Aquí estamos entrenando el A2C. Si recordáis del vídeo anterior, pues el A2C, el policy gradient daba un reward bastante mediocre. Aquí ya veis a 2c pues lo está multiplicando prácticamente por cinco. Aquí prácticamente por 10 el esto. Aquí estamos utilizando A3C. La diferencia entre A3C y A2C no va a ser demasiado grande. Eh, vais a ver que eh incluso para número bajos de episodios va a quedar incluso peor. Pero bueno, ya veis, eh depende de del entrenamiento. que hay muchísima más entropía en que en el A2C, porque estamos utilizando cuatro workers por defecto. Y nos recordamos aquí en el A3CD, en nuestro nuestra clase de configuración, estamos utilizando cuatro eh cuatro entornos de forma simultánea y aquí, bueno, pues tarda obviamente más tiempo, pero bueno, la mejora es sustancial, ¿no? También

Segment 20 (95:00 - 100:00)

ahora empezamos PPO. PPO ya veréis que es también bastante rápido y como veis las mejoras son bastante más discretas. Está mejorando, pero no hace grandes saltos. Y el resultado final lo veimos aquí. Este algoritmo para aquí estamos grabando el carpol otra vez. Este algoritmo, eh, a ver si lo encuentro. Este sí. Eh, ¿dónde está esto? TRPO va a tardar un montón de tiempo, o sea, que lo voy a parar un segundito para no haceros esperar porque esto tarda la tarda muchísimo. Como veis, aquí estoy eh sigue entrenando esto para que veáis que no os engaño. El TRPO saca eh el PPO saca. Bueno, lo está mal. Si lo entrenamos más va a sacar eh un algo bastante más estable, A3C, que es el que más eh ganancia nos había dado. Como veis, pues ya lo mantiene vertical. Está muy bien el la policy que ha entrenado el A2C. Este es un poco similar al PPO. Estos necesitan más episodios para Pero también ya veis que está mejor. Y bueno, vamos a esperar al PP al TRPO. que se pega un ratito. Bien, ya terminado. Eh, como veis aquí, TRPO eh, ha tardado bastante más, pero bueno, eh, me ha conseguido los 500, eh, que es el máximo reward. Y ahora vamos a hacer el agregar los resultados, que este es otro de los eh Python Scrit, que este era, si no recuerdo mal. Tenemos otro aquí. Un segundo. Siempre me equivoco con el agregate results. Un segundo que me acuerde de Ay, bueno, el cuando termina el entrenamiento, como veis aquí nos guarda estos tres ficheros. Estos tres ficheros simplemente pues tienen el los resultados de cada lo que vamos capturando de cada uno de los entrenamientos. Con el con este otro script vamos a agregar todo en un simple en un CSV y en un Jason. Y luego, ¿qué es este otro fichero que tenemos aquí? Bueno, esto lo podéis cambiar a vuestro gusto. Es algo que simplemente he creado para eh crear un reporte bonito y que haga unas op, perdón. Y el generar el reporte. El reporte, como veréis, eh, lo tenemos aquí en reporte y sale un bonito resultado del esto. Como era de esperar RPO es el que mejor funciona en cuanto al reguar, pero también es el que más tarda.

Segment 21 (100:00 - 102:00)

O sea, por nivel de complejidad, por nivel pues obviamente A3C que también tiene múltiples workers, pues y bueno, esto es una sola prueba. Podéis jugar con los parámetros, número de episodios, etcétera, todo lo que queráis. Y podréis observar también PPO y A2C va a necesitar muchísimo más episodios eh para llegar a los objetivos que llegan y los otros pues hacen menos eh, pero eh hacen con menos episodios llegan al mismo. Quiero recordar tanto en este tienes que hacer multiprocesado, tienes que hacer gestión de colas y repo, tienes que hacer los cálculos de convergencia eh de divergencia KL y todo el tema de la segunda eh derivada del gradiente y todo esto que mirábamos que os comentaba en el vídeo. Bueno, pues esto es ya hemos terminado también la parte de de policy optimization. Nos queda esta parte de aquí y luego nos moveremos ya a la a la a ver ya casos prácticos de uso de reinforcement learning con un par de cosas que hice que tengo hechas. Eh, una de ellas para hacer trading con agentes de reinforcement learning. Y luego también haremos la parte de hacer fine tuning de modelos las distintas alternativas. Bueno, eso es todo. Espero que os haya gustado, que os haya entretenido y si es así, pues ya sabéis, darle un like, suscribiros al canal y todas esas cosas. Eh, considerar haceros miembros del canal. De esa forma, pues también me ayudáis a seguir con este proyecto y también podéis ayudarme pues con el super fans, con el eh comentarios y siempre que sean eh cariñosos, por decir de alguna manera, ir compartiendo este vídeo con amigos y colegas y de esa manera pues también ayudáis a eh que es el algoritmo YouTube, pues escale mi contenido eh en la plataforma y así le llega a más personas. Venga, un saludo, hasta pronto.

Другие видео автора — The Machine Learning Engineer

Ctrl+V

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник