Paloma Recuero de los Santos Data Science: ¿Cómo hacer las preguntas adecuadas? Cuando hablamos de Ciencia de Datos, o de Aprendizaje Automático, solemos hablar de datos, algoritmos, modelos, etc. Y no nos damos cuenta de que, quizás, hemos pasado”de puntillas” por...
Antonio Pita Lozano ¡Que la fuerza te acompañe LEIA! Son tiempos difíciles para la galaxia, la crisis financiera acecha a la unión y los estados periféricos imponen aranceles en su luchan con el control comercial. De forma silenciosa,...
Paloma Recuero de los Santos Las 9 tareas en las que se basa el Machine Learning En un negocio data-driven, cada problema es único, con sus propios objetivos, restricciones, aspiraciones etc. Sin embargo para poder resolver estos problemas, la estrategia del Data Scientist es descomponer...
LUCA Video Post #1: ¿Qué es la Inteligencia Artificial? Hoy estrenamos nueva serie. Los temas son los mismos, de algunos ya hemos hablado en nuestro blog, otros son nuevos. Pero lo vamos a hacer en diferente formato: en...
LUCA Caso de éxito: Optimizando el plan de carreteras de Highways England La industria del transporte es una industria muy permeable a la aplicación de estrategias de Big Data e Inteligencia Artificial, ya que existen casos de uso claros para maximizar...
LUCA Incorporación de Big Data en el sector público: caso de éxito Navantia ¿Cuáles son los ingredientes principales para una transformación digital exitosa? La transformación digital se ha hecho indispensable en casi todos los sectores, también en la administración pública y, como hoy vamos...
LUCA Analizamos el perfil de turistas en España en colaboración con el INE El turismo es uno de los principales sectores de actividad económica en España. Según el Instituto Nacional de Estadística (INE), organismo autónomo dependiente del Ministerio de Economía, España recibió...
LUCA Descubriendo el poder del Big Data en el mundo energético Contenido creado por Pedro A. Baigorri, Marta García Moreno, Henar Muñoz Frutos y J.Carlos Calvo Martínez, miembros del equipo de producto de LUCA. Ahora más que nunca las técnicas Big Data están...
LUCA LUCA Talk: Cómo detectar patologías médicas con Deep Learning La Inteligencia Artificial se está adentrando cada vez en más sectores y disciplinas, también y de forma muy beneficiosa en el mundo de la salud, lo que llamaríamos eHealth...
LUCA LUCA Talk: Reconocimiento de caracteres a través de OCR En nuestro día a día nos hemos podido ver en la necesidad de escanear un documento o una factura y luego poder procesar la información que contenían. En este...
LUCA LUCA Talk: La transformación empieza por la formación La transformación digital de las empresas empieza por el cambio cultural de las personas y no en la tecnología. De nada sirve apostar por tecnología más puntera como Machine...
Paloma Recuero de los Santos Video Post #14: “ScyPy, NumPy, Pandas…¿Qué librerías Python necesito? En esta nueva edición de LUCA video post, damos un paso más en nuestro aprendizaje de Python aprendiendo lo que son los módulos, y, en particular las...
Deep Learning vs Atari: entrena tu IA para dominar videojuegos clásicos (Parte II)IdeasLocas.CDO 19 junio, 2018 En este artículo, el segundo de nuestro experimento de Aprendizaje Reforzado (RL) y Deep Learning en entornos generados por OpenAI, continuamos el post del blog de LUCA Deep Learning vs Atari: entrena tu IA para dominar videojuegos clásicos (Parte I), donde se ofrecen los resultados obtenidos tras el entrenamiento de un agente en los entornos Breakout-v0 y SpaceInvaders-v0. Para aquellos que no tuvieron oportunidad de ver la charla del pasado martes 29 de mayo, en este artículo podéis encontrar el enlace al webinar, donde mostramos el contenido resumido en este post. Introducción Como ya dejamos indicados en anteriores posts pertenecientes a las series que versan sobre Aprendizaje Reforzado (RL), vimos que el RL es una área del Machine Learning capaz de dotar a un agente con los algoritmos que le permitan examinar y aprender del entorno en el cual se está ejecutando para conseguir un objetivo a cambio de una determinada recompensa. Estos algoritmos ayudan al agente a aprender mediante ensayo y error a maximizar la recompensa que puede obtener en función de las variables que observe en el juego sin necesidad de ninguna intervención por parte del ser humano. Algunos conceptos recurrentes de aprendizaje reforzado cuya definición es importante tener clara son: Entorno: se refiere al juego en el que el agente debe actuar y aprender a desenvolverse. Recompensa: incentivo que obtiene el agente tras realizar una determinada acción. en el caso del Breakout-v0, el agente conseguirá una recompensa positiva en el caso de que consiga devolver la pelota y destruir uno de los ladrillos. Estado: es generalmente un tensor obtenido del espacio de observaciones del entorno. En este caso, los estados consisten en un conjunto de imágenes pre-procesadas con la función de facilitar el entrenamiento del modelo. Acción es el conjunto posible de respuestas dentro del espacio de acciones que el agente puede realizar en función del estado o histórico de estados que ha observado. Por ejemplo, en el caso que nos ocupa sería moverse a izquierda, derecha o quedarse quieto en función de la dirección y velocidad de la pelota observada. Política de control (control policy) determina la elección de la acción que debe hacer el agente. Esta política de elección es determinada por el programador. Normalmente, se suele elegir una acción aleatoria al principio y, una vez el modelo está lo suficientemente entrenado, se toma la acción en función de qué valor máximo ha obtenido el modelo en el espacio de acciones. Figura 1: diagrama del proceso de aprendizaje de un agente durante el entrenamiento Inicialización del entrenamiento El algoritmo implementado busca maximizar la recompensa en cada episodio. El agente recoge imágenes del entorno del juego para ser inyectadas en una red neuronal, lo cual le permitirá estimar qué acción elegir dado el input al modelo. Tanto para construir la arquitectura de la red profunda como para hacer los cálculos pertinentes, haremos uso de la librería TensorFlow. También recomendamos leer los posts Deep Learning con Python: Introducción a TensorFlow (Parte I y Parte II) en el caso de que queráis una introducción al funcionamiento de esta librería. Los valores de las acciones estimadas por el modelo dada una cierta entrada, son generalmente referidos como Q-values. En el caso de que estos valores fueran conocidos de antemano, el agente sólo tendría que seleccionar la acción que maximiza el Q-value correspondiente para cada estado del juego observado. Sin embargo, estos Q-values deben ser explorados mediante un proceso de entrenamiento extenso, dado el ingente número posible de estados que se debe explorar. Política de toma de acciones En un principio, los valores de las acciones se inicializan en torno a cero, dejando al agente tomar acciones aleatorias en el juego. Cada vez que el agente obtiene una recompensa positiva (i.e., destruye un ladrillo o mata a un marciano), los pesos y bias de las capas de la arquitectura se actualizan, lo que permitirá que la estimación de los Q-values sea cada vez más refinada. Las técnicas de Aprendizaje Reforzado (RL) suelen ser bastante inestable cuando se usa en una red neuronal profunda a la hora de aproximar el mapa de estados y acciones del entorno. Esto viene provocado por la no-linealidad de estas redes o por el hecho de que pequeñas actualizaciones de los Q-values junto con una política de control poco adecuada puede cambiar drásticamente la acción a realizar y, por ello, conducir a estados del entorno muy diferentes. Por todo esto, y con la intención de mitigar las inestabilidades que pudieran aparecer durante el entrenamiento, se suele recurrir a un muestreo aleatorio de un gran número de estados, acciones y recompensas para explorar la mayor cantidad de posibilidades dentro de la casuística existente y así evitar divergencias o estancamientos en el entrenamiento del modelo Q-function La misión del agente es interactuar con el emulador con la intención de aprender qué acción tomar dado un cierto estado o subconjunto de estados con la misión de maximizar la recompensa a obtener derivada de esa acción. Una función que devuelve la acción óptima a realizar dado un cierto estado queda definida como: Q(s,a) = reward(s,a) + γ · max(Q(s’,a’)) Esta función se conoce como la ecuación de Bellman. Esto indica que el valor de la función Q para un cierto estado s y una acción a representa la recompensa actual r para ese estado s y acción a más la recompensa esperada derivada de una acción nueva a’ y un estado posterior s’ corregida por un factor de descuento γ ∈ [0,1]. Este hiperparámetro de descuento nos permite decidir cómo de importantes son las recompensas futuras con respecto a la recompensa actual. Los valores cercanos a γ≃1 serán más óptimos para el juego Breakout, dado que los recompensas no se obtienen inmediatamente después de aplicar una acción, sino tras la ejecución de varias acciones posteriores una vez conocido si una acción concreta fue acertada. Función de pérdida y optimizador Dada la gran cantidad de frames por segundo a procesar y la elevada dimensionalidad de los estados a manejar, un mapeo directo de la causalidad estado-acción resulta impracticable. Por ello, nos vemos obligados a aproximar la función Q mediante el muestreo aleatorio de un elevado número de estados, recompensas y acciones recogidos por el agente. Generalmente la función de pérdida (loss-function) elegida y que se busca minimizar es el error cuadrático medio (Root Mean-Squared Error) entre los Q-values obtenidos como resultado de aplicar nuestro modelo y los Q-values esperados. sqrt(loss) = Q(s’, a’) – Q(s, a) = reward(s, a) + gamma · max(Q(s’, a’) – Q(s, a)) Para encontrar el mínimo de la función anterior se hace uso del algoritmo de optimización iterativo Gradient Descent. A través de este algoritmo se calculan los gradientes de la función de pérdida para cada peso y desplaza los mismos en la dirección que minimice la función. Sin embargo, encontrar los mínimos de una función no lineal puede resultar complicado, especialmente por la posibilidad de quedarnos estancados en un mínimo local lejos del mínimo global que se quiere conseguir o pasar múltiples iteraciones en una parte plana o cuasi plana de la función. Optimizar una red neuronal es una tarea complicada, altamente dependiente de la calidad y cantidad de los datos con los que se entrene el modelo. La complicación de optimizar la red también vendrá dada por la arquitectura de la misma, entendiendo que a mayor número de capas y mayor dimensionalidad de las mismas, se tendrá que abordar la optimización de un mayor número de pesos y biases. Preprocesado de los inputs Uno de los factores más importantes para garantizar un buen entrenamiento del modelo, dado los largos tiempos de computación requeridos, reside en el pre-procesado de la imagen y en la naturaleza del input a la red neuronal. Esto también afectará directamente a las rutinas a desarrollar de cara a la interacción con el entorno. Por lo general, es recomendable que la imagen generada por el entorno de OpenAI Gym sea procesada antes de ser incluida en el modelo, generalmente con la intención de reducir su dimensionalidad, eliminando aquella información de la imagen que no sea de utilidad a la hora de entrenar la red neuronal. Hay que hacer hincapié en que, por lo general, la información relativa al color apilada por OpenaAI Gym en los 3 canales de color que se nos facilitan no contiene información valiosa para el entrenamiento del modelo, por lo que será obviada antes de introducir los estados en el modelo. Las imágenes devueltas por el entorno OpenAI Gym son arrays de 210 x 160 píxeles agrupadas en 3 capas RGB. Esto hace que el uso de memoria sea elevado. Por ello, se hace imprescindible abordar un pre-procesado de las imágenes para disminuir la dimensión de los inputs, eliminando información innecesaria para entrenar el modelo y disminuir el uso de memoria. Las pruebas realizadas en este proyecto se han fundamentado en dos aproximaciones con respecto al procesado de imágenes: Como primera aproximación, se toman imágenes del entorno de juego y se procesan, convirtiéndose a escala de grises haciéndose un resizing, eliminando el fondo y usando un filtrado de imágenes sencillo para poder detectar movimiento. El estado resultante de ese procesado se compone de la última imagen del entorno de juego junto con una traza de movimiento de las trayectorias más recientes de los objetos.En la segunda alternativa de procesado, se ha optado por dar como input al modelo un conjunto de 4 capturas con la intención de que pueda aprender a detectar el movimiento. Esto es necesario, pues un único estado como input no nos aporta apenas información sobre la velocidad, dirección y aceleración de la pelota y la pala. Únicamente nos interesa el área de juego por donde se mueven la pelota y la pala y donde se encuentran los ladrillos; por ello, los bordes de las capturas no aportan información valiosa al modelo, por lo que esta zona se elimina. Además, a cada imagen se le disminuye la resolución a la mitad y se pasa a blanco y negro, pues los canales RGB de la imagen original tampoco aportan información al entrenamiento del modelo. En el próximo post proseguiremos con una descripción de la arquitectura de los modelos que nos han permitido entrenar dos agentes en los entornos Breakout-v0 y SpaceInvaders-v0, desglosaremos con mayor detalle la lógica de entrenamiento y testeo y se proporcionarán las conclusiones al trabajo realizado dentro de este proyecto de Deep Learning y Aprendizaje Reforzado.No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. Eventos de LUCA en Junio/Julio/Agosto que no te puedes perderHistoria de Lisp y su uso en redes neuronales – Parte I
Paloma Recuero de los Santos Data Science: ¿Cómo hacer las preguntas adecuadas? Cuando hablamos de Ciencia de Datos, o de Aprendizaje Automático, solemos hablar de datos, algoritmos, modelos, etc. Y no nos damos cuenta de que, quizás, hemos pasado”de puntillas” por...
Antonio Pita Lozano ¡Que la fuerza te acompañe LEIA! Son tiempos difíciles para la galaxia, la crisis financiera acecha a la unión y los estados periféricos imponen aranceles en su luchan con el control comercial. De forma silenciosa,...
LUCA Caso de éxito: Optimizando el plan de carreteras de Highways England La industria del transporte es una industria muy permeable a la aplicación de estrategias de Big Data e Inteligencia Artificial, ya que existen casos de uso claros para maximizar...
LUCA LUCA Talk: La transformación empieza por la formación La transformación digital de las empresas empieza por el cambio cultural de las personas y no en la tecnología. De nada sirve apostar por tecnología más puntera como Machine...
Paloma Recuero de los Santos IA bajo el microscopio: meetup y entrega de Data Science Awards Spain 2019 El pasado 5 de diciembre, en el Auditorio del Espacio Fundación Telefónica, tuvo lugar el encuentro Inteligencia Artificial bajo el Microscopio, en el que se hizo...
Jesús Montoya Sánchez de Pablo Cómo transformar una compañía. Paso 2: conectar la tecnología con el negocio En una entrada anterior, presentamos la priorización de los casos de uso como el primer paso hacia la transformación de las compañías en el marco de un plan de...