Hay muchas buenas respuestas aquí. Algunos cubren una variedad de diferentes tipos de codificadores-decodificadores (CNN, RNN, etc.), mientras que otros cubren una profundidad de un tipo (digamos RNN). Trataré de profundizar en una sola respuesta, y también daré algunos antecedentes teóricos sobre ella.
Importancia de las representaciones en ML
Los algoritmos de aprendizaje automático toman características como entradas y producen algo de salida. La forma en que representamos las características marca una gran diferencia en el rendimiento de nuestros algoritmos de aprendizaje. Un ejemplo clásico de esto del libro Deep Learning es:
Las representaciones forman un componente muy importante de los algoritmos de aprendizaje automático. Tradicionalmente, muchos algoritmos de aprendizaje automático tomaron características hechas a mano, lo que significa que el diseñador eligió explícitamente las características y su representación (ingeniería de características) y las introdujo en el algoritmo. Para problemas complejos como la visión por computadora, a las personas se les ocurrieron representaciones innovadoras como HOG, por ejemplo.
Debido a tales representaciones, hay una diferencia que debe hacerse entre las “entradas en bruto” y las características que se ingresan al modelo. Por ejemplo, en el reconocimiento facial, los píxeles de una imagen de una cara serán la entrada sin formato, mientras que las características HOG de la imagen pueden ser la entrada real al modelo ML.
Característica de aprendizaje
A alguien se le ocurrió la idea de que podemos usar un algoritmo para aprender la representación de la característica en sí, llamada acertadamente aprendizaje de características. El aprendizaje profundo utiliza una red neuronal para lograr esta tarea.
De Wikipedia:
El aprendizaje profundo es una clase de algoritmos de aprendizaje automático que:
- use una cascada de múltiples capas de unidades de procesamiento no lineales para la extracción y transformación de características. Cada capa sucesiva utiliza la salida de la capa anterior como entrada.
- aprender de maneras supervisadas (por ejemplo, clasificación) y / o sin supervisión (por ejemplo, análisis de patrones).
- aprender múltiples niveles de representaciones que corresponden a diferentes niveles de abstracción; Los niveles forman una jerarquía de conceptos.
La mayoría de los modelos modernos de aprendizaje profundo se basan en una red neuronal artificial, aunque también pueden incluir fórmulas proposicionales o variables latentes organizadas en capas en modelos generativos profundos, como los nodos en Deep Belief Networks y Deep Boltzmann Machines.
Las primeras capas de una red neuronal extraen características de los datos o, en otras palabras, asignan entradas sin procesar a representaciones de características eficientes. Las siguientes capas (generalmente capas completamente conectadas) mezclan y combinan y combinan estas características para producir una salida.
Encoder Decoder Network
Algunas arquitecturas de red apuntan explícitamente a aprovechar esta capacidad de las redes neuronales para aprender representaciones eficientes. Utilizan una red de codificador para mapear entradas sin procesar a representaciones de características, y una red de decodificador para tomar esta representación de características como entrada, procesarla para tomar su decisión y producir una salida. Esto se llama una red codificador-decodificador.
Teóricamente, las partes del codificador y decodificador se pueden usar de forma independiente entre sí. Por ejemplo, un codificador RNN se puede usar para codificar las características de un correo electrónico entrante como un “vector de características”, que luego se usa para predecir si el correo electrónico es spam o no. Sin embargo, el codificador neuronal y los decodificadores a menudo se usan juntos debido al buen rendimiento en diversas tareas.
CNN
En una CNN, una red de codificador-decodificador generalmente se ve así (un codificador CNN y un decodificador CNN):
Créditos de imagen
Esta es una red para realizar la segmentación semántica de una imagen. La mitad izquierda de la red asigna píxeles de imagen en bruto a una representación rica de una colección de vectores de características. La mitad derecha de la red toma estas características, produce una salida y la asigna de nuevo al formato “sin procesar” (en este caso, píxeles de imagen).
RNN
En un RNN, una red de codificador-decodificador generalmente se ve así (un codificador RNN y un decodificador RNN):
Esta es una red para predecir respuestas para correos electrónicos entrantes. La mitad izquierda de la red codifica el correo electrónico en un vector de características, y la mitad derecha de la red decodifica el vector de características para producir predicciones de palabras.
Estilo mixto
Tenga en cuenta que no es necesario usar solo CNN o solo RNN para codificador y decodificador. Podemos mezclar y combinar y usar un codificador CNN con decodificador RNN, o viceversa; se puede usar cualquier combinación que sea adecuada para la tarea dada.
Un ejemplo de un documento que implementé recientemente desde cero, Modelo de atención guiada por texto para subtítulos de imágenes (T-ATT):
Mira las partes que he resaltado en rojo. El STV se refiere a vectores de salto de pensamiento. STV en sí mismo es una arquitectura codificador-decodificador. Un extracto de su artículo:
Tratamos los pensamientos de omisión en el marco de los modelos de codificador-decodificador. Es decir, un codificador asigna palabras a un vector de oración y se usa un decodificador para generar las oraciones circundantes. Los modelos de codificador-decodificador han ganado mucha tracción para la traducción automática neuronal. En esta configuración, se usa un codificador para asignar, por ejemplo, una oración en inglés a un vector. El decodificador entonces condiciona este vector para generar una traducción para la oración fuente en inglés. Se han explorado varias opciones de pares codificador-decodificador, incluidos ConvNet-RNN, RNN-RNN y LSTM-LSTM.
Los autores de T-ATT usan el codificador de STV para codificar subtítulos. Además, en la imagen de arriba, la CNN se refiere a una VGGNet o una ResNet, que los autores usan para codificar imágenes. El LSTM que he resaltado en rojo a la derecha se refiere al decodificador que usa la representación intermedia generada por la tubería (que se muestra en el diagrama como ‘Vector de contexto’) para predecir una serie de palabras que forman un título para la imagen de entrada. Por lo tanto, utilizan un codificador CNN, un codificador RNN y un decodificador LSTM juntos.
Conclusión
Espero que esto proporcione una comprensión de las arquitecturas codificador-decodificador, su motivación de fondo y la teoría subyacente. Espero que los ejemplos del mundo real de los documentos hayan ayudado a concretar los conceptos.