lunes, 18 de mayo de 2020

Catálogo de componentes de redes neuronales (I): capas


En un artículo publicado recientemente en este blog y titulado 'Estructura de una red neuronal y el inicio de una catalogación sencilla', anunciaba una serie de posts en que resumiría las opciones básicas que se pueden elegir a la hora de diseñar una red neuronal. La idea es censar un catálogo corto y comprensible, pero razonablemente explicativo y abarcador, que ayude a entender este tipo de algoritmos avanzados y conocer las principales opciones de diseño disponibles.

Y éste es el primero de los posts de esa serie, y que dedicaré a las capas.

Neurona Artificial. Fuente: Jordi Torres
La unidad mínima en una red neuronal sería, en teoría, la neurona, que conceptualmente se corresponde con una unidad que recibe unos datos de entrada (en la metáfora neuronal serían las salidas de otras neuronas) y proporciona un valor de salida. Matemáticamente la podríamos considerar como una función aunque internamente suele encadenar dos funciones: por un lado una primera función que combina de forma ponderada (modulada por pesos) sus entradas y una función de activación que proporciona una salida en función de esa operación ponderada previa

Sin embargo, a la hora de trabajar, más que con neuronas individuales, se trabaja con capas que se corresponden intuitivamente con lo que la palabra capa indica, es decir, un conjunto de neuronas en un mismo, digamos, nivel, que tienen características homogéneas entre sí y que se conectan con las neuronas de la capa precedente. Desde un punto de vista matemático, en realidad, una capa se traduce en un módulo de procesamiento matemático que toma como entrada un tensor (que sería la salida de la capa anterior) y devuelve como salida otro tensor.

Entre los elementos que definen la tipología de una capa tenemos, por supuesto, el tipo de cálculos que aplican sus neuronas, pero también el patrón de conexión entre sí y, sobre todo, con la capa precedente.

Siguiendo a François Chollet en su libro 'Deep Learning con Python' incluiremos en nuestro catálogo tres familias de capas, a saber:
  • Densa (Perceptrón): En ellas todas las neuronas de una capa están conectadas a todas las neuronas de la capa anterior. Son capas que no asumen ningún tipo de estructura específica en las características de entrada. Se utilizan fundamentalmente en problemas de clasificación ya sea asumiendo la totalidad de las capas de la red o bien como fase final de clasificación en una red con capas de otros tipos.

  • Convolución: redes que aplican transformaciones geométricas locales en espacios acotados de sus datos de entrada. Es decir, recorren sus datos de entrada aplicando sucesivamente pequeñas transformaciones a subconjuntos pequeños de ese espacio de entrada hasta finalizar el recorrido. Su comportamiento tiende a ir extrayendo, mediante la acción de capas sucesivas, características significativas del espacio de entrada. Suelen apoyarse en otros tipos de capas auxiliares como son las capas de 'pooling' (reducción del espacio de datos) y 'flatten' (conversión de tensores n-dimensionales en vectores).Su aplicación más típica es en tratamiento de imágenes y visión artificial, pero también su utilizan en procesamiento de sonidos, de textos u otro tipo de datos secuenciales.

  • Recurrente (RNR): Capa específicamente diseñada para el tratamiento de secuencias de entradas, típicamente temporales. Las capas recurrentes se denominan así porque su salida en un momento dado depende, no sólo de las entradas en ese momento, sino de su salida en el paso anterior. Son capas que, además, conservan un estado. Se utilizan en todo tipo de tratamiento de series temporales, siendo quizá lo más relevante, todo lo que tiene que ver con el procesamiento de texto y lenguaje o el análisis de sentimiento, pero también, por ejemplo, en la predicción del tiempo e incluso en redes generativas de texto. Existen algunas variantes de las que las más comunes son las dos siguientes:

    • Long Short-Term Memory (LSTM): En que la información recurrente se transmite no sólo al paso anterior sino a varios pasos anteriores.

    • Gated Recurrent Unit (GRU): siguen la misma idea que las LSTM pero son computacionalmente más eficientes.

Este catálogo, seguro, no es completo, y además, las arquitecturas de redes neuronales más avanzadas no se limitan a un mero apilamiento de capas por lo que, el conocer las modalidades de capas no es suficiente para tener una base completa de las opciones en redes neuronales, pero disponer de este catálogo con los tipos de capas más habituales, me parece que orienta bastante en los primeros pasos (al menos a mi, me sirve como estructura de conocimiento).

En próximos posts veremos otros elementos relevantes del catálogo de componentes. El próximo paso: funciones de activación.

No hay comentarios:

Publicar un comentario