La construcción de modelos de lenguaje a gran escala utilizando la arquitectura Transformers mejora significativamente el rendimiento de las tareas de lenguaje natural, superando a los RNN anteriores y provocando una explosión en las capacidades regenerativas.
El poder de la arquitectura Transformers radica en su capacidad para aprender la relevancia y el contexto de todas las palabras de una oración. No solo lo que ves aquí, cada palabra está al lado de sus vecinas, sino también todas las demás palabras de la oración. Se aplican ponderaciones de atención a estas relaciones para que el modelo aprenda cómo se relaciona cada palabra con otras palabras en la entrada, sin importar dónde se encuentren.
Esto permite que el algoritmo sepa quién es el propietario del libro, quién es probable que lo sea y si es relevante para el contexto más amplio del documento. Estos pesos de atención se aprenden durante la capacitación LLM, sobre la cual aprenderá más a finales de esta semana.
Este gráfico se llama mapa de atención y se puede utilizar para ilustrar los pesos de atención de cada palabra en relación con todas las demás palabras. En este ejemplo estilizado, puedes ver que la palabra "libro" está fuertemente relacionada o relacionada con las palabras "maestro" y "estudiante".
Esto se llama autoatención, y esta capacidad de aprender a prestar atención a través de toda la entrada mejora significativamente la capacidad del modelo para codificar el lenguaje.
Ahora que ha visto una propiedad clave de la arquitectura de Transformers, la atención propia, echemos un vistazo de alto nivel a cómo funciona el modelo. Aquí hay un diagrama simplificado de la arquitectura de Transformers para que pueda concentrarse en dónde ocurren estos procesos en un alto nivel. La arquitectura de Transformers se divide en dos partes distintas, codificador y decodificador.
Estos componentes funcionan juntos y comparten muchas similitudes. Además, tenga en cuenta que el gráfico que ve aquí se deriva del documento original "La atención es todo lo que necesita". Tenga en cuenta que la entrada al modelo está en la parte inferior y la salida está en la parte superior; siempre que sea posible, intentaremos mantener esto durante todo el curso.
En este momento, los modelos de aprendizaje automático son simplemente grandes calculadoras estadísticas que usan números en lugar de palabras. Por lo tanto, primero debe tokenizar las palabras antes de pasar el texto al modelo para su procesamiento. En pocas palabras, esto convierte palabras en números, y cada número representa una posición en el diccionario de todas las palabras posibles que el modelo puede usar. Puede elegir entre varios métodos de tokenización.
Por ejemplo, para hacer coincidir dos palabras completas de ID de token,
O utilice ID de token para representar partes de palabras.
Como puedes ver aquí. Es importante destacar que una vez que haya elegido un tokenizador para entrenar el modelo, debe usar el mismo tokenizador al generar texto. Ahora que su entrada está representada como un número, puede pasarla a la capa de incrustación. Esta capa es un espacio de incrustación de vectores entrenable, un espacio de alta dimensión en el que cada token se representa como un vector y ocupa una posición única dentro del espacio.
Cada ID de token en el vocabulario se asocia con un vector multidimensional, y la intuición es que estos vectores aprenden a codificar el significado y el contexto de tokens individuales en la secuencia de entrada. La incrustación de espacios vectoriales se ha utilizado en el procesamiento del lenguaje natural durante algún tiempo, y los algoritmos de lenguaje de generaciones anteriores como Word2vec utilizaron este concepto. Si no estás familiarizado con esto, no te preocupes. Verá ejemplos de esto a lo largo del curso y hay algunos enlaces a otros recursos en los ejercicios de lectura de este fin de semana.
Volviendo a observar la secuencia de muestra, puede ver que en este caso simple, cada palabra coincide con un ID de token y cada token se asigna a un vector. En el artículo original de Transformers, el tamaño del vector es en realidad 512, mucho más grande de lo que cabe en esta imagen.
Para simplificar, si imagina un vector de tamaño tres, puede trazar las palabras en un espacio 3D y ver la relación entre esas palabras. Ahora puedes ver cómo se asocian las palabras que están cerca unas de otras en el espacio de incrustación.
y cómo calcular la distancia entre palabras como un ángulo,
Esto le da al modelo la capacidad de comprender el lenguaje matemáticamente. Cuando agrega un vector de token a la base de un codificador o decodificador, también agrega codificación posicional.
El modelo procesa cada token de entrada en paralelo. Entonces, al agregar codificación posicional, se conserva la información sobre el orden de las palabras y no se pierde la relevancia de dónde están las palabras en la oración. Una vez que agrega los tokens de entrada y las codificaciones posicionales, pasa el vector resultante a la capa de autoatención.
Aquí, el modelo analiza la relación entre tokens en la secuencia de entrada. Como vio anteriormente, esto permite que el modelo se centre en diferentes partes de la secuencia de entrada para capturar mejor las dependencias contextuales entre palabras. Los pesos de autoatención aprendidos durante el entrenamiento y almacenados en estas capas reflejan la importancia de cada palabra en la secuencia de entrada en comparación con todas las demás palabras de la secuencia.
Pero esto no sucede sólo una vez, la arquitectura de Transformers en realidad tiene autoatención de múltiples cabezas. Esto significa que se aprenden de forma independiente y en paralelo varios conjuntos de pesas o cabezas de autoatención. La cantidad de cabezas de atención incluidas en una capa de atención varía de un modelo a otro, pero lo común es un rango entre 12 y 100.
La intuición es que cada cabeza atenta aprenderá un aspecto diferente del idioma. Por ejemplo, un líder podría ver la relación entre las entidades persona en nuestras oraciones.
Y otro encabezado podría centrarse en la actividad de la frase.
Mientras que otra cabeza podría centrarse en otros atributos, como si una palabra rima o no.
Es importante tener en cuenta que no se especifica de antemano qué aspectos del lenguaje aprenderá la cabeza de atención. Los pesos de cada cabeza se inicializan aleatoriamente y, con suficientes datos y tiempo de entrenamiento, cada cabeza aprende un aspecto diferente del idioma. Si bien algunos mapas de atención son fáciles de interpretar, como los ejemplos que se analizan aquí, es posible que otros no.
Ahora que se han aplicado todos los pesos de atención a sus datos de entrada, la salida se procesa a través de una red de alimentación directa completamente conectada.
La salida de esta capa es un vector de logits proporcional a la puntuación de probabilidad de cada token en el diccionario del tokenizador.
Luego puede pasar estos logits a una capa softmax final donde se normalizan a una puntuación de probabilidad para cada palabra. Este resultado incluye probabilidades para cada palabra del vocabulario, por lo que podría haber miles de puntuaciones aquí.
Un solo token tendrá una puntuación más alta que todos los demás tokens. Esta es la señal más probable y predecible. Sin embargo, como verá más adelante en la lección, puede utilizar una variedad de métodos para elegir su elección final de este vector de probabilidades.
referencia
https://www.coursera.org/learn/generative-ai-with-llms/lecture/3AqWI/transformers-architecture