¡Hola compañer@s entusiastas de NLP!
Como la carrera hacia la búsqueda de redes neuronales deja a disposición de los desarrolladores cada vez mejores herramientas, he pensado que podría ser un buen momento para obtener una visión general de los progresos realizados a lo largo de los años. ¡Que lo disfrutéis! 😄
Descargo de responsabilidad: Este artículo no es una lista completa de la investigación realizada en NLP, ¡que difícilmente cabría incluso en varios libros! Se trata más bien de una visión personal de algunos de los modelos que han influido en la investigación del campo. Intentaré hacerlo sencillo y no simplista en la medida de lo posible, por lo tanto, te invito a que tomes este artículo como punto de partida para profundizar en el campo.
Dicho esto, ¡aquí está la lista de modelos!
Tabla de contenidos
➡️ Bag of Words (BOW) [1954]:
Cuenta las apariciones de cada palabra en los documentos y las utiliza como características.
➡️ TF-IDF [1972]:
Las puntuaciones de BOW se modifican para que las palabras raras tengan puntuaciones altas y las comunes, puntuaciones bajas.
➡️ Word2Vec [2013]:
Cada palabra se asigna a un vector de alta dimensión llamado incrustación de palabras, que captura su semántica. Las incrustaciones de palabras se aprenden mediante una red neuronal que busca correlaciones de palabras en un gran corpus.
➡️ RNN [1986]:
Las RNN calculan las incrustaciones de documentos aprovechando el contexto de las palabras en las frases, lo que no era posible con las incrustaciones de palabras solamente. Más tarde evolucionó con LSTM [1997] para capturar las dependencias a largo plazo, y con RNN bidireccionales [1997] para capturar las dependencias de izquierda a derecha y de derecha a izquierda. Finalmente, surgieron las RNN codificadoras-decodificadoras [2014], en las que una RNN crea una incrustación de documentos (es decir, el codificador) y otra RNN la decodifica en texto (es decir, el decodificador).
➡️ Transformer [2017]:
Modelo codificador-decodificador que aprovecha los mecanismos de atención para calcular mejores incrustaciones y alinear mejor la salida con la entrada.
➡️ BERT [2018]:
Transformador bidireccional preentrenado mediante una combinación de objetivos de Modelado de Lenguaje Enmascarado y Predicción de la Siguiente Frase. Utiliza la atención global.
➡️ GPT [2018]:
El primer modelo autorregresivo basado en la arquitectura de Transformer. Posteriormente evolucionó en GPT-2 [2019], una versión más grande y optimizada de GPT preentrenada en WebText, y GPT-3 [2020], una versión aún más grande y optimizada de GPT-2, preentrenada en Common Crawl.
➡️ CTRL [2019]:
Similar a GPT pero con códigos de control para la generación de texto condicional.
➡️ Transformer-XL [2019]:
Es un Transformer autorregresivo que puede reutilizar estados ocultos previamente calculados para atender a un contexto más largo.
➡️ ALBERT [2019]:
Una versión más ligera de BERT, en la que (1) se sustituye la Predicción de la siguiente frase por la Predicción del orden de las frases, y (2) se utilizan técnicas de reducción de parámetros para un menor consumo de memoria y un entrenamiento más rápido.
➡️ RoBERTa [2019]:
Versión mejorada de BERT, en la que (1) el objetivo de Modelado del Lenguaje Enmascarado es dinámico, (2) se elimina el objetivo de Predicción de la Siguiente Oración, (3) se emplea el tokenizador BPE y (4) se utilizan mejores hiperparámetros.
➡️ XLM [2019]:
Transformador preentrenado en un corpus de varios idiomas que utiliza objetivos como el Modelado Causal del Lenguaje, el Modelado del Lenguaje Enmascarado y el Modelado del Lenguaje de Traducción.
➡️ XLNet [2019]:
Transformer-XL con un método de preentrenamiento autorregresivo generalizado que permite aprender dependencias bidireccionales.
➡️ PEGASUS [2019]:
Un codificador bidireccional y un decodificador de izquierda a derecha preentrenados con objetivos de Modelado de Lenguaje Enmascarado y Generación de Oraciones de Brecha.
➡️ DistilBERT [2019]:
Igual que BERT pero más pequeño y rápido, conservando más del 95% de las prestaciones de BERT. Entrenado por destilación del modelo BERT preentrenado.
➡️ XLM-RoBERTa [2019]:
RoBERTa entrenado en un corpus multilingüe con el objetivo de Modelado de Lenguaje Enmascarado.
➡️ BART [2019]:
Un codificador bidireccional y un decodificador de izquierda a derecha entrenados corrompiendo el texto con una función de ruido arbitraria y aprendiendo un modelo para reconstruir el texto original.
➡️ ConvBERT [2019]:
Una versión mejorada de BERT, en la que los bloques de autoatención se sustituyen por otros nuevos que aprovechan las convoluciones para modelar mejor el contexto global y local.
➡️ Funnel Transformer [2020]:
Un tipo de Transformer que comprime gradualmente la secuencia de estados ocultos hasta hacerla más corta y, por tanto, reduce el coste de computación.
➡️ Reformer [2020]:
Un Transformer más eficiente gracias a la atención de hashing sensible a nivel local, la codificación de la posición axial y otras optimizaciones.
➡️ T5 [2020]:
Un codificador bidireccional y un decodificador de izquierda a derecha preentrenados en una mezcla de tareas supervisadas y no supervisadas.
➡️ Longformer [2020]:
Un modelo Transformer que sustituye las matrices de atención por matrices dispersas para una mayor eficiencia de entrenamiento.
➡️ ProphetNet [2020]:
Un modelo Transformer entrenado con el objetivo de Predicción de N-gramas futuros y con un novedoso mecanismo de auto-atención.
➡️ ELECTRA [2020]:
Igual que BERT pero más ligero y mejor. El modelo está entrenado con el objetivo de Detección de Fichas Reemplazadas.
➡️ Switch Transformers [2021]:
Un modelo de Transformador experto de activación dispersa que pretende simplificar y mejorar sobre la Mezcla de Expertos.
A continuación te comparto una infografía en la que se destacan todos los modelos citados en este artículo, aunque ojo, está en inglés:
Espero que el listado te haya resultado interesante y te animes a seguir profundizando en el mundo del nlp.
¡Nos vemos en los siguientes posts!