Imagen destacada de Deep Learning

¿Qué es Deep Learning?

David Baños Abril

Vamos a dedicar este artículo al Deep Learning y las Redes Neuronales Artificiales (ANN en inglés). Aquí encontraréis una breve introducción con la que familiarizaros con los conceptos básicos de esta tecnología.

¿De donde viene el Deep Learning?

Es probable que hayas escuchado alguna vez que el Deep Learning o Aprendizaje Profundo es una rama de la llamada Inteligencia Artificial, una que, a diferencia de otro tipo de herramientas, simula el cerebro humano. Pero esto realmente no es del todo cierto.

Origen

No podemos negar que en los albores de esta tecnología si había una inspiración en el funcionamiento del sistema nervioso; no por nada antes de ser Deep Learning se le dio el nombre de redes «neuronales» artificiales. Pero también fue en ese mismo comienzo que se sentaron las bases de su futuro distanciamiento de la neurociencia.

Se suele considerar que el nacimiento de las redes neuronales tiene lugar en los años 40 del siglo pasado de la mano de un lógico y un neurocientífico: Walter Pitts y Warren McCulloch. Su modelo de «neurona artificial», al que dedicamos un artículo propio en este portal, sigue siendo la base del paradigma del actual Deep Learning.

Fotografía de los investigadores Warren McCulloch y Walter Pitts

Walter Pitts (a la izquierda) y Warren McCulloch (derecha) 

El invierno de la IA

Muchos cibernéticos y científicos de la computación creyeron ver en estas redes neuronales artificiales el primer paso hacia una verdadera inteligencia artificial, la mente de metal prometida. Ni que decir tiene que esto nunca llegó, y lo que vino fue mas bien décadas estériles en las que se llegó a creer que el modelo neuronal era un camino sin salida. A esto se lo denominó el «invierno de la IA».

EL Deep Learning moderno

Y así fue realmente, al menos hasta los años 90. Hay que tener en cuenta que entre el descubrimiento de un determinado mecanismo y su aplicación en un modelo de uso práctico pueden pasar años. Así es que, grandes pilares del moderno paradigma del Deep Learning, como es la retropropagación, se conocían desde los años 70 pero no es hasta los años 20oo que son utilizados en la resolución de tareas. La razón se encuentra en que el entrenamiento de las redes neuronales artificiales requiere de cuantiosos recursos de hardware que no estuvieron disponibles de forma accesible hasta años más recientes.

Fotografía de los investigadores Geoffrey Hinton y Alex Krizhevsky

Geoffrey Hinton (a la derecha) y Alex Krizhevsky (centro) 

Fue en los años 2000 cuando el Deep Learning se alzó definitivamente por encima del resto de herramientas de procesamiento inteligente de datos. Se considera que uno de los grandes logros con los que arranca el moderno Aprendizaje Profundo fue el modelo de reconocimiento de imágenes AlexNet desarrollado por Alex Krizhevsky bajo el auspicio de Geoffrey Hinton. A AlexNet también se le dedicó un artículo respectivo.

¿Qué es el Aprendizaje Profundo?

La caja negra

Deep Learning es el término dado a un tipo de algoritmos de aprendizaje. El esquema básico es uno en el que dicho algoritmo recibe como input un conjunto de datos, como puede ser una imagen codificada de una amapola, y a partir de ellos devuelven una salida, que siguiendo nuestro ejemplo podría ser una clasificación de la imagen como perteneciente a la categoría de «amapola». Son los parámetros de la red los que transforman esa información de entrada en una de salida. Lo que caracteriza al Deep Learning es que estos parámetros no son especificados por los programadores en el momento de creación del modelo, sino que el propio modelo dispone de un mecanismo de aprendizaje que permite su modificación automáticamente hasta que el resultado se ajuste a lo correcto.

Red Neuronal en Deep Learning

Estos parámetros se organizan en capas sucesivas de manera que la estructura de datos pasa a través de ellas, modificándose hasta convertirse en la salida. Son este sistema de capas las que dan al Aprendizaje Profundo tal nombre.

En definitiva, el Deep Learning es un mecanismo de caja negra: sabemos que datos están entrando y sabemos también que salida se nos ofrece, pudiéndola compararla con lo que nosotros como entrenadores dispongamos que sea lo correcto. Pero no tenemos un control directo de lo que ocurre en medio.

Estructuras de datos

Debemos entender que, a diferencia de como opera la biología, nuestros modelos de Deep Learning son muy restrictivos en cuanto al formato de datos que acepta. De hecho, la preparar dichos datos (ya sean texto, sonido o imagenes)  para la alimentación de los modelo es una parte muy importante del campo. El aprendizaje profundo puede entenderse como el procesamiento secuencial de estructuras de datos tales como vectores, matrices y otro tipo de arrays de datos, que pueden tener distintas dimensiones.

Codificación de una imagen en dígitos.

Una imagen de entrada de un tres manuscrito, se transforma en una matriz de datos que codifica la información de manera que pueda ser comprendida por un algoritmo de Deep Learning. En esta caso, las variables a tener en cuenta son la posición de cada píxel y su valor en una escala de grises. El formato de la derecha permite su tratamiento matemático.

¿Cómo funciona el Deep Learning?

Hemos indicado que la clave del Deep Learning era el procesamiento de la información de forma secuencial por capas, pero… ¿Qué ocurre en esas capas que hace tan especial esta herramienta? Normalmente, la mayoría de las operaciones que tienen lugar en las capas son operaciones con estas estructuras de datos que hemos mencionado. Estas operaciones pueden ser lineales o no lineales.

Operaciones lineales

Las operaciones lineales suelen ser un simple producto o suma de matrices. En la imagen de abajo podéis ver una multiplicación entre dos matrices A y B

Operaciones con tensores: Producto de matrices
\begin{bmatrix}1 & 2 & 3\end{bmatrix} \cdot \begin{bmatrix}1 \\ 2 \\ 3 \end{bmatrix} = 1×1 + 2×2 + 3×3  =  14

La resolución de este producto de matrices se realiza por medio de productos escalar entre cada fila de la matriz A por cada columna de la matriz B. En la expresión de arriba podéis ver uno de estos productos escalares. Abajo el productos de las matrices completo.

\begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{bmatrix} \times \begin{bmatrix} 1 & 4 & 7\\ 2 & 5 & 8\\ 3 & 6 & 9 \end{bmatrix} = \begin{bmatrix}14 & 32 & 50\\ 32 & 77 & 122\\ 50 & 122 & 194 \end{bmatrix}

Es en este tipo de operaciones donde aparecen los famosos parámetros que codifican la información que aprende la red. Observa la ilustración de la derecha: un vector de entrada de 3×1 se hace pasar por una matriz de pesos (es decir, los parámetros) de 3×3. El producto de estas matrices devuelve un vector de salida de la misma dimensión que la entrada.

Esta sencilla operación de Álgebra Lineal puede ser expresada de forma equivalente mediante nodos (la ilustración inferior). Cada fila n de la matriz anterior es ahora una «neurona» y los pesos w los que median entre los valores de entrada y los de salida (de forma equivalente a la sinapsis biológica).

Esquema de una multiplicación de matrices.

Abstraer la información

Por mucho que nos cueste creer, esta sencilla operación es algo indispensable en Deep Learning. No solo las matrices de pesos contienen los parámetros que codifican el aprendizaje de la red (que veremos luego), sino que nos permite manipular la forma y la dimensionalidad de los datos. Aunque no es el caso del ejemplo, en muchas situaciones nos interesará que el vector de salida tenga una dimensionalidad menor que la entrada. Esto, junto con la presencia de más y más capas, permite «condensar» la información descartando aquello que no tenga un peso significativo a la hora de realizar la tarea para la que este diseñada la red. Al fin y al cabo esto es precisamente lo que llamamos aprendizaje: encontrar patrones abstractos que nos permiten generalizar a múltiples casos, incluso aunque nunca nos hayamos enfrentado a ellos con anterioridad.

Operaciones no lineales

La no linealidad permite una mayor variedad de resultados. Pensemos que la multiplicación nos limita a dos tipo de relación: dados unos datos de entrada, o bien la salida es proporcionalmente mayor (si los parámetros son positivos) o invertimos esta proporción (si son negativos). ¿Pero y si queremos romper esa proporción? Transformando por ejemplo un conjunto de valores para que muestren otro tipo de distribución. O mas simple todavía, si deseamos eliminar todo valor negativo de entrada y dejarlo a 0.

Este es el papel que cumplen las llamadas funciones de activación, las cuales suelen tomar como entrada la salida de la operación lineal.

Una capa en Deep Learning suele implicar un producto de matrices seguido de la función de activación como operación no lineal.

Esquema de una transformación lineal en una capa neuronal.

Aprendizaje

La red va procesando la información combinando diferentes capas lineales o no lineales. Pero los parámetros tienen al principio un valor totalmente aleatorio, así que no esperemos que la salida nos sea muy útil inicialmente. En el aprendizaje supervisado (que es el que tenemos en cuenta en este artículo) una vez que la red ha procesado la información y dado una salida, un algoritmo, conocido como función de pérdida cuantifica la diferencia entre la respuesta dada y la que sería correcta. Dada esta función de pérdida, se actualizan los parámetros de la red por medio de un método que en la mayoría de los casos es el llamado Descenso del Gradiente Estocástico (SGD en sus siglas en inglés). 

Dado que los parámetros son los coeficientes que median la información que entra en la capa con la salida que ofrece, esta actualización es la manera en que la red modifica sus respuestas de acuerdo a la función de pérdida. En otras palabras: aprende.

Retropropagación

En la última de las capas, donde existe una relación directa entre los parámetros y la salida que nos entrega la red, la actualización de los parámetros no incurre en ningún problema. La cuestión es que es necesario también actualizar los parámetros de las capas interiores de la red. Y no es posible comparar la salida de estas capas con la respuesta objetivo, porque simplemente es un material todavía no procesado del todo.

Es aquí donde entra la retropropagación (backpropagation), el algoritmo que permite la actualización de los parámetros internos de la red. Cada cierto número de entradas procesadas por la red, se calcula la función de pérdida en la salida y cuánto deben modificarse los parámetros. Esta actualización se realiza en el sentido inverso al del procesamiento, desde la salida hacia la entrada, es por ello que recibe tal nombre. Ni que decir tiene que no existe ningún mecanismo ni remotamente parecido en las redes neuronales biológicas.

Esquema de Retropropagación en una red neuronal en Deep Learning

Tipos y usos del Aprendizaje Profundo

Para finalizar este artículo expondremos ahora algunas de las tipologías comunes en redes neuronales y el uso que suele darse.

Redes Convolucionales

En las redes convolucionales la matriz de pesos (denominada kernel) es mucho más reducida que los datos de entrada. En otras palabras, cada nodo o neurona de la capa recibe información de tan solo una sección de la entrada. El resultado es un menor número de parámetros por capa, lo cual se traduce en menor coste computacional. Pero para que la neurona aprenda es necesario integrar la información del input al completo. Es por ello que es necesario el suficiente número de capas y una reducción de dimensionalidad que permita la condensación e integración de la información.

Red Convolucional en Deep Learning

Un ejemplo de operación lineal en la que cada nodo/neurona conecta con una sección de los datos de entrada.

Las redes convolucionales tienes un amplio uso en el el subcampo de la Visión Artificial o Computer Vision. Esta engloba varias tareas relacionadas con la comprensión, clasificación e identificación en imágenes y vídeos. Le hemos dedicado toda una serie completa:

Redes Recurrentes

En este caso hablamos de redes cuyas capas reciben no solo la información que este entrando en ese momento, sino también la de momentos previos. Así, los nodos tienen una suerte de memoria. Normalmente estas redes recurrentes se organizan en unidades especializadas que combinan operaciones lineales y no lineales para retener la información, por ejemplo las LSTM o GRU. Las redes resultantes encadenas una detrás de otra estas unidades.

Red Neuronal Recurrente en Deep Learning

Un ejemplo de operación lineal en la que el input de entra en le momento t incluye la salida producida en el instante previo t-1.

Dada su capacidad para procesar y comparar la información del momento con la de instantes pasados, este tipo de redes se han venido utilizando en el procesamiento de textos, en los cuales la comprensión depende de recordar las palabras leídas con anterioridad. Hace unos años fueron famosos sus logros en tareas de traducción.

Transformers

El último gran descubrimiento del Deep Learning. Los transformers son la tecnología detrás de las modelos de Procesamiento Natural del Lenguaje (NLP en inglés) y los LLM o Large Language Models como Brand o Chat GPT. Su particularidad reside en un mecanismo llamado Unidad de Atención capaz de poner en relacionar textos y extraer de ellos la estructura sintáctica y semántica necesaria para comprenderlos. También se han venido usando en el campo de la Visión Artificial. Hablamos de los transformers en la serie dedicada al Procesamiento Natural del Lenguaje.