Modelos de lenguaje semántico
Nota:
Consulte la pestaña Texto e imágenes para obtener más detalles.
Como el diseño de NLP ha avanzado, la capacidad de entrenar modelos que encapsulan la relación semántica entre tokens ha llevado a la aparición de modelos eficaces de lenguaje de aprendizaje profundo. En el centro de estos modelos está la codificación de los tokens de lenguaje como vectores (matrices de números con varios valores), conocida como embeddings .
Este enfoque basado en vectores para modelar texto se hizo común con técnicas como Word2Vec y GloVe, en las que los tokens de texto se representan como vectores densos con varias dimensiones. Durante el entrenamiento del modelo, los valores de dimensión se asignan para reflejar las características semánticas de cada token en función de su uso en el texto de entrenamiento. Las relaciones matemáticas entre los vectores se pueden aprovechar para realizar tareas comunes de análisis de texto de forma más eficaz que las técnicas puramente estadísticas más antiguas. Un avance más reciente en este enfoque es usar una técnica llamada atención para considerar cada token en contexto y calcular la influencia de los tokens alrededor de él. Las incrustaciones contextualizadas resultantes, como las que se encuentran en la familia de modelos GPT, proporcionan la base de la inteligencia artificial generativa moderna.
Representación del texto como vectores
Los vectores representan puntos en el espacio multidimensional, definidos por coordenadas a lo largo de varios ejes. Cada vector describe una dirección y una distancia desde el origen. Los tokens semánticamente similares deben dar lugar a vectores que tienen una orientación similar; es decir, apuntan en direcciones similares.
Por ejemplo, considere las siguientes incrustaciones tridimensionales para algunas palabras comunes:
| Word | Vector |
|---|---|
dog |
[0.8, 0.6, 0.1] |
puppy |
[0.9, 0.7, 0.4] |
cat |
[0.7, 0.5, 0.2] |
kitten |
[0.8, 0.6, 0.5] |
young |
[0.1, 0.1, 0.3] |
ball |
[0.3, 0.9, 0.1] |
tree |
[0.2, 0.1, 0.9] |
Podemos visualizar estos vectores en un espacio tridimensional, como se muestra aquí:
Los vectores de "dog" y "cat" son similares (tanto animales domésticos), como son "puppy" y "kitten" (ambos animales jóvenes). Las palabras "tree", "young"y ball" tienen orientaciones vectoriales distintas, que reflejan sus diferentes significados semánticos.
La característica semántica codificada en los vectores permite usar operaciones basadas en vectores que comparan palabras y habilitan comparaciones analíticas.
Búsqueda de términos relacionados
Dado que la orientación de los vectores viene determinada por sus valores de dimensión, las palabras con significados semánticos similares tienden a tener orientaciones similares. Esto significa que puede usar cálculos como la similitud de coseno entre vectores para realizar comparaciones significativas.
Por ejemplo, para determinar el "elemento diferente" entre "dog", "cat" y "tree", puede calcular la similitud del coseno entre pares de vectores. La similitud de coseno se calcula como:
cosine_similarity(A, B) = (A · B) / (||A|| * ||B||)
Donde A · B es el producto de punto y ||A|| es la magnitud del vector A.
Calcular similitudes entre las tres palabras:
dog[0.8, 0.6, 0.1] ycat[0.7, 0.5, 0.2]:- Producto de punto: (0,8 × 0,7) + (0,6 × 0,5) + (0,1 × 0,2) = 0,56 + 0,30 + 0,02 = 0,88
- Magnitud de
dog: √(0,8² + 0,6² + 0,1²) = √(0,64 + 0,36 + 0,01) = √1,01 ≈ 1,005 - Magnitud de
cat: √(0,7² + 0,5² + 0,2²) = √(0,49 + 0,25 + 0,04) = √0,78 ≈ 0,883 - Similitud de coseno: 0,88 / (1,005 × 0,883) ≈ 0,992 (similitud alta)
dog[0.8, 0.6, 0.1] ytree[0.2, 0.1, 0.9]:- Producto de punto: (0,8 × 0,2) + (0,6 × 0,1) + (0,1 × 0,9) = 0,16 + 0,06 + 0,09 = 0,31
- Magnitud de
tree: √(0,2² + 0,1² + 0,9²) = √(0,04 + 0,01 + 0,81) = √0,86 ≈ 0,927 - Similitud de coseno: 0,31 / (1,005 × 0,927) ≈ 0,333 (similitud baja)
cat[0.7, 0.5, 0.2] ytree[0.2, 0.1, 0.9]:- Producto de punto: (0,7 × 0,2) + (0,5 × 0,1) + (0,2 × 0,9) = 0,14 + 0,05 + 0,18 = 0,37
- Similitud de coseno: 0,37 / (0,883 × 0,927) ≈ 0,452 (similitud baja)
Los resultados muestran que "dog" y "cat" son muy similares (0,992), mientras que "tree" tiene una similitud inferior tanto con "dog" (0,333) como con "cat" (0,452). Por lo tanto, tree es claramente el diferente.
Traducción vectorial mediante suma y resta
Puede agregar o restar vectores para generar nuevos resultados basados en vectores; que se puede usar para buscar tokens con vectores coincidentes. Esta técnica permite una lógica aritmética intuitiva para determinar los términos adecuados en función de las relaciones lingüísticas.
Por ejemplo, con los vectores anteriores:
-
dog+young= [0.8, 0.6, 0.1] + [0.1, 0.1, 0.3] = [0.9, 0.7, 0.4] =puppy -
cat+young= [0.7, 0.5, 0.2] + [0.1, 0.1, 0.3] = [0.8, 0.6, 0.5] =kitten
Estas operaciones funcionan porque el vector para "young" codifica la transformación semántica de un animal adulto a su homólogo joven.
Nota:
En la práctica, la aritmética vectorial rara vez produce coincidencias exactas; en su lugar, buscaría la palabra cuyo vector es más cercano (más similar) al resultado.
La aritmética funciona también a la inversa:
-
puppy-young= [0.9, 0.7, 0.4] - [0.1, 0.1, 0.3] = [0.8, 0.6, 0.1] =dog -
kitten-young= [0.8, 0.6, 0.5] - [0.1, 0.1, 0.3] = [0.7, 0.5, 0.2] =cat
Razonamiento analógico
La aritmética vectorial también puede responder a preguntas analógicas como "puppy es a dog como kitten a ?"
Para resolverlo, calcule lo siguiente: kitten - puppy + dog
- [0.8, 0.6, 0.5] - [0.9, 0.7, 0.4] + [0.8, 0.6, 0.1]
- = [-0.1, -0.1, 0.1] + [0.8, 0.6, 0.1]
- = [0.7, 0.5, 0.2]
- =
cat
Estos ejemplos muestran cómo las operaciones vectoriales pueden capturar relaciones lingüísticas y habilitar el razonamiento sobre patrones semánticos.
Uso de modelos semánticos para el análisis de texto
Los modelos semánticos basados en vectores proporcionan funcionalidades eficaces para muchas tareas comunes de análisis de texto.
Resumen de texto
Las incrustaciones semánticas permiten el resumen extractivo mediante la identificación de oraciones con vectores que son más representativos del documento general. Al codificar cada oración como un vector (a menudo mediante la media o agrupación de las incrustaciones de sus palabras constituyentes), puede calcular qué oraciones son más centrales para el significado del documento. Estas oraciones centrales se pueden extraer para formar un resumen que capture los temas clave.
Extracción de palabras clave
La similitud de vectores puede identificar los términos más importantes de un documento comparando la inserción de cada palabra con la representación semántica general del documento. Palabras cuyos vectores son más similares al vector del documento, o las más centrales al considerar todos los vectores de palabra del documento, probablemente sean términos clave que representan los temas principales.
Reconocimiento de entidades con nombre
Los modelos semánticos se pueden ajustar para reconocer entidades nombradas (personas, organizaciones, ubicaciones, etc.) aprendiendo representaciones vectoriales que agrupan juntos tipos de entidades similares. Durante la inferencia, el modelo examina la inserción de cada token y su contexto para determinar si representa una entidad con nombre y, si es así, qué tipo.
Clasificación de texto
En el caso de tareas como el análisis de opiniones o la categorización de temas, los documentos se pueden representar como vectores agregados (como la media de todas las incrustaciones de palabras en el documento). Estos vectores de documento se pueden usar como características para clasificadores de aprendizaje automático o en comparación directamente con los vectores de prototipo de clase para asignar categorías. Dado que los documentos semánticamente similares tienen orientaciones vectoriales similares, este enfoque agrupa eficazmente el contenido relacionado y distingue diferentes categorías.