 Lo primero, daros las gracias por venir hasta ahora, que coincide todavía con con la comida y es una hora pues complicada, pero bueno, siempre bueno conocer gente con con hambre de conocimiento. Me presento, soy Rubén Martínez, ingeniero informático, y bueno mi background pues viene sobre todo del sector de la seguridad informática. Estuve trabajando allí durante más de 10 años en seguridad ofensiva. No sé si alguien coincide que ha podido trabajar en ese mundo, que ahora está también bastante de moda, pero siempre me interesa el tema de la inteligencia artificial y al final pues el combinar los dos mundos pues me ha llevado justamente a dónde estoy, que es trabajar en DataHack y concretamente en el área de Labs. ¿Y qué hacemos en el área de Labs? Pues desde hace dos años estamos trabajando en un proyecto de investigación que se llama Diáfora y básicamente tiene que ver con la charla que di el año pasado y con la que estoy dando este. ¿En qué consiste? Bien, pues tenemos que implementar un montón de modelos de deep learning. ¿Para qué? Para integrarlos justamente con el amigo que sale en la foto, ¿vale? Con este robot Pepper que a lo mejor los que estuvisteis ayer por aquí pues en nuestro stand de DataHack lo pudisteis ver, ¿vale? ¿Y qué es lo que tiene que hacer este robot en este proyecto? Pues la idea justamente es que estos modelos le puedan dar las capacidades necesarias al robot para que pueda estar asistiendo en terapias a personas con Alzheimer. Justamente la semana que viene a estas horas justamente estaré en Salamanca en el centro de referencia de Alzheimer y estaremos haciendo pruebas con grupo de control de pacientes. Y bueno, pues el año pasado pues ya tuve la suerte de estar aquí hablando de una de las funcionalidades que hemos desarrollado que es justamente la capacidad de reconocimiento facial y sobre todo de que cuando conozca a una persona nueva pues solo necesite una imagen de esa persona para reconocerla en el futuro y pues bueno el tema ha sido pues en este año pues contaros otra de las capacidades que estamos desarrollando que tiene que ver pues con la detección de emociones y en concreto pues bueno voy a pasar para atrás en concreto hemos querido hablar de la detección de emociones a partir de la voz en este proyecto estamos teniendo que tomar distintas fuentes de información para extraer las emociones desde fuentes de información visuales como fuentes de información acústicas yo he puesto aquí en el título Vallecian voice stress distinto de emotion porque justamente lo que llegamos a tener en el menú de hoy para esta charla pues va a ser un poco comenzar hablando de qué son las emociones es decir si nos piden desarrollar un modelo que detecte emociones pues lo primero es saber qué son pues es lo primero que vamos a hacer una vez que hayamos visto eso pues vamos a suponer que ya tenemos un modelo desarrollado hemos seguido esas recetas para intentar detectar emociones y hemos desarrollado un modelo pues con lo que ahora está tan de moda tanto hype que es el tema del Dipler, una herramienta más pues el tema en lo que como el tiempo es limitado en lo que he querido hacer hincapié es ver por qué puede ser necesario añadir una serie de medidas que indiquen la falta de certeza del modelo bueno ahí veremos ejemplos de por qué de verdad hace falta añadir este tipo de información o por qué puede ser bastante útil añadir este tipo de medidas de información cuando trabajamos con estos algoritmos y pues bueno como vamos a implementarlo pues utilizando lo que se conoce como Vallecian Dipler es un poco el marco que vamos a emplear para poder obtener esas medidas de falta de certeza de las predicciones que nos va a devolver nuestro modelo y pues bueno para finalizar de postre pues la idea es contaros un poco cómo hemos implementado dos de las medidas de falta de certeza empleando ese framework de Vallecian Diplerin que en concreto son la falta de certeza aleatoria y la falta de certeza epistémica y ya pues si todavía no me ha vistido piedras porque sí puedo ser muy brasas pues terminar enseñando algunos de los vídeos en los que pues vamos a ver cómo hemos entrenado en local y cómo hemos desplegado al robot como el tiempo es limitado como he dicho antes si alguno tiene curiosidad sobre todo en cómo hemos integrado estos modelos con el robot pues después vamos a estar tenemos un estan en data hack y si queréis pasaros por allí ahí podré hablaros en profundidad todo lo que queráis de cómo se hace esa integración para decir bueno para ponernos un poco en contexto los modelos de Diplerin los realizamos con TensorFlow comenzamos con la 1.3 y pues al final terminamos congelando en la 1.8 utilizando la estimator API luego ya empezamos a utilizar queras y es un poco jaleo cuando utilizas queras con la estimator API cuando intentas traducir algunas cosas y luego en cuanto a la parte de robótica pues está todo controlado con ROS ¿Hay alguien que le suene? Perfecto, son las siglas de Robot Operating System y básicamente te da una gran flexibilidad a la hora de trabajar bien pues empezamos pues qué son las emociones bueno pues para responder a esta pregunta lo que hemos querido hacer es ver qué dice la neurociencia y en concreto nos hemos querido fijar en los estudios que está realizando un equipo de investigadores que está liderado por la doctora Lisa Feldman Barrett que han desarrollado una teoría que se denomina la teoría de construcción de emociones que básicamente lo que dice es que las emociones son conceptos bien ¿Qué es un concepto? pues un concepto es lo que pongo ahí es una versión comprimida de cientos o miles de experiencias pasadas y pues bueno el cerebro cuando le llega información pues no se pregunta qué es esa información sino que se pregunta a qué se parece esa información ¿Por qué hace eso? pues básicamente por eficiencia para no tener que intentar interpretar lo que está recibiendo a través de los sentidos desde cero sino que intenta buscar ya un concepto previo que ya ha aprendido e intenta buscar semejanzas es un poco la forma de funcionar y pues bueno aquí tengo una pregunta que digo ¿Qué pensáis? que el cerebro es más reactivo es decir que recibe una serie de estímulos y el cerebro genera una respuesta o que implementa algún tipo de sistema predictivo más o menos ¿Cuántos podéis pensar que el cerebro es más reactivo? así levantar la mano que no nos están grabando reactivo ya hay una persona por ahí ve a más gente y los que no habéis levantado la mano más o menos pensáis que tiene que ver que el cerebro es más predictivo bien pues estos últimos lo que habéis levantado la mano al final son los que estáis un poco más en lo cierto y yo se explico ¿Por qué? pues básicamente el cerebro es predictivo por dos razones la primera por rapidez y que tiene que estar relacionado con la segunda por supervivencia es decir el cerebro no espera recibir toda la información que estamos absorbiendo para una vez que ha terminado de recibir todo ese estímulo generar una consecuencia al ese estímulo sino que básicamente está continuamente realizando simulaciones de lo que cree que va a ocurrir porque para sobrevivir no podemos tener no disponemos de todo ese tiempo ahora mismo ya sí pero en nuestro día a día no somos conscientes pero tenemos que tomar un montón de decisiones y si tuviéramos que esperar a contar con toda la información pues al final el sistema sería impracticable de acuerdo bien pues al final todo esto pues lo que viene a decir es que pues cuando sentimos alegría tristeza por ejemplo amor pues al final todo esto son conceptos es decir al igual que el cerebro pues cuando recibe un haz de luz procedente de una mesa pues lo interpreta como una mesa pues cuando el cerebro recibe información procedente pues del interior del organismo pues lo puede interpretar como emociones por ejemplo como una emoción pues a lo mejor de soledad vale por ejemplo en cuanto por ejemplo la tristeza pues podría ser la forma que tiene el cerebro de decirnos pues que nos falta algo nos falta energía nos falta algo que necesitamos para poder seguir adelante porque al final una cosa que os tengo puesto aquí es lo del body budget que podéis decir que es el body budget pues básicamente el cerebro es una máquina de ahorrar energía es decir todo lo que hace nuestro cuerpo necesita energía, necesita consumir energía ya sea cualquier acción interna o externa pues al final nuestro cerebro necesita estar continuamente realizando predicciones de que energía se necesita para hacer esas acciones entonces cuando nos encontramos en algún momento bajos de reservas pues al final lo que va a hacer el cerebro es generar emociones por ejemplo una emoción de soledad o de tristeza para qué para que al final podamos tomar decisiones encaminadas a rellenar ese body budget de acuerdo ese presupuesto energético para poder estar con un resumen y es algo un poco frío que puede ser un poco frío al final las emociones son conceptos que se construyen pues a partir de estímulos externos a partir de estímulos internos que los recibe a través de nuestros órganos del estado de nuestros órganos también recibe información pues a partir de una tradición cultural que podemos tener de acuerdo en algún sitio donde hemos nacido y también a partir de un histórico en el final es que ha tenido ese individuo y en función a toda esa información pues el cerebro justamente genera emociones encaminadas a equilibrar ese body budget es decir las emociones son una forma de decirle a nuestro cuerpo que tiene que ponerse a tomar decisiones para rellenar esa falta de recursos que tenemos por ejemplo la depresión podría ser un bucle de predicciones negativas en la que una predicción negativa realimenta otra y realimenta otra es que es muy complicado salir de ella pero la idea principal de las emociones justamente es una bastante egoísta pero es básicamente que mantengamos nuestro nivel energético equilibrado y como las personas somos seres sociales que necesitamos vivir en sociedad para poder subsistir y seguir adelante pues las emociones es un mecanismo que tiene nuestro cerebro para intentar adelantarse a que estemos demasiado bajos de energía para que intentamos poner remedio a eso a la gente o porque si nos encontramos tristes pues vamos a intentar acercarnos a alguien querido pues para que nos intente consolar pues eso es un poco el tema de su teoría de construcción de emociones de acuerdo es simplemente un mecanismo para intentar equilibrar el depósito de energía que tiene nuestro cuerpo de acuerdo y bueno esto también nos lleva a un punto su teoría que es el concepto de experimental blind básicamente dice que nuestro cerebro no es capaz de interpretar algo para lo que no tiene un concepto previo para lo que no le han dado un concepto previo y ahora me gustaría preguntaros que es lo que veis en esta imagen que tenéis aquí en la slide hay alguien que ve algo en concreto bueno que está ocurriendo ahora mismo en vuestro cerebro pues ahora mismo vuestro vuestro cerebro está intentando buscar como loco algún concepto previo para intentar asemejar esas líneas blancas y negras a algún concepto que ya tengáis aprendido vale y ahora mismo esto os parece pues justamente por lo que dice hay experimental blind bien si yo paso esto hacia adelante y ahora veis la imagen de la izquierda y volveis a mirar la imagen ahora de blanco y negro alguno ve ahí una serpiente ahora después de verla de la izquierda bien que ha ocurrido que al daros la imagen en color os he dado un concepto de la serpiente y a partir de él vuestro cerebro ya es capaz de rellenar la información que falta en la imagen de la derecha es un poco cosas que hace investigaciones que hace el equipo de la doctora Lisa Feldman Barre de acuerdo y bueno al final pues os cuento pues que un poco el estilo de vida que llevamos pues de tomar un montón de reservas de azúcar o la falta de sueño sobre todo la falta de sueño afecta bastante a ese presupuesto de energía corporal que tenemos y eso hace pues que haya bastantes problemas de trastornos psicológicos de depresiones y un poco de todo lo que de la automedicación que después se produce debido para intentar subsanar eso de acuerdo bien ahora si yo una vez que ya os he puesto un poco os he contado un poco el overview de esa teoría de la construcción de emociones que imagen creéis que está expresando el niño o sea que emoción en realidad que pensáis que está expresando ese niño enfado escucho por aquí alguien más piensa que enfado veo también que hay gente que piensa enfado y que emoción pensáis que está expresando la chica de la derecha tristeza escucho por aquí que está ocurriendo no somos capaces de interpretar de verdad que emociones están expresando entonces os sonará que hay un montón de modelos de deep learning que tratan de inferir que emoción está expresando una persona a partir de una imagen estática hay un montón de modelos que básicamente se basan en eso bien pues si ya nosotros como personas lo tenemos complicado imaginaros lo que va a hacer un modelo que ha sido entrenado en base a unos esgos de acuerdo y que básicamente tiene una capacidad de generalización muy pequeña de pensar la imagen bien, la chica está gozando es un poco el resumen de acuerdo, yo lo veo si me preguntan es el resumen y ahora pues el chaval también y he escuchado al principio que parecía que estaba enfadado que está ocurriendo aquí que nosotros, las personas para interpretar las emociones necesitamos contexto es decir nos hace falta ampliar ese rango de información no nos es suficiente con simplemente con una cara vale pues vamos a dar más contexto, os pongo toda una cara qué emoción pensáis que está expresando la persona de la izquierda alguien, lo primero que se os ocurra euforia alguien más pues en este caso premio has ganado, de acuerdo el punto es o la receta es que las personas para expresar una misma emoción realizamos un montón tanto de movimientos faciales como de movimientos corporales no nos podemos fijar en una única fuente de información necesitamos un contexto muy grande pero también ocurre otra cosa que las personas además expresamos con un mismo movimiento diferentes emociones entonces esto nos lleva hace un rato qué son las emociones o cómo poder detectar emociones de una persona pues para poder detectar las emociones de una persona necesitamos justamente tener información de datos o estímulos externos que le están llegando a esa persona datos o estímulos internos que está sintiendo esa persona a través de un concepto que se llama interocepción que aparecía en una slade anterior que simplemente es la interpretación de las sensaciones corporales del propio cuerpo saber qué contexto cultural tiene esa persona y necesitamos también saber ese rango de interacciones sociales que ha experimentado esa persona de acuerdo necesitamos un montón de contexto para poder evaluar de forma eficiente la emoción que está expresando por lo tanto hay que andar con bastante cautela a la hora de intentar desarrollar un modelo que trate de predecir las emociones y sobre todo esto es bastante peligroso porque últimamente viendo la noticia pues que sistemas de departamentos de recursos humanos están intentando emplear este tipo de modelos pues para intentar inferir rasgos de personalidad de gente a partir de imágenes de acuerdo entonces pues esto tiene el sesgo que tiene y hay que saber antes de hacer algo pues un poco la base la base de su funcionamiento bien pues una vez que hemos puesto la base de qué son las emociones pues imaginaros que hemos desarrollado un modelo que tiene en cuenta toda esa información bueno pues si hemos desarrollado un modelo pues por ejemplo que se basa en regresión pues una de las funciones de error que se suele emplear pues es la euclidian loss que simplemente es la media del cuadrado de las diferencias entre los labels y las predicciones bien si el modelo que hemos tenido que desarrollar es de clasificación pues ahí normalmente pues se suelen emplear pues una función de activación pues como es la softmax y después una función de error bastante utilizada es la categorica el cross entropy vale todo esto que os cuento está relacionado para intentar ver porque puede ser importante añadir medidas de falta de certeza vale ya hemos intentado desarrollar un modelo para detectar emociones pues que vale correcto se basa y recoge la información necesaria pero vamos a ver si con ese modelo ya es suficiente o si habría que meterle más información bien pues imaginamos que seguimos con el modelo de clasificación bien pues qué hace la función de activación softmax pues básicamente con la función de activación softmax cada neurona de la capa de salida está asociada a una de las clases que queremos predecir y básicamente esta función de activación lo que hace es que para una entrada devuelve la probabilidad de que esa entrada pertenezca a cada una de esas clases cuál es el problema pues que esa probabilidad es con respecto a las demás clases que se han definido de acuerdo o sea eso no nos está dando una información real de cómo de seguro está el modelo de esas predicciones y aquí tenemos que tener en cuenta una cosa que la geometría de los datos de entrenamiento pues puede tener bastante variación dentro del conjunto de entrenamiento y eso nos lleva a que trabajar con datos puntuales a veces no es suficiente y necesitamos trabajar con distribuciones de probabilidad vale bien pues antes de meternos ya con el marco de cómo vamos a implementar esas medidas de certeza os voy a contar un caso que pasó en el 2018 de porque puede ser necesario añadir al modelo de deep learning medidas de falta de certeza pues ocurrió justamente en el 2018 que un coche autónomo de uber atropelló a una mujer a Elaine Herzberg que es lo que estaba haciendo esta mujer pues estaba cruzando por la carretera por un lugar donde no había un paso de peatones pues aquí tengo puesto un poco que es lo que ocurrió bueno pues al principio el coche autónomo pues comenzó clasificando a la mujer como un vehículo después lo clasificó como la clase ober vale después como vehículo de nuevo y una vez más como oder y después bicicleta y después oder y después ya bicicleta y finalmente la terminó atropellando que es lo que ocurrió pues básicamente que a la hora de entrenar el modelo no se había tenido en cuenta que podía haber peatones cruzando por una carretera en un lugar que no fuera un paso de cebra es decir el modelo pues sí, puede devolver muy alto de softmax pero lo que puede tener también es una falta de certeza muy grande sobre esa predicción puede ocurrir eso y justamente desgraciadamente es lo que le pasó a esta mujer entonces al final el punto es no confiemos tan ciegamente las predicciones que está realizando el modelo de deep learning que al final lo que busca son correlaciones y intentemos mejorarlo mediante otras fuentes de información de acuerdo una de ellas es el tema de causal inference que ya es el tema de no quedarte con correlaciones sino ir un paso más allá y hacer estudios causales de acuerdo bien pues cómo vamos a intentar implementar estas medidas de falta de certeza pues para ello vamos a emplear estadística vallesiana que básicamente lo que dice la estadística vallesiana es que la experiencia que tenemos del mundo real pues la mide en términos de grados de de grados de certeza es decir pues que partiendo de un conjunto de datos x y de unos labels y lo que vamos a intentar es restringir los parámetros del modelo que vamos a desarrollar a una estimación puntual y vamos a intentar encontrar o maximizar lo que se llama lo que tenéis ahí la likelihood función que es la probabilidad de obtener los valores de los labels a partir de los pesos del modelo y de las entradas de acuerdo es decir lo que tenéis ahí es que queremos encontrar los valores de los pesos que me maximicen la probabilidad de encontrar los valores de los labels a partir de esos pesos y de esas entradas es fácil la fórmula bien pues lo que para intentar implementar esa falta de certeza lo que vamos a intentar hacer es encontrar la distribución posterior sobre esos pesos para poder encontrarlos entonces como es la fórmula para intentar encontrar esa distribución posterior de los pesos pues es la que os tengo puesto ahí la posterior distribution que básicamente es la función de likelihood que acabamos de ver por lo que se llama el prior sobre los pesos que básicamente es la distribución que creemos que siguen los pesos antes de haber visto los datos y partido por el marginal likelihood que es lo que tenéis ahí de probabilidad de I condicionado a X y como se calcula el marginal likelihood pues mediante marginalización es decir sumando todos los valores de una variable para calcular la contribución marginal de otra si estamos trabajando con variables discretas pues sería pues con un sumatorio y si estamos trabajando con variables continuas pues con la integral que os tengo puesto ahí respecto a los pesos que es la integral de la función de likelihood por el prior sobre los pesos cuál es el problema de esto pues que si nuestra red neuronal es profunda y tiene un montón de parámetros continuos pues al final este marginal likelihood va a ser intractable es decir no vamos a ser capaces de calcularlo porque es super grande de acuerdo entonces necesitamos alguna forma de aproximarlo y qué es lo que vamos a hacer pues justamente lo que vamos a intentar hacer es encontrar una distribución para intentar una distribución que sea tractable y que sea conocida para intentar aproximarla de acuerdo a esa distribución posterior de los pesos va a ser un poco el objetivo vamos a intentar encontrar una distribución Q con parámetros teta que va a intentar aproximarse a esa distribución de los pesos que es intractable es justamente lo que veis al principio del todo bien y cómo vamos a intentar hacer eso pues eso se hace mediante una técnica que se denomina variational inference que el variational inference lo que hace es intentar minimizar la divergencia culva cliffler que es la divergencia culva cliffler pues es una medida que me trata de indicar cómo de diferentes son dos distribuciones en nuestro caso la distribución Q que es la aproximada Q de la distribución posterior de los pesos que queremos hacer una medida que me diga cómo de diferente es la distribución que intento aproximar de la distribución objetivo entonces el objetivo es intentar minimizar esa divergencia vaya ladrillo se estoy soltando ahora pero tiene un sentido el punto es que esta divergencia esta medida que me va a decir cómo de diferente es la distribución estimada pues que puede ser una distribución normal de la distribución real de los pesos pues también puede ser intractable bien problemas por todos lados entonces qué es lo que vamos a hacer pues lo que vamos a intentar hacer es intentar encontrar un límite inferior de ese marginal likelihood de ese denominador que no podíamos calcular porque era intractable podemos intentar encontrar un límite inferior y ese límite inferior el evidence lower bound bien, ¿qué es el elbo? pues el elbo a ver si funciona el láser justamente es esta fórmula tan preciosa que tenéis aquí que básicamente tiene dos términos como podéis ver, un término en la izquierda y otro en la derecha bien, ¿qué es el término en la izquierda? pues el término en la izquierda es la probabilidad de partiendo de los parámetros teta de la distribución aproximada para encontrar si los codificamos en forma de w esto es como si fuera un encoder y esto es como si fuera un decoder pues es la probabilidad de partir de los parámetros teta codificarlos a w, ¿de acuerdo? y luego a partir de ese w emplearlo para obtener los valores que busco de i ese es el punto es decir, es una estructura encoder-decoder y luego tenemos la divergencia clíbler que es lo que os decía que es una medida que me va a decir la diferencia entre el encoder y la distribución que queremos aproximar ¿de acuerdo? entonces, al final este término de la divergencia clíbler si lo queréis ver es como una forma de mantener nuestro encoder honesto es decir, que si nuestro encoder genera muestras de w que son probables dados nuestro prior sobre los pesos entonces nuestro objetivo será mejor que si nuestro encoder genera muestras de w que no son probables dado nuestro problema ¿de acuerdo? de acuerdo, bueno pues lo que vamos a intentar hacer es justamente maximizar este evidence-lower-bound Objective y con esto lo que haremos será calcular ese límite inferior de la justamente del marginal likelihood que nos faltaba por poder calcular, ¿de acuerdo? pues una vez que tenemos ese límite inferior ya podremos minimizar el gap que hay entre la distribución posterior real de los pesos y la distribución aproximada Q, ¿de acuerdo? es decir, ya hemos podido mediante una distribución conocida aproximarla a aquella que por su longitud de parámetros pues no podíamos calcular y ya pues intentar trabajar intentar calcular la distribución de los pesos que me van a maximizar la probabilidad de obtener los labels que busco ¿de acuerdo? bien pues una vez que tengo ya todo eso que ya un poco he contrado esa distribución Q pues el punto es que si yo quiero hacer las predicciones para un punto X y Y pues como tengo que hacerlas básicamente lo que voy a hacer es ejecutar te simulaciones de Monte Carlo en el que cada una de las simulaciones lo que hará será emplear unos pesos extraídos de la distribución que acabamos de obtener entonces como que de esa distribución de pesos que he aproximado pues ejecuto te simulaciones y en cada simulación extraigo unos pesos de esa distribución y calculo justamente la predicción ¿de acuerdo? y después hago la media de todas las predicciones y eso sería la probabilidad de obtener el label I para la entrada I ¿de acuerdo? una media de las predicciones para te simulaciones de Monte Carlo es decir, ya estamos trabajando con distribuciones con datos puntuales ¿de acuerdo? y luego la falta de certeza todo esto lo he contado porque al final todo esto nos lleva a una forma de implementar la falta de certeza y que la falta de certeza la vamos a implementar como la varianza de las predicciones es decir, la varianza de la predicción para el valor X y Y dado la entrada de la predicción para el valor I y Y para la entrada X y Y pues al final justamente esa falta de certeza será la varianza que básicamente es la media de justamente de del valor que hayamos calculado aquí menos el valor puntual ¿de acuerdo? que obtenemos al extraer los pesos de la distribución ¿de acuerdo? de la distribución en él en la muestra de Monte Carlo ¿de acuerdo? al final es un poco repetir un experimento muchas veces y ver qué varianza tiene ¿de acuerdo? es un poco la idea general ¿de acuerdo? para que solamente te quedes con una predicción puntual sino que veas cómo se comporta la distribución de tus datos a lo largo del tiempo bien, pues la falta de certeza la podemos ver como una combinación de falta de certeza aleatoria y de falta de certeza epistémica vale, palabras raros, fórmulas y palabras raros, esto va mejorando bien bueno, pues os he dicho que hay dos tipos, en principio dos tipos de falta de certeza, a grandes rasgos la aleatoria y después está la epistémica la combinación de esos dos tipos de falta de certeza sería un poco lo que nos va a dar la incertidumbre de las predicciones de nuestro modelo bien, pues ¿qué es la falta de certeza aleatoria? pues es la forma de explicar lo que el modelo no comprende a partir de los datos estos son un poco raros, es decir es como yo le doy datos a mi algoritmo y la falta de certeza va a decir lo que el modelo no va a ser capaz de comprender a partir de ellos y esto en qué se concreta pues, por ejemplo está muy relacionado con sensores que no tienen una calibración perfecta vale, o con sensores que no me capturan todas las features explicativas que me influyen en mi modelo y entonces por mucho que yo intente recoger datos, yo puedo estar infinito recogiendo datos, que al final eso no va a hacer que me disminuya mi falta de certeza aleatoria, ¿por qué? porque los propios sensores que estoy empleando para recoger los datos, ya tienen problemas ya tienen ruido o sobre todo una forma de intervenir en este caso porque me diréis, vale, perfecto si yo por muchos datos que recoja no me reduce esta variante aleatoria, esta falta de certeza aleatoria entonces ¿qué hago? pues ahí la solución pues sería o intervenir en la precisión de los sensores que tenemos o también en la cantidad y el tipo de sensores que tenemos ¿vale? ahí ya habría que ver pero es que ya te metes en temas de causalidad ¿vale? si quieres meterte en estos tipos para ver, porque tú en realidad con un modelo de deep learning lo que tratas es intentar modelar un entorno, entonces cuántas más features que de verdad causan el efecto que estés dejando fuera pues al final es peor tu modelo ¿vale? entonces pues en nuestro caso el tema sería intentar intervenir en los sensores ejemplos de falta de certeza aleatoria pues por ejemplo son oclusiones que son áreas del entorno pues que nuestros sensores no son capaces de capturar ¿vale? o por ejemplo áreas con sobre exposición o con infraexposición por ejemplo áreas donde hay mucho brillo o donde hay sombras un ejemplo también que ocurrió no solamente con coches de Uber sino también con coches de Tesla que fue justamente que un coche de Tesla autónomo chocó contra un camión blanco ¿qué ocurrió? pues que en ese momento en el que chocó las condiciones de iluminación del cielo eran muy brillantes entonces como había mucho brillo con un área de sobre exposición el modelo pensó que no había camión ¿vale? pero había camión entonces se lo comió ahí y bueno una vez que hemos visto un poco que es la falta de certeza aleatoria que básicamente es la presencia de ruido de cosas que nuestros sensores no pueden capturar pero que de verdad influyen en nuestro modelo pues ¿cómo podemos implementarlo? o por ejemplo una forma de hacerlo es lo que hemos empleado en este modelo que básicamente es que el modelo no solamente devuelva los valores of max sino que devuelva también la varianza de la entrada entonces lo que hemos hecho ha sido modificar un poco esa función de error de categorical cross entropy modificarla para que se adapte para poder aprender no solamente a predecir los valores of max sino que además aprenda a predecir la varianza de la entrada que está recibiendo ¿y cómo hemos implementado todo este chorro de código que pongo ahí? que bueno tampoco es tanto es chiquito. ¿en qué se basa? pues para cada iteración lo que hacemos es calcular el categorical cross entropy entre nuestras predicciones y los labels y también generamos una distribución normal esa distribución normal va a estar centrada en cero, va a tener media cero y va a tener desviación típica, la desviación típica que es capaz de predecir hasta ese momento el modelo, que ha aprendido a predecir el modelo ¿de acuerdo? creamos esa distribución normal, bien y ahora viene la parte de ejecutar muchas veces eso vamos a ejecutar te simulaciones de Monte Carlo y para cada una de esas simulaciones lo que vamos a hacer es que vamos a extraer una muestra de esa distribución normal y con esa muestra vamos a distorsionar la predicción de los logits es decir lo que me está devolviendo el modelo vamos a distorsionar o por distorsionarlo pues digo justamente a ver si lo veo por aquí, esto de aquí ¿vale? aquí veis que estoy sumando básicamente le estoy sumando aquí estoy obteniendo estoy extrayendo de la distribución normal de las muestras pues aquí lo estoy sumando ¿vale? y entonces lo que hago es a continuación calcular el categorical cross entropy entre estos logits distorsionados ¿vale? y los labels ¿vale? y a continuación lo que hacemos es calcular, una vez que hemos calculado lo que sería el error distorsionado es decir la diferencia que hay entre los labels y las predicciones distorsionadas ¿vale? pues lo que hago es que calculo la diferencia que hay entre el error distorsionado y el error distorsionado para ver qué cambio de error hay cuando yo distorsiono ¿de acuerdo? y bueno pues termino pasándolo por una función de activación elu que básicamente es como la relu en la parte positiva pero en la parte negativa aquí pues al final es una exponencial pues que depende tanto de x como de un parámetro alfa pues que por efecto suele ser 1 que básicamente pues intenta pues tener una parte negativa ¿vale? es una forma pues de intentar tener un poco más de información ¿vale? y una vez que ya devolvemos eso pues como la función de error hay que minimizarla para... bueno calculo la media o sea tú esto lo hago te veces ¿vale? te simulaciones ¿vale? todo eso mismo al final calculas la media de todas esas simulaciones y pues bueno lo que hago es que le añado al final una penalización que básicamente como la función de error tiene que ser minimizada para una varianza menor que infinito por le meto una penalización que básicamente la tengo por aquí en el variance de presor por aquí tiene que estar que básicamente es la exponencial de la varianza al final menos 1 ¿de acuerdo? es simplemente una penalización ¿vale? para que no se vayas todo de madre y al final ¿qué estamos haciendo con todo este chorro? pues estamos entrenando para que el modelo de los valores softmax de la entrada que le llegue como también la varianza de esa entrada que le llega y eso lo hemos calculado pues ejecutando muchas veces y trabajando con distribuciones ¿de acuerdo? bien eso en cuanto a la falta de certeza aleatoria bien ¿qué ocurre con la falta de certeza epistémica? bueno pues la falta de certeza epistémica lo que explica es lo que el modelo no comprende debido a la falta de datos ¿vale? la aleatoria era lo que no comprende a partir de ellos ¿vale? la epistémica es lo que el modelo no puede comprender debido a que le faltan datos ¿de acuerdo? es decir en este caso si nosotros hacemos una tarea de aumentado del dataset o con más variedad de acuerdo y con más ejemplos pues la idea es que la varianza epistémica debería ir bajando ¿de acuerdo? un ejemplo bueno un ejemplo muy claro de esto sería por ejemplo coger un 10% del conjunto de entrenamiento y entrenar un modelo ¿vale? y a continuación coger todo el conjunto de entrenamiento y entrenar otro modelo bien pues el primer modelo debería mostrar una falta de falta de certeza aleatoria mayor que el segundo porque ha sido entrenado con menos datos ¿vale? y un ejemplo de esto conocéis la aplicación de hotdoc o no hotdoc que salía en la serie de Silicon Valley bueno pues para los que no la conozcan es una aplicación que básicamente tu le pasas una imagen y te dice si en esa imagen hay un hotdoc o si no hay un hotdoc ¿de acuerdo? bien pues saber lo que ocurre si le pasáis una imagen de por ejemplo de un brazo en el que echáis keptube que te dice que es un hotdoc ¿vale? y alguno de vosotros se le puede ocurrir por qué porque un brazo con keptube no es un hotdoc ¿alguien se le puede ocurrir más o menos? pues bueno para no quemar el tiempo que tampoco voy muy sobrao pues el tema es porque cuando entrenaron el modelo no añadieron en la clase de no hotdoc imágenes en las que hubiera keptube ¿de acuerdo? el modelo te va a decir que reconoce un hotdoc con una probabilidad son max muy alta pero oye al final un brazo con keptube no es un hotdoc es decir no se tuvo en cuenta esa situación que también estaba muy relacionada pues con lo que vimos del coche de autónomo que había atropellado a la mujer que había cruzado por un lado de la carretera donde no había un paso de cebra por eso antes de creernos ciegamente las predicciones que nos devuelvo un modelo hay que intentar entenderlo un poco más ver cuáles son las limitaciones del algoritmo bien y entonces ¿cómo vamos a implementar la falta de certeza epistémica? pues mediante una técnica que se denomina montecarlo dropout sampling que consiste en añadir capas de dropout al modelo y entrenarlo y a partir de ese entrenamiento con esas capas de dropout pues nos vamos a obtener una distribución de los pesos que es kuzu theta asterisco de w y a continuación nos vamos a poner en modo inferencia y lo que vamos a hacer es esas capas de dropout las activas activarlas en modo de inferencia que es una cosa que no se suele hacer pues aquí las activáis y aquí es donde os digo que tuve problemas al intentar mezclar la estimatorapy con capas de queras luego si queréis os comento como lo sucede pues activáis esas capas de dropout en tiempo de inferencia y ejecutáis estas simulaciones de montecarlo y al final lo que vais a hacer es que en cada simulación vais a extraer parámetros del modelo de esa distribución que habéis obtenido durante el entrenamiento y al final lo que vais a obtener después de haber hecho las tres simulaciones de montecarlo es una media de todas las predicciones ¿de acuerdo? y como vamos a implementar la falta de certeza pues justamente como la entropía que básicamente es la cantidad media de información contenida en esa distribución predictiva que es esta formulita de aquí pues para no contaros más fórmulas bueno, lo primero vale, ya está pitando esto mi modelo predictivo acaba de acertar porque más o menos predije que me haya pasado de tiempo y estoy justo pasándome de tiempo bueno, pues os voy a enseñar algunos vídeos y con esto terminamos en este bien, esto es un ejemplo este vídeo es muy sencillo que básicamente se va a ver bastante poco pero básicamente es como el modelo para entrenar para aprender a predecir esa varianza esa falta de certeza aleatoria aquí lo he cortado vais viendo como en todo ese scroll que ha hecho no lo puedo parar, mi objetivo era pararlo que pasa que no tengo algunos problemas pero bueno, ahí se ve como a lo largo del entrenamiento se van calculando la varianza el modelo va aprendiendo a predecir cada vez mejor la varianza de la entrada eso simplemente es una voy a pasarlo adelante este otro de la falta de certeza me he pasado para atrás este otro es un ejemplo de falta de certeza epistémica en el que tomo un audio en local y vamos a calcular bueno, lo que se escuchaba era una voz expresando miedo intentando expresar miedo pues la cosa es que le paso al modelo ya entrenado mediante Monte Carlo Dropout Sampling y al final te dice la varianza la falta de certeza epistémica y te dice la clase 1 que la clase 1 al final es fearful que es miedo, de acuerdo es decir, ha aprendido mediante Monte Carlo Dropout Sampling también a decirte pues la falta de certeza epistémica pues que te diría si te hacen falta más datos o no, de acuerdo bien, y ahora ya pasamos a dos vídeos más de el robot, ya el despliegue en el robot que este sería este mismo ejemplo a ver este sería la falta de certeza epistémica bueno, ahí ya lanzo un poco con Ross y con todo, muestro ahí un poco el percal luego si alguien tiene curiosidad yo esto se lo cuento tranquilamente si alguien se queda con ganas y ahora ya bueno, dice que sí que por supuesto que mola y justo dice que mi tono de voz es feliz y también la falta de certeza epistémica y ahora por último ya para terminar ya queda poco pues en este vídeo vamos a ver las dos faltas de certeza combinadas tanto la que ha aprendido durante el entrenamiento la falta de certeza aleatoria como también la epistémica Hola Pepe, me alegro de verte es eso yo ahí está prediciendo y luego lo que se va viendo también quería pararlo pero el tema es pues que te da dos tipos de falta de certeza la falta de certeza tanto la epistémica como podéis ver ahí y también te da un poco más arriba veis aleatoria es un poco al final cómo combinar esas dos medidas para al final tener más información acerca de las predicciones de tu modelo y bueno, no sé si alguno tiene preguntas hasta aquí la charla como me he pasado, si tenéis dudas y queréis, estamos en el booth o si tenéis dudas de aquí muchas gracias por venir