Redes Neurais em IA e Deep Learning - página 51

 

Capas convolucionales (DL 13)



Capas convolucionales (DL 13)

Las redes neuronales que hemos considerado hasta ahora han estado densamente conectadas, donde cada capa está conectada a la siguiente capa. Las redes densas son un buen punto de partida ya que son generales y versátiles. Sin embargo, para aplicaciones específicas, podemos elegir arquitecturas alternativas que sean más efectivas. En este video, exploramos la primera arquitectura alternativa llamada capas convolucionales.

Las redes convolucionales son adecuadas para tareas de procesamiento de imágenes. En lugar de tratar la imagen de entrada como un vector plano, las capas convolucionales conservan la información espacial de la imagen. Cada neurona en una capa convolucional está conectada solo a una pequeña región de la imagen, capturando la proximidad espacial de los píxeles. Mediante el uso de esta arquitectura, la red obtiene una ventaja en el aprendizaje de tareas de procesamiento de imágenes.

Las capas convolucionales tienen dos ideas clave: conectividad local y vinculación de peso. La conectividad local significa que las neuronas están conectadas a una pequeña subregión de la imagen, lo que les permite aprender características específicas. La vinculación de peso garantiza que se aplique la misma función a diferentes regiones de la imagen. Al compartir ponderaciones, la red puede aprender a aplicar la misma función en múltiples regiones.

Las capas convolucionales introducen nuevos hiperparámetros a considerar. Estos incluyen el tamaño del núcleo (que determina el tamaño de la subregión), la zancada (cuánto se desliza la ventana), la cantidad de canales de salida (la cantidad de funciones aplicadas a cada ventana), el relleno (manejo de los bordes de la imagen) y la agrupación (agregación de resultados de neuronas). para reducir la dimensionalidad).

La agrupación ayuda a reducir la cantidad de parámetros en la red agregando los resultados de las neuronas en una región. Esto se puede hacer promediando o tomando el valor máximo. La agrupación es útil cuando no necesitamos una localización precisa de las características, sino la presencia general de las características en una región.

Las redes convolucionales proporcionan una forma más eficiente de procesar imágenes en comparación con las redes densas. Aprovechan la información espacial y reducen el número de parámetros, haciéndolos más fáciles de entrenar.

La agrupación ayuda a reducir la dimensionalidad de los mapas de características y la cantidad de parámetros en las capas posteriores. Al agregar los resultados de las neuronas vecinas, la agrupación retiene la información más importante y descarta algunos detalles espaciales.

Existen diferentes tipos de operaciones de agrupación, como la agrupación máxima y la agrupación promedio. En la agrupación máxima, el valor máximo dentro de cada ventana de agrupación se selecciona como el valor representativo para esa región. Esto ayuda a capturar las características más prominentes presentes en la ventana. Por otro lado, la agrupación promedio toma el valor promedio de la ventana, lo que brinda una representación más fluida de las características.

Después de la agrupación, podemos apilar más capas convolucionales adicionales para aprender características más complejas y abstractas de la salida de la capa anterior. Cada capa subsiguiente captura características de nivel superior al combinar la información de múltiples campos receptivos más pequeños.

En resumen, las redes neuronales convolucionales (CNN) con capas convolucionales y de agrupación son adecuadas para tareas de procesamiento de imágenes. Las capas convolucionales capturan la proximidad espacial y aprovechan el peso compartido, lo que permite que la red aprenda las características locales de manera eficiente. La agrupación reduce la dimensionalidad y extrae información importante, lo que permite que las capas posteriores aprendan representaciones más abstractas. Este aprendizaje de características jerárquicas hace que las CNN sean poderosas para diversas aplicaciones de visión por computadora, incluida la clasificación de imágenes, la detección de objetos y la segmentación de imágenes.

 

Entrenamiento de grandes redes con pocos datos: transferencia de aprendizaje y aumento de datos (DL 14)



Entrenamiento de grandes redes con pocos datos: transferencia de aprendizaje y aumento de datos (DL 14)

En el aprendizaje profundo, es común encontrar problemas en los que queremos aprovechar el poder del aprendizaje profundo pero carecemos de datos suficientes para entrenar un modelo profundo de manera efectiva. Este problema surge en varios dominios y arquitecturas de redes neuronales. Centrémonos en el escenario de una tarea de procesamiento de imágenes utilizando una red convolucional con un pequeño conjunto de datos de imagen. Sin embargo, los conceptos discutidos aquí también se pueden aplicar a otros dominios.

Las redes convolucionales profundas son conocidas por su eficacia en el procesamiento de imágenes. Sin embargo, entrenar una red convolucional profunda en un conjunto de datos de imagen pequeño generalmente conduciría a un sobreajuste extremo, donde la red simplemente memoriza los datos de entrada. En tales casos, debemos encontrar formas de hacer un mejor uso de nuestros datos o explorar fuentes de datos alternativas.

Un enfoque para superar el problema de la escasez de datos es mediante el aumento de datos y el aprendizaje por transferencia. El aprendizaje por transferencia es un concepto fundamental en el aprendizaje profundo moderno y es sorprendentemente simple de explicar. La idea es entrenar una red neuronal profunda en un problema relacionado pero más general y luego reutilizar esa red preentrenada con entrenamiento adicional en nuestro conjunto de datos específico para resolver nuestro problema.

Para una tarea de procesamiento de imágenes, podemos entrenar una red con grandes conjuntos de datos de imágenes recopilados de la web o de competencias de aprendizaje automático. La red preentrenada tendría una última capa dedicada a clasificar imágenes de esos conjuntos de datos. Cuando trabajamos en una tarea de procesamiento de imágenes diferente con una capa de salida distinta, podemos descartar la capa de salida de la red preentrenada y agregar nuestra propia capa de salida que coincida con los requisitos de nuestro problema. Esto implica agregar nuevos pesos que conectan la nueva capa de salida con la última capa de la red preentrenada, que se puede entrenar usando nuestro pequeño conjunto de datos.

La expectativa detrás de la efectividad del aprendizaje de transferencia radica en la suposición de que si el problema de preentrenamiento es lo suficientemente similar a nuestro problema específico, la funcionalidad aprendida por la red preentrenada se transferirá, beneficiando nuestro problema. Podemos pensar en la red preentrenada como si hubiera aprendido funciones genéricas de procesamiento de imágenes, y podemos utilizar esta transformación aprendida cuando entrenamos nuestra red en el pequeño conjunto de datos.

Al aplicar el aprendizaje por transferencia, tenemos varias opciones para utilizar el modelo preentrenado. Necesitamos descartar la capa de salida para que coincida con nuestro problema, pero también podemos eliminar otras capas si creemos que ya se ha realizado el preprocesamiento útil. Además, podemos agregar múltiples capas para realizar un procesamiento más sofisticado para nuestro problema específico. Para preservar cualquier procesamiento útil realizado por las primeras capas, podemos congelar sus pesos durante el reentrenamiento, especialmente si el modelo preentrenado se entrenó en un conjunto de datos grande y nuestro problema tiene un conjunto de datos pequeño.

Las bibliotecas de aprendizaje profundo a menudo proporcionan zoológicos modelo, que son colecciones de modelos previamente entrenados para diferentes tipos de problemas. Estos modelos sirven como puntos de partida para el aprendizaje por transferencia, haciendo que el aprendizaje profundo sea accesible para resolver una amplia gama de problemas.

Sin embargo, incluso con la ayuda del aprendizaje por transferencia, nuestro conjunto de datos aún podría ser demasiado pequeño para entrenar una red de manera efectiva, incluso en las últimas capas. En tales casos, necesitamos extraer la mayor cantidad de información posible de nuestro conjunto de datos, lo que nos lleva a la idea del aumento de datos.

El aumento de datos implica aplicar transformaciones al conjunto de datos que parecen diferentes para la red neuronal pero conservan el mismo significado para los humanos u otros sistemas que utilizan el modelo aprendido. En el caso del procesamiento de imágenes, se pueden aplicar diversas transformaciones sin alterar la percepción humana de la imagen representada. Por ejemplo, girar o acercar una imagen no cambia su contenido subyacente. Estas transformaciones introducen diferencias sustanciales en los datos de entrada vistos por la red neuronal, lo que dificulta que la red memorice ejemplos específicos o se base en detalles finos de la entrada.

Sin embargo, debemos asegurarnos de que las transformaciones no cambien el significado de los datos y parezcan distintos desde la perspectiva de la red. Por ejemplo, la traducción de una imagen puede tener poco impacto en la capacidad de generalización de una red convolucional, dada su invariancia de traducción inherente.

Las técnicas de aumento de datos incluyen la adición de ruido aleatorio, un ligero desenfoque y otras modificaciones que no distorsionan la percepción humana de la imagen. Estas transformaciones se pueden calcular fácilmente y aplicar aleatoriamente a cada lote de datos durante el entrenamiento. Al entrenar la red para múltiples épocas en el conjunto de datos aumentado, evitamos que simplemente memorice los ejemplos de entrada exactos y lo alentamos a generalizar mejor.

Es importante tener en cuenta que las técnicas de aumento de datos no son tan efectivas como tener más datos para entrenar, incluidos los datos relacionados para el entrenamiento previo. Sin embargo, cuando se combina con el aprendizaje por transferencia, el aumento de datos nos permite abordar una gama más amplia de problemas utilizando redes neuronales profundas.

En resumen, cuando se enfrenta a un problema que requiere aprendizaje profundo pero carece de datos suficientes, el aprendizaje por transferencia y el aumento de datos son estrategias valiosas. Transferir el aprendizaje implica entrenar una red en un problema relacionado y reutilizarla, con entrenamiento adicional, para nuestro problema específico. El aumento de datos implica aplicar transformaciones al conjunto de datos que conservan su significado al tiempo que introducen variaciones para una mejor generalización. Si bien estas técnicas no reemplazan más datos, ofrecen soluciones prácticas para aprovechar el aprendizaje profundo en escenarios con disponibilidad de datos limitada.

 

Redes Residuales y Conexiones Saltadas (DL 15)



Redes Residuales y Conexiones Saltadas (DL 15)

Las redes neuronales profundas son poderosas pero difíciles de entrenar debido a la necesidad de más datos a medida que aumenta la cantidad de parámetros. El entrenamiento de redes profundas a menudo muestra un progreso lento en la disminución de pérdidas en comparación con las redes superficiales. Esto se debe a que los datos de entrada, que pasan a través de múltiples capas con pesos inicializados aleatoriamente, se codifican en ruido aleatorio, lo que dificulta la propagación de gradientes significativos.

Para solucionar este problema, se introducen las conexiones de omisión. Omitir conexiones implica agrupar capas en bloques y proporcionar dos rutas para el flujo de datos dentro y alrededor de cada bloque. La salida de un bloque se combina con su entrada mediante la suma o la concatenación, lo que permite que la entrada pase y haga que las entradas y actualizaciones sean más significativas.

Los bloques residuales, que incorporan conexiones de salto, tienen varias ventajas. En primer lugar, simplifican la tarea de aprendizaje de cada bloque al centrarse en aumentar los datos existentes en lugar de averiguar todo sobre la entrada. En segundo lugar, facilitan el flujo de gradientes al proporcionar rutas más cortas para actualizar cada capa de la red. Estas ventajas conducen a un progreso de entrenamiento más rápido y un mejor rendimiento en comparación con las redes poco profundas.

Cuando se usan bloques residuales, es crucial abordar la compatibilidad de formas entre los tensores de entrada y salida, especialmente cuando se usan capas convolucionales. Se debe prestar especial atención a hacer coincidir las formas y evitar una explosión en la cantidad de parámetros, particularmente cuando se usa la concatenación. Por lo general, se prefiere la adición a la concatenación para la mayoría de las conexiones de salto en redes residuales grandes.

Se pueden emplear convoluciones uno por uno para conservar la altura, el ancho y las dimensiones del canal en bloques convolucionales. Nos permiten ajustar la profundidad de la capa de salida especificando el número de filtros en la capa convolucional.

Si bien existen diversas variaciones y arquitecturas de redes residuales, la idea clave sigue siendo consistente: mejorar el entrenamiento de las redes neuronales profundas aprovechando las conexiones de salto y los bloques residuales. Estas técnicas permiten un mejor flujo de información, un entrenamiento más rápido y un mayor rendimiento del modelo. Se recomienda explorar diferentes arquitecturas residuales y sus implementaciones específicas para una mayor comprensión y aplicación.

Además, es importante tener en cuenta algunas cuestiones prácticas al configurar una red residual. Una de esas preocupaciones es administrar la compatibilidad de forma entre los tensores de entrada y salida cuando se usan conexiones de salto. Esto se vuelve más complejo cuando se involucran capas convolucionales, ya que las dimensiones de altura, ancho y canal deben alinearse correctamente.

Para simplificar los bloques convolucionales, se pueden usar pasos uno a uno y el relleno adecuado para conservar la altura y el ancho de la imagen de entrada. Esto asegura que al menos las dimensiones espaciales coincidan al agregar los tensores de entrada y salida de un bloque. Para abordar la dimensión del canal, se pueden emplear convoluciones uno por uno. Aunque estas circunvoluciones pueden parecer triviales ya que reciben información de un solo píxel, nos permiten ajustar la profundidad de la capa de salida. Al especificar el número de filtros en la convolución uno por uno, podemos aumentar o disminuir la profundidad del tensor de salida, haciendo que las formas sean compatibles.

Cuando se trabaja con grandes redes residuales, es fundamental lograr un equilibrio entre el número de conexiones salteadas y la explosión de parámetros. El uso excesivo de la concatenación puede conducir a un aumento sustancial en el tamaño del tensor de activación y el número de parámetros. Por lo tanto, es recomendable limitar el número de conexiones de salto basadas en concatenación y preferir la adición para la mayoría de ellas.

La modularidad es otra de las ventajas que ofrecen las redes residuales. La estructura uniforme de los bloques residuales y la capacidad de agregar fácilmente más bloques facilitan la construcción de redes más profundas y poderosas. Al aumentar gradualmente el número de bloques, se puede crear una red que se adapte al compromiso deseado entre los recursos computacionales y la capacidad del modelo.

Si bien las redes residuales han demostrado ser muy efectivas, vale la pena señalar que existen otros tipos de arquitecturas residuales con diferentes opciones de diseño, como la incorporación de capas de normalización o rutas múltiples dentro de un bloque. Explorar estas variaciones puede proporcionar más información y posibilidades para mejorar el entrenamiento de las redes neuronales profundas.

En general, las redes residuales brindan un enfoque valioso para entrenar redes neuronales profundas al aprovechar las conexiones de salto y los bloques residuales. Simplifican las tareas de aprendizaje, aceleran la propagación de gradientes y ofrecen modularidad para construir arquitecturas de red potentes. Comprender los conceptos y las consideraciones detrás de las redes residuales contribuye a los avances en la investigación y las aplicaciones prácticas del aprendizaje profundo.

 

Incrustaciones de palabras (DL 16)



Incrustaciones de palabras (DL 16)

La mayoría de los datos con los que hemos trabajado en redes neuronales han sido datos de imágenes. Sin embargo, también podemos usar las redes neuronales para otro tipo de problemas, como los datos de texto. La representación de datos de texto como entrada a una red neuronal no es tan sencilla como con las imágenes.

En los datos de imagen, podemos usar formatos de almacenamiento digital estándar, que representan imágenes como conjuntos de píxeles rojos, verdes y azules. Esta representación es conveniente porque captura las relaciones espaciales entre los píxeles y las intensidades de color relevantes.

Para los datos de texto, la representación digital estándar, donde los caracteres se convierten a ASCII u otros valores digitales, no es directamente relevante para la forma en que aprenden las redes neuronales. Se pueden considerar varios métodos para convertir valores ASCII en entradas válidas para una red neuronal, como usar la representación binaria de valores ASCII o normalizar el rango de caracteres para que se encuentre entre 0 y 1. Sin embargo, estas representaciones no capturan la semántica del palabras de la misma manera que una matriz representa una imagen.

Un enfoque es crear vectores gigantes utilizando codificaciones one-hot de todo el vocabulario. Cada palabra tiene una representación vectorial única, lo que resuelve el problema de palabras similares que tienen significados diferentes. Sin embargo, esto da como resultado una expansión masiva de dimensiones y pierde el equilibrio entre la similitud de palabras y la dimensionalidad.

Para abordar esto, nuestro objetivo es una representación de datos de texto que logre varios objetivos. En primer lugar, queremos una representación por palabra que no tenga demasiadas dimensiones. En segundo lugar, queremos que la representación lleve información semántica, donde palabras similares tienen representaciones vectoriales similares. Este ha sido un problema desafiante en el procesamiento del lenguaje natural.

En los últimos años, las redes neuronales se han utilizado con éxito para generar representaciones de entrada apropiadas para datos de texto. Un enfoque consiste en extraer n-gramas, que son secuencias de n palabras, de los datos de texto. Estos n-gramas brindan información contextual para un punto específico en una oración o documento.

La idea es entrenar la red utilizando la representación del diccionario one-hot como entrada y predecir la codificación one-hot del n-grama circundante. Por ejemplo, podemos usar una entrada de 5 gramos y predecir las otras cuatro palabras en el n-grama. Al entrenar la red en palabras cercanas usando n-gramas, esperamos que palabras semánticamente similares tengan representaciones similares y reciban retroalimentación de gradiente similar durante el entrenamiento.

Al descartar la capa de salida de la red, podemos usar el vector de activaciones en la última capa oculta como una codificación numérica de la palabra de entrada. Esta representación se conoce como incrustación de palabras, que captura el contexto de la palabra en el texto real. Existen varios enfoques para producir incrustaciones de palabras, como Word2Vec.

En lugar de entrenar nuestras propias incrustaciones de palabras, podemos utilizar incrustaciones pre-entrenadas generadas por otros con más datos y recursos computacionales. Podemos generar fácilmente una tabla de búsqueda para traducir un documento de texto arbitrario a la palabra incrustación. Este enfoque nos permite usar incrustaciones de palabras como entrada a nuestra red neuronal para el aprendizaje automático en datos de texto.

El uso de incrustaciones de palabras como entrada a nuestra red neuronal para el aprendizaje automático en datos de texto ofrece varias ventajas. Estas incrustaciones preentrenadas han sido generadas por modelos con una gran cantidad de datos y recursos computacionales, lo que da como resultado representaciones ricas y significativas de palabras.

Al pasar un documento a través de una incrustación de palabras existente, podemos obtener una representación vectorizada del texto. Esta representación vectorial captura la información contextual de las palabras y puede usarse como entrada a nuestra red neuronal.

El uso de incrustaciones de palabras permite el aprendizaje por transferencia, donde el conocimiento obtenido de una tarea (p. ej., entrenar el modelo de incrustación de palabras) se puede aplicar a otra tarea relacionada (p. ej., nuestro problema específico de aprendizaje automático con datos de texto). En lugar de entrenar nuestras propias incrustaciones desde cero, podemos aprovechar las incrustaciones existentes y beneficiarnos de sus capacidades de generalización.

Una vez que tenemos la representación de incrustación de palabras del texto, podemos proceder con el entrenamiento de nuestra red neuronal. La red neuronal puede tomar los vectores de incrustación de palabras como entrada y aprender a hacer predicciones basadas en la información semántica codificada en las incrustaciones.

La arquitectura específica de la red neuronal dependerá de la tarea en cuestión. Podría ser una red neuronal recurrente (RNN) que considera la naturaleza secuencial del texto, una red neuronal convolucional (CNN) que captura patrones locales o una combinación de ambas. La red se puede diseñar para realizar tareas como el análisis de sentimientos, la clasificación de textos, la generación de idiomas o la traducción automática, entre otras.

Durante el proceso de entrenamiento, la red neuronal aprende a reconocer patrones y hacer predicciones basadas en las incrustaciones de palabras de entrada. Los gradientes propagados a través de la red actualizan los pesos, optimizando la capacidad de la red para realizar predicciones precisas.

Al utilizar incrustaciones de palabras, abordamos los desafíos de representar datos de texto de manera significativa para las redes neuronales. Estas incrustaciones capturan relaciones semánticas entre palabras, lo que permite que la red aprenda del contexto y haga predicciones informadas. Además, aprovechar las incrustaciones previamente entrenadas ahorra recursos computacionales y mejora la eficiencia de nuestra canalización de aprendizaje automático.

Mediante el uso de incrustaciones de palabras como entrada a nuestra red neuronal, podemos aprovechar el poder del aprendizaje de transferencia y las representaciones semánticas. Este enfoque mejora significativamente la capacidad de las redes neuronales para procesar y comprender datos de texto, lo que abre la puerta a varias tareas y aplicaciones de procesamiento de lenguaje natural.

 

Redes Neuronales Recurrentes (DL 17)



Redes Neuronales Recurrentes (DL 17)

En nuestra lección anterior, discutimos el uso de incrustaciones de palabras, que son representaciones entrenables de palabras como vectores con un número moderado de dimensiones. Estas incrustaciones pueden servir como base para construir sistemas de aprendizaje automático que operen con datos de texto. Para tareas simples como la clasificación de opiniones de reseñas de productos, puede ser suficiente dividir el documento en palabras, incrustar cada palabra y pasar la secuencia de incrustaciones como entrada a una red neuronal. Sin embargo, para tareas más complejas, como respuestas conversacionales o traducción automática, se requiere un enfoque más sofisticado.

Para ilustrar esto, usamos el ejemplo de predecir la siguiente palabra en una oración. Esta tarea es más desafiante que la clasificación de opiniones pero más fácil que la traducción automática. Al configurar redes neuronales para operar con datos de texto, nos enfrentamos a dos enfoques amplios. Un extremo es proporcionar el documento completo como entrada a la red, mientras que el otro extremo es proporcionar una sola palabra como entrada. Sin embargo, ambos enfoques tienen inconvenientes: operar en todo el documento limita los ejemplos de capacitación y trata con documentos de diferentes tamaños, mientras que operar en una palabra a la vez ignora el contexto circundante necesario para comprender el significado de las palabras y representar conceptos que no se asignan directamente a las palabras. .

Para encontrar un compromiso entre estos extremos, presentamos un método que opera con una palabra a la vez, pero incorpora la memoria de la red de entradas anteriores para retener el contexto importante. La idea básica es retroalimentar la salida de la red a su entrada, permitiéndole usar sus activaciones previas como un resumen de las palabras vistas hasta ahora. Este enfoque da lugar a redes neuronales recurrentes (RNN), que se pueden visualizar desplegándolas a lo largo del tiempo, representando la red en diferentes puntos en el tiempo a medida que se ingresan palabras y se retroalimenta la salida de la red.

Para la siguiente tarea de predicción de palabras, la salida de la capa oculta de RNN sirve como resumen de las palabras anteriores en la oración. La RNN aprende a predecir la siguiente palabra en función de este contexto. Las entradas a la RNN son vectores de incrustación, mientras que las salidas están en una codificación de diccionario one-hot para permitir expresar la incertidumbre sobre diferentes salidas posibles.

El entrenamiento de RNN implica calcular gradientes para actualizar los pesos de la red. El desafío surge del hecho de que los pesos influyen en la pérdida no solo a través de su aplicación a la entrada actual, sino también a través de su impacto en las entradas de pasos de tiempo anteriores. Para calcular el efecto de los pesos sobre la pérdida en un paso de tiempo particular, debemos considerar tanto su impacto en la entrada actual como su influencia en pasos de tiempo anteriores y su contribución al error en el paso de tiempo actual.

Las redes neuronales recurrentes a menudo emplean funciones de activación sigmoidea o tanh porque son propensas al problema del gradiente de fuga. Este problema surge cuando los gradientes no pueden propagarse hacia atrás en la red, lo que limita la capacidad de capturar dependencias a largo plazo. En consecuencia, los RNN simples no son efectivos en tareas que requieren un contexto extenso y memoria a largo plazo, razón por la cual nos enfocamos en oraciones en lugar de documentos.

En la próxima lección, exploraremos una variante de redes neuronales recurrentes diseñadas específicamente para abordar el problema de la memoria a largo plazo y lograr un mejor desempeño en las tareas de procesamiento de texto y lenguaje.

 

LSTM (DL 18)



LSTM (DL 18)

El objetivo de esta conferencia es demostrar el uso práctico de las redes neuronales recurrentes (RNN) para el modelado del lenguaje. Anteriormente, discutimos el uso de RNN para predecir la siguiente palabra en una oración, que sirve como una tarea común de preentrenamiento para RNN. Para tareas más complejas como responder preguntas o traducción automática, podemos emplear un enfoque de aprendizaje por transferencia. Primero, entrenamos previamente al RNN en la siguiente tarea de predicción de palabras y luego lo ajustamos para la tarea específica que nos interesa.

Para obtener resultados más significativos de una RNN, nos enfocamos en las activaciones o estados ocultos que pasan a través de la red en dirección hacia adelante o hacia atrás. Estos estados ocultos representan la entrada de texto general. Por ejemplo, al traducir una oración, cada palabra se introduce secuencialmente en el RNN y el estado oculto producido en el último paso de tiempo se convierte en una representación del texto completo. Luego, podemos pasar este estado oculto a capas de redes neuronales adicionales para resolver la tarea deseada, como la clasificación o la generación de texto.

Este proceso de introducir texto en un RNN para codificarlo en un estado de capa oculta, y luego usar otro RNN como decodificador, nos permite generar texto de salida. Al entrenar este par de RNN en pares de entrada y salida, podemos traducir oraciones o generar respuestas.

Sin embargo, los RNN regulares con activaciones de 10 h enfrentan dificultades cuando se trata de secuencias más largas debido a la desaparición de los gradientes. Para abordar este problema, podemos emplear una arquitectura llamada Memoria a largo plazo a corto plazo (LSTM). Los LSTM ofrecen múltiples rutas para que fluyan las activaciones, lo que permite que los gradientes se propaguen de manera más eficiente a través de la red.

La capa LSTM consta de una entrada y una salida. Podemos usarlos para entrenar a la red en tareas como predecir la siguiente palabra. La entrada se concatena con el estado oculto anterior, mientras que un estado oculto adicional (c) se pasa de la red a sí misma en cada paso de tiempo. Este estado c permite la propagación del gradiente sin las limitaciones impuestas por las activaciones de 10h. Las funciones de activación sigmoidea se utilizan para controlar qué información se retiene u olvida de los estados anteriores, y estas puertas se aprenden durante el entrenamiento.

Los LSTM incorporan las rutas h y c, lo que permite cálculos más complejos dentro de cada paso de tiempo y facilita la rápida propagación de gradientes a través de múltiples aplicaciones de la red LSTM. Si bien no tenemos un conocimiento completo de las funciones específicas aprendidas por cada componente, la arquitectura LSTM ha demostrado ser efectiva en la práctica en comparación con otros tipos de RNN.

La efectividad práctica de las arquitecturas LSTM radica en su capacidad para abordar el problema del gradiente de fuga y capturar dependencias a largo plazo en datos secuenciales. Al incorporar mecanismos de activación y múltiples rutas para el flujo de información, los LSTM han mostrado mejoras significativas sobre los RNN tradicionales en varias tareas de procesamiento de lenguaje natural.

La naturaleza cerrada de los LSTM les permite recordar y olvidar selectivamente información de pasos de tiempo anteriores, lo que los hace muy adecuados para modelar y generar secuencias. Las activaciones sigmoideas en las puertas LSTM controlan el flujo de información, determinando qué retener y qué descartar. Estas puertas aprenden de los datos de entrenamiento y deciden de manera adaptativa qué partes del estado oculto anterior y la entrada actual son relevantes para el paso de tiempo actual.

La capacidad del LSTM para recordar dependencias a largo plazo es particularmente crucial en el modelado del lenguaje. En la traducción de idiomas, por ejemplo, comprender el contexto de una oración requiere considerar toda la secuencia de entrada. El estado oculto en el último paso de tiempo de la codificación LSTM captura el significado general de la oración, lo que permite una traducción precisa u otras tareas posteriores.

Además, los LSTM facilitan la propagación eficiente del gradiente durante los pases hacia adelante y hacia atrás. Al preservar la información relevante y mitigar el impacto de los gradientes que se desvanecen, los LSTM permiten el entrenamiento efectivo de redes recurrentes profundas en secuencias largas. Esto se logra mediante el uso de rutas paralelas que permiten que los gradientes fluyan sin interrupciones, evitando que desaparezcan o exploten a medida que atraviesan la red.

El éxito de los LSTM en el modelado del lenguaje los ha convertido en un bloque de construcción fundamental en muchos modelos de última generación. Los investigadores y profesionales han ampliado las arquitecturas LSTM con funciones adicionales, como mecanismos de atención, atención de varios cabezales y modelos basados en transformadores. Estos avances mejoran aún más las capacidades de modelado de los LSTM, lo que les permite manejar tareas aún más complejas, como el resumen de documentos, el análisis de opiniones y la generación de diálogos.

En resumen, los LSTM han revolucionado el modelado del lenguaje al abordar las limitaciones de los RNN tradicionales. Su capacidad para capturar dependencias a largo plazo, manejar gradientes que se desvanecen y retener información relevante de manera selectiva los ha convertido en una herramienta indispensable en el procesamiento del lenguaje natural. Al aprovechar las arquitecturas LSTM, los investigadores y desarrolladores han logrado avances significativos en varias tareas relacionadas con el lenguaje, lo que ha llevado a mejorar la traducción automática, los sistemas de respuesta a preguntas y los modelos de generación de texto.

 

Transformadores y Autoatención (DL 19)



Transformadores y Autoatención (DL 19)

La arquitectura de Transformer, basada en redes neuronales, ha logrado un rendimiento de vanguardia en el modelado de lenguaje y otras tareas. Exploremos las ideas centrales detrás de Transformers, incluida su construcción a partir de bloques de autoatención y la integración de funciones de red recurrentes y residuales.

Las redes neuronales recurrentes (RNN) se destacan en el procesamiento de texto al construir gradualmente un estado oculto que representa el contenido de información de un documento. Reciben incrustaciones de palabras como entrada y pueden ser entrenados en tareas no supervisadas como predecir la siguiente palabra en una oración. Sin embargo, los RNN, incluidas las variantes de LSTM, tienen dificultades con las entradas largas debido a la necesidad de un procesamiento repetido a través de capas.

Por otro lado, las redes residuales son efectivas para manejar modelos profundos con muchas capas al utilizar conexiones residuales. Estas conexiones simplifican el entrenamiento al permitir que cada bloque mejore la entrada y permita que los gradientes se propaguen de manera más eficiente.

Las redes residuales tienen ventajas adicionales en el procesamiento de imágenes, como aprovechar la convolución dentro de los bloques residuales, lo que se alinea bien con las funciones relacionadas con la imagen. Para combinar las fortalezas de las redes recurrentes para el procesamiento de texto y las redes residuales para el aprendizaje de modelos profundos, se introdujo el Transformador.

Al igual que los RNN, un transformador opera con incrustaciones de palabras. Sin embargo, en lugar de recibir palabras de una en una, procesa todas las incrustaciones de un documento completo concatenado en una matriz. Los transformadores se pueden entrenar en tareas no supervisadas que predicen palabras faltantes, lo que da como resultado una codificación del documento utilizable para varias tareas de procesamiento de lenguaje natural.

De las redes residuales, los transformadores heredan conexiones de salto que permiten que cada bloque aumente sus predecesores, lo que simplifica el entrenamiento incluso en redes grandes. Para facilitar el procesamiento de textos, la arquitectura dentro de los bloques incorpora una idea clave llamada autoatención.

La autoatención aborda la necesidad de prestar atención a palabras distantes en una oración para comprender el significado de una palabra específica. En lugar de diseñar explícitamente una función de atención, la arquitectura de Transformer está diseñada para facilitar el aprendizaje de dicha función.

Dentro de un bloque codificador de autoatención, la incrustación de cada palabra se somete a tres capas densas: consulta (q), clave (k) y valor (v). Estas capas comparten pesos en todas las palabras, pero se aplican a diferentes elementos de la oración de entrada. Al calcular el producto escalar entre la consulta y los vectores clave, el modelo puede evaluar la similitud.

El producto escalar entre la consulta y los vectores clave de la misma palabra indica autosimilitud. Además, los productos escalares se calculan entre el vector de consulta de una palabra específica y los vectores clave de todas las demás palabras. Softmax se aplica para convertir las puntuaciones de similitud en pesos entre 0 y 1, enfatizando los vectores más similares.

Al multiplicar los pesos softmax con los vectores de valor de cada palabra, se presta atención a diferentes partes del documento. Esta suma ponderada produce un vector de salida calculado a partir de todo el documento. Este proceso se ejecuta en paralelo para todas las palabras, dando como resultado una matriz que codifica el documento en función de la atención.

Las incrustaciones de palabras originales se complementan con la información derivada de todo el documento, ponderada por la atención. Luego se aplica una capa densa regular de forma coincidente. Se pueden utilizar múltiples cabezas de atención dentro de un bloque codificador para aprender diferentes patrones de atención. La salida de todas las cabezas de atención se suma y se combina con la conexión de salto, lo que da como resultado la salida del bloque.

El mecanismo de autoatención permite que la red aprenda a qué prestar atención en cada cabeza de atención. Múltiples cabezas de atención permiten que el modelo se centre en diferentes aspectos bajo diversas circunstancias, mejorando la representación de entrada en una codificación útil del documento de texto.

Esta codificación puede procesarse aún más para la clasificación o usarse como entrada a otra red neuronal para tareas como la traducción automática. Training Transformers se centró inicialmente en la codificación de idiomas en un idioma y la decodificación en otro idioma. El entrenamiento no supervisado, similar a los RNN, también se puede realizar proporcionando documentos con palabras en blanco aleatoriamente y entrenando el modelo para predecir las palabras que faltan.

Los transformadores han revolucionado varias tareas de procesamiento del lenguaje natural y se han convertido en la arquitectura de vanguardia para el modelado del lenguaje y muchas otras aplicaciones. Profundicemos en los conceptos básicos de Transformers y exploremos cómo combinan los mejores aspectos de las redes recurrentes y residuales.

Las redes neuronales recurrentes (RNN), como LSTM, son efectivas para el procesamiento de texto porque procesan incrustaciones de palabras secuencialmente y crean un estado oculto que representa el contenido de información de un documento. Los RNN pueden capacitarse en tareas no supervisadas, como predecir la siguiente palabra en una oración utilizando datos fácilmente disponibles. Sin embargo, los RNN tienden a tener problemas con entradas largas debido a la necesidad de pasar datos a través de múltiples capas repetidamente.

Por otro lado, las redes residuales se destacan en el manejo de modelos profundos al utilizar conexiones residuales, lo que simplifica el entrenamiento y permite que los gradientes se propaguen de manera eficiente. En el procesamiento de imágenes, las redes residuales aprovechan la convolución dentro de los bloques residuales, lo que ofrece una ventaja para funciones relevantes para el análisis de imágenes. El objetivo es combinar las ventajas de las redes recurrentes en el procesamiento de texto con los beneficios de aprender modelos profundos de redes residuales.

Esto nos lleva a la arquitectura Transformer. Al igual que las redes recurrentes, los transformadores operan con incrustaciones de palabras. Sin embargo, a diferencia de las redes recurrentes que procesan las palabras de una en una, los transformadores reciben las incrustaciones de un documento completo concatenado en una matriz, donde cada fila representa la incrustación de una palabra diferente. Los transformadores se pueden entrenar en tareas no supervisadas, como predecir palabras que faltan, para generar codificaciones de documentos para varias tareas de procesamiento de lenguaje natural.

De las redes residuales, los transformadores heredan las conexiones de salto, lo que garantiza que cada bloque solo necesite aumentar sus predecesores y permite que los gradientes se propaguen de manera efectiva incluso en redes grandes. Para facilitar el procesamiento de texto, Transformers emplea una arquitectura distinta dentro de los bloques, conocida como autoatención.

La autoatención es la idea de que para comprender una palabra en una oración, debemos prestar atención a otras palabras que pueden estar distantes en la oración. La arquitectura no está diseñada explícitamente con una función de atención específica; en cambio, está diseñado para facilitar el aprendizaje de tales funciones.

En un bloque codificador de autoatención, la incrustación de cada palabra se somete a tres capas densas denominadas consulta, clave y valor. Estas capas se comparten en todas las palabras, pero se aplican a diferentes elementos de la oración de entrada. Al tomar el producto escalar entre la consulta y los vectores clave, podemos evaluar la similitud. Los productos escalares más grandes indican vectores que apuntan en direcciones similares, mientras que los productos escalares más pequeños indican vectores que apuntan en direcciones diferentes.

Para una palabra determinada, calculamos el producto escalar entre su vector de consulta y los vectores clave de todas las demás palabras. Esto produce un vector de puntuaciones de similitud, que representa la similitud del vector de consulta con cada vector clave. La aplicación de softmax a estos puntajes los convierte en valores entre 0 y 1, enfatizando los vectores más similares. Los pesos softmax resultantes sirven como multiplicadores en los vectores de valor para todas las palabras del documento.

Cada vector de valor se multiplica por elementos con su peso softmax correspondiente, creando una suma ponderada que representa la atención de la palabra a otras palabras. Este proceso se aplica en paralelo para cada palabra, generando un vector de salida calculado a partir de todo el documento, ponderado según la atención prestada a cada palabra. Luego, esta información se agrega a la palabra incrustada original.

Para producir la salida de una cabeza de atención, se aplica una capa densa regular de forma coincidente. Se pueden usar múltiples cabezas de atención dentro de un bloque codificador, lo que permite que la red aprenda diferentes patrones de atención en diferentes contextos. La salida de todos los cabezales de atención se combina y se suma a la conexión de salto, lo que da como resultado la salida del bloque.

Al igual que las capas convolucionales que usan múltiples canales, los transformadores a menudo emplean múltiples cabezas de atención dentro de un bloque codificador para capturar diferentes patrones de atención. Esto permite que la red aprenda y combine varios cálculos de atención, aumentando la representación de entrada en una codificación útil del documento de texto.

Una vez que se produce la codificación, se puede utilizar para varias tareas. Por ejemplo, se pueden aplicar capas adicionales para la clasificación, o la codificación puede servir como entrada a otra red neuronal para tareas como la traducción automática. Inicialmente, la formación de Transformer se centró en la codificación en un idioma y la decodificación en otro. El entrenamiento no supervisado también se puede realizar borrando aleatoriamente palabras en documentos y entrenando el modelo para predecir las palabras que faltan.

Para tener en cuenta el orden de las palabras y la proximidad, los transformadores incorporan codificación posicional. Esta información adicional se agrega a las incrustaciones de palabras y permite que el modelo comprenda las posiciones relativas de las palabras en el documento.

Los transformadores son una arquitectura poderosa para tareas de procesamiento de lenguaje natural. Al combinar las fortalezas de las redes recurrentes y residuales, han logrado resultados de vanguardia en diversas aplicaciones. El mecanismo de autoatención permite que el modelo aprenda a qué palabras prestar atención, y múltiples cabezas de atención capturan diferentes patrones de atención. Los transformadores han avanzado significativamente en el campo del modelado del lenguaje y continúan siendo un área activa de investigación y desarrollo.

 

Otras Métricas y la Curva ROC (DL 20)



Otras Métricas y la Curva ROC (DL 20)

Esta es una breve conferencia sobre métricas alternativas para medir el éxito en tareas de clasificación binaria cuando se utilizan redes neuronales.

En una tarea de clasificación binaria, normalmente tenemos dos nodos de salida en nuestra red neuronal y nuestros vectores objetivo son [1, 0] o [0, 1]. Al decodificar la salida de la red a una etiqueta de categoría, hay cuatro resultados posibles:

  1. Verdadero positivo: el objetivo es [1, 0] y la salida decodificada está de acuerdo.
  2. Falso negativo: el objetivo es [1, 0], pero la salida decodificada lo etiqueta incorrectamente como [0, 1].
  3. Verdadero negativo: el objetivo es [0, 1] y la salida decodificada está de acuerdo.
  4. Falso positivo: el objetivo es [0, 1], pero la salida decodificada lo etiqueta incorrectamente como [1, 0].

Estos resultados se pueden utilizar para calcular diferentes métricas para evaluar el rendimiento del modelo en la clasificación binaria. Aquí hay algunas métricas alternativas a considerar:

  1. Precisión: la fracción de puntos de datos que el modelo etiqueta correctamente como positivos de todos los puntos de datos etiquetados como positivos.
  2. Sensibilidad o recuperación: la fracción de puntos de datos que deberían haberse etiquetado como la primera categoría que el modelo identifica correctamente como tal.
  3. Especificidad: la fracción de puntos de datos que deberían haberse etiquetado como la segunda categoría o categoría negativa que el modelo identifica correctamente como tal.

La precisión, que mide la fracción total de etiquetas correctas, puede no ser siempre la métrica más informativa. Diferentes situaciones, como la importancia de los falsos positivos o los falsos negativos, pueden requerir un enfoque en métricas específicas. Además, la distribución de etiquetas positivas y negativas en el conjunto de datos puede influir en gran medida en la precisión.

Para comprender las compensaciones entre las métricas, es común visualizarlas utilizando técnicas como la curva de características operativas del receptor (ROC). La curva ROC traza la tasa de falsos positivos frente a la tasa de verdaderos positivos para diferentes umbrales de clasificación.

Al considerar las compensaciones entre falsos positivos y falsos negativos y analizar la curva ROC, podemos elegir el modelo y la métrica de evaluación más adecuados en función de los requisitos específicos de nuestro problema.

En lugar de confiar únicamente en la precisión, es importante considerar la importancia relativa de los falsos positivos y los falsos negativos, y cómo funcionan los diferentes modelos en este sentido. Por lo tanto, cuando trabaje en su proyecto, es recomendable evaluar las compensaciones entre las métricas y considerar las implicaciones para su problema específico en lugar de confiar únicamente en la precisión general.

Comprender las compensaciones entre diferentes métricas es crucial al evaluar modelos de aprendizaje automático. En ciertos escenarios, la precisión puede no proporcionar una imagen completa del rendimiento de un modelo, especialmente cuando los falsos positivos y los falsos negativos tienen diferentes niveles de importancia. Exploremos algunos casos donde las métricas alternativas son más apropiadas:

  1. Importancia de los falsos positivos y los falsos negativos: en dominios como el diagnóstico médico, las consecuencias de los falsos positivos y los falsos negativos pueden variar significativamente. Por ejemplo, en la detección del cáncer, un falso negativo (omitir un caso positivo) puede tener implicaciones graves, mientras que un falso positivo (diagnosticar incorrectamente un caso negativo) puede dar lugar a tratamientos innecesarios. En tales casos, métricas como la precisión y la recuperación/sensibilidad pueden ofrecer información valiosa sobre el rendimiento de un modelo.

  2. Datos desequilibrados: cuando las etiquetas positivas y negativas están distribuidas de manera desigual en el conjunto de datos, la precisión puede ser engañosa. Suponga que el 95% de los puntos de datos pertenecen a la clase positiva. En ese caso, un modelo que simplemente prediga todo como positivo lograría una alta precisión del 95 % sin aprender realmente los patrones subyacentes. Las métricas como la precisión y la recuperación pueden ayudar a abordar el sesgo y centrarse en el rendimiento del modelo en cada clase.

  3. Compensación de precisión y recuperación: los modelos de aprendizaje automático a menudo exhiben una compensación entre precisión y recuperación. La precisión mide la capacidad de identificar correctamente los ejemplos positivos, mientras que la memoria mide la capacidad de capturar todos los ejemplos positivos. Al ajustar el umbral del modelo o el límite de decisión, podemos priorizar la precisión o la recuperación. Sin embargo, cambiar el umbral para mejorar una métrica a menudo se produce a expensas de la otra. Comprender esta compensación es importante al seleccionar la métrica adecuada para un problema determinado.

  4. Curva característica operativa del receptor (ROC): la curva ROC proporciona una representación gráfica del rendimiento de un modelo de clasificación binaria mediante el trazado de la tasa de falsos positivos frente a la tasa de verdaderos positivos en varios umbrales de clasificación. Un modelo que logra altas tasas de verdaderos positivos con bajas tasas de falsos positivos tendrá una curva más cerca de la esquina superior izquierda, lo que indica un mejor rendimiento. El área bajo la curva ROC (AUC-ROC) se usa comúnmente como una métrica de resumen, con valores más cercanos a 1 que indican un mejor rendimiento.

Los diferentes modelos de aprendizaje automático pueden tener diferentes compensaciones entre sensibilidad y especificidad o precisión y recuperación. Es importante considerar los requisitos específicos del problema y la importancia relativa de las diferentes métricas. Al evaluar estas compensaciones y comprender cómo funcionan los modelos en varias métricas, podemos tomar decisiones más informadas y elegir el modelo más adecuado para nuestra aplicación.

En su proyecto, considere las compensaciones entre falsos positivos y falsos negativos y seleccione métricas que se alineen con los objetivos del problema. En lugar de confiar únicamente en la precisión, tenga en cuenta las necesidades específicas y las implicaciones de su tarea para evaluar y comparar con precisión el rendimiento de diferentes modelos.

 

El Adam Optimizer (DL 21)



El Adam Optimizer (DL 21)

El objetivo de esta conferencia es demostrar cómo podemos abordar las debilidades del descenso de gradiente estocástico (SGD) e introducir el optimizador Adam, que ha sido ampliamente utilizado para entrenar redes neuronales.

En SGD, actualizamos cada peso en la red neuronal restando el producto de la tasa de aprendizaje y la derivada parcial de la pérdida con respecto a ese peso para cada lote en el que entrenamos. Este proceso da pasos en la dirección del gradiente negativo de la pérdida, minimizándolo gradualmente. Sin embargo, SGD puede encontrar varios modos de falla que dificultan su efectividad.

Para ilustrar estos problemas, comenzamos con un ejemplo unidimensional donde nuestro objetivo es minimizar la pérdida. En este caso, SGD nos lleva cuesta abajo siguiendo la dirección de la pendiente, acercándonos gradualmente al mínimo. Sin embargo, hay escenarios en los que SGD no resulta útil. Si alcanzamos un mínimo local, donde el gradiente es cero, no nos alejaremos de ese punto. De manera similar, estar en una meseta de la función de pérdida, donde el gradiente también es cero, impide el progreso. Aunque la estocasticidad del entrenamiento en diferentes lotes a veces puede ayudar a escapar de los mínimos o mesetas locales, no resuelve completamente estos problemas.

En problemas de optimización de dimensiones superiores, como el entrenamiento de redes neuronales con múltiples dimensiones de peso, surgen desafíos adicionales. Los puntos de silla, donde hay mínimos y máximos locales en diferentes direcciones, pueden hacer que el gradiente sea cero, lo que ralentiza el aprendizaje. Además, las discrepancias en las escalas de las derivadas parciales en diferentes dimensiones pueden provocar un comportamiento en zigzag durante el descenso del gradiente, lo que provoca un exceso y una convergencia más lenta.

El optimizador de Adam aborda estos problemas con dos ideas clave. El primero es el impulso, que favorece continuar en la misma dirección cuando se han dado varios pasos en esa dirección. Momentum ayuda a superar las mesetas y puede alejar el algoritmo de los puntos de inflexión. La segunda idea consiste en mantener una media móvil de las derivadas parciales y las derivadas parciales al cuadrado. Estimando el segundo momento (varianza) de las derivadas parciales, podemos normalizar los pasos dados en cada dimensión, reduciendo el zigzag y el overshooting.

La regla de actualización de Adam reemplaza el término de derivada parcial en la actualización de peso con el promedio móvil de la derivada parcial (v) dividido por la raíz cuadrada del promedio móvil de la(s) derivada(s) parcial(es) al cuadrado, junto con una pequeña constante (épsilon) para evitar la división por cero. Esta regla de actualización garantiza pasos más equilibrados en todas las dimensiones y ha demostrado ser más eficaz que Vanilla SGD para entrenar redes neuronales.

El optimizador de Adam aborda las limitaciones de SGD incorporando impulso y manteniendo promedios móviles de las derivadas parciales. Estas modificaciones mejoran la capacidad del optimizador para navegar por mínimos locales, mesetas y puntos de silla mientras reducen el comportamiento en zigzag y el exceso. Como resultado, Adam se ha convertido en una opción popular para entrenar redes neuronales en la práctica.

 

Codificadores automáticos (DL 22)



Codificadores automáticos (DL 22)

En muchos escenarios de aprendizaje profundo, a menudo nos encontramos con la idea de entrenar una red neuronal en un conjunto de datos y usar una capa oculta de esa red para codificar datos que se pueden aplicar a otros problemas o conjuntos de datos. Este concepto se conoce como transferencia de aprendizaje. Por ejemplo, con redes residuales, el entrenamiento previo implica aprender técnicas útiles de procesamiento de imágenes que luego se pueden aplicar a diferentes conjuntos de datos. Al descartar las capas de salida del modelo preentrenado y agregar nuevas capas de salida para una nueva tarea, esencialmente creamos una nueva red que procesa los datos codificados producidos por el modelo preentrenado.

Las incrustaciones de palabras también sirven para la codificación de datos, donde el objetivo es aprender una representación que capture información significativa en las capas ocultas. Esta idea se extiende a varios otros contextos también. Un modelo notable que adopta este concepto es el codificador automático. Un codificador automático se entrena con datos no supervisados, donde los datos de entrada y los datos de salida son los mismos. Si bien puede parecer trivial resolver este problema de regresión mediante la regresión lineal, el objetivo principal de un codificador automático es aprender una representación más compacta en sus capas ocultas.

Al reducir progresivamente el tamaño de las capas ocultas, el codificador automático obliga a la red a aprender representaciones comprimidas de los datos de entrada. Si la red puede reproducir consistentemente la entrada original de esta representación comprimida, aprende efectivamente la compresión de datos. Por ejemplo, si tenemos una imagen de 200x200 píxeles como entrada y la reducimos a una capa oculta de 1000 neuronas, que luego puede volver a expandirse para reproducir una aproximación cercana a la imagen original, logramos una relación de compresión de 20:1.

Sin embargo, el uso de una red neuronal únicamente para la compresión de datos no es particularmente útil, ya que existen algoritmos de compresión más eficientes que no se basan en el aprendizaje. En cambio, el valor de un codificador automático radica en usar la primera mitad de la red para generar una representación para transferir el aprendizaje en otras tareas de aprendizaje profundo o la segunda mitad como decodificador para generar ejemplos de datos a partir del conjunto de entrada.

La aplicación inicial de un codificador automático para el aprendizaje por transferencia fue prominente en los primeros días del aprendizaje profundo. Sin embargo, desde entonces se han desarrollado mejores enfoques para transferir el aprendizaje. Por otro lado, utilizar la parte del decodificador de la red para generar muestras de datos se convirtió en la base de muchos otros algoritmos de aprendizaje profundo.

El enfoque más simple consiste en lograr la máxima compresión posible minimizando el tamaño de la capa oculta. En este escenario, cualquier vector de entrada razonable dado al decodificador debería generar datos que se asemeje a la distribución de los datos de entrada. Sin embargo, determinar el tamaño óptimo de la capa oculta es un desafío. Puede ser demasiado pequeño, lo que lo hace incapaz de reproducir las entradas con precisión, o demasiado grande, lo que da como resultado la generación de datos poco realistas que no se parecen al conjunto de datos original.

Para abordar este problema, podemos modificar la arquitectura para alentar al codificador automático a aprender representaciones que se asemejan a vectores muestreados aleatoriamente. Esta modificación nos lleva al autocodificador variacional. En un codificador automático variacional, el vector oculto central se reemplaza con dos vectores que representan la media y la varianza. El proceso de entrenamiento implica generar un vector aleatorio utilizando una distribución normal, que luego se combina con los vectores de codificación ocultos para crear la entrada para el decodificador. Además, la pérdida para la red del codificador incluye un término de divergencia que fomenta que la media y la varianza permanezcan cerca de una distribución normal. Esto ayuda a agrupar las representaciones alrededor del centro del espacio, haciéndolo más confiable para el muestreo aleatorio. Por lo tanto, el codificador automático variacional nos permite generar muestras que se asemejan mucho a la distribución de datos aprendida por la red.

En resumen, el concepto de usar la capa oculta de una red neuronal como codificación de datos ha evolucionado hacia la capacidad de muestrear a partir de una distribución de probabilidad aprendida. Esto abre las puertas a redes adversarias generativas y a la generación de datos diversos e interesantes.