Hola!

Resumen: En los últimos 4 años el mundo del NLP ha avanzado pasos exponenciales, una suerte de Ley de Moore pero en NLP. Los grandes quiebres quizás dados por el aumento del poder de computo, y por el surgimiento de los mecanismos de atención. En este post se mencionan muy brevemente hitos, links y cosas de interés para que el lector siga profundizando

[Disclaimer]: Esto es un trabajo y estudio en proceso, por lo cual hay mas probabilidad de que algunos puntos no sean tan exactos.


Quiero arrancar esta historia hablando de secuencias, historia arranca con la predicción de secuencias, concretamente entra una secuencia y se predice otra secuencia. A estos modelos se los llama seq2seq. De hecho hay un caso más simple, en el que entra una secuencia y sale solo un valor: Una serie de tiempo.



Debido a un problema conocido como desvanecimiento del gradiente (gradient vanishing), se desarrollaron un tipo especial de redes llamadas LSTM (Fuente de la img: http://karpathy.github.io/2015/05/21/rnn-effectiveness/), acrónimo super cool de: long short-term memory. Son super viejas, en este mundo del aprendizaje profundo.

Acá tendrían que aparecer preguntas como: ¿Qué es un gradiente? ¿qué es esto del desvanecimiento? (al mejor estilo Spiderman en The Avengers).

Cuando las secuencias son largas, casi típico de texto, tenemos el problema de que la red se va olvidando lo que vió, esto es por como funciona el algoritmo de aprendizaje. Igual no es algo malo per-se, a veces está bueno olvidar, y a veces no.

Las redes LSTM habían presentado resultados prometedores generando texto, traduciendo, y prediciendo secuencias en general. Hace un tiempo pude crear un modelo LSTM que predecía MUY dignamente el path navigation de los usuarios en un sitio web. Algo realmente caótico. Basado en una secuencia de clicks, el modelo era capaz de predecir los próximos clicks. Había cosas obvias, como los tutoriales que se dividían en partes. Lo cual era un lindo sanity check de que las cosas andaban bien, y luego otros casos no tan obvio. De acá pude sacar varias conclusiones interesantes, y mezcla entre lo técnico de crear una red y la validación del negocio.

Luego de las LSTM, apareció un paper cuyo nombre seguramente salió inspirado en los beatles: "Attention is all you need" (link). Y fue un boom! Eso pasó hace tanto tiempo! ...2017.

Y acá no sólo aparece la keyword que tenemos que tener presentes como "attention" (valga la redundancia semántica), sino que también el concepto de Transformers (Img: http://jalammar.github.io/illustrated-transformer/), y no, no son los de las películas. En el cual la arquitectura puede aprender a prestar atención de forma auto-supervisada.



Más allá de que suena re cool, anda, estuve haciendo pruebas con un modelo, también viejo, llamado GPT-2 (openai), y el resultado me dejó sorprendido, pueden probarlo acá: https://talktotransformer.com/.

Traté de romperlo/engañarlo, y fue al reves! Me dejó pensando las cuestiones filosóficas que me respondia. Les comparto una de las capturas de pantalla.

Uno de los ejemplos que corrí. Busqué si la red había memorizado cosas, y no...

Me saltee en la historia que luego de la introducción de los transformers, apareció, google de nuevo, con otra arquitectura llamada BERT, ¿lo novedoso? Son bi-direccionales, algo así como que el texto de entrenamiento va de izquierda a derecha, y de derecha a izquierda. #MindBlowing.

En el medio, salieron otras arquitecturas, otros creadores. Otra que llegué a usar y me encantó es la que desarrolló fastai: ULMFiT (https://nlp.fast.ai/). Este modelo, si no me equivoco, introdujo el fine-tuning para NLP. Algo que todos decian "nonono" y ellos dijeron "ah no? mira!" También Microsoft hizo la suya propia: https://www.microsoft.com/en-us/research/blog/turi...


Bueno ya el post es muy largo, pero quiero mencionar que el concepto de ajuste fino ó fine-tuning es algo que se busca con algunas de estas redes. Básicamente es tener un language modelo que conoce la semántica del lenguaje, digamos puede predecir la siguiente palabra, y le damos un texto cortito y se modifican los pesos de las capas "más de arriba". Las que están más cerca de la predicción. Al hacer esto el modelo habla más parecido al texto que le pasamos.

Hace unos meses Junto a Pablo Zivic hicimos un post doble en colaboración: "Tutorial on SPAM detection using fastai ULMFiT - Part 1: Language Model", usando google colab: https://colab.research.google.com/drive/1fuJg9Tyfs...
¿Mencione https://huggingface.co?

Si, me estoy olvidando muchas cosas como ser gráficos, GPT-3 (y el procesamiento paralelizable), Pegasus, symbolic reasoning (que #nombrecool!), ¿hablas español? > Beto, y el iGPT que predice pixels y completa imagenes...  etc^8!

---

Si te gustó el post compartilo con tu amiga/o mas nerd 🤓 ¿Faltó algún modelo tenés dudas y queres comentarlo?


Esto es todo... Relax.




Empezá a aprender lo básico de Deep Learning con nuestro curso gratuito: