Q-Learning y el aprendizaje por refuerzo: Teoría y práctica con Python

Поділитися
Вставка
  • Опубліковано 19 гру 2024

КОМЕНТАРІ • 39

  • @fau13moyano83
    @fau13moyano83 11 місяців тому +3

    Muy agradecido con este video, estoy leyendo reinforcement learning de Sutton y Barto, y este tipo de videos en español ayuda mucho a incorporar los temas , muchas gracias y un saludo 🫂

  • @angelgomez9246
    @angelgomez9246 Рік тому +5

    Hola, primero gracias por la explicación, me ayudó mucho. Tenía algunas dudas con respecto al Q-table, tras estudiar unos minutos llegué a la siguiente conclusión (puede que a alguien más le sirva):
    'qtable' Es una matriz de 20x20x3, aquí se almacenarán los valores de probabilidad teniendo en cuenta 3 parámetros:
    - Posición, velocidad y acción escogida
    Para posición y velocidad se dividieron los posibles escenarios en 20, es decir que dentro de los valores reales dados por estos dos parámetros
    se redondean para que caigan en uno de 20 intervalos, por eso 20 por 20, y en esos intervalos se escoge uno de 3 posibles decisiones, allí se almacenarán
    los valores de probabilidad.
    Puede que sea un poco confuso el código del video por la siguiente razón, las siguientes 3 formas de llamar un espacio son similares:
    - q_table[(1,1)][0]
    - q_table[1][1][0]
    - q_table[(1,1,0)]
    Entonces fijate bien en qué parte lo que se llama es un valor sencillo o una tupla con 2 valores (como es el caso de la variable 'estado')

  • @HobbieCode
    @HobbieCode Рік тому +7

    Muy bueno Iván, me lo he tragado enterito y queda muy bien explicado. Enhorabuena de nuevo. 😉

  • @pablobellidoalvarez5368
    @pablobellidoalvarez5368 Рік тому +2

    Genial!!! Por fin encuentro un vídeo sobre programación de aprendizaje reforzado!!!
    Por fin podré poner en práctica este tipo de tecnología.
    Por favor, más vídeos como este!!

    • @garcia-ferreira
      @garcia-ferreira  Рік тому

      Gracias por los ánimos! Subiré más videos de este tipo que veo que está cogiendo mucho interés.

    • @AlejandroOsorioHuanca
      @AlejandroOsorioHuanca Рік тому

      @@garcia-ferreiraHola, a mi me aparece en pycharm que env.step(accion) tiene mas de 4 valores, como podria almacenar todos esos valores restantes en "info"?

  • @ozzy1987mr
    @ozzy1987mr Рік тому +4

    tengo 6 meses buscando alguien entendible, si bien es un tema delicado donde tenes que si o si entender la formula, tenes la mejor explicacion que e encontrado en 2 años sobre este tema, me permitiste avanzar de 0 porque no existe buen material sobre este tema en español ... espero que sigas el tema y vayas enseñando diferentes algoritmos, formas y demas

  • @alexnova9976
    @alexnova9976 Рік тому

    Mil gracias por desglosar la ecuacion de Bellman, sin tanta tinta matemática. La mayoría de los que tratan de explicarla, se jartan de entender la ecuación, pero no de explicarla con un ejemplo tan sencillo y pragmático como el suyo.
    Recomendacion: que el codigo se vea un poco mas grande en pantalla, para no perder el hilo de su tutorial.
    Un saludo desde Colombia.

  • @sebastianpineyraq1998
    @sebastianpineyraq1998 Рік тому

    me gustaría que subas mas videos.., es muy buen contenido 🎉

  • @FerranFont
    @FerranFont Рік тому

    Buen vídeo Ivan.

  • @JuanfeDV
    @JuanfeDV Рік тому

    Muy buenas Iván. Antes que nada muchas gracias por tus videos.
    Quería aportar que a la hora de discretizar, env.reset() devuelve una tupla a la que hay que coger el índice 0 para descartar el resto. Es decir:
    def discretizar(valor):
    valor = valor[0]
    ... (continuar el resto de la función)
    Me temo que esto es debido a que tenemos diferentes versiones de gym y por eso el problema de estructura de datos.
    Saludos y gracias de nuevo!

    • @JuanfeDV
      @JuanfeDV Рік тому

      Amplio información al respecto:
      A partir de la versión 0.25 se incluyeron varios cambios.
      - El método .step() renderiza automáticamente y no hay opción de evitarlo. Esto causa varios problemas con abrir y cerrar la ventana de renderizado.
      - El método .action() retorna 5 valores en vez de 4, pero eso no es mayor problema.
      - 'nuevo_estado' no contiene solamente los dos valores, sino el tipo de datos que almacena y por ello el error que comenté de usar valor[0].
      Creo que usas la versión de gym 0.24.1, ?pero podrías confirmarlo? Aun en esta versión la ventana de renderizado no se cierra correctamente sin finalizar el entorno, cosa que no es viable.
      Muchas gracias y un saludo,
      Juanfe

    • @JuanfeDV
      @JuanfeDV Рік тому +3

      Me autorespondo, por si le ayuda a alguien.
      Con la versión de gym 0.24.1 se puede seguir los pasos de Iván sin problemas.
      La causa de que se congelará la pantalla de pygame y diera error a la hora de hacer otra vez render es que la instrucción de env.close() debe ir al final ya terminado el for, es decir, no lleva tabulación.
      Un saludo y a la espera de nuevos videos Iván. Muchas gracias!

    • @garcia-ferreira
      @garcia-ferreira  Рік тому +1

      @@JuanfeDV gracias por el interés mostrado y por la implicación. Estoy ya creando nuevos vídeos para el canal, así que pronto habrá más.

    • @eduardorosentreter
      @eduardorosentreter Рік тому +1

      Nunca había agradecido a alguien por autorresponderse y hablar solo LoL 😂😂😂😂
      Muchas gracias por el detalle bro

    • @JuanfeDV
      @JuanfeDV Рік тому +1

      @@eduardorosentreter con el curro que se pegó Iván haciendo el video, no iba a dejar de compartir mi pequeño granito de arena con él y los compañeros. De eso se trata, de compartir. Un saludo!

  • @ProjectOfTheWeek
    @ProjectOfTheWeek Рік тому +1

    Buen video, tengo una duda. Una vez entrenado el modelo si se exporta y lo importamos en otro ejercicio igual, pero que el camino tenga otra forma. Lo resolvería antes que un modelo nuevo? gracias

  • @music321.3
    @music321.3 8 місяців тому

    Buen video , para cuando subes. Otro

  • @dafmdev
    @dafmdev Рік тому

    Muchas gracias!!

  • @escobarsaldanagustavoalo-uj8mj

    Muy buen video, cree poder subir un video de q Learnig pero enfocado en redes

    • @garcia-ferreira
      @garcia-ferreira  Рік тому

      Sí, uno de los videos futuros será implementando redes neuronales para hacer aprendizaje por refuerzo. Así que estate atento al canal ;)

  • @showland7826
    @showland7826 Рік тому +1

    una pregunta, siempre he visto que hay que entrenarlo teniendo un gpu, hay forma de hacerlo sin gpu?. de forma local. o con los mismos nucleos del cpu?

    • @garcia-ferreira
      @garcia-ferreira  Рік тому

      No es necesario tener una GPU para realizar el entrenamiento. Puedes hacerlo con una CPU normal, la única diferencia es que te llevará más tiempo el entrenamiento, pero por lo demás te funcionará igual.

    • @showland7826
      @showland7826 Рік тому

      @@garcia-ferreira muchas gracias sino que vi que la libreria gym pedia usar keras para el entrenamiento. por eso es que pense que solo se podia entrenar teniendo una gpu. otra consulta, si quisiera entrenar el sistema de forma simultanea. osea simular 2 o 3 escenarios mas en simultaneo para entrenarlo mas rapido y aprenda mas rapido. como tendria que modificar el codigo o en que parte tendria que modificarlo?

    • @garcia-ferreira
      @garcia-ferreira  Рік тому +1

      @@showland7826 No se si te entiendo muy bien la pregunta, si te refieres a lanzar más procesos de entrenamiento para que vaya más rápido no vas a poder hacer nada, ya que el límite es tu CPU. Aunque lances muchos procesos solo tienes una CPU para gestionarlos, así que no tiene mucho sentido. Si tienes más preguntas puedes escribirme a ivan@garcia-ferreira.es y así me puedes detallar las preguntas mucho mejor.

    • @showland7826
      @showland7826 Рік тому

      @@garcia-ferreira te escribi explicandote a detalle si hubiera una forma mas directa como discord seria genial. gracias

    • @garcia-ferreira
      @garcia-ferreira  Рік тому

      Estoy trabajando en crear un comunidad Discord, en cuanto la tenga te aviso ;)

  • @SaraFerozCamporosa
    @SaraFerozCamporosa 11 місяців тому

    Hola! Vas a continuar con más vídeo??

  • @RodrigoPozoTV
    @RodrigoPozoTV Рік тому

    que genial la musica. Hasta me dieron ganas de tocar piano

  • @asddsa-eh8jh
    @asddsa-eh8jh 7 місяців тому

    Entonces en juegos que requieren cambios de objetos continuos, el agente tendria que recurrir a una memoria externa al juego?

  • @Fabiola-077
    @Fabiola-077 2 місяці тому

    Alguien tiene el codigo fuente del ejemplo? lo he intentado correr en google colab y no me sale :(

  • @gustavoescobar6724
    @gustavoescobar6724 Рік тому

    Bueno video amigo solo que tengo duda como usar Jupyter lab y de donde sale, soy nuevo en este tema y quisiera un tutorial más detallado 🙏

  • @LeydiGF
    @LeydiGF Рік тому

    El método de montecarlo porfa con Frozen Lake

  • @adriatomas4972
    @adriatomas4972 9 місяців тому

    la funcion discretizar no entiendo como te funciona, el env.reset() me devuelve lo siguiente: (array([-0.5239461, 0. ], dtype=float32), {})

  • @christian3314
    @christian3314 Рік тому

    Gracias Ryan reynolds de españa

  • @elvisleon9695
    @elvisleon9695 Рік тому

    Siempre me gusto mas los algoritmos geneticos para optimizar los pesos de la red neuronal.

  • @ancano1984
    @ancano1984 Рік тому

    Hola Iván!! Excelente video, muchas gracias. Solo una duda. Veo que ya la librería gym cambió a gymnasium y cuando trato de practicar con tu código me sale el siguiente error: TypeError: unsupported operand type(s) for -: 'dict' and 'float'. Sabes a qué se podría deber?? Muchas gracias nuevamente por el video y la explicación.

    • @garcia-ferreira
      @garcia-ferreira  Рік тому

      Hola Andrés, pues no lo tengo claro, así sin ver el código y donde te falla es difícil de saber. Si quieres desde mí página www.garcia-ferreira.es/blogger-gb-contact/ mándame un mensaje y te contesto y lo vamos tratando por correo.

  • @deeper_soundfy5528
    @deeper_soundfy5528 Рік тому

    MODULA. POR FAVOR, MODULA!! Que hay que hacer un esfuerzo sobrehumano para entenderte a cabalidad.