La pregunta que muchos os haréis después del artículo anterior es ¿cómo plantea la doctora Feldman Barrett la construcción de emociones? Como comentamos en Innodata...

The Deconstructed Emotion

Nuestro cerebro tiene una vida difícil; se pasa el tiempo recluido en nuestro cráneo. Tiene además que desempeñar la misión de cuidar a nuestro cuerpo, el cual a su vez es un mecanismo complejo, lleno de recursos y difícil de mantener. Justamente este balance o mantenimiento de los recursos del cuerpo, es lo que se conoce como Body Budget. De esta manera, cuando se producen alteraciones en este Body Budget, nuestro cerebro será el encargado de restablecer el equilibrio.

Cuando nuestro Body Budget cambia, surgen en nosotros unos sentimientos básicos denominados Affects y que son diferentes de las emociones. Como podemos ver a continuación tienen dos dimensiones una en el eje X (valence) y otra en el eje Y (arousal):

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-3

Cómo funciona el Body Budget

Aquello que impacte nuestro Body Budget de forma positiva, motivará un Affect positivo. Ocurrirá al contrario con aquello que impacte nuestro Body Budget de forma negativa.

Hay que tener en cuenta que no nacemos ya sabiendo cómo controlar nuestro Body Budget, sino que vamos aprendiéndolo desde que somos bebés. Así es como nuestro enclaustrado cerebro puede llevar a cabo con éxito la misión de mantener nuestro Body Budget: en base a

Con todo esto, el cerebro es capaz de mapear los estímulos asociados a una cierta situación, con una experiencia pasada y actuar según un modelo aprendido. Y lo más importante, de manera predictiva, no reactiva.

Estrategia predictiva del cerebro

Esto es muy interesante: nuestro cerebro se guía por una estrategia predictivo-correctiva, no de estímulo-respuesta. La doctora Barrett y otros científicos, coinciden en que el primer tipo de estrategia es mucho más eficiente y adaptativo que el segundo. En este sentido, por ejemplo, nuestro cerebro debe hacernos sentir sedientos antes de que nos deshidratemos por completo o también hacernos sentir temor al borde de un acantilado, no cuando ya estemos cayendo.

En resumen, los modelos elaborados por nuestro cerebro se basan en experiencias pasadas, tienen como objetivo regular el Body Budget y tratan de predecir lo que va a ocurrir en nuestro entorno a cada momento. En base a esa predicción, nuestro Body Budget se modificará y sentiremos un Affect.

Las emociones

Ahora vienen las emociones: la doctora Barret las define como conceptos orientados a objetivos o metas, que construimos basándonos en experiencias pasadas.

Pongamos como ejemplo el caso de que vamos conduciendo y alguien se cruza inesperadamente con su coche delante nuestro provocándonos frenar inesperadamente. La emoción que construiremos dependerá de lo que nuestro cerebro prediga que está ocurriendo en nuestro entorno, dentro de nosotros y también de nuestro objetivo. En este caso, si lo que predecimos es que alguien intentó herirnos o que no valoró nuestra vida, nuestro Body Budget cambiará, experimentaremos un Affect de agitación y tocaremos el claxon con el objetivo de poner de manifiesto que nosotros importamos y que no nos hace ninguna gracias que atenten contra nuestra integridad.

Pero si lo que predecimos es que la persona que se ha cruzado ante nosotros tiene que ir con urgencia al hospital, nuestro Body Budget cambiará, permaneceremos tranquilos y facilitaremos la maniobra al conductor de delante. Habremos construido la emoción de simpatía o empatía.

En definitiva, la doctora Feldman describe las emociones como prescripciones de las acciones. Nos indican cómo debemos actuar de cara a conseguir un determinado objetivo.

Conclusiones

Esto es solamente un resumen de una teoría, compleja y no demasiado intuitiva, pero con bastante apoyo en la comunidad científica. ¿Servirá esta teoría para sentar las bases de un verdadero reconocimiento de emociones en los modelos de machine learning? Pensemos que, si realmente queremos que una máquina sepa cómo se construyen las emociones, tendría que tener la tarea de regular un Body Budget y para ello necesitaría algo parecido a un cuerpo… ¡interesante!

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.


Alejandro Arranz. Data Engineer en datahack

Vivimos en una época en la cual, gracias a la nueva venida de la inteligencia artificial, se ha conseguido que las máquinas consigan resultados muy buenos en problemas que, hasta hace no mucho, creíamos que solo los humanos podíamos resolver. Un claro ejemplo son los relacionados con visión que actualmente se abordan en el ámbito de la Visión Artificial.

El hecho de que una máquina “sea capaz” de analizar imágenes del mundo real, nos ha llevado a intentar extrapolar esta capacidad a la relación máquina-humano. Intentamos que no solo sea capaz de identificar, por ejemplo, cuando se encuentra ante un ser humano, sino que además pueda determinar la emoción que en ese momento está experimentando la persona.

Para los que no lo sepáis, en datahack labs también nos hemos enfrentado a este problema en el proyecto DIA4RA (enlace aquí al diario de AIDA). Lo hemos hecho apoyándonos en uno de los datasets de cabecera utilizado para pruebas de concepto relativas al reconocimiento de emociones en rostros humanos: el FER 2013, que contiene imágenes de rostros humanos en escala de grises, etiquetadas con la emoción a la que representan (alegría, tristeza, neutro, enfado, miedo, asco). Máquinas que detectan emociones

Los resultados que obtuvimos valieron para, como mucho, hacer una pequeña aplicación que, conectada a una cámara, intentara determinar la emoción de la persona que se pusiera delante en base a lo que esta exagerara el gesto… algo fallaba terriblemente.Máquinas que detectan emociones

Una charla… en las oficinas de Google

Nuestro compañero Rubén Martínez (@eldarsilver), dio con una charla en la que la doctora Lisa Feldman Barrett expuso ante ingenieros de Google, evidencias tan demoledoras como esta imagen a continuación en la que muestra en el eje X, las expresiones faciales que se presuponen a emociones como enfado, asco, sorpresa, alegría, tristeza y miedo:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones

En el eje Y, figuran las evidencias basadas en diversos experimentos que reflejan la frecuencia con la que las personas muestran esas expresiones mientras experimentan la emoción correspondiente. Como vemos, no es tan frecuentemente como creíamos. Por ejemplo, a través de dieciséis estudios diferentes, esa cara de ojos saltones y boca entreabierta situada en el extremo derecho del eje X solamente representa miedo en un 9% de las ocasiones… Y en ciertas partes del mundo (como en las Islas Trobriand de Papua Nueva Guinea) se considera una cara de enfado, de amenaza. Máquinas que detectan emociones

¿Qué ocurre cuando, en los muchos estudios al respecto, distintos sujetos de prueba ven estas expresiones faciales? ¿Qué emoción asocian a las mismas? Veámoslo en la barra azul:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-1

El problema viene de que, cuando abordamos la detección de emociones desde el prisma “tradicional”, estamos considerando las barras azules. Por decirlo de otra manera: estamos asumiendo que cuando, por ejemplo, una persona arruga el morro, está experimentando una emoción de asco, de profundo desagrado, como si realmente existiera una correspondencia 1 a 1 entre un gesto concreto y una emoción concreta.

Hacia una nueva forma de detectar emociones

Después de esto, la pregunta que cae por su propio peso es… Si la realidad está representada por las barras blancas, ¿por qué las barras azules son tan grandes en comparativa? Es decir, ¿por qué las personas asociamos con tanta frecuencia esas expresiones con esas emociones?

Para responder a est,o hay que echar un vistazo al tipo de material que se utiliza para preguntar a las personas que participan en los estudios que dan lugar a las barras azules:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-2

Como vemos, reciben una cara con una lista de palabras de entre las cuales se les pide que escojan una. En este caso, este rostro es calificado como “Angry” el 67% de las veces, pero si se retiran las opciones y se da libertad a la persona para categorizar la expresión, solo el 36% de las veces se afirma que esa es una cara de enfado.

Por supuesto todo esto no quiere decir que la cara no tenga ningún tipo de peso a la hora de determinar la emoción de una persona, sino que nuestro cerebro mete muchos otros ingredientes en la coctelera antes de inferir dicha emoción: hay todo un contexto que entra en juego y que desaparece por completo en los experimentos anteriormente mencionados, de los cuales, por otra parte, salen algunos de los datasets que utilizamos posteriormente para tratar de abordar el gran melón de la detección de emociones. Es curioso que en nuevas versiones del FER 2013, las imágenes de expresiones faciales tengan más de una etiqueta o, lo que es lo mismo, se les haya asociado más de una emoción posible.

En el próximo artículo, veremos cómo abordar esto.


Alejandro Arranz. Data Engineer en datahack

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

MLlib o Spark MLlib es la librería de Machine Learning (ML) de Apache Spark. El framework de computación distribuida que incorpora esta librería permite hacer uso de una serie de algoritmos de Machine Learning.

Lo interesante de todo esto, es que los algoritmos de Machine Learning que están implementados dentro de MLlib pueden ser escalados y paralelizados, aprovechando toda la base de Spark.

Dentro de MLlib podemos encontrar dos APIs:

El cambio de pasar de API basada en RDDs a otra basada en DataFrames, se debe a que estos últimos unas estructuras de datos más rápidas y fáciles de manejar.

MLlib la biblioteca de Machine Learning de Spark

Spark MLlib dispone de los siguientes herramientas:

Dentro entre todas estas, cabría destacar las siguientes:

Estadística Básica

Incluye las técnicas de machine learning más básicas, como:

Algoritmos de Clasificación y Regresión

Los problemas de aprendizaje supervisado son aquellos en los que existe una variable explícita, algo concreto: edad, fuga, color de pelo… a predecir.

Para aprender a predecir dicha variable, tendremos que enseñar al modelo un histórico pasado, del cual ya sabemos la respuesta, es decir, se utilizan datasets etiquetados, en los que ya se tiene información acerca de lo sucedido. Es decir, para crear un modelo de detección de fraude, será necesario contar con un conjunto de datos donde se sepa quién ha hecho fraude y quién no.

Los supervisados se dividen en dos categorías, clasificadores y regresores, dependiendo de cómo sea la variable a predecir.

En los de clasificación la variable a predecir es una categoría o clase (valor categórico o discreto), por ejemplo: rubio/moreno/pelirrojo, fuga/no-fuga de cliente, software malicioso/no-malicioso, etc. En estos, el modelo da como resultado un valor de probabilidad para cada una de las categorías disponibles (distribución de probabilidad).

Para el caso de la regresión, la variable a predecir es numérica (normalmente continua pero no es estrictamente necesario), por ejemplo: edad, altura, valor de una casa, número de Gb que va a gastar un cliente, etc.

En Spark MLlib están implementados muchos de estos algoritmos, tal y como podemos ver en la siguiente tabla, obtenida de su documentación oficial:

MLlib la biblioteca de Machine Learning de Spark

Sistemas de Recomendación

Un sistema de recomendación es una subclase de un sistema de filtrado de información que busca predecir la "calificación" o "preferencia" que un usuario daría a un elemento. Se han vuelto muy populares en los últimos años y se utilizan en muchas áreas que incluyen: películas, música, noticias, libros, artículos de investigación, búsquedas, etiquetas sociales y productos en general.

Se pueden clasificar según la forma en que generen la lista de recomendaciones:

Spark MLlib permite el uso de filtros colaborativos, a través del algoritmo ALS (alternating least squares).

Clustering

Los algoritmos de clustering son capaces crear una serie clústeres o grupos de observaciones que son similares entre sí.

Hay dos tipos de algoritmos de clustering:

Spark MLlib, permite de los siguientes algoritmos de clustering: K-means, Latent Dirichlet allocation (LDA), Bisecting k-means, Gaussian Mixture Model (GMM). Puedes obtener más información acerca de los mismos en el siguiente link.

Gestión de Features

Spark MLlib dispone de un buen número de algoritmos para  la extracción, selección y transformación de variables. Tienes más información al respecto, en el siguiente link.

Optimization

Spark MLlib disponer de una serie de métodos para optimizar el entrenamiento de los algoritmos, es decir, mejorar su velocidad de entrenamiento sin que haya pérdida en el rendimiento.

Para ver más detalles acerca de estos métodos, consulta el siguiente link.


Y hasta aquí esta introducción esta introducción al MLlib de Spark, en próximas entregas ahondaremos en algunos de los aspectos que se han visto aquí.

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y los circuitos cuánticos con Qiskit de python. En el tercero hablamos de la Esfera Bloch, la superposición y cómo construir un circuito cuántico.

En el cuarto artículo de esta serie se introdujeron conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. Ahora es turno de ver cómo representar varios qubits y de adentrarnos en la propiedad conocida como entanglement.

Múltiples qubits

En este punto vamos a empezar a trabajar con estados cuánticos formados por varios qubits. Si recordamos lo que vimos anteriormente, un estado cuántico lo podemos asemejar a una distribución de probabilidad y un qubit es un estado cuántico de 2 niveles [a0, a1],  de forma que podemos representar un estado cuántico mediante un vector columnar.

Para hacer referencia a su label (el nombre de dicho estado) se utilizará lo que se denomina ket en la notación Dirac, es decir, podemos referirnos a nuestro estado cuántico mediante el ket . Para continuar refrescando conceptos previos, estas distribuciones de probabilidad deberán tener norma 1 en la norma L2.

Por tanto recapitulando, podemos escribir un qubit de la siguiente forma:

Introducción a la Computación Cuántica con Qiskit

Donde a0 y a1 reciben el nombre de amplitudes de probabilidad y son números complejos, por lo que no solo estaremos restringidos al cuadrante positivo del plano como ocurría con las distribuciones de probabilidad clásica, cuya norma debe ser igual a 1 en la norma L1 y además cada probabilidad debía ser mayor o igual a 0 (lo que únicamente permitía representaciones en el cuadrante positivo citado anteriormente).

Como en computación cuántica el requisito de normalización debe ser la norma L2 eso puede formalizarse para el caso de un qubit en que:

Introducción a la Computación Cuántica con Qiskit

Podemos encontrar 2 qubits especiales llamados vectores de base canónica en 2 dimensiones que son:

Introducción a la Computación Cuántica con Qiskit

La parte interesante es que podemos expandir cualquier qubit en esta base de la siguiente forma dando lugar al fenómeno de superposición:

Introducción a la Computación Cuántica con Qiskit

Según la regla de Born, si extraemos una muestra del qubit |(|) > obtendremos la salida 0 con una probabilidad |a0|2 y la salida 1 con una probabilidad de |a1|2.

Producto Kronecker

Una vez finalizado este repaso, toca ponernos manos a la obra con nuevos conceptos. Vamos a comprobar cómo añadir más qubits nos permite introducir otro fenómeno cuántico.

En este punto nos puede surgir la duda sobre cómo representar en forma de vector columnar 2 qubits. La forma de hacerlo es empleando la operación de producto de tensores o producto Kronecker. Para entenderlo vamos a ver un ejemplo en el que partimos de 2 qubits: |(|) > y |(|)` > :

Introducción a la Computación Cuántica con Qiskit

El producto de tensores o producto Kronecker de esos 2 qubits será:

Introducción a la Computación Cuántica con Qiskit

Vamos a concretar un poco más. Supongamos que tenemos almacenado en el registro cuántico qr0 un qubit que está en el estado |0> y también disponemos de otro registro cuántico llamado qr1 que de forma similar al anterior almacena un qubit en el estado |0>. Una forma de visualizar la regla del producto Kronecker de esos 2 qubits (|0> ⊕ |0>) sería mediante el siguiente código:

Introducción a la Computación Cuántica con Qiskit

El estado resultante del producto Kronecker de esos dos qubits que cada uno de ellos se encuentra en el estado |0> se suele representar como |00>. Si quisiéramos representar los estados |01>, |10> y |11> tendríamos que seguir el mismo procedimiento que hemos realizado para generar el ket |00>.

Hay que señalar que los estados |00>, |01>, |10> y |11> forman los vectores de base canónica en un espacio de números complejos de 4 dimensiones denotado como:

Introducción a la Computación Cuántica con Qiskit

Conclusión

Cuando empleamos modelos de Machine Learning y Deep Learning también trabajamos con espacios de alta dimensionalidad pero no se construyen como un producto de tensores sino que suele tratarse de Rn, es decir, un mapeo a los números reales para alguna dimensión ‘n’.

El efecto de construir espacios de alta dimensionalidad empleando producto de tensores es que no todos los vectores de dicho espacio pueden ser escritos como el producto de vectores de los elementos de ese espacio. Este hecho que en principio puede parecer confuso, nos permitirá descubrir la propiedad cuántica conocida como entanglement, que recorreremos en el siguiente artículo viendo cómo la podemos observar empleando Qiskit.  ¡No te lo pierdas!


MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

“Es por las instancias del dataset, hay un problema de overfitting que hace que el modelo no generalice”. O algo así. Esta es una de las primeras frases que escuché cuando empecé a trabajar con científicos de datos y, por supuesto, no entendí nada. Últimamente me he dado cuenta de que les comprendo (al menos cuando me hablan, cuando les oigo hablar entre ellos no entiendo ni papa). Y es que ¡ya es un montón de tiempo rodeada de datahackers!

Si trabajas con científicos de datos y tampoco te enteras de la mitad de lo que dicen, este pequeño diccionario, junto con los términos de Big Data que compartí unos meses atrás, te puede ayudar a entenderles (un poco):

Dataset:

Conjunto de datos del que se dispone para entrenar, validar y probar el sistema. Está compuesto de observaciones o muestras (samples), definidas a su vez por propiedades, características o, siguiendo la terminología más común en inglés, features. Dependiendo de si el dataset está etiquetado o no, cada una de sus observaciones podrá incorporar además el label o target, o lo que es lo mismo, aquello que se desea que el sistema sea capaz de predecir.

Observación o sample:

Cada una de las muestras o elementos que componen el dataset.

Característica o propiedad (Feature):

Cada una de las variables que definen cada observación o muestra del dataset, su naturaleza es diversa. En el caso de modelos de aprendizaje supervisado, se espera que al menos parte de las features que componen el dataset influyan en el label o target.

Objetivo (target)

Variable dependiente, atributo o factor que quieres predecir.

Conjunto de entrenamiento (train set):

Subconjunto de los datos que se usará para entrenar los modelos

Conjunto de validación (validation set):

Subconjunto de los datos que se usará para elegir el mejor de entre todos los modelos entrenados

Conjunto de pruebas (test set)

Subconjunto de datos que se usará para probar el modelo campeón elegido mediante el conjunto de validación. Los datos de este conjunto deben de proceder de la misma distribución que aquellos que el modelo se encontrará una vez se ponga en producción.

Aprendizaje supervisado (Supervised Learning)

Aquel en el que los datos de entrenamiento (train set) que se le pasan al algoritmo, van "etiquetados" o lo que es lo mismo, cada observación incluye la solución deseada (aquello que se desea que el algoritmo prediga) en su target o label.

Aprendizaje No supervisado (Unsupervised Learning)

Aquel en el que los datos de entrenamiento (train set) que se le pasan al algoritmo, no van etiquetados de forma alguna (no hay label o target). El sistema trata de aprender "sin profesor"

Algoritmo

Especificación matemática categórica que resuelve un problema complejo en base a un conjunto de datos inicial. Consiste en múltiples pasos que aplican en orden una serie de operaciones.

Entrenamiento:

Proceso por el que el modelo ajusta sus parámetros internos en base al conjunto de entrenamiento y a la configuración que previamente se le haya aplicado a través de sus hiperparámetros. Normalmente el entrenamiento se realizará tratando de minimizar el error cometido por el modelo sobre el conjunto de entrenamiento, en base a una determinada función de error o función de pérdida.

Parámetros VS Hiperparámetros:

Los parámetros son todos aquellos valores que un modelo se encarga de autoajustarse durante el entrenamiento con el objetivo de ser capaz de aprender a generalizar a partir del dataset recibido.

Los hiperparámetros comprenden aquella configuración del modelo que el programador puede ajustar antes del entrenamiento..

Modelo:

Una representación matemática de un proceso determinado capaz de inferir comportamientos en el dataset de entrenamiento, de forma que estos sean extrapolables a nuevos datos con los que el modelo no haya sido entrenado. En el caso del aprendizaje supervisado (aquel que es habitual cuando el dataset posee además de sus features un label), el modelo será capaz de predecir una categoría (en el caso de un problema de clasificación) o un número (en el caso de un problema de regresión).

Sobreajuste (Overfitting):

Situación en la que el modelo no ha sido capaz de aprender aquellos patrones o comportamientos generalizables o extrapolables de los datos de entrenamiento. Se caracteriza porque el modelo es capaz de comportarse con una precisión cercana a la perfección en el conjunto de entrenamiento. Mientras que su rendimiento es pobre con el resto de los dato: dicho en pocas palabras, el modelo se ha aprendido los datos de memoria. Las razones pueden ser diversas: desde un modelo demasiado complejo para el problema que se pretende abordar o con demasiada "libertad" para ajustar sus parámetros (se suele mitigar con técnicas de Regularización) o también puede ser que se requieran más datos para el problema que se quiere abordar.

Infraajuste (underfitting):

Situación en la que el modelo no ha sido capaz siquiera de aprender aquellos patrones o comportamientos que le permita desenvolverse adecuadamente con el dataset de entrenamiento. Llegados a este punto, conviene plantearse si el tiempo de entrenamiento ha sido suficiente. Si nos hemos pasado aplicando técnicas de regularización o si, quizás, el modelo aplicado es demasiado simple para el problema que se quiere resolver.

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En los artículos anteriores, introducción y mecanismos de atención, estuvimos hablando de las circunstancias que nos llevaron a embarcarnos en la construcción de este modelo y los principales enfoques que se han venido usando para el entrenamiento de redes neuronales con información secuencial. En este veremos como llevamos a cabo la construcción de nuestro primer modelo de speech to text, ¡¡¡es español!!!

Así, una vez definida la arquitectura que se quería usar, quedaba el último paso, entrenar y construir el modelo de Speech to Text. Proceso que queda reflejado en la siguiente figura:

Speech to Text con Tensorflow modelo datahack

Figura 7 - Esquema general del entrenamiento y construcción del modelo de speech to text

Construyendo el dataset inicial

Lo primero que se hizo fue construir un dataset (conjunto de datos) con el que entrenar al modelo. Este estaría formado por una serie de audiolibros y los ebooks correspondientes. Lo que se buscaba era tener un buen número de ejemplos de personas hablando y la transcripción a texto de lo que iban diciendo. Para esto se usaron tanto audiolibros como ebooks libres de derechos y en español, obtenidos de sitios como LibriVox y Project Gutenberg, entre otros.

Se recopilaron un total de 23 audiolibros, y los 23 ebooks correspondientes, que sumaban un total de 180 horas de audio.

Antes de entrenar el modelo de Speech to text

El siguiente paso fue procesar los audiolibros y ebooks recopilados para adaptarlos al formato LibriSpeech, ampliamente usado para el entrenamiento de modelos de Speech to Text. En este formato hay muchos recursos disponibles en inglés, pero no en español, de ahí que se tomará la decisión de dataset propio que sirviera para cumplir con los objetivos del proyecto.

Paso 1: procesar los audiolibros

El primer paso fue procesar los audiolibros para eliminar todas aquellas cosas que eran dichas por los narradores y que no aparecían en los ebooks. Por ejemplo, comentarios acerca del autor y menciones acerca del proyecto al que pertenecía el audiolibro en cuestión. También se ajustó el sampling rate de los mismos a 16 KHz, por motivos de compatibilidad con el modelo a entrenar. Todas  estas operaciones se hicieron con el programa Audacity.

Paso 2: procesar los ebooks

A continuación, se procesaron los ebooks. Para ello, se dividieron en el mismo número de partes que tenía el audiolibro correspondiente. Por ejemplo, si el audiolibro “La batalla de Trafalgar” estaba compuesto por 17 archivos mp3, el ebook de trafalgar, se dividió en 17 partes, de forma que cada una de ellas coincidiera con el archivo mp3 correspondiente. Además de esto, se hizo una revisión ortográfica, se eliminaron aquellas partes de texto que no aparecían en los audios y se trataron elementos del texto como abreviaturas y números romanos, es decir, donde ponía Sr., se sustituía por Señor y el XIX, se sustituía por 19, por ejemplo. Todo esto se hizo con herramientas de procesamiento de texto y la librería NLTK (Natural Language Toolkit) de Python.

Speech to Text con Tensorflow modelo datahack

Figura 8 - Archivos del audiolibro “La batalla de Trafalgar” y archivos de texto generados a partir del ebook, para conseguir la paridad entre el audio y texto disponible

Paso 3: Alineando audio y texto

Lo siguiente fue hacer el alineamiento de los pares audio-texto con la librería Aeneas. El resultado final fueron 17 directorios, siguiendo con el ejemplo anterior, que contenían: un archivo de texto, con el nombre del directorio, y un número determinado de archivos de audio, uno por cada párrafo existente en el archivo de texto de referencia. Cada uno de los archivos de texto que están dentro de los directorios, serían los índices que indican qué archivo de audio le corresponde a cada uno de los párrafos.

Speech to Text con Tensorflow modelo datahackFigura 9 - Directorios generados, y ejemplo del contenido del primero de ellos, tras alinear los parejas audio-texto correspondientes al audiolibro y ebook de “La batalla de Trafalgar”.

Además de los directorios, la librería Aeneas genera unos archivos json (mapas de sincronización audio-texto), uno por cada pareja de archivos de audio-texto, en los que queda recogida la alineación realizada. Estos se usaron, junto con la herramienta finetuneas, para comprobar si la alineación audio-texto se había hecho bien y aplicar correcciones, si fuera necesario.

Paso 4: división en subconjuntos

Tras alinear todos los audiolibros y ebooks correspondientes, los datos resultantes se distribuyeron los datos en tres subconjuntos: train, dev y test, siguiendo la siguiente proporción 60/20/20: 60% en train, 20% en dev y 20% en test. Los dos primeros, train y dev, se usarían para entrenar el modelo y el subconjunto de test, serviría para evaluar la eficiencia del modelo obtenido. Después de esto, se transformaron en tfrecords, formato nativo de tensorflow.

Speech to Text con Tensorflow modelo datahack

Figura 10 - Distribución de los datos en los tres subconjuntos: train, dev y test

Entrenamiento del modelo de Speech to text

Para el entrenamiento del modelo, se uso una librería de modelos de deep learning de Google, llamada tensor2tensor, que incluye la implementación de la arquitectura descrita del modelo The Transformer.

Lo primero que se hizo, es subir los tfrecords a un bucket de GCP (Google Cloud Platform), para poder entrenar el modelo se pudiera entrenar con una TPU (Tensor Processing Unit), una unidad de procesamiento creada por Google, que está optimizada para el desempeño de tareas de machine learning y deep learning.

Speech to Text con Tensorflow modelo datahack

Figura 11 - Vista de algunos de los tfrecords que se subieron al bucket de GCP

A continuación se creo una instancia de computación con una Cloud TPU, es decir, una máquina virtual con TPU. En la misma se instaló la librería tensor2tensor y se procedió a realizar el entrenamiento del modelo, lanzando una sentencia similar a esta:

Speech to Text con Tensorflow modelo datahack

Figura 12 - Sentencia para iniciar el entrenamiento del modelo, en ella se indica la orden de entrenamiento y los parámetros  asociados a la misma

Los progresos obtenidos durante el entrenamiento se fueron guardando en una carpeta “output”, situada en el mismo bucket donde estaban los datos de entrenamiento. Al finalizar el mismo, se obtuvieron una serie de checkpoints del modelo, versiones de progresión del entrenamiento. El entrenamiento se mantuvo hasta que el valor de pérdida (loss), estuvo por debajo de 0,010. Con esto se aseguraba que la precisión del mismo (accuracy), estuviera cerca del 100%.

Speech to Text con Tensorflow modelo datahack

Figura 13 - Vista de una parte de la carpeta output, donde se fueron guardando los resultados obtenidos durante el entrenamiento del modelo

Probando la eficacia del modelo...

Una vez entrenado el modelo, se llevó  a cabo una prueba de la eficiencia del mismo. Para ello, se hizo una prueba de la capacidad de inferencia (predicción) del mismo, haciendo uso del subconjunto de test, mencionado anteriormente. Los resultados fueron muy prometedores y el modelo lo hizo bien en casi el 100% de los casos.

Con el modelo  entrenado y validado, se procedió a realizar una prueba en real del mismo. Para ello, se les pasaron diferentes mensajes de voz, obtenidos a través de diferentes dispositivos, micrófono de ordenador, móviles, etc. Al hacer esto, se vio que el modelo era bastante sensible al ruido ambiental y, si este era demasiado acentuado, perjudicaba en gran medida a las predicciones realizadas.

Debido a esto, se decidió implementar un proceso de limpieza y normalización del audio entrante, antes de que este se pasara al modelo que hacía la predicción. Para ello, se usó una librería de python, SpeechRecognition, especializada en la detección y tratamiento de la voz humana. Con la limpieza previa del audio, los resultados mejoran bastante, aunque seguía teniendo cierta debilidad al ruido ambiental.

Resultados

El resultado final de todo esto fue la obtención de una primera versión de un modelo de speech to text, capaz de pasar la voz humana (en español) a texto con una eficiencia más que aceptable pero que aún sigue siendo sensible al ruido ambiental. No obstante, como he comentado, esta es una primera versión que esperamos mejorar en el futuro, llevando a cabo una o varias de las siguientes acciones:

Y hasta llega nuestra singladura acerca del desarrollo y puesta en marcha de nuestro primer modelo de speech to text, espero que os haya sido interesante. Por nuestra parte, seguiremos trabajando en ello y os iremos contando nuestros avances, ya sea a través de este canal u otros que tenemos disponibles.

¡Saludos a tod@s y buena semana!


Javier Moralo, Data & AI Creative de datahack


El proyecto empresarial de DATAHACK CONSULTING SL., denominado “DESARROLLO DE INTELIGENCIA ARTIFICIAL EN ROBOTS APLICADOS AL TRATAMIENTO DEL ALZHEIMER Y LA DEMENCIA” y número de expediente 00104725 / SNEO-20171211 ha sido subvencionado por el CENTRO PARA EL DESARROLLO TECNOLÓGICO INDUSTRIAL (CDTI)

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

La convergencia entre la neurología y las ciencias de la computación es una tendencia innegable. Cada vez aprendemos más sobre nuestro cerebro gracias a los avances en Machine Learning y viceversa: descubrimos cómo construir y mejorar nuestros modelos informáticos en base a los descubrimientos de la neurociencia. Es por ello que, si queremos trabajar con deep learning y redes neuronales, debemos tener, al menos, unas nociones básicas de neurociencia.

La base de todo: la neurona

Si nuestro cerebro fuera una especie de escenario, la estrella indiscutible sería la neurona. El tamaño de una neurona es variable, siempre en el orden de la millonésima de metro (µm), pero no pensemos que todas las neuronas son iguales:

Introducción a neurociencia - primer paso para desarrollar Neural Networks

En estos fantásticos bocetos de tejido neuronal hechos por Don Santiago Ramón y Cajal, se aprecian distintos tipos de neuronas:

En tiempos de Ramón y Cajal, dos de las principales hipótesis que pugnaban por proponer una explicación satisfactoria a la incógnita de la estructura del cerebro eran:

Paradójicamente, los avances logrados por el propio Golgi en las técnicas de tintado de tejido nervioso permitieron a Ramón y Cajal no solo hacer los magníficos grabados mostrados más arriba, sino demostrar que la teoría neuronal era la que explicaba la realidad del cerebro. Ambos obtuvieron el premio Nobel de Medicina en 1906 por sus avances en el conocimiento del cerebro.

Doctrina neuronal

Los pilares fundamentales de la teoría encabezada por Ramón y Cajal son los siguientes:

En este esquema (obtenido del curso de neurociencia de la Universidad de Washington), se puede apreciar cual es el aspecto de una neurona que responda al esquema ideal planteado por la doctrina neuronal:

Introducción a neurociencia - primer paso para desarrollar Neural Networks

En la parte izquierda se muestra como la entrada de la neurona procede de los axones de otras neuronas. Estas “entradas” se traducen en algún tipo de actividad en la neurona destino que da lugar a una reacción conocida como EPSP (Excitatory Post-Synaptic Potential). En la realidad, las entradas proceden de muchas neuronas diferentes y participarán en la respuesta de la célula mediante la suma de todos los EPSP provocados. De este modo si como resultado de esa suma, se alcanza un determinado umbral o threshold, se generará una salida en la forma de un potencial de acción (action potential) o spike.

En resumen,

Los modelos de redes neuronales se basan en estos principios para funcionar.

En el próximo artículo hablaremos de la sinapsis y en el siguiente profundizaremos en la doctrina sináptica. Si os ha gustado y queréis seguir profundizando... ¡hacédnoslo saber!


Alejandro Arranz, Data Engineer en datahack

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Hoy en día, el término “Inteligencia Artificial” es parte de nuestro día a día, tanto a nivel personal como a nivel empresarial, debido al progreso tan fulgurante que ha tenido en los últimos y que ha hecho que pase del campo de la investigación a las primeras etapas de la adopción empresarial.  Esto es, en gran parte, porque compañías como Google, Baidu, Microsoft, Facebook e IBM (entre otras), han creado muchos productos basados en ella. Y están haciendo ver que la Inteligencia Artificial no es solo algo rentable, sino una gran apuesta que va a influir futuro de la humanidad no solo a nivel económico, sino también a nivel humano y social..

En el artículo anterior se dieron algunas pinceladas sobre algunos de los conceptos relacionados con el mundo del big data que vamos a describir. En este artículo, se pretende dar una definición concisa de lo que se conoce como Inteligencia Artificial (IA) y de otros dos conceptos que están muy relacionados con ella, el Machine Learning (ML) y el Deep Learning (DL).

La inteligencia artificial

Como ya comenté en un conceptos relacionados con el mundo del big data, la Inteligencia Artificial (IA), fue definida por John McCarthy en 1956, como “Conjunto de técnicas que sirven para dotar de inteligencia a una máquina”, es decir,  un conjunto de programas informáticos, basados en algoritmos, que imitan el comportamiento humano.

Frente a este concepto, mucha gente entiende lo que se conoce como Inteligencia Artificial General (en inglés, AGI), es decir, máquinas que son igual o más inteligentes que los humanos, capaces de hacer una gran variedad de tareas y emular cualidades humanas como la conciencia, la sensibilidad y el autoconocimiento. La realidad es que actualmente se han hecho pocos avances en este campo. Ejemplos similares a HAL 9000 o C-3PO, quedan actualmente en el terreno de la ciencia ficción.

Donde sí se han hecho grandes avances es en lo que se conoce como Inteligencia Artificial Estricta (narrow AI), que se centra en realización de funciones específicas, normalmente aspectos cognitivos del ser humano, como la realización de predicciones y recomendaciones, el reconocimiento de imágenes, procesado de lenguaje natural, tareas de traducción, etc. Para la realización de estás tareas se usan modelos de IA basados en algoritmos de Machine Learnig y Deep Learning.

Inteligencia Artificial, machine learning y deep learning

Figura I.- Organización del ML y DL dentro de la IA

Machine Learning

Así, el Machine Learning es una subcategoría de la inteligencia artificial que utiliza métodos estadísticos para realizar aquellas funciones cognitivas más sencillas, como por ejemplo: predicción de fraude, clasificación de imágenes o sistemas de recomendación financiera, entre otros.

Inteligencia Artificial, machine learning y deep learning

Figura II.- Ejemplo de la arquitectura de una red neuronal

Deep Learning

Por otro lado el Deep Learning, es una subcategoría dentro del machine learning que imita el modo de funcionamiento del cerebro humano, organizando sus elementos en capas y formando redes neuronales. Estás redes neuronales interpretan mejor los datos desestructurados y mejoran su eficiencia en función de la cantidad de datos. No ocurre lo mismo con los algoritmos de machine Learning, que tienen un punto de saturación, es decir, que llegado un momento, aunque se les proporcionen más datos, no mejoran su eficiencia. Por esto, el deep learning se utiliza para solventar los problemas más complicados y que requieren más datos, como detección de objetos, procesado natural del lenguaje (PNL), análisis de sentimientos o transformación de voz humana en texto (Speech to Text), entre otras aplicaciones.

Inteligencia Artificial, machine learning y deep learning

Figura III.- Eficiencia del aprendizaje de los algoritmos de ML y DL, respecto a la cantidad de datos

Y hasta aquí este artículo acerca de la definición y aclaración del concepto de Inteligencia Artificial, Machine Learning y Deep Learning. Seguiremos publicando artículos relacionados con este tema, que va ser más que determinante en el futuro. Muchas gracias a tod@s y nos vemos en la siguiente! 🙂

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Cuando no sabes mucho sobre el mundillo del Big Data & Analytics, puede amedrentar un poco leer cualquier cosa sobre el tema, aunque solo sea por las palabras que se utilizan. Aquí tienes una guía rápida de las más utilizadas y su significado.

Big Data:

Término que hace referencia a la gran cantidad de datos variados y no siempre estructurados que se generan con cada vez más rapidez y que pueden generar valor a nuestra empresa. Para recopilar, limpiar, procesar, analizar y visualizar todos esos datos necesitamos conocer y manejar un largo conjunto de herramientas.  Aprende a hacerlo con nuestro master experto Big Data Analytics.

¿Quieres saber más sobre la definición de Big Data? Te recomiendo que te pases por el artículo “Las cinco v’s del Big Data”.

Inteligencia de Negocio (Business Intelligence o BI):

Uso de aplicaciones e infraestructuras de Big Data para acceder y analizar la información de forma que podamos tomar mejores y más óptimas decisiones que aumenten nuestro rendimiento.

Internet de las cosas (IoT):

Se refiere a los objetos cotidianos que están conectados permanente entre si y a repositorios de datos que almacenan la información que recogen de su entorno.

Descubre más sobre la relación entre Big Data, IoT e Inteligencia Artificial en este artículo.

Inteligencia Artificial (Artificial Intelligence):

Es el área de la computación que tiene por objeto la creación de máquinas inteligentes que se comporten y reaccionen de forma similar a los humanos.

Algoritmo

Especificación matemática categórica que resuelve un problema complejo en base a un conjunto de datos inicial. Consiste en múltiples pasos que aplican en orden una serie de operaciones.

Machine Learning:

Es un campo dentro de la Inteligencia Artificial que tiene por objetivo que las máquinas aprendan a resolver una determinada tarea partir de la experiencia, es decir, los datos. De este modo se facilita que una máquina llegue a la solución de un problema sin que un humano tenga que programar explicitamente qué pasos tiene que seguir para ello.

¿Quieres saber más sobre la definición de Machine Learning? Te recomiendo que te pases por el artículo “Machine Learning. Una introducción

Deep Learning:

Es a su vez una disciplina del Machine Learning que se caracteriza no solo por ser capaz de aprender a solucionar una determinada tarea a partir de los datos, sino porque además aprende a representar los datos de para llegar a esa solución. En contraste con el Machine Learning más elemental, que requiere de que los datos estén muy bien estructurados para funcionar correctamente. Esta característica permite al Deep Learning atacar a problemas hasta ahora impensables de solucionar para una máquina (visión artificial, reconocimiento de voz...)

Datalake:

Repositorio de gran cantidad de datos, generalmente en bruto y sin estructurar.

Datawarehouse:

Repositorio de gran cantidad de datos, ordenados, limpiados e integrados que están listos para su análisis.

Minería de datos (data mining):

Búsqueda de patrones en grandes sets de datos para refinarlos, clasificarlos, hacerlos comprensibles y poderlos explotar.

Computación en la nube (Cloud Computing)

A diferencia de la computación tradicional on premise (es decir, con las máquinas y demás aparatos físicos cableados y montados in situ), el Cloud computing ofrece al usuario la posibilidad de usar recursos de computación desentendiéndose de mantenimiento hardware y pagando por lo que usa. Los distintos proveedores de Cloud disponen además de un amplio ecosistema para facilitar al usuario la gestión y configuración de la infraestructura deseada en el Cloud.

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En nuestro afán por hacer llegar a todos una formación en Big Data y Analytics de calidad, datahack ha llegado a Sevilla y se está dando a conocer con su segundo evento en dos semanas. Una vez presentadas las credenciales, era momento de meterse un poco más en harina y acercar al potencial alumno aquello que se ofrece en el master. En esta ocasión se puso el foco en la parte relativa a Machine Learning. La intención no era dar una charla magistral, ni que la gente saliera impresionada, sino transmitir: acercar un concepto que en ocasiones parece difuso, desgranarlo y mostrar algunos de sus vericuetos a las personas que deseen instruirse en esta disciplina.

Una de las primeras ideas que se pretendía afianzar es que el Machine learning es un campo que lleva muchos años presente. Es quizá en tiempos más recientes (en los que la capacidad de procesamiento ha mejorado drásticamente y la cantidad de datos que se almacenan es crece exponencialmente) cuando ha recibido el reconocimiento que merece. Por tanto, ya no es un “hype”, sino que está aquí para quedarse.

Problemas que podemos abordar con el Machine Learning

Después de asentar el punto de partida a través de algunas definiciones, se pasó a desgranar algunos de los principales tipos de problemas que se pueden abordar a través del Machine Learning, como son el aprendizaje supervisado (incluyendo tareas de clasificación y de regresión) y el aprendizaje no supervisado.

Siguiendo el hilo de proporcionar un acercamiento real a la materia, se habló largo y tendido de los problemas que pueden aparecer (y que aparecerán) al ponerse manos a la obra. Por ejemplo, los relativos a los datos (distintos tipos de sesgos, representatividad, la calidad y limpieza de los mismos…) y por supuesto de los algoritmos (overfitting, underfitting y la regularización como posible solución al primero de ellos). Era importante aclarar la naturaleza iterativa del Machine Learning, el hecho de que no hay una checklist fácilmente aplicable que permita resolver todos los problemas que salgan al paso, con lo que es muy importante armarse de paciencia y no desesperar si los resultados tardan en llegar.

Qué hacer con los datos y los modelos entrenados

A medida que transcurría la representación las personas que asistieron se mostraron cada vez más participativas haciendo preguntas muy interesantes, algunas de las cuales permitían hilvanar un apartado con otro dando sensación de fluidez. Esto se hizo especialmente palpable en la parte final, que abordaba (¡por fin!) qué hacer con los datos y con los modelos entrenados con estos: aquí se expuso cómo dividir el conjunto de datos y cómo utilizar esos datos para entrenar distintos modelos, cómo apoyarse en los datos reservados para la validación para elegir el modelo campeón y muy especialmente destacar la importancia de los datos de test.

Esta porción es especialmente delicada ya que debe permanecer aislada de nosotros y de nuestros modelos (para evitar filtraciones), hasta que se haya escogido un modelo campeón y solo entonces será cuando dicho modelo se enfrente a los datos de test. El resultado revelará si el modelo está listo para pasar ser productivo o si, por lo contrario, necesitamos trabajar más a fondo para conseguir mejorarlo.

Más allá de la charla, cabe destacar a los asistentes que fueron: durante la charla demostraron mucho interés e hicieron preguntas sumamente interesantes y antes y después de las mismas, fue un placer hablar con ellos, de sus inquietudes y de sus intereses. Algunos incluso hicieron una fantástica crónica del evento (la foto, por cierto, la tomó él). Esperamos verles de nuevo (¡y que traigan más gente incluso!) en los siguientes jueves del Big Data. ¡Id bloqueando la agenda para la siguiente, sobre Blockchain y Sidechain!


Alejandro Arranz, Data Engineer en datahack

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down