Tématica

Inteligencia Artificial

Tiempo de lectura

7 minutos

Claves de contenido del artículo

Machine Learning

Deep Learning

Foundation Models


Estamos ya en el año 2023, y como podemos constatar en cualquier medio de comunicación, la inteligencia artificial vuelve a estar de moda. ¿Vuelve? Sí, porque en realidad este término se acuñó en el año 1956, y en los casi 70 años de historia que tiene ya esta rama de la tecnología, la misma ha evolucionado a una escala que difícilmente podría haberse pronosticado.

Desde sus inicios, la inteligencia artificial ha perseguido el objetivo de crear máquinas con una inteligencia similar o superior a la nuestra, con el fin de poder delegar trabajo cognitivo en ellas, o como apoyo para poder aumentar nuestra propia capacidad de pensamiento. Pero este objetivo es más un sueño que una meta bien definida porque, ¿qué es en realidad la inteligencia? ¿Cómo la definimos? Y, sobre todo, ¿cómo funcionan nuestros propios cerebros, esos que queremos imitar mediante tecnología? No lo sabemos con precisión.

Álvaro Barbero Jiménez

Chief Data Scientist del Instituto de Ingeniería del Conocimiento (IIC)

Autor del artículo

Es por esta indefinición que el foco de la IA y los métodos para abordarla han ido cambiando a lo largo de estas 7 décadas. En sus inicios, muchos investigadores en IA centraban sus esfuerzos en crear sistemas que pudieran replicar la capacidad de los humanos en tareas intelectualmente complejas: jugar al ajedrez, demostrar teoremas, realizar un diagnóstico médico en base las evidencias… se trataba de una forma concreta de implementar la IA, que hoy conocemos como sistemas expertos, y que tratan de realizar razonamientos empleando una base de datos de conocimientos y reglas, así como un sistema de inferencia basado en la lógica formal. Un ejemplo habitual de este tipo de sistemas sería el que dispone de la siguiente información:

hombre(x) ->mortal(x) (si es un hombre, entonces también es mortal)

hombre(Sócrates)= True (Sócrates es un hombre)

De lo que el sistema puede deducir mediante implicación lógica que mortal(Sócrates)=True (Sócrates es mortal). Esta clase de sistemas llegaron a utilizarse con éxito en campos como el diagnóstico de enfermedades infecciosas en la sangre. No obstante, en general este tipo de sistemas de IA resultaban ser difíciles de construir, dado que es necesario contar con expertos en la materia con los que colaborar para formalizar su conocimiento y métodos de trabajo en reglas formales. Así mismo, su mantenimiento y actualización a nuevas situaciones implicaba revisar su juego de reglas, una tarea que podía llegar a ser muy costosa en sistemas de gran tamaño.

Por otra parte, en torno a la misma época en la que se descubrían las limitaciones de los sistemas expertos, se llegó a una conclusión inesperada en cuanto al funcionamiento de la inteligencia: que las tareas que a los humanos nos resultan cognitivamente complejas, como los razonamientos matemáticos o la lógica formal, ¡son en realidad muy sencillas de implementar en un computador! Especialmente cuando se comparan contra el desafío de desarrollar una máquina con las capacidades sensoriales y motoras que puede tener cualquier niño con un desarrollo normal. Este hecho se recoge en la famosa paradoja de Moravec, y ha demostrado ser uno de los mayores obstáculos en del desarrollo de la IA: que las habilidades que a nosotros nos resultan intuitivas y naturales son las más difíciles de replicar de manera artificial.

Machine Learning

Una alternativa a los sistemas expertos de mayor aplicabilidad práctica y que se ha desarrollado con mucha solidez desde la década de los 80 es el aprendizaje automático o machine learning. En este tipo de IAs la clave radica en recopilar el conocimiento del experto no como una serie de reglas formales, sino como ejemplos que demuestren su forma de actuar. De este modo, podemos compilar una base de datos formada por casos médicos, en la que para cada caso recogemos la información utilizada el experto médico para su examen (constantes, analíticas, etc…), así como su diagnóstico, y el sistema de IA podrá aprender a imitar su forma de proceder. Dentro de este tipo de IA caben toda una variedad de algoritmos que afrontan este problema de aprendizaje empleando diferentes aproximaciones estadísticas: vecinos próximos, árboles de decisión, métodos de ensemble, máquinas de vectores de soporte, y muchos otros más.

Deep Learning

Uno de los métodos que ha destacado especialmente durante la última década han sido los basados en redes neuronales artificiales, hoy día también conocidos como Deep Learning. Aunque en realidad este tipo de IAs llevan en desarrollo desde incluso antes de que se acuñara el término “inteligencia artificial”, no fue hasta 2010 y años posteriores cuando se descubrieron las estrategias clave para poder construir sistemas de esta clase a gran escala: de ahí el calificativo “Deep”.

En esencia, las redes neuronales son un subtipo del aprendizaje automático, en el que una serie de neuronas artificiales imitan superficialmente el comportamiento de una neurona real, y se encargan de realizar la tarea del aprendizaje en base a los datos. Su principal ventaja frente a otros modelos de aprendizaje automático es su flexibilidad, ya que pueden construirse redes desde unas decenas de neuronas hasta miles de millones, escalando así su capacidad para aprender de bases de datos de tamaño masivo.

Además, esta flexibilidad del Deep Learning ha permitido a los investigadores en IA desarrollar “neuronas” especializadas en el tratamiento de datos no estructurados: imágenes, vídeos, textos, audio, etc… si bien esta clase de redes neuronales artificiales cada vez están más alejadas de la biología real, han demostrado ser tremendamente prácticas para abordar problemas muy complejos como son la detección de objetos de interés en imágenes (ej: personas, coches, …), la traducción automática entre idiomas, o la síntesis de voz. Con este hito se ha logrado abordar de manera muy efectiva la clase de desafíos sobre los que la paradoja de Moravec nos alertaba: aquellos que nos resultan intuitivos a nosotros, pero de difícil implementación en una máquina.

Foundation Models

¿Y qué podemos decir de estos últimos años? Sin duda, el avance más significativo en IA ha venido de la mano de los modelos base o foundation models. Se trata de un paso más en las redes neuronales artificiales, en el que redes de inmenso tamaño aprenden a modelar la dinámica de un proceso complejo mediante el análisis de bases de datos masivas.

Por ejemplo, un modelo base del lenguaje español es aquel que aprende cómo se estructura el idioma español y cómo suele usarse, mediante el procesado de gigabytes de textos escritos en este idioma. Este modelo no persigue un objetivo concreto, más allá de asimilar la estructura del lenguaje. Pero precisamente por eso puede alimentarse de cualquier texto escrito en el idioma, sin necesidad de que este haya sido preparado y validado por un experto, abriendo así la puerta a que la red neuronal pueda aprender de… básicamente todo el material que podamos suministrarle de Internet.

La pregunta que surge entonces es, ¿y para qué sirve un modelo así, si no tiene un objetivo práctico concreto? Pues porque como indica su nombre, sirven como base para crear modelos que apliquen a tareas concretas.

Por ejemplo, un modelo base del lenguaje español puede reajustarse a la tarea de analizar las emociones expresadas en un tweet, usando un conjunto de datos de tamaño medio con ejemplos de cómo hacer esta tarea. La ventaja de esta aproximación respecto de crear una red neuronal nueva que aprenda directamente de los datos es que el modelo base adaptado tendrá una efectividad mucho mayor, y requerirá de un juego de datos más pequeño para aprender a realizar su tarea. El motivo es que el modelo base ya conoce cómo se estructura el lenguaje español, y ahora solo le queda aprender cómo extraer la emoción de un texto en español.

Puede que los modelos base nos suenen a algo extraño, pero lo cierto es que están detrás de las IAs más famosas en la actualidad: GPT-3, ChatGPT, GPT-4, DALL-E 2, Stable Diffusion, … todas ellas utilizan de alguna manera u otra este concepto, y nos demuestran cómo aprender de fuentes de datos a tamaño Internet nos lleva a un tipo de Inteligencia Artificial muy superior a los vistos hasta ahora.

Deep Reinforcement Learning

Con todas estas IAs a la carrera, demostrando resultados cada vez más impresionantes, la pregunta que cabe hacerse es: ¿qué podemos esperar a partir de ahora? Internet es una fuente masiva de información, pero al mismo tiempo es limitada cuando se compara con la percepción que los humanos tenemos del mundo. Los estudios sobre modelos base han demostrado que a mayor número de datos podemos observar, mayor es la capacidad del sistema de IA resultante. Por tanto, el siguiente paso natural sería permitir que estos sistemas puedan aprender también de observaciones que hagan del mundo real, y más aún, que consigan a través de su propia experiencia. Este es el objetivo del aprendizaje por refuerzo profundo o deep reinforcement learning, el cual persigue que una red neuronal artificial pueda experimentar con su entorno y mejorar en una tarea a base de observar los resultados de sus experimentos.

Un ejemplo de este tipo de Inteligencia Artificial es AlphaZero, la cual consiguió alcanzar un rendimiento sobrehumano en el juego de tablero Go en tan solo 24 horas de aprendizaje, u OpenAI Five, que logró derrotar al equipo campeón del mundo en el e-sport DOTA2. Y fuera del mundo de los juegos, se han aplicado incluso para mejorar el control de un reactor experimental de fusión nuclear. ¿Será este el siguiente paso en la evolución de la IA? Aunque hoy día son sistemas muy costosos y complejos de aplicar en proyectos prácticos, alguna de las ideas que subyacen a su funcionamiento ya han sido incorporadas en ChatGPT y GPT-4, por lo que la tendencia parece clara.

Conoce más sobre IA en nuestro Máster Executive Inteligencia Artificial y Big Data

100% online

Más información

En los últimos tiempos se ha producido una mejora considerable en la capacidad de procesamiento de datos, lo que supone un crecimiento exponencial en la cantidad de datos procesados. Por este motivo, el desarrollo de las herramientas de Big Data para analizar, procesar y almacenar los datos es un aspecto clave en la evolución de esta disciplina.

La evolución del Big Data gira en torno a tres conceptos fundamentales: Inteligencia Artificial (IA), Machine Learning y Deep Learning. La Inteligencia Artificial es un concepto englobador que se define como un conjunto de programas informáticos que imitan el comportamiento humano. Por su parte, Machine Learning y Deep Learning son modelos de IA basados en algoritmos que permiten realizar funciones específicas como reconocimiento de imágenes, elaboración de predicciones o procesado de lenguaje. Para llevar a cabo estas funciones, existen distintas herramientas de Big Data con características diferentes y concretas. A continuación, repasamos las más importantes.

Las 3 herramientas de Big Data más utilizadas

1.     Spark

Es la herramienta de Big Data más potente para el procesamiento de grandes volúmenes de información.  Así pues, no es de extrañar que sea el sistema de procesamiento de datos más utilizado por las empresas y organizaciones más importantes del mundo.

Spark es un motor de código abierto para el procesamiento de datos gestionado por la Apache Software Foundation. Entre sus principales ventajas destaca su organización en clústeres, que permite realizar operaciones sobre un gran volumen de datos. El sistema trabaja en memoria para conseguir una mayor velocidad de procesamiento.

Además, la plataforma Spark integra distintas soluciones para potenciar su rendimiento:

2.     Hadoop

Esta herramienta de Big Data surge cuando Google se encuentra con la necesidad de procesar los datos a alta velocidad en un momento en el que el volumen de información disponible en la web experimenta un crecimiento exponencial. Para conseguir este objetivo, la estrategia del gigante online pasa por la creación de un sistema de archivos distribuidos o nodos. Así nace Hadoop, un sistema de código abierto impulsado por las nuevas exigencias del entorno digital. Sus principales ventajas son las siguientes:

3.     Power BI

Power BI es una solución de inteligencia empresarial desarrollada por Microsoft. Permite recopilar información de diferentes fuentes en tiempo real y crear paneles, gráficos e informes compartidos por un gran número de usuarios. Se trata, por tanto, de una herramienta de Bussines Inteligente (BI) orientada a la monitorización de los datos relativos a una empresa u organización para su análisis y valoración en la toma de decisiones.

Entre sus funcionalidades destacan, además del almacenamiento masivo de datos, las capacidades de preparación y descubrimiento de datos, así como la creación de paneles interactivos completamente personalizables en función de las necesidades de cada usuario. Power BI integra distintas herramientas para la creación de informes como una aplicación de escritorio, una nube o un mercado de recursos visuales para hacer más atractivos los documentos. Además, cuenta con apps para iOS y Android y permite una integración completa con los servicios Office 365.

Aprende a utilizar las herramientas de Big Data más demandadas

En Datahack contamos con un profesorado experto altamente cualificado en distintas áreas de Big Data y Analytics. Si estás buscando una formación práctica y exigente, no dudes en contactar con nosotros, somos la escuela que buscas.

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.

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.

Después de haber asimilado los tres artículos sobre la historia de lo que hoy llamamos Deep Learning (etapas, pioneros e hitos), lo normal es preguntarse qué ha ocurrido para que una tecnología, que en 1950 ya daba sus primeros pasos, se haya convertido hoy en una tecnología disruptiva. Como suele ocurrir en estos temas, no hay un único factor sino un cúmulo de ellos.

Tamaño de los dataset

Desde el punto de vista de la investigación, se intentó desde un primer momento orientar esta nueva ola hacia el aprendizaje no supervisado, con el objetivo de poder sacar conclusiones a partir de un conjunto reducido de datos. Pero la industria demandaba soluciones a problemas que se planteaban desde el punto de vista del aprendizaje supervisado, con la consiguiente necesidad de datos. Muchos datos.

Es interesante ver cómo los algoritmos de aprendizaje, que hoy alcanzan un performance similar al ser humano en ciertas tareas, son versiones ligeramente modificadas de aquellos que en la década de los 80 se las veían y se las deseaban para resolver problemas “de juguete”. Si que es cierto que algunas de esas modificaciones son las que hoy permiten entrenar arquitecturas más complejas. Pero el factor más diferencial es que se dispone del combustible que necesitan para funcionar: datos.

Dado que vivimos en la era digital y que cada vez estamos más y más interconectados, los datos que generamos se seguirán almacenando y limpiando. Esto dará lugar a datasets cada vez más y más grandes.

Deep Learning, 3ª ola de redes neuronales claves de éxito, tareas pendientes

Echemos la vista atrás.

En resumen, se percibe cómo, a medida que pasa el tiempo, el tamaño de los dataset se va incrementando más y más. Pero además, la complejidad de sus ejemplos también lo hace. Por ejemplo, el paso de las imágenes en escala de grises y 28x28 del MNIST a imágenes más pesadas en RGB de, por ejemplo, ImageNet.

Tamaño de los modelos

Si recopilamos lo aprendido en la ola del Conexionismo, uno de sus puntales era que una neurona, o un grupo de neuronas por sí solas, no iban a conseguir gran cosa. Para conseguir inteligencia, se necesitan neuronas y además interconexiones entre estas.

Partiendo de esa premisa, realmente cada una de nuestras neuronas no tienen un número exorbitante de conexiones (104 aproximadamente). Y, si de nuevo echamos la vista atrás, vemos cómo este número se ha ido incrementando hasta convertirse hoy en día en prácticamente una decisión de diseño:

Aunque, más que el número de conexiones por neurona, la parte que estaba (y está) algo más coja es el número de neuronas. Y es que, hasta el año 2000, las arquitecturas más disruptivas estaban compuestas de menos neuronas que una sanguijuela... (Visto de este modo, tampoco sorprende que no dieran buenos resultados cuando se trataba de resolver problemas complejos a través de ellas). Ahora mismo, las arquitecturas más complejas rondan las 107 neuronas (lo que sería el equivalente a una rana).

Conclusión y asignaturas pendientes

Si todo sigue su curso, entre la disponibilidad de máquinas cada vez más potentes y datasets más extensos, se espera que, alrededor de 2050, las redes neuronales ya tengan una cantidad de neuronas similar a las de un ser humano.

A pesar de todo esto, la gran asignatura pendiente del Deep Learning sigue siendo su capacidad para trabajar y generalizar adecuadamente con datasets pequeños y datasets sin etiquetar. Imaginad si se pudiera sacar provecho de todos los datos que existen sin etiquetar...


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.

Artículos anteriores de Historia del Deep Learning:

El cerebro biológico como guía

Hoy en día, la neurociencia todavía se sigue viendo como una fuente de inspiración para los investigadores que vuelcan sus esfuerzos en el Deep Learning, pero está muy lejos de ser el campo predominante de esta disciplina. La razón es simple: no tenemos suficiente información sobre el cerebro biológico para usarlo como guía, no podemos monitorizar simultáneamente la actividad de miles (tirando por bajo) de neuronas interconectadas y aún estamos lejos de entender incluso las partes más elementales del cerebro.

A raíz del experimento por el que un grupo de hurones aprendieron a ver utilizando la parte de su cerebro responsable en principio de la función auditiva, mediante un recableado de sus cerebros para enviar señales visuales a ese área se abrió la posibilidad de que el cerebro de los mamíferos realmente utilizara un único algoritmo para resolver las distintas tareas que este órgano se encarga de abordar, esto motivó que las comunidades que investigaban campos como procesamiento de lenguaje natural, reconocimiento de voz, visión computacional…y que hasta entonces estaban más disgregadas, se aproximaran entre sí para abordar problemas en común y trabajar en conjunto.

Con todo, es bastante confuso el mensaje que llega sobre todo de los medios de comunicación en los que cuales se proclama que el Deep Learning trata de simular el cerebro, cuando esto no es así. Sería mucho más razonable decir que sus principales fuentes de inspiración son el álgebra lineal, teoría de la información, probabilidad y optimización numérica.

Conexionismo en redes neuronales

Llegamos entonces a la segunda gran ola de las redes neuronales: el Conexionismo. Surgió en los años 80 en el ámbito de la ciencia cognitiva, que intenta entender la mente a través de múltiples niveles de análisis. En aquel momento, los investigadores de esta disciplina estaban volcados en el estudio de modelos de razonamiento simbólico. El problema de estos era la dificultad a la hora de explicar cómo el cerebro podría implementarlos mediante neuronas. Los conexionistas se centraron justamente en aquellos modelos cognitivos que sí pudieran ser implementados neuronalmente.

La idea en torno a la cual giraba el Conexionismo es que muchas unidades computacionales simples pueden alcanzar un comportamiento inteligente cuando se interconectan entre sí. Esto se aplica tanto a neuronas biológicas en los sistemas nerviosos como a las hidden units de los modelos computacionales. Hubo, además, otros conceptos que surgieron en este periodo y hoy son parte fundamental del Deep Learning

El invierno de las redes neuronales

A mediados de los años 90 los negocios y las inversiones basados en redes neuronales y otras tecnologías relacionadas con la Inteligencia Artificial empezaron a hacer promesas irrealizables y a inflar la burbuja para buscar capital. Por supuesto los resultados no acompañaron las poco realistas expectativas. Todo ello, junto con los avances conseguidos en otros campos del Machine Learning, condenaron a las redes neuronales a un nuevo invierno que duraría hasta el 2007.

No obstante este nuevo invierno no fue total, ya que durante el mismo la investigación en el campo de las redes neuronales siguió viva centralizada en el CIFAR (Canadian Institute For Advanced Research) en una iniciativa que aunó grupos liderados por Geoffrey Hinton de la Universidad de Toronto, Yoshua Bengio de la Universidad de Montreal y Yann LeCun de la Universidad de Nueva York.

Fue precisamente Geoffrey Hinton y su equipo quienes, en 2006, consiguieron entrenar de forma eficiente un tipo de redes denominado deep belief networks mediante la estrategia conocida como greedy layer-wise pretraining. Esta, básicamente, tenía como objetivo inicializar de la mejor manera posible los pesos de la red buscando así facilitar la convergencia (llegar a una solución), especialmente en los casos en los que aquella estaba compuesta por un número elevado de capas o, lo que es lo mismo, era especialmente profunda. Rápidamente, el resto de los grupos aplicaron la misma estrategia a otros tipos de redes consiguiendo una mejora notable en la capacidad de generalización de los modelos resultantes sobre el conjunto de test.

Panorama actual

Es esta tercera ola la que aún está vigente hoy en día. Aunque originalmente empezó enfocándose en aprendizaje no supervisado tratando de explotar la capacidad de las arquitecturas profundas (con una mayor número de capas) para generalizar a partir de pequeños datasets, el interés de la Industria en el aprendizaje supervisado ha hecho que el rumbo haya variado drásticamente desde los inicios de esta última etapa hasta nuestros días.


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.

Artículo anterior: Historia del Deep Learning: Etapas

En 1945 Bertrand Russell recibió en su despacho de la Universidad de Cambridge una carta, en la que el remitente de la misma exponía distintos problemas y objeciones que había observado en el primer volumen del Principia Mathematica de aquel. Hasta aquí todo normal, de no ser porque el remitente era un chaval de doce años: Walter Pitts.

A los veinte años, Pitts trabajó junto a un más experimentado Warren McCulloch y de esta unión surgió una contribución seminal a la teoría de redes neuronales, la teoría de autómatas, la teoría de computación y la Cibernética. Las bases de esta, están condensadas principalmente en el paper McCulloch&Pitts, 1943

Primera ola del Deep Learning

Cuando se analiza el pasado, es bueno dar varios pasos atrás para hacerlo con la perspectiva adecuada, evitando caer en el error de no valorarlo como se merece. Durante la primera ola de lo que hoy llamamos Deep Learning (la Cibernética), se propusieron diversos modelos lineales motivados desde una perspectiva neurocientífica. Estaban diseñados para tomar un conjunto de n valores de entrada x1, x2, x3…xn y asociarlos con una salida. Para ello, tenían que aprender un conjunto de pesos w1, w2, w3…wn con los que poder calcular la salida del modelo: f(x, w) = x1∙ w1 + x2 ∙w2 + x3∙w3 +… xn∙wn

McCulloch-Pitts

La neurona propuesta por McCulloch-Pitts era uno de aquellos modelos, podía reconocer dos categorías diferentes, dependiendo que f(x, w) fuera positivo o negativo (o que estuviera por encima o por debajo de un determinado umbral). Entre sus limitaciones contaban el hecho de que los pesos no sean aprendidos, sino que tengan que ser configurados manualmente al igual que el umbral de decisión o threshold.

Rosenblatt

Pero si hablamos de “aprender”, tenemos que (ad)mirar a Frank Rosenblatt, padre del Perceptrón, modelo ya capaz de aprender los pesos (w) a partir de ejemplos de entrenamiento (con sus features de entrada y su salida). De esta manera, el Perceptrón podía resolver un problema de clasificación binario. Siempre y cuando, recordemos, exista una línea en el plano del dominio del problema que lo resuelva, de lo contrario el algoritmo no terminaría nunca.

ADALINE

Y de aquí saltamos al ADAptive LINEar element: ADALINE (Widrow and Hoff, 1960). En esta ocasión, se omite el uso de una función de activación y el modelo devuelve directamente un número real a partir del cual se realiza el ajuste de los pesos. De este modo, se consigue el entrenamiento que aprenda a predecir números reales (no solo clasificación binaria como habíamos visto hasta ahora). Widrow y Hoff (profesor y alumno) utilizaron para el entrenamiento de su ADALINE una ligera variación del Stochastic Gradient Descent (que seguro que ya os suena de algoJ)

Limitaciones de los modelos lineales

A pesar de todo esto, las limitaciones de los modelos lineales eran muchas. La más sonada de ellas era imposibilidad de representar mediante ellos la función lógica XOR ya que, como vemos, no es separable linealmente, por lo que se sale del ámbito de los problemas que los modelos hasta ahora citados son capaces de resolver

historia del deep learning 1

Todo esto ocasionó una corriente de rechazo hacia el aprendizaje de inspiración biológica en lo que constituiría el primer invierno de las redes neuronales.

Próximo artículo: Historia del Deep Learning: Hitos


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