Los Modelos de Aprendizaje Automático más Potentes Explicados (Transformers, CNN, RNN, GAN …)
Potentes Modelos de Aprendizaje Automático Explicados (Transformers, CNN, RNN, GAN ...)

El Aprendizaje Automático es un campo enorme, y es comprensible que sea difícil encontrar una fuente que dé una visión general de los modelos y técnicas que están en la vanguardia de la tecnología en este momento. Dicho esto, este artículo será más una exploración conceptual que un análisis científico concreto de cada uno de estos modelos. De hecho, recomiendo profundizar en cada uno de ellos si es posible. También me gustaría proporcionar ejemplos de dónde se utilizan estos modelos, ya que, en mi opinión, la teoría siempre debe estar ligada a la práctica. Si me falta alguna información, no dudes en proporcionar comentarios y solicitar más.
Antes de comenzar, aquí está la lista de los modelos que se cubrirán.
- CNNs (Redes Neuronales Convolucionales)
- RNNs (Redes Neuronales Recurrentes)
- Transformers
- GANs (Redes Generativas Adversarias)
CNNs
Una CNN (Red Neuronal Convolucional) es un tipo de red neuronal que funciona muy bien con datos topológicos y se modifica de alguna manera para ser mejor en la detección de patrones. Entonces, ¿cómo es diferente? Bueno, para empezar, permíteme darte una breve descripción general de lo que es una red neuronal.
Una red neuronal, en resumen, es un “mapa” de nodos que procesa datos de entrada y produce una salida. Consiste en capas que mapean un conjunto de nodos en otro, propagando y transformando la entrada en un resultado. La propagación se realiza a través de pesos, que son los valores que cambian nuestra entrada en cada paso de propagación para producir el resultado deseado. Después de cada paso de propagación, se aplica un sesgo. Los pesos y sesgos son lo que realmente buscamos: son los números que se modifican al entrenar la red.
- Investigadores de Princeton presentan MeZO un optimizador de orden ...
- 7 Proyectos para Principiantes para Empezar con ChatGPT
- Identificando imágenes generadas por IA con SynthID

¿Cómo es especial una CNN? Bueno, lo que diferencia a una CNN es que utiliza capas de convolución en su pila de capas. Esto no quiere decir que una CNN no pueda tener otros tipos de capas (normalmente las tiene), pero la convolución la hace especial. Así es como funciona esta capa.
Si imaginas que cada píxel de tu imagen es un valor de brillo, tu imagen se convierte en una matriz 2D de números. La convolución tomará esta matriz y producirá una matriz de salida aplicando un núcleo a ella. Un núcleo es simplemente una matriz más pequeña que actúa como un filtro para cada área de tu imagen.
La matriz más pequeña “avanza” a través de la matriz más grande de la imagen para producir una matriz de salida.

Aquí hay algunas ideas clave:
- El núcleo se aplica de alguna manera a cada píxel de la imagen y su área circundante, pero se mantiene igual en todo momento. Esto se debe a que un núcleo está diseñado para detectar un patrón o característica dentro del área de ese píxel.
- Los núcleos suelen ser considerablemente más pequeños que la propia imagen, lo que ayuda mucho con el entrenamiento.
- La idea detrás de los núcleos es que cualquier imagen es solo un conjunto de patrones que podemos descomponer. Por ejemplo, supongamos que tenemos una cara. Imagina que hay un núcleo que puede detectar círculos. Su salida contendrá 2 puntos brillantes cerca de la parte superior de la imagen (los ojos que detectó). Ahora imagina que hay otro que puede detectar dos líneas cercanas entre sí. La salida tendrá un punto brillante cerca de la parte inferior (la boca que detectó). Finalmente, imagina que el último núcleo aplicado puede detectar esta formación de 2 círculos y las 2 líneas inferiores. Bueno, entonces reconocería la cara.
- Una capa de convolución puede tener varios de estos núcleos aplicados para producir múltiples imágenes nuevas. Estas se apilan y se alimentan hacia adelante en la red. Luego, otra capa de convolución tendría otro conjunto de núcleos que se aplicarían.
- Las CNNs suelen contener también capas de agrupamiento que reducen el tamaño y la complejidad de la imagen.
Obviamente, hay mucho más detalle y matemáticas que omití aquí, pero la intuición principal detrás de las CNN se encuentra en el núcleo.
Algunas herramientas y productos populares que utilizan CNNs incluyen Google Photos, AlphaGo de DeepMind y los sistemas de Autopilot de Tesla.
RNNs
Como has visto, las CNNs se utilizan principalmente para el procesamiento de imágenes. Por otro lado, las RNNs se utilizan principalmente para el procesamiento de lenguaje natural (NLP) y otros dominios como el análisis de series temporales. Para comprender la arquitectura detrás de las RNNs, primero resaltemos algunos problemas al usar una red neuronal simple para NLP. Veamos un problema estándar de NLP: el autocompletado de texto. La entrada a nuestro modelo es un fragmento de texto y la salida es otro fragmento de texto. El problema es que nuestra entrada es de tamaño variable (puede ser de pocas palabras o muchas palabras), y las redes neuronales simples suelen tener un tamaño de entrada fijo. El otro problema es capturar las relaciones complejas entre las palabras de nuestra entrada para producir la salida correcta. Recuerda, hay miles de palabras en el idioma inglés, y el orden de estas palabras en una oración no necesariamente cambia el significado. Entonces, ¿cómo aseguramos que la oración “El gato esponjoso vino aquí el domingo” sea similar a “El domingo, el gato que era esponjoso vino aquí”, pero diferente de “El domingo vino aquí en un gato esponjoso”?
La intuición detrás de las RNNs proviene de cómo fluye la información a través de ellas. Tomemos una oración como ejemplo y veamos cómo una RNN la procesaría: “El gato come”.
Veamos la oración como una secuencia de palabras: “El”, “gato” y “come” (en realidad, probablemente se representaría como una secuencia de números o vectores). La RNN ahora procesará esta secuencia… secuencialmente (de ahí viene la parte “Recurrente” del nombre). Primero, tomará la palabra “El” y producirá alguna salida x1 al pasar “El” a través de su propio conjunto de pesos y sesgos. Luego, tomará x1 y la siguiente palabra en la secuencia – “gato”, para pasarla a través del mismo conjunto de pesos y sesgos y obtener la siguiente salida x2. Luego, tomará x2 y la siguiente palabra en la secuencia – “come”, para obtener la siguiente salida x3. De esta manera, puedes ver cómo la RNN toma su salida anterior y la siguiente entrada para producir una nueva salida. El estado “actual” de la RNN se llama estado oculto. Aquí hay una animación que podría ayudarte a desarrollar esta intuición a partir de un excelente artículo escrito por Michael Phi.

¿Cómo se puede utilizar esto para predecir la siguiente palabra después de hacer una pregunta? Bueno, imagina que cada salida – x1, x2, x3 – representa en realidad una nueva palabra. Podemos entrenar la red de manera que la salida sea una predicción de la palabra que viene a continuación. Entonces, volvamos a ver nuestra oración siendo procesada nuevamente.
“El” -> Pasado por nuestro modelo -> produce x0, entrenamos nuestro modelo de manera que x0 pueda extrapolarse correctamente a “gato”
“gato” y la salida anterior x0 -> Pasado por nuestro modelo -> produce x1, después de entrenar x1 puede extrapolarse correctamente a “come”
“come” y la salida anterior x1 -> Pasado por nuestro modelo -> produce x2. ¡Descubrimos que x2 ahora representa la palabra “atún”! Podemos usar esto para nuestra siguiente “entrada”
“atún” y la salida anterior x2 -> Pasado por nuestro modelo -> produce x3… Y así sucesivamente
La intuición principal detrás de las RNNs se encuentra en el hecho de que
- Las RNNs siempre mantienen un registro de lo que se ha visto anteriormente a través de este estado oculto y capturan las relaciones entre las palabras, o cualquier dato secuencial en cuestión.
- El mismo modelo se aplica a cada parte de la secuencia de manera recurrente, lo que hace que las RNNs sean factibles de entrenar (a diferencia de tener un modelo enorme que procese toda la entrada de una vez)
Aquí probablemente ya puedes vislumbrar algunos problemas con este enfoque. Una vez que el texto se vuelve largo, nuestras primeras palabras apenas contribuyen al estado oculto actual, lo cual no es ideal. Además, nos vemos obligados a hacer este procesamiento de forma secuencial, por lo que tanto nuestra velocidad de procesamiento como de entrenamiento están limitadas por el propio algoritmo.
Aún así, hay mucho más en estos modelos poderosos, ¡así que te animo a profundizar!
Algunas herramientas y productos populares que utilizan RNN incluyen Google Translate, GPT2 de OpenAI y el sistema de recomendación de Spotify.
Transformers
¡Transformers! La furia actual del mundo del aprendizaje automático. Tanto GPT4 como BERT (el propio modelo de lenguaje avanzado de Google) se basan en la arquitectura de transformadores. Entonces, ¿de qué se trata?
Bueno, los transformadores se utilizan principalmente en problemas de procesamiento del lenguaje natural (NLP), al igual que las RNN, por lo que deben resolver problemas similares relacionados con el procesamiento del lenguaje que describí anteriormente. Sin embargo, hay algunas ideas clave que los mitigan de manera diferente a las RNN.
- Codificación posicional: mientras que la importancia de la secuencia en el lenguaje se conserva naturalmente en las RNN a través de sus estados ocultos, los transformadores incorporan esta información directamente en la entrada. Las codificaciones posicionales se agregan a las incrustaciones de palabras (representaciones vectoriales de palabras), asegurando que se capture la posición de cada palabra en una oración. Entonces, la representación de “perro” se modifica en función de su posición en el texto.
- Tamaño enorme del conjunto de datos de entrenamiento: para aprovechar el beneficio de las codificaciones posicionales, los transformadores deben ser entrenados en conjuntos de datos enormes. Estas diferencias en el orden de las palabras se capturan en los datos, por lo que sin ver todo tipo de posibilidades diferentes en cuanto al orden y el tipo de palabra, el modelo funcionará de manera subóptima.
- Autoatención: el modelo aprende a “prestar más atención” a ciertas palabras y a cómo se relacionan con todas las demás palabras de la entrada. Después de todo, algunas palabras llevarán mucho más significado y poder en la predicción o traducción, especialmente si se agrupan con otras. ¿Cómo aprende a hacer esto? Nuevamente, a través del enorme tamaño del conjunto de datos de entrenamiento y su arquitectura.
La arquitectura detrás de los transformadores es un poco más compleja y difícil de explicar en un artículo tan corto. Aún así, intentaré pintar una imagen de alto nivel para ti. Los transformadores están compuestos por decodificadores y codificadores. El codificador consiste en una pila de capas idénticas cuyo objetivo es procesar el texto y proporcionar una entrada para el decodificador que capturará la información más importante del texto. El papel del decodificador es tomar esta entrada y producir la salida que deseamos, en un proceso similar con una pila de capas idénticas. A continuación se muestra una figura que muestra esta arquitectura, con un excelente artículo (de Ketan Doshi) vinculado que amplía este tema.

Recomiendo encarecidamente profundizar en este tema y especialmente en el mecanismo de “autoatención”, que está en el corazón de los transformadores.
GANs
GANs (Redes Generativas Adversarias) se basan fundamentalmente en dos modelos opuestos que compiten entre sí. GAN se refiere más a menudo al método de aprendizaje para entrenar estos modelos, en lugar de los propios modelos. De hecho, la arquitectura de los dos modelos no es demasiado importante para el concepto en sí, siempre y cuando uno sea generativo y el otro sea un clasificador.
Comencemos describiendo la técnica estándar de aprendizaje supervisado para entrenar modelos.
- Alimentamos algún tipo de entrada a nuestro modelo y este produce alguna salida
- Comparamos esta salida con la salida deseada y actualizamos el modelo de alguna manera para que mejore
Sin embargo, surge un problema cuando queremos crear un modelo que genere una salida realista que no necesariamente tenga que ser idéntica a cualquier tipo de salida que tengamos (piensa en la generación de imágenes o música). Aquí es donde entran en juego las GAN. En una GAN tenemos dos modelos, el modelo generador y el modelo discriminador.
Como ejemplo, tomemos un modelo generador que produce imágenes. Comenzamos incitando a este modelo a producir una serie de imágenes falsas y luego también encontramos algunas imágenes reales. Luego alimentamos una combinación de todas estas imágenes en nuestro modelo discriminador que las clasifica como reales o falsas. Si nuestro modelo generador lo hace bien, el modelo discriminador se confunde y obtendrá la respuesta correcta aproximadamente la mitad del tiempo. Obviamente, esto no será así al principio (nuestro discriminador generalmente está preentrenado ligeramente), por lo que de manera similar a un aprendizaje supervisado (nosotros mismos sabemos qué imágenes son reales o falsas), entrenamos al modelo discriminador para que lo haga mejor la próxima vez. También podemos entrenar al modelo generador, ya que sabemos qué tan bien pudo engañar al modelo discriminador. El entrenamiento se realiza cuando podemos generar imágenes que engañan al modelo discriminador aproximadamente el 50% del tiempo.

Algunos ejemplos de GANs siendo utilizados en el mundo real son Runway ML, generación de arte de Midjourney (¡echa un vistazo a mi artículo anterior sobre arte!) y DALL * E de OpenAI.