Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Fundamentos del aprendizaje por refuerzo
Fundamentos del aprendizaje por refuerzo
Soy el Dr. Soper y hoy hablaré sobre los fundamentos del aprendizaje por refuerzo, que es un área crucial dentro del dominio más amplio de la inteligencia artificial. Antes de profundizar en los fundamentos del aprendizaje por refuerzo, tomemos un momento para revisar lo que aprenderá en esta lección.
Al final de este video, tendrá una comprensión clara de lo siguiente:
Una vez que comprendamos estos conceptos, estaremos completamente equipados para comenzar a construir modelos reales de IA. Entonces, ¡no perdamos tiempo y comencemos!
Primero, exploremos qué se entiende por "aprendizaje por refuerzo". Junto con el aprendizaje supervisado y el aprendizaje no supervisado, el aprendizaje por refuerzo es uno de los tres paradigmas principales del aprendizaje automático.
En el aprendizaje supervisado, una máquina aprende una función general para predecir salidas basadas en pares de entrada-salida. En el aprendizaje no supervisado, una máquina descubre patrones en un conjunto de datos sin conocimiento previo sobre los datos. Por otro lado, el aprendizaje por refuerzo tiene como objetivo entrenar a una máquina para que comprenda su entorno de una manera que le permita tomar medidas para maximizar las recompensas acumuladas. Para conseguirlo, el aprendizaje por refuerzo implica encontrar el equilibrio óptimo entre explorar el entorno y explotar lo aprendido hasta el momento. Ahora, profundicemos en los cinco principios subyacentes a la IA basada en el aprendizaje por refuerzo.
El primer principio que discutiremos es el sistema de entrada y salida. Este sistema no es exclusivo del aprendizaje por refuerzo, sino que es fundamental para todos los sistemas de inteligencia artificial y computación cognitiva. Se trata de convertir entradas en salidas.
En el contexto del aprendizaje por refuerzo, las entradas se denominan "estados", que representan el estado del entorno. Los resultados se denominan "acciones" y responden a la pregunta "¿Qué debo hacer a continuación?" El objetivo del aprendizaje por refuerzo es identificar una política óptima que guíe las acciones en cada estado.
Continuando, hablemos de las recompensas. Las recompensas juegan un papel crucial en todos los sistemas de IA y computación cognitiva. Actúan como métricas que informan al sistema sobre su desempeño. Las funciones de recompensa pueden diseñarse para maximizar las ganancias o minimizar las pérdidas, según el problema que se resuelva. Las recompensas inmediatas y acumulativas se consideran para maximizar las recompensas totales acumuladas a lo largo del tiempo.
El tercer principio es el entorno, que se refiere al entorno o entorno en el que opera el sistema de aprendizaje por refuerzo. El entorno proporciona información sobre estados y recompensas. También define las reglas del juego, determinando qué acciones son posibles en un momento dado. Inicialmente, el sistema no tiene conocimiento de las consecuencias de sus acciones y debe experimentar para aprender.
A continuación, tenemos los procesos de decisión de Markov (MDP). Nombrados en honor al matemático Andrey Andreyevich Markov, los MDP proporcionan un marco matemático para modelar la toma de decisiones cuando los resultados son en parte aleatorios y en parte bajo el control de un tomador de decisiones. En el aprendizaje por refuerzo, el sistema de IA actúa como el tomador de decisiones que opera en el entorno. Los MDP implican unidades discretas de tiempo, y el sistema pasa de un estado al siguiente en función de las observaciones, las acciones, las recompensas y los estados posteriores.
Por último, tenemos el modo de entrenamiento y el modo de inferencia. Los sistemas de aprendizaje por refuerzo pasan por dos fases: entrenamiento e inferencia. En modo de entrenamiento, el sistema aprende y busca identificar una política óptima a través de múltiples ciclos de entrenamiento. Actualiza su política en función de los conocimientos adquiridos. En el modo de inferencia, el sistema se entrenó por completo y se implementa para realizar su tarea utilizando la política aprendida sin más actualizaciones.
Ahora que tenemos una sólida comprensión de los principios del aprendizaje por refuerzo, podemos comenzar a construir modelos reales de aprendizaje por refuerzo. En los próximos dos videos, exploraremos modelos de aprendizaje por refuerzo que utilizan el muestreo de Thompson para resolver problemas prácticos. El primer modelo abordará el dilema de exploración-explotación en el problema del bandido de múltiples brazos, y el segundo modelo optimizará los resultados en una campaña publicitaria compleja utilizando simulaciones.
Estos videos brindarán experiencia práctica en la creación de modelos de IA con Python. ¡Espero que te unas a mí en estas emocionantes aventuras en computación cognitiva e inteligencia artificial!
Con esto concluye nuestra lección sobre los fundamentos del aprendizaje por refuerzo. Espero que esta información les haya resultado interesante y les deseo a todos un gran día.
Aprendizaje por refuerzo: Muestreo de Thompson y el problema del bandido armado múltiple - Parte 01
Aprendizaje por refuerzo: Muestreo de Thompson y el problema del bandido armado múltiple - Parte 01
Soy el Dr. Soper y es un placer para mí presentarles la primera parte de nuestra lección integral sobre el aprendizaje por refuerzo, que se enfoca específicamente en el muestreo de Thompson y el renombrado problema del bandido con múltiples brazos.
Antes de profundizar en las complejidades del aprendizaje por refuerzo en el contexto del muestreo de Thompson y el problema del bandido de múltiples brazos, me gustaría enfatizar la importancia de ver los videos anteriores de esta serie. Estas lecciones anteriores sirven como base para los conceptos que exploraremos hoy y le recomiendo que se familiarice con ellos si aún no lo ha hecho.
Para proporcionar una breve descripción general de lo que puede esperar aprender en esta lección, permítame resumir los puntos clave:
El viaje por delante promete ser esclarecedor, ya que descubrimos varias aplicaciones e implicaciones de los problemas de los bandidos con múltiples brazos. Entonces, sin más preámbulos, ¡comencemos nuestra exploración!
Para comprender el concepto de aprendizaje por refuerzo en el contexto del problema del bandido de múltiples brazos, es esencial definir primero lo que implica este problema.
El problema del bandido con múltiples brazos se refiere a cualquier escenario en el que debemos determinar cómo asignar una cantidad fija de un recurso limitado entre un conjunto de opciones en competencia. El objetivo principal es maximizar nuestras recompensas esperadas mientras enfrentamos incertidumbre.
Este recurso limitado podría tomar varias formas, como tiempo, dinero, turnos, etc. Además, las recompensas que podríamos recibir de cada opción disponible no se conocen por completo. Sin embargo, a medida que asignamos recursos a diferentes opciones, gradualmente obtenemos una mejor comprensión de las recompensas potenciales asociadas con cada una.
El nombre "Problema del bandido armado múltiple" se origina en una analogía con el juego. Imagine a un jugador frente a una fila de máquinas tragamonedas, tratando de identificar la máquina que maximiza sus posibilidades de ganar. Las máquinas tragamonedas son juegos de azar que se encuentran comúnmente en los casinos, donde los jugadores depositan dinero y participan en turnos. Si la suerte favorece al jugador, la máquina otorga una recompensa monetaria, que el jugador espera que supere su inversión inicial.
Tradicionalmente, las máquinas tragamonedas se denominaban "bandidos de un solo brazo" debido a la palanca mecánica (brazo) utilizada para iniciar el juego. Por lo tanto, cuando un jugador se encuentra con varias máquinas tragamonedas y debe decidir en cuál jugar, presenta un problema clásico de bandidos con múltiples brazos. Este problema encarna inherentemente el dilema de exploración-explotación que es fundamental para el aprendizaje por refuerzo.
El dilema de exploración-explotación gira en torno a determinar cuántas veces el jugador debe jugar cada máquina. Si un jugador descubre una máquina que parece ofrecer recompensas frecuentes, ¿debe continuar jugando en esa máquina en particular (explotación) o arriesgarse a posibles pérdidas probando otras máquinas con la esperanza de encontrar una opción aún más gratificante (exploración)?
Ahora, puede preguntarse por qué el problema del bandido con múltiples brazos tiene tanta importancia. Bueno, la verdad es que los problemas de los bandidos con múltiples brazos son omnipresentes en el mundo real, impregnando tanto nuestra vida diaria como los entornos comerciales.
Considere las opciones que encuentra en su vida personal. Por ejemplo, decidir si visitar su restaurante favorito una vez más el viernes por la noche o explorar un nuevo restaurante que no haya probado antes. Del mismo modo, imagine tener múltiples series de TV intrigantes disponibles para transmitir pero tiempo libre limitado para verlas. ¿Cómo determinas en qué programa invertir tu tiempo?
Thompson Sampling es un algoritmo popular que se utiliza para abordar el dilema de exploración-explotación en el Problema del bandido con múltiples brazos. Proporciona un enfoque basado en principios para equilibrar la exploración y la explotación aprovechando la inferencia bayesiana.
La idea central detrás de Thompson Sampling es mantener una creencia o distribución de probabilidad sobre las verdaderas probabilidades de recompensa subyacentes de cada opción (brazo) en el problema del bandido. Esta creencia se actualiza en función de las recompensas observadas de interacciones anteriores con los brazos.
Thompson Sampling adopta un enfoque probabilístico para la toma de decisiones. En lugar de seleccionar estrictamente el brazo con la mayor recompensa esperada (explotación) o explorar brazos al azar, toma muestras de un brazo de la distribución de creencias de una manera que equilibra la exploración y la explotación.
Veamos los pasos del algoritmo de muestreo de Thompson:
Inicialización: Comience inicializando la distribución de creencias para cada brazo. Esta distribución representa la incertidumbre sobre la verdadera probabilidad de recompensa de cada brazo. Por lo general, se usa una distribución Beta como la distribución anterior, ya que se conjuga con la distribución binomial que se usa comúnmente para modelar las recompensas en los problemas de bandidos.
Muestreo: para cada ronda de interacción, muestree una probabilidad de recompensa de la distribución de creencias para cada brazo. Este paso incorpora la exploración considerando armas con mayor incertidumbre en sus probabilidades de recompensa.
Selección: seleccione el brazo con la probabilidad de recompensa muestreada más alta. Este paso incorpora la explotación al favorecer las armas que probablemente tengan mayores recompensas esperadas en función de la distribución de creencias.
Actualizar: observe la recompensa del brazo seleccionado y actualice la distribución de creencias para ese brazo según la inferencia bayesiana. Este paso actualiza la distribución posterior utilizando la distribución anterior y la recompensa observada.
Al muestrear, seleccionar y actualizar repetidamente, Thompson Sampling adapta su distribución de creencias en función de las recompensas observadas, mejorando gradualmente la selección de armas con el tiempo.
Thompson Sampling ha demostrado ser un algoritmo efectivo para resolver el dilema de exploración-explotación en varias aplicaciones. Ha sido ampliamente utilizado en publicidad en línea, ensayos clínicos, sistemas de recomendación y muchos otros dominios donde está involucrada la toma de decisiones secuenciales bajo incertidumbre.
Una de las principales ventajas de Thompson Sampling es su simplicidad y facilidad de implementación. El algoritmo no requiere cálculos complejos ni ajustes de hiperparámetros, lo que lo convierte en una opción práctica en muchos escenarios del mundo real.
En conclusión, Thompson Sampling ofrece una solución elegante al problema del bandido de múltiples brazos al equilibrar la exploración y la explotación a través de la inferencia bayesiana. Su capacidad para adaptarse a las cambiantes probabilidades de recompensa y su amplia aplicabilidad lo convierten en una herramienta valiosa para reforzar el aprendizaje y la toma de decisiones.
En la siguiente parte de nuestra lección, profundizaremos en los fundamentos matemáticos de Thompson Sampling y exploraremos sus garantías de rendimiento. ¡Estén atentos para un emocionante viaje a las complejidades de este poderoso algoritmo!
Aprendizaje por refuerzo: Muestreo de Thompson y el problema del bandido armado múltiple - Parte 02
Aprendizaje por refuerzo: Muestreo de Thompson y el problema del bandido armado múltiple - Parte 02
Soy el Dr. Soper y estoy aquí para presentar la segunda parte de nuestra lección sobre el aprendizaje por refuerzo en el contexto de Thompson Sampling y el famoso Problema del bandido con múltiples brazos.
En el video anterior de esta serie, obtuvimos una comprensión del problema del bandido con múltiples brazos y cómo se puede utilizar el muestreo de Thompson para abordarlo.
Antes de continuar, le recomiendo que mire el video anterior si aún no lo ha hecho, ya que proporciona conocimientos esenciales que beneficiarán enormemente su comprensión de esta lección.
Hoy, nuestro enfoque será implementar un sistema de IA basado en el aprendizaje por refuerzo que utilice el muestreo de Thompson para resolver un problema real de bandidos con múltiples brazos. Para hacer esto, ¡cambiaremos a Python y comenzaremos! Para comenzar, repasemos brevemente el escenario con el que trabajaremos. Imagina que estás en un casino con $1,000 para jugar en las máquinas tragamonedas. Hay seis máquinas tragamonedas disponibles y cada turno cuesta $1 para jugar. La tasa de conversión, que representa la probabilidad de ganar en cualquier turno, varía según las máquinas y usted la desconoce.
Su objetivo es maximizar sus posibilidades de ganar identificando la máquina tragamonedas con la tasa de conversión más alta lo más rápido posible.
En nuestra implementación de Python, comenzaremos importando las bibliotecas requeridas. Afortunadamente, para este proyecto, solo necesitamos importar numpy. A continuación, definiremos el entorno. Definir el entorno es un paso crucial en cualquier proyecto de aprendizaje por refuerzo. Aquí, comenzaremos especificando el número total de turnos que jugaremos en las máquinas tragamonedas. Como tenemos $1000 y cada turno cuesta $1, tendremos un total de 1000 turnos.
También necesitamos definir el número total de máquinas tragamonedas, que en este caso es seis. Además, crearemos matrices para realizar un seguimiento de nuestras ganancias y pérdidas para cada máquina tragamonedas. Estas matrices servirán como parámetros de forma para la distribución beta, como se explicó en la lección anterior. Además, estableceremos una semilla para el generador de números aleatorios para garantizar la reproducibilidad de nuestros resultados.
A continuación, generaremos tasas de conversión aleatorias entre el 1 % y el 15 % para cada máquina tragamonedas. Estas tasas de conversión representan la frecuencia con la que un jugador ganaría si jugara en esa máquina en particular. Tenga en cuenta que en un escenario del mundo real, el jugador no tendría acceso a esta información. Después de generar las tasas de conversión, las imprimiremos en la pantalla para observar los valores almacenados en la memoria de la computadora.
En el paso siguiente, crearemos el conjunto de datos principal. Este conjunto de datos será una matriz con una fila para cada turno y una columna para cada máquina tragamonedas. En este caso, nuestro conjunto de datos tendrá 1000 filas y 6 columnas, que representan los 1000 giros y las 6 máquinas tragamonedas posibles. Cada entrada en la matriz indicará el resultado de jugar en una máquina tragamonedas en particular en un turno específico, con "1" indicando una ganancia y "0" indicando una pérdida.
Para generar el conjunto de datos, utilizaremos bucles "for" anidados. Después de generar el conjunto de datos, imprimiremos las primeras 15 filas para tener una idea de su estructura.
Al ejecutar la celda de código, se mostrará una matriz llena de unos y ceros, que representan ganancias y pérdidas, respectivamente. Cada fila corresponde a un turno, y cada columna corresponde a una máquina tragamonedas. Por ejemplo, en el primer turno, jugar cualquier máquina tragamonedas resultaría en una pérdida. El conjunto de datos nos permite comprender los resultados si tuviéramos que jugar una máquina tragamonedas específica en un turno determinado.
A continuación, mostraremos las medias de cada columna en el conjunto de datos. Estos medios representan las verdaderas tasas de conversión que podemos esperar para cada máquina tragamonedas en nuestra simulación. Ejecutar la celda de código mostrará estos valores, que deberían estar cerca de las tasas de conversión teóricas definidas anteriormente, aunque no exactas debido al generador de números aleatorios y al número limitado de vueltas en nuestro conjunto de datos.
Ahora es el momento de simular jugar en las máquinas tragamonedas 1000 veces mientras se cumple con la restricción de jugar solo una máquina por turno.
Usando bucles "for" anidados, con el bucle exterior iterando a través de cada turno y el bucle interior iterando a través de cada máquina tragamonedas, realizaremos la simulación. Al comienzo de cada turno, estableceremos la variable "max_beta" en -1. Esta variable nos ayudará a realizar un seguimiento del mayor valor beta observado para el turno actual.
Para cada máquina tragamonedas, sacaremos un valor aleatorio de la distribución beta de la máquina, donde la forma de la distribución está determinada por la cantidad de ganancias y pérdidas acumuladas al jugar en esa máquina en particular. Compararemos el valor beta de la máquina tragamonedas actual con el valor beta más alto observado hasta ahora en la ronda actual. Si es más grande, actualizaremos la variable "index_of_machine_to_play" con el índice de la máquina tragamonedas actual.
Después de examinar los valores beta de las seis máquinas tragamonedas, la variable "index_of_machine_to_play" almacenará el índice de la máquina con el valor beta más alto para el turno actual. Luego, jugaremos en la máquina tragamonedas seleccionada buscando el resultado en nuestro conjunto de datos y registrando si fue una ganancia o una pérdida incrementando el elemento correspondiente en la matriz "número_de_recompensas_positivas" o "número_de_recompensas_negativas".
Este proceso continuará hasta que hayamos completado las 1000 rondas. Nuestro sistema de IA aprenderá continuamente del entorno en cada ronda, utilizando su conocimiento acumulado para decidir entre exploración y explotación. Una vez que terminen las 1000 rondas, calcularemos el número total de veces que nuestro agente de IA jugó en cada máquina tragamonedas e imprimiremos los resultados en la pantalla.
Ejecutar la celda de código mostrará la cantidad de veces que se jugó cada máquina tragamonedas. Como puede ver, nuestro sistema de inteligencia artificial basado en el aprendizaje por refuerzo identificó con éxito que la máquina tragamonedas 4 tenía la mayor probabilidad de ganar. Decidió jugar esa máquina en 695 de los 1000 turnos en un intento de maximizar sus recompensas acumulativas.
Finalmente, es crucial comparar estos resultados con una línea de base relevante. En este caso, el enfoque ingenuo sería seleccionar al azar una máquina tragamonedas para jugar en cada ronda. La última celda de código demuestra este enfoque de muestreo aleatorio al calcular el número de ganancias si tuviéramos que elegir al azar una máquina tragamonedas para jugar en cada turno.
La ejecución de la celda de código revelará la comparación entre el enfoque de muestreo de Thompson y el enfoque de muestreo aleatorio. Como puede ver, el enfoque de muestreo de Thompson resultó en ganancias significativamente mayores en comparación con el enfoque de muestreo aleatorio ingenuo. Por lo tanto, ¡nuestro jugador sería prudente si utilizara Thompson Sampling!
En esta lección, aplicamos el conocimiento adquirido hasta ahora en nuestra serie para resolver un problema de decisión del mundo real. Específicamente, construimos con éxito un completo sistema de inteligencia artificial basado en el aprendizaje por refuerzo en Python que utiliza muestreo de Thompson para abordar un problema real de bandidos con múltiples brazos.
En esta etapa de nuestra serie, espero que esté comenzando a desarrollar una comprensión de la utilidad de las herramientas de IA para respaldar la toma de decisiones. También puede estar imaginando aplicaciones inteligentes e innovadoras de estas tecnologías para resolver otros problemas del mundo real.
En el próximo video de esta serie, exploraremos una versión más sofisticada del aprendizaje por refuerzo basado en muestreo de Thompson aplicado a una campaña publicitaria compleja. Te invito a unirte a mí para ese video también.
Con esto concluye la segunda parte de nuestra lección sobre el aprendizaje por refuerzo en el contexto del muestreo de Thompson y el famoso problema del bandido de brazos múltiples. Espero que hayas encontrado esta lección interesante, y hasta la próxima, ¡que tengas un gran día!
Un sistema de IA basado en el aprendizaje de refuerzo que maximiza las ganancias en Python
Un sistema de IA basado en el aprendizaje de refuerzo que maximiza las ganancias en Python
¡Buen día a todos! Habla el Dr. Soper. Hoy profundizaremos en un ejemplo completo en Python que demuestra cómo un sistema de IA basado en el aprendizaje por refuerzo puede maximizar de manera efectiva las ganancias corporativas en un escenario complejo que involucra múltiples opciones y millones de clientes.
Las técnicas mostradas en este video han sido presentadas y discutidas extensamente en lecciones anteriores de esta serie. Si no ha tenido la oportunidad de ver esos videos anteriores, le recomiendo que lo haga antes de continuar con este.
Antes de sumergirnos en la codificación en Python, analicemos el problema comercial que pretendemos resolver en este video utilizando un sistema de inteligencia artificial basado en el aprendizaje por refuerzo de muestreo de Thompson.
Imagina que trabajas para una empresa inalámbrica que cuenta con 10 millones de clientes. La compañía decidió aumentar sus ganancias lanzando un programa de actualización de teléfonos inteligentes. Para atraer a los clientes a actualizar sus teléfonos inteligentes, el equipo de marketing de la empresa ha diseñado ocho campañas publicitarias distintas. Cada campaña ofrece a los clientes funciones, promociones o descuentos específicos. Sin embargo, la ganancia promedio de cada campaña variará ya que las características, promociones y descuentos asociados generarán costos variables para la empresa. Aunque la empresa puede calcular el costo y la ganancia por venta de cada campaña publicitaria, aún no está claro qué tan efectiva será cada campaña. Ciertas campañas pueden resultar altamente efectivas, mientras que otras pueden no producir resultados significativos.
Nuestro objetivo es construir un sistema de inteligencia artificial que pueda maximizar las ganancias de la empresa para su programa de actualización de teléfonos inteligentes. Es importante señalar que nuestro objetivo no es simplemente maximizar el número de clientes que participan en el programa. En cambio, nuestro objetivo es optimizar las ganancias, que dependen no solo de la cantidad de clientes expuestos a cada campaña publicitaria, sino también de la efectividad de cada campaña para generar ventas y la ganancia promedio por venta. Con una comprensión clara del problema comercial, cambiemos a Python y comencemos la implementación.
Antes de describir el código en este cuaderno, quiero informarle que un enlace a este cuaderno está disponible en la descripción del video. Siéntase libre de descargar una copia del cuaderno para experimentar o adaptarlo a sus requisitos específicos. Como de costumbre, comenzamos importando las bibliotecas de Python necesarias. Necesitaremos dos bibliotecas para este proyecto: NumPy, que utilizaremos para generar valores aleatorios a partir de varias distribuciones de probabilidad, y locale, que emplearemos para dar formato a los valores de moneda de forma adecuada. Dado que nuestro objetivo es maximizar las ganancias, trabajaremos ampliamente con valores monetarios en este proyecto. Establecer nuestra ubicación actual en los Estados Unidos garantiza que Python formatee los valores de moneda en dólares estadounidenses y emplee comas para separar números grandes. Si prefiere un formato de moneda diferente, no dude en modificar la configuración regional en consecuencia.
La siguiente línea de código establece una semilla para el generador de números aleatorios. Esto garantiza que puede reproducir los resultados exactos observados en este video si elige descargar y ejecutar el cuaderno.
Nuestra próxima tarea consiste en definir una clase para almacenar información sobre las diferentes campañas publicitarias. Utilizaremos esta clase para crear objetos que representen cada campaña publicitaria, que conservarán los atributos o características de las respectivas campañas. El uso de objetos de campaña de esta manera nos permite segregar todos los detalles relacionados con la campaña del resto de la lógica del programa, mejorando significativamente nuestra comprensión de cómo la IA aprende y toma decisiones.
Como puede observar, cada objeto de campaña se inicializa proporcionando una ID de campaña única. Posteriormente, la función __init__ asigna una tasa de conversión aleatoria entre el 1 % y el 20 % a la campaña utilizando NumPy para extraer un valor aleatorio de una distribución de probabilidad uniforme. La tasa de conversión representa el porcentaje de clientes que elegirán actualizar sus teléfonos inteligentes si se exponen a una campaña publicitaria específica. Vale la pena señalar que la compañía inalámbrica no tiene conocimiento de esta información. También empleamos NumPy para asignar una ganancia aleatoria por venta exitosa que oscila entre $ 100 y $ 200 para cada campaña. Aunque asignamos aleatoriamente estos valores de beneficio, es igualmente posible utilizar valores específicos proporcionados por la empresa inalámbrica para cada campaña publicitaria. Finalmente, la clase incluye un método get_profit() que devuelve la ganancia por venta exitosa de la campaña.
Aquí está el código para la clase Campaign:
Ahora que hemos definido la clase Campaña, podemos proceder a implementar el algoritmo de aprendizaje por refuerzo basado en el muestreo de Thompson. Crearemos una clase llamada ThompsonSampling que encapsulará el algoritmo.
La clase ThompsonSampling tendrá los siguientes atributos y métodos: num_campaigns: El número de campañas publicitarias.
Los métodos de la clase ThompsonSampling son los siguientes:
Aquí está el código para la clase ThompsonSampling:
Ahora que hemos implementado la clase ThompsonSampling, podemos proceder a crear una instancia de la clase y ejecutar el algoritmo. Estableceremos el número de campañas en 8 y el número de pruebas en 1000 para este ejemplo. Después de ejecutar las pruebas, mostraremos las ventas y ganancias totales de cada campaña.
Puede modificar el código según sus requisitos específicos, como el número de campañas y pruebas. Además, puede ampliar la clase Campaña con más atributos y métodos para capturar información adicional sobre cada campaña.Aquí está el código para ejecutar el algoritmo de muestreo de Thompson:
Fundamentos de Q-Learning
Fundamentos de Q-Learning
¡Buen día a todos! Soy el Dr. Soper y hoy estoy emocionado de profundizar en los fundamentos de Q-learning, una poderosa técnica dentro del dominio de la inteligencia artificial. Antes de embarcarnos en este viaje de aprendizaje, recomiendo ver el video anterior de esta serie titulado "Fundamentos del aprendizaje por refuerzo" si es nuevo en el concepto.
En esta lección, exploraremos los conceptos fundamentales de Q-learning, incluidas sus características, valores Q, diferencias temporales, la ecuación de Bellman y el proceso general de Q-learning. Al final de esta lección, tendrá una sólida comprensión de estos conceptos y estará bien equipado para construir modelos de IA que se basen en Q-learning. Entonces, sin más preámbulos, ¡comencemos!
Para comenzar, analicemos brevemente lo que implica Q-learning. Como se mencionó anteriormente, Q-learning es una forma de aprendizaje por refuerzo, donde un agente de IA interactúa con un entorno compuesto por estados y recompensas. El objetivo del agente es construir una política óptima directamente al interactuar con el entorno, sin necesidad de aprender un modelo matemático subyacente o una distribución de probabilidad. Q-learning adopta la prueba y el error, ya que el agente intenta continuamente resolver el problema utilizando diferentes enfoques en múltiples episodios mientras actualiza su política en función del conocimiento adquirido.
Ahora, profundicemos en las características de los modelos Q-learning. Dado que Q-learning es un tipo de aprendizaje por refuerzo, comparte las características fundamentales de todos los modelos de aprendizaje por refuerzo. Estas características incluyen un sistema de entrada y salida, recompensas, entorno, procesos de decisión de Markov y modos de entrenamiento e inferencia. Además de estas características, los modelos Q-learning tienen dos atributos específicos. En primer lugar, la cantidad de estados posibles en los modelos de Q-learning es finita, lo que significa que el agente de IA siempre se encontrará en una de una cantidad fija de situaciones posibles. En segundo lugar, la cantidad de acciones posibles en los modelos Q-learning también es finita, lo que requiere que el agente de IA elija entre un conjunto fijo de acciones posibles en cada estado.
Ahora que comprendemos las características, exploremos algunos problemas clásicos de Q-learning. Uno de esos problemas es el laberinto, donde cada ubicación representa un estado y las acciones del agente implican moverse hacia arriba, hacia la derecha, hacia abajo o hacia la izquierda. El objetivo es navegar por el laberinto y llegar a la salida lo más rápido posible. Otro ejemplo clásico es el problema de caminar por un acantilado, donde el agente debe navegar a través de un entorno similar a una cuadrícula para llegar a una ubicación específica sin caerse del acantilado. En ambos escenarios, el agente de IA aprende sobre el entorno basándose en los valores Q y actualizándolos.
Entonces, ¿qué son los valores Q? Los valores Q representan la calidad de una acción específica (a) en un estado (s) dado (s). Indican la suma esperada de recompensas futuras si esa acción se toma desde el estado actual. En otras palabras, los valores Q estiman la recompensa adicional que el agente puede acumular al realizar una acción en particular y proceder de manera óptima a partir de ahí. El agente de IA tiene como objetivo maximizar sus recompensas totales o minimizar sus castigos totales en escenarios con recompensas negativas. Al actualizar y refinar los valores Q, el agente aprende a través del refuerzo tanto positivo como negativo.
Los valores Q se almacenan en una tabla Q, que tiene filas que representan los posibles estados y columnas que representan las posibles acciones. La tabla Q sirve como política del agente, guiando sus acciones en el entorno. Una tabla Q óptima contiene valores que permiten al agente seleccionar la mejor acción en cualquier estado dado, lo que lleva a la recompensa potencial más alta.
Las diferencias temporales (TD) juegan un papel crucial en Q-learning. TD proporciona un método para calcular cuánto se debe ajustar el valor Q para la acción anterior en función de lo que el agente ha aprendido sobre los valores Q para las acciones del estado actual. Este ajuste ayuda al agente a tomar mejores decisiones en episodios posteriores. El valor TD se calcula considerando la recompensa inmediata recibida por la acción anterior, un factor de descuento (gamma) que descuenta las recompensas futuras y el valor Q máximo del siguiente estado.
El error TD, a menudo denominado δ, se calcula como la diferencia entre el valor TD y el valor Q actual para el par estado-acción anterior. Representa la discrepancia entre la predicción del agente y la recompensa real observada en el entorno. El error TD se usa para actualizar el valor Q del par estado-acción anterior, refinando así gradualmente los valores Q con el tiempo.
Ahora, presentemos la ecuación de Bellman, que está en el corazón de Q-learning. La ecuación de Bellman expresa la relación entre el valor Q de un par estado-acción y los valores Q de sus pares estado-acción vecinos. Se define de la siguiente manera:
Q(s, a) = R(s, a) + γ * máx[Q(s', a')]
En esta ecuación, Q(s, a) representa el valor Q del estado s y la acción a, R(s, a) denota la recompensa inmediata obtenida al realizar la acción a en el estado s, γ (gamma) es el factor de descuento que determina la importancia de las recompensas futuras en comparación con las recompensas inmediatas, s' es el siguiente estado alcanzado después de realizar la acción a en el estado s, y a' representa la mejor acción a realizar en el estado s'.
La ecuación de Bellman establece esencialmente que el valor Q de un par estado-acción debe ser igual a la recompensa inmediata obtenida más el valor Q máximo descontado de los siguientes pares estado-acción. Mediante la aplicación iterativa de la ecuación de Bellman y la actualización de los valores Q en función de las recompensas observadas y las estimaciones futuras, el agente converge gradualmente hacia una política óptima.
Ahora, pasemos al proceso general de Q-learning. Q-learning sigue un enfoque iterativo que consta de los siguientes pasos:
A través de este proceso iterativo, los valores Q se actualizan y convergen gradualmente hacia sus valores óptimos, lo que conduce a una política mejorada. La estrategia de exploración-explotación permite al agente equilibrar entre explorar nuevas acciones para descubrir mejores estrategias y explotar el conocimiento aprendido para tomar decisiones basadas en las mejores acciones actuales.
Cabe mencionar que Q-learning es un algoritmo de aprendizaje fuera de política, lo que significa que el agente puede aprender de las experiencias generadas por una política diferente. Esta propiedad permite un aprendizaje más eficiente y una mayor flexibilidad en la exploración de diferentes estrategias.
En resumen, Q-learning es una técnica poderosa dentro del dominio del aprendizaje por refuerzo. Implica aprender políticas óptimas a través de prueba y error sin requerir un modelo matemático del entorno. Mediante el uso de valores Q para estimar la suma esperada de recompensas futuras, actualizándolos a través de diferencias temporales y la ecuación de Bellman, y siguiendo un proceso de aprendizaje iterativo, el agente mejora gradualmente su política y logra un mejor desempeño en la tarea asignada.
Espero que esta lección le haya proporcionado una sólida comprensión de los fundamentos de Q-learning. En la siguiente lección, profundizaremos en los detalles de implementación y exploraremos ejemplos prácticos de Q-learning en acción. ¡Gracias por su atención, y espero verlos en el próximo video!
Q-Learning: un ejemplo completo en Python
Q-Learning: un ejemplo completo en Python
Soy el Dr. Soper y hoy me complace presentar un recorrido detallado de un sistema de IA basado en Python que usa Q-learning. Esta lección se basa en los conceptos discutidos en el video anterior, por lo que si no está familiarizado con Q-learning, le recomiendo ver el video anterior antes de continuar con este.
En esta lección, abordaremos un problema comercial que enfrenta una empresa de comercio electrónico en crecimiento. La empresa está construyendo un nuevo almacén y quiere automatizar las operaciones de preparación de pedidos mediante robots de almacén. Los robots de almacén son vehículos terrestres autónomos diseñados para manejar diversas tareas de almacén, incluida la recolección.
La recolección se refiere al proceso de recolectar artículos individuales de diferentes ubicaciones dentro del almacén para cumplir con los pedidos de los clientes. Una vez que los artículos se recogen de los estantes, la empresa de comercio electrónico quiere que los robots los transporten a un área de embalaje específica dentro del almacén para su envío.
Para garantizar la máxima eficiencia y productividad, los robots deben aprender los caminos más cortos entre el área de empaque y todas las demás ubicaciones dentro del almacén donde se les permite viajar. En este video, nuestro objetivo es utilizar Q-learning para realizar esta tarea.
Primero, presentemos el entorno para nuestro escenario de robot de almacén. El almacén se puede representar como un diagrama, donde cada cuadrado negro representa una ubicación de almacenamiento de artículos (estante o contenedor de almacenamiento), y cada cuadrado blanco representa un pasillo que los robots pueden usar para navegar. El cuadrado verde indica la ubicación del área de embalaje del artículo.
En total, hay 121 ubicaciones en el almacén y cada ubicación representa un estado o situación en la que un robot podría encontrarse en un momento determinado. Cada estado se puede identificar mediante un índice de fila y columna. Por ejemplo, el área de embalaje del artículo se encuentra en la posición (0, 5). Los cuadrados negros y verdes son estados terminales, lo que significa que si el agente de IA conduce un robot a una de estas áreas durante el entrenamiento, el episodio de entrenamiento habrá terminado. El cuadrado verde representa el estado objetivo, mientras que los cuadrados negros representan estados de falla, ya que estrellar el robot contra un área de almacenamiento de artículos se considera una falla.
A continuación, analicemos las acciones disponibles para el agente de IA. El agente de IA puede elegir una de cuatro direcciones: Arriba, Derecha, Abajo o Izquierda. El objetivo del agente es aprender acciones que eviten que el robot se estrelle contra las áreas de almacenamiento de artículos.
Ahora, exploremos la estructura de recompensas para nuestro escenario. A cada estado (ubicación) en el almacén se le asigna un valor de recompensa. Para ayudar al agente de IA a aprender, se utilizan recompensas negativas (castigos) para todos los estados excepto el estado objetivo. Al área de empaquetado (estado objetivo) se le asigna un valor de recompensa de 100, mientras que todos los demás estados tienen un valor de recompensa de -100. El uso de recompensas negativas alienta al agente de IA a encontrar el camino más corto hacia la meta minimizando sus castigos. Las recompensas positivas para los cuadrados blancos no se usan porque el objetivo del agente es maximizar las recompensas acumuladas, y el uso de recompensas positivas para los cuadrados blancos podría llevar al agente a acumular recompensas sin rumbo fijo sin alcanzar la meta.
Ahora que hemos definido el entorno con sus estados, acciones y recompensas, cambiemos a Python y observemos más de cerca la implementación del código.
Comenzamos importando las bibliotecas de Python necesarias. Para este proyecto, solo necesitamos la biblioteca numpy, que se utilizará para crear matrices multidimensionales, generar valores aleatorios y realizar tareas numéricas.
El siguiente paso es definir el entorno, comenzando con los estados. El almacén se representa como una cuadrícula de 11x11, lo que da como resultado 121 estados posibles. Usamos una matriz numpy tridimensional para almacenar los valores Q para cada combinación de estado y acción. Las dos primeras dimensiones representan las filas y columnas de los estados, mientras que la tercera dimensión contiene un elemento para cada posible acción que puede realizar el agente de IA.
A continuación, definimos las cuatro acciones disponibles para el agente: Arriba, Derecha, Abajo, Izquierda.
Continuemos con la implementación del código.
Aquí está el código que implementa el algoritmo Q-learning para nuestro escenario de robot de almacén:
Para probar la política aprendida, podemos usar la tabla Q para seleccionar acciones basadas en los valores Q más altos para cada estado:
Fundamentos de redes neuronales artificiales y Q-Learning profundo
Fundamentos de redes neuronales artificiales y Q-Learning profundo
Soy el Dr. Soper y hoy tengo el placer de hablar con todos ustedes sobre los fundamentos de las redes neuronales artificiales y el Q-learning profundo.
Antes de profundizar en las complejidades de estos temas, recomiendo ver el video anterior de esta serie titulado "Fundamentos de Q-Learning" si no está familiarizado con Q-learning.
Comencemos por resumir brevemente lo que aprenderá en esta lección.
Al final de este video, tendrá una comprensión completa de:
Una vez que comprendamos estos conceptos, estaremos completamente equipados para construir modelos de IA que se basen en redes neuronales artificiales y Q-learning profundo.
Sin más preámbulos, ¡comencemos!
Para comprender las redes neuronales artificiales y su funcionamiento interno, primero debemos comprender las neuronas artificiales y las funciones de activación.
Entonces, ¿qué es exactamente una neurona artificial?
Las neuronas artificiales sirven como los componentes básicos sobre los que se construyen todas las redes neuronales artificiales. Fueron propuestos inicialmente por Warren McCulloch y Walter Pitts en 1943 como un modelo matemático de las neuronas biológicas, que forman la base de los cerebros animales, incluido el cerebro humano.
Inspirándose en estas neuronas biológicas, surgió el modelo de neurona artificial.
Como se muestra en el diagrama, el propósito de una neurona artificial es transformar uno o más valores de entrada en un valor de salida. Cada valor de entrada se multiplica por un peso, que ajusta la fuerza de la entrada. Por ejemplo, si el valor de entrada es 0,8 y el peso es 0,5, la multiplicación resultante arrojará 0,4. En este escenario, el peso disminuía la fuerza de la entrada. Por el contrario, si el peso fuera mayor que 1, la fuerza de la entrada se amplificaría.
Una vez que se calculan los valores de entrada ponderados, se someten a una función de activación, que produce el valor de salida de la neurona artificial. Vale la pena señalar que los pesos se pueden ajustar durante el entrenamiento para minimizar los errores, una idea que revisaremos en breve.
Ahora, profundicemos en las funciones de activación.
Una función de activación es una función matemática utilizada por una neurona artificial para transformar sus valores de entrada ponderados en un valor de salida. Como se muestra en la ecuación, una función de activación toma un solo valor de entrada, obtenido al multiplicar cada valor de entrada por su peso asociado, y luego suma todos estos resultados. El valor sumado luego se pasa a través de la función de activación para obtener el valor de salida de la neurona artificial.
Es importante tener en cuenta que se pueden usar varias funciones de activación en una neurona artificial, cada una de las cuales se comporta de manera diferente al transformar los valores de entrada en valores de salida.
Exploremos cuatro funciones de activación comunes:
Función de activación de umbral: esta función devuelve 0 o 1 como salida. Si el valor de entrada es mayor o igual a cero, devuelve 1; de lo contrario, devuelve 0. En consecuencia, los valores de salida para las neuronas artificiales que emplean una función de activación de umbral siempre serán 0 o 1.
Función de activación sigmoidea: la salida de la función de activación sigmoidea varía entre 0 y 1. Los valores de entrada positivos dan como resultado valores de salida que se acercan a 1,0 a medida que aumentan los valores de entrada, mientras que los valores de entrada negativos producen valores de salida más cercanos a 0,0 a medida que disminuyen los valores de entrada. Por lo tanto, la función de activación sigmoidea siempre produce una salida entre 0 y 1.
Función de activación de tangente hiperbólica: La función de tangente hiperbólica se parece mucho a la función de activación sigmoidea, excepto que su valor de salida siempre se encuentra entre -1,0 y +1,0. Los valores de entrada positivos generan valores de salida que se aproximan a +1,0 a medida que aumentan los valores de entrada, y los valores de entrada negativos generan valores de salida que se aproximan a -1,0 a medida que disminuyen los valores de entrada.
Estos son solo algunos ejemplos de funciones de activación utilizadas en redes neuronales artificiales. La elección de la función de activación depende del problema específico y del comportamiento deseado de la red neuronal. Ahora que hemos cubierto las neuronas artificiales y las funciones de activación, pasemos a comprender cómo funcionan las redes neuronales.
Las redes neuronales consisten en múltiples capas de neuronas artificiales interconectadas, formando una estructura de red compleja. Las tres capas principales en una red neuronal son la capa de entrada, las capas ocultas y la capa de salida. La capa de entrada es responsable de recibir los datos de entrada, como imágenes, texto o valores numéricos, y pasarlos a las capas posteriores para su procesamiento. El número de neuronas en la capa de entrada corresponde al número de características o dimensiones de entrada en los datos. Las capas ocultas, como su nombre indica, son capas intermedias entre las capas de entrada y salida. Estas capas realizan la mayor parte del cálculo en una red neuronal. Cada neurona en una capa oculta recibe información de la capa anterior y calcula una salida utilizando la función de activación.
La capa de salida produce la salida final de la red neuronal. El número de neuronas en la capa de salida depende de la naturaleza del problema. Por ejemplo, en un problema de clasificación binaria, normalmente habría una neurona en la capa de salida para representar la probabilidad de pertenecer a una clase. Para permitir el aprendizaje y mejorar el rendimiento de la red neuronal, los pesos de las conexiones entre las neuronas se ajustan durante una fase de entrenamiento. Este ajuste se logra usando un proceso llamado retropropagación, combinado con un algoritmo de optimización como el descenso de gradiente estocástico. Durante el entrenamiento, a la red neuronal se le presenta un conjunto de datos de entrada junto con sus correspondientes salidas objetivo. La red calcula su salida para cada entrada y la diferencia entre la salida calculada y la salida objetivo se mide mediante una función de pérdida.
El objetivo del entrenamiento es minimizar esta pérdida ajustando los pesos de las conexiones. El algoritmo de retropropagación calcula el gradiente de la función de pérdida con respecto a los pesos, lo que permite actualizar los pesos en la dirección que reduce la pérdida. Este proceso iterativo continúa hasta que la red neuronal aprende a producir salidas precisas para las entradas dadas. Ahora que tenemos una sólida comprensión de las redes neuronales artificiales, exploremos los fundamentos del Q-learning profundo.
Deep Q-learning es una técnica de aprendizaje por refuerzo que utiliza redes neuronales profundas como aproximadores de funciones para aprender acciones óptimas en un proceso de decisión de Markov (MDP) o un entorno de aprendizaje por refuerzo. En el contexto del aprendizaje Q profundo, la red neuronal, a menudo denominada red Q, toma el estado del entorno como entrada y produce un valor Q para cada acción posible. El valor Q representa la recompensa futura esperada al realizar una acción particular desde el estado dado. Durante el entrenamiento, la red Q se actualiza utilizando el algoritmo Q-learning, que combina elementos de aprendizaje por refuerzo y redes neuronales. El algoritmo Q-learning utiliza una combinación de exploración y explotación para mejorar gradualmente las estimaciones de la red Q de los valores Q óptimos.
Los pasos básicos del algoritmo de Q-learning profundo son los siguientes:
Al actualizar iterativamente la red Q utilizando el algoritmo Q-learning, la red aprende gradualmente a estimar los valores Q óptimos para cada par estado-acción. Una vez entrenada, la red Q se puede usar para seleccionar la acción con el valor Q más alto para un estado determinado, lo que permite que un agente tome decisiones informadas en un entorno de aprendizaje por refuerzo. Deep Q-learning se ha aplicado con éxito a varios dominios, incluidos los juegos, la robótica y el control de vehículos autónomos, entre otros. Ha mostrado un rendimiento notable en el aprendizaje de tareas complejas a partir de entradas sensoriales de alta dimensión. Sin embargo, es importante tener en cuenta que el Q-learning profundo tiene ciertas limitaciones, como el potencial de sobreestimación de los valores Q y la dificultad de manejar espacios de acción continuos. Los investigadores continúan explorando técnicas y algoritmos avanzados para abordar estos desafíos y mejorar las capacidades del aprendizaje por refuerzo profundo.
Deep Q-learning es una técnica poderosa que combina el aprendizaje por refuerzo con redes neuronales profundas para aprender acciones óptimas en un entorno determinado. Al aprovechar la capacidad de las redes neuronales profundas para aproximarse a funciones complejas, el Q-learning profundo ha demostrado avances significativos en varios campos de la inteligencia artificial.
Redes neuronales convolucionales y Q-Learning convolucional profundo
Redes neuronales convolucionales y Q-Learning convolucional profundo
¡Buen día a todos! Este es el Dr. Soper, y hoy hablaré sobre las redes neuronales convolucionales (CNN) y el Q-learning convolucional profundo. Si no está familiarizado con las redes neuronales artificiales o Q-learning, le recomiendo ver el video anterior de esta serie titulado "Fundamentos de las redes neuronales artificiales y Q-learning profundo" antes de continuar con este.
Antes de profundizar en el tema de las redes neuronales convolucionales y el Q-learning convolucional profundo, repasemos brevemente lo que puede esperar aprender en esta lección. Al final de este video, tendrá una comprensión sólida de qué son las redes neuronales convolucionales y cómo funcionan. Discutiremos conceptos importantes como mapas de características, convolución, agrupación máxima, aplanamiento y conexión a capas completamente conectadas para generar predicciones. Además, exploraremos cómo funciona el Q-learning convolucional profundo.
Una vez que hayamos cubierto estos conceptos fundamentales, seremos capaces de construir redes neuronales convolucionales capaces de realizar tareas notables. Estas tareas incluyen el reconocimiento de objetos en imágenes y videos e incluso jugar videojuegos a un nivel que supera las capacidades humanas.
Entonces empecemos. Primero, desarrollemos una comprensión intuitiva de qué son las redes neuronales convolucionales y por qué son útiles. En términos simples, una red neuronal convolucional (CNN) es un tipo de red neuronal artificial diseñada para datos con una estructura espacial. Los datos con estructuras espaciales incluyen imágenes, videos e incluso texto (aunque las CNN se usan principalmente para tareas de visión por computadora). A los efectos de este video, nos centraremos en la entrada basada en imágenes.
Los datos con una estructura espacial, como las imágenes, contienen píxeles dispuestos de una manera específica. La ubicación de cada píxel tiene un significado, y es esta disposición la que nos permite identificar objetos en una imagen. Por ejemplo, si tuviéramos que reordenar aleatoriamente los píxeles de una imagen, se convertiría en una colección de ruido sin sentido en lugar de un objeto reconocible. Esta disposición espacial es lo que entendemos por "datos que tienen una estructura espacial".
Las redes neuronales convolucionales están diseñadas intencionalmente para capturar estas relaciones espaciales entre los valores de entrada, como la ubicación de un píxel en una imagen o la posición de una palabra en una oración. Al considerar estas relaciones espaciales, las CNN pueden procesar y analizar datos de manera efectiva con estructuras espaciales.
Ahora, analicemos cómo funcionan las CNN a un alto nivel. En términos generales, una CNN genera un conjunto de mapas de características para cada caso de entrada. En otras palabras, crea datos para la capa convolucional. A continuación, se aplica una técnica denominada agrupación para simplificar cada mapa de características. Luego, los mapas de características agrupados se aplanan y los vectores resultantes se conectan a capas completamente conectadas. Esta conexión permite que la información se propague a través de la red, lo que lleva a la generación de predicciones.
Para profundizar en los detalles, comencemos con el primer paso: aplicar filtros a la imagen de entrada. Los filtros, también conocidos como detectores de características o núcleos, están diseñados para detectar características específicas en una imagen, como líneas, curvas o formas. Al aplicar estos filtros a una imagen de entrada, generamos mapas de características. La colección de mapas de características forma la capa convolucional.
Para ilustrar este proceso, consideremos una imagen simple en blanco y negro compuesta de píxeles representados por una matriz. Luego podemos aplicar un filtro, como un filtro 3x3 diseñado para detectar líneas verticales, a la imagen. Al deslizar el filtro por la imagen, podemos crear un mapa de funciones que indica el grado de superposición entre el filtro y las diferentes secciones de la imagen.
Podemos aplicar múltiples filtros a una imagen para detectar varias características. Cada filtro genera su propio mapa de características, lo que nos permite detectar líneas, curvas, formas y más. Estos mapas de características forman colectivamente la capa convolucional.
¡Felicidades! Ahora comprende el proceso de convolución en las redes neuronales convolucionales. A continuación, analicemos la agrupación máxima.
La agrupación máxima es una técnica utilizada en las CNN para reducir la muestra de los mapas de características obtenidos de la capa convolucional. Su propósito es reducir las dimensiones espaciales de los mapas de características conservando la información más importante.
La idea detrás de la agrupación máxima es dividir el mapa de funciones en regiones que no se superponen, a menudo denominadas ventanas de agrupación o regiones de agrupación. Para cada región, solo se conserva el valor máximo dentro de esa región, mientras que los demás valores se descartan. Este valor máximo se incluye luego en el mapa de características agrupadas.
Al seleccionar el valor máximo, la agrupación máxima ayuda a preservar las características más destacadas de los datos de entrada. También proporciona un grado de invariancia de traducción, lo que significa que incluso si la posición de una característica cambia ligeramente, es probable que aún se capture el valor máximo asociado con ella.
Para ilustrar este proceso, consideremos una operación de agrupación máxima de 2x2 aplicada a un mapa de características. Dividimos el mapa de características en regiones 2x2 que no se superponen y tomamos el valor máximo de cada región para formar el mapa de características agrupado. Esto reduce la muestra de las dimensiones espaciales del mapa de características en un factor de 2.
La agrupación máxima se puede realizar varias veces en una CNN, lo que lleva a una mayor reducción de las dimensiones espaciales. Esta reducción de muestreo ayuda a reducir la complejidad computacional de la red, haciéndola más eficiente.
Una vez que se completa la operación de agrupación máxima, el siguiente paso es aplanar los mapas de características agrupadas. El aplanamiento implica convertir los mapas de características multidimensionales en un vector unidimensional. Esta transformación permite conectar los datos a capas totalmente conectadas, que son las capas estándar en las redes neuronales tradicionales.
El vector aplanado sirve como entrada para las capas completamente conectadas, donde la red aprende a extraer representaciones de alto nivel y hacer predicciones basadas en esas representaciones. Las capas totalmente conectadas son responsables de incorporar el contexto global y tomar decisiones complejas basadas en las características extraídas por las capas convolucionales.
Para resumir el flujo de información en una CNN:
Este proceso de extracción de características, reducción de muestreo y toma de decisiones permite que las CNN capturen de manera efectiva las relaciones espaciales en los datos de entrada y hagan predicciones precisas.
Ahora que tenemos una buena comprensión de las redes neuronales convolucionales, profundicemos en el Q-learning convolucional profundo.
El Q-learning convolucional profundo combina el poder de las CNN con técnicas de aprendizaje por refuerzo, específicamente Q-learning, para resolver tareas complejas. Q-learning es un tipo de algoritmo de aprendizaje por refuerzo que permite a un agente aprender acciones óptimas en un entorno interactuando con él y recibiendo recompensas.
En el contexto del Q-learning convolucional profundo, el agente suele ser un agente artificial, como un programa de computadora, y el entorno es una tarea visual, como jugar un videojuego. El agente observa el estado actual del juego (representado como imágenes) y realiza acciones en función de los valores Q asociados con cada acción. Los valores Q representan las recompensas futuras esperadas por realizar una acción específica en un estado determinado.
Para aproximar los valores Q, se utiliza una red neuronal convolucional profunda. La CNN toma el estado actual (imagen) como entrada y genera un valor Q para cada acción posible. Luego, los valores Q se utilizan para seleccionar la acción con la mayor recompensa futura esperada, de acuerdo con una política.
El agente interactúa con el entorno realizando acciones, recibiendo recompensas y actualizando los valores Q en función de las recompensas observadas y los valores Q previstos. Este proceso de interacción con el entorno y actualización de los valores Q se repite iterativamente para mejorar las capacidades de toma de decisiones del agente.
La combinación de redes neuronales convolucionales profundas y Q-learning permite al agente aprender patrones visuales complejos y tomar decisiones basadas en ellos. Este enfoque ha tenido éxito en varios dominios, incluidos los videojuegos, la conducción autónoma y la robótica.
Uso de Greedy Cross Validation para identificar rápidamente modelos óptimos de aprendizaje automático
Uso de Greedy Cross Validation para identificar rápidamente modelos óptimos de aprendizaje automático
Saludos a todos. Soy el Dr. Soper y hoy me gustaría hablar sobre una técnica que he estado desarrollando llamada "Validación cruzada codiciosa". Esta técnica sirve como base para identificar de manera eficiente modelos de aprendizaje automático óptimos o casi óptimos.
Comencemos con una breve introducción y una explicación de por qué este problema es de gran importancia. Al desarrollar soluciones de aprendizaje automático, se acostumbra probar varios modelos para determinar cuál funciona mejor. Aquí, el término "modelo" se refiere a una combinación específica de un algoritmo de aprendizaje automático y los valores elegidos para sus parámetros ajustables.
Los profesionales del aprendizaje automático a menudo enfrentan el desafío de probar cientos o incluso miles de modelos antes de decidirse por una opción final para un proyecto de análisis o ciencia de datos. Este proceso puede llevar mucho tiempo, ser computacionalmente intensivo y costoso. Algunos modelos avanzados de aprendizaje automático requieren horas o incluso días para entrenarse.
Dada la naturaleza intensiva en recursos de probar una gran cantidad de modelos, los investigadores han buscado formas de identificar el modelo con mejor rendimiento lo más rápido posible. Los métodos existentes incluyen enfoques bayesianos, métodos de descenso de gradiente, enfoques evolutivos y entrenamiento basado en la población, entre otros. Estos métodos suelen tener como objetivo identificar las relaciones entre los parámetros del modelo y la métrica de rendimiento, lo que les permite explorar regiones prometedoras del espacio de búsqueda.
A diferencia de los métodos existentes, Greedy Cross Validation adopta un enfoque distinto para acelerar la identificación del modelo de mejor rendimiento. En lugar de centrarse en encontrar regiones prometedoras dentro del espacio de búsqueda, Greedy Cross Validation se centra en medir el rendimiento del modelo como base para identificar rápidamente los modelos óptimos de aprendizaje automático.
Un modelo comprende parámetros estructurales y algorítmicos, denominados colectivamente hiperparámetros. Los parámetros estructurales incluyen factores como la cantidad de capas o nodos ocultos en una red neuronal, mientras que los parámetros algorítmicos controlan el proceso de aprendizaje, como el tamaño del mini lote o la tasa de aprendizaje. La tarea de encontrar la combinación óptima de configuraciones de hiperparámetros para un problema específico de aprendizaje automático se conoce como optimización de hiperparámetros.
Para comprender el concepto de Greedy Cross Validation, consideremos un ejemplo simple de búsqueda de un modelo óptimo a través de la optimización de hiperparámetros. En este caso, tenemos dos hiperparámetros representados en los ejes horizontal y vertical. Cada cuadrado naranja representa un modelo específico con su combinación única de valores de hiperparámetros. Evaluar el rendimiento de cada modelo nos permite identificar el mejor modelo, y un enfoque común para este propósito se conoce como "búsqueda en cuadrícula".
Ahora bien, ¿cómo estimamos el rendimiento real de un modelo? La solución más común es probar cada modelo utilizando datos que no ha encontrado durante el entrenamiento, un proceso conocido como "validación cruzada de k-fold". Así es como funciona:
El rendimiento general del modelo se calcula luego como el promedio de los valores de rendimiento obtenidos de cada evaluación de pliegue. Esto asegura una estimación robusta del rendimiento del modelo.
Ahora que entendemos cómo funciona la validación cruzada estándar, podemos explorar su función en el proceso general de optimización de hiperparámetros. Al evaluar varios modelos candidatos mediante la validación cruzada estándar, cada pliegue de un modelo en particular actualiza nuestra estimación de su rendimiento. Una vez que evaluamos todos los pliegues de un modelo, obtenemos la estimación final de su rendimiento general. Al repetir este proceso para todos los modelos, podemos identificar al mejor candidato.
Por el contrario, Greedy Cross Validation adopta un enfoque diferente. En lugar de evaluar todos los pliegues de cada modelo en secuencia, evalúa iterativamente los pliegues de diferentes modelos. El pliegue específico para evaluar a continuación se elige dinámicamente en función del rendimiento medio actual de cada modelo candidato. Inicialmente, se evalúa un pliegue para cada modelo y los pliegues posteriores se eligen en función del rendimiento de los modelos evaluados hasta el momento.
La idea clave detrás de Greedy Cross Validation es priorizar la evaluación de modelos que se muestran prometedores desde el principio. Al hacerlo, podemos identificar rápidamente modelos que probablemente funcionen bien y asignarles más recursos computacionales. Este enfoque elimina la necesidad de evaluar todos los pliegues de cada modelo, lo que ahorra una cantidad significativa de tiempo y recursos computacionales.
Para implementar Greedy Cross Validation, seguimos estos pasos:
Al seleccionar dinámicamente el siguiente pliegue para evaluar en función del rendimiento medio actual de los modelos, Greedy Cross Validation puede identificar rápidamente los modelos de mejor rendimiento. Este enfoque nos permite concentrar los recursos computacionales en los modelos más prometedores y descartar los modelos que probablemente no funcionarán bien.
Una de las ventajas de Greedy Cross Validation es su capacidad para manejar una gran cantidad de modelos candidatos de manera eficiente. En lugar de evaluar exhaustivamente todos los modelos en todos los pliegues, Greedy Cross Validation prioriza y evalúa de manera adaptativa los modelos en función de su rendimiento, lo que reduce significativamente los requisitos computacionales generales.
Es importante tener en cuenta que Greedy Cross Validation no es un método garantizado para encontrar el mejor modelo absoluto. Al igual que otras técnicas de optimización de hiperparámetros, se basa en la heurística y es posible que no siempre identifique el óptimo global. Sin embargo, proporciona un enfoque práctico y eficiente para identificar rápidamente modelos de alto rendimiento, especialmente cuando se trata de una gran cantidad de candidatos.
Greedy Cross Validation es una técnica para la optimización acelerada de hiperparámetros en el aprendizaje automático. Al seleccionar y evaluar modelos de forma adaptativa en función de su rendimiento, permite identificar de manera eficiente los modelos con el mejor rendimiento. Si bien es posible que no garantice encontrar el mejor modelo absoluto, ofrece una solución práctica para navegar de manera eficiente en el espacio de búsqueda de hiperparámetros.
1.1 Descripción general del curso (L01: ¿Qué es el aprendizaje automático)
1.1 Descripción general del curso (L01: ¿Qué es el aprendizaje automático)
¡Hola a todos!
Bienvenidos de nuevo al nuevo semestre. Espero que todos hayan tenido unas maravillosas vacaciones de verano. En este video, quiero tomarme un momento para repasar el material del curso y discutir cómo trabajaremos juntos en este curso, ya que será un poco diferente de las sesiones presenciales habituales.
Para este curso, mi plan es grabar las conferencias de forma asíncrona. Esto significa que pregrabaré las conferencias y las compartiré con ustedes al comienzo de cada semana. De esta forma, podrás ver el material a tu conveniencia, cuando más te convenga. Este enfoque le permite la flexibilidad de ver los videos varias veces si es necesario. Además, si tiene una conexión a Internet lenta, puede descargar los videos a su computadora para evitar problemas de transmisión mientras mira.
Para facilitar la navegación a través de las conferencias, dividiré cada conferencia en varios videos basados en diferentes temas. Por ejemplo, en la lección 1, tendré videos separados sobre el curso en general, la introducción al aprendizaje automático, las categorías del aprendizaje automático, la notación y las aplicaciones del aprendizaje automático. Este desglose lo ayudará a concentrarse en temas específicos y revisar fácilmente el contenido.
Si bien el aprendizaje asincrónico tiene sus ventajas, entiendo que también tiene sus desventajas, como no poder hacer preguntas durante la lección. Para abordar esto, organizaré horas de oficina en vivo donde podemos tener discusiones en tiempo real. En breve proporcionaré más detalles sobre el horario de atención.
Ahora, comencemos con la lección 1. En esta lección, cubriremos la descripción general del curso, el plan de estudios y los temas que cubriremos a lo largo del semestre. Revisaré mis diapositivas y proporcionaré más detalles sobre el curso y otros temas relacionados con el aprendizaje automático.
Hablando del contenido del curso, he dividido el semestre en siete partes o módulos. Esta división nos ayudará a estructurar nuestro viaje de aprendizaje. En la primera parte, comenzaremos con una introducción al aprendizaje automático, donde explicaré los conceptos básicos y proporcionaré un ejemplo simple de un algoritmo de aprendizaje automático llamado K-vecinos más cercanos.
Después de la introducción, pasaremos a los fundamentos computacionales, que incluye una breve introducción a Python y su relevancia para el aprendizaje automático. Si bien la experiencia previa con Python no es obligatoria, tener una comprensión básica será beneficioso, ya que usaremos Python de manera extensiva en este curso. Nos centraremos en bibliotecas específicas como NumPy para álgebra lineal y scikit-learn, la principal biblioteca de aprendizaje automático.
En las siguientes partes, cubriremos métodos basados en árboles, evaluación de modelos, reducción de dimensionalidad, aprendizaje no supervisado y aprendizaje bayesiano. Estos temas son cruciales para comprender varios algoritmos de aprendizaje automático y sus aplicaciones. Si el tiempo lo permite, profundizaremos en el aprendizaje bayesiano, que engloba métodos basados en el teorema de Bayes.
Hacia el final del semestre, tendremos presentaciones de proyectos de clase. Proporcionaré más información sobre los proyectos de clase a medida que avancemos durante el semestre.
Para obtener información detallada sobre cada conferencia y su contenido, he creado un sitio web del curso en Canvas. Encontrará todos los recursos, incluidos videos de conferencias, diapositivas, notas de conferencias y tareas en esta plataforma. Recomiendo descargar las diapositivas antes de ver los videos para que pueda tomar notas e interactuar con el material de manera más efectiva.
A medida que avancemos con el curso, publicaré módulos semanales en Canvas, donde podrá acceder a las conferencias, diapositivas y otros recursos relevantes. Además, haré anuncios en Canvas para mantenerlo informado sobre cualquier actualización o información importante relacionada con el curso. Asegúrese de haber habilitado las notificaciones para los anuncios y lo animo a que revise su correo electrónico regularmente para mantenerse actualizado.
Así que probablemente tendré que volver a subir los videos y verificar si se cargan correctamente. Pido disculpas por las molestias y agradezco su paciencia mientras solucionamos estos problemas técnicos.
Además de los videos de conferencias, también proporcionaré materiales complementarios, como ejemplos de códigos y tareas para el hogar en GitHub. Encontrará enlaces a estos recursos en el módulo de la semana correspondiente en Canvas. GitHub se usa ampliamente en la comunidad de aprendizaje automático para compartir código y colaborar en proyectos, por lo que será beneficioso que se familiarice con esta plataforma.
Quiero enfatizar la importancia de revisar regularmente los anuncios en Canvas. Si bien enviaré notificaciones por correo electrónico para actualizaciones importantes, es esencial habilitar las notificaciones de anuncios para garantizar que reciba toda la información. Usaré la función de anuncio de Canvas para comunicar cualquier cambio, recordatorio o recurso adicional relacionado con el curso.
Ahora, analicemos la estructura del curso con más detalle. Como se mencionó anteriormente, el semestre se divide en siete partes o módulos, cada uno de los cuales cubre temas específicos relacionados con el aprendizaje automático. Estos módulos están diseñados para proporcionar una experiencia de aprendizaje progresiva, basándose en conceptos anteriores e introduciendo otros nuevos.
En la primera parte, comenzaremos con una introducción al aprendizaje automático, donde explicaré los fundamentos del campo y proporcionaré un ejemplo simple de un algoritmo de aprendizaje automático llamado K-Nearest Neighbors. Esto le dará una idea de cómo funciona el aprendizaje automático y sentará las bases para los próximos módulos.
La segunda parte se centra en los fundamentos computacionales, donde cubriremos la programación básica de Python y las bibliotecas esenciales utilizadas en el aprendizaje automático, como NumPy para álgebra lineal y scikit-learn para implementar algoritmos de aprendizaje automático. Aunque la experiencia previa en Python no es obligatoria, recomiendo completar los ejercicios interactivos que proporcionaré en Canvas para familiarizarse con Python si es necesario.
En las partes siguientes, profundizaremos en temas específicos dentro del aprendizaje automático. La tercera parte cubrirá métodos basados en árboles, incluidos árboles de decisión, bosques aleatorios y aumento de gradiente. Estos métodos se usan ampliamente en diversas aplicaciones de aprendizaje automático y le proporcionarán herramientas valiosas para crear modelos predictivos.
La cuarta parte se centrará en la evaluación de modelos, un aspecto esencial del aprendizaje automático. Analizaremos técnicas para comparar y evaluar diferentes modelos y algoritmos de aprendizaje automático, lo que le permitirá tomar decisiones informadas al seleccionar e implementar modelos en escenarios del mundo real.
La quinta parte explorará la reducción de la dimensionalidad y el aprendizaje no supervisado. No se deje intimidar por el término "aprendizaje no supervisado"; lo explicaremos en detalle durante las conferencias. Esta parte se centra en métodos que analizan y extraen patrones de datos sin etiquetas explícitas, lo que abre nuevas posibilidades para la exploración y el análisis de datos.
Si el tiempo lo permite, en la sexta parte profundizaremos en el aprendizaje bayesiano, que involucra métodos basados en el teorema de Bayes. Discutiremos los clasificadores bayesianos, los clasificadores bayesianos ingenuos y las redes potencialmente bayesianas. El aprendizaje bayesiano proporciona un marco probabilístico para comprender y modelar la incertidumbre en el aprendizaje automático.
Por último, al final del semestre, tendremos presentaciones de proyectos de clase. Proporcionaré más información sobre los proyectos de clase a medida que avance el semestre, pero esta será una oportunidad para que aplique sus conocimientos y habilidades a un problema específico o conjunto de datos de interés. Será una oportunidad para mostrar su comprensión del material del curso y demostrar su capacidad para implementar técnicas de aprendizaje automático.
A lo largo del semestre, tendré horas de oficina en vivo donde podremos participar en discusiones en tiempo real sobre el material del curso o cualquier pregunta que pueda tener. Los detalles de este horario de oficina se proporcionarán a su debido tiempo, y los animo a aprovechar esta oportunidad para interactuar conmigo y sus compañeros de clase.
Para facilitar la comunicación y la colaboración, también utilizaremos Piazza, una plataforma en línea donde puede publicar preguntas, participar en debates y recibir respuestas oportunas mías o de sus compañeros. Los animo a participar activamente en Piazza, ya que no solo los beneficiará, sino que también contribuirán a la experiencia de aprendizaje colectivo de la clase.
En conclusión, he esbozado la estructura del curso y los diversos recursos disponibles para usted. Espero que esta descripción general le haya proporcionado una comprensión clara de cómo procederemos a lo largo del semestre. Si tiene alguna pregunta o inquietud, no dude en comunicarse conmigo durante el horario de oficina o publicar en Piazza. Estoy aquí para apoyar su viaje de aprendizaje y estoy emocionado de embarcarme en esta aventura de aprendizaje automático con todos ustedes.
Gracias y comencemos con la lección 1 sobre la descripción general y el plan de estudios del curso.