ElemedexEnciclopedia de bolsillo de arquitecturas de IA
N.º 031

Sentence-BERT

SBERT

Similitud

Antes, para saber si dos oraciones decían lo mismo había que presentárselas juntas a BERT, y comparar diez mil llevaba 65 horas. SBERT le da a cada oración su propio vector y hace lo mismo en cinco segundos. Aprendió qué es parecerse estudiando cuándo una oración implica o contradice a otra.

Altura
12 (base) · 24 (large)
Peso
≈ 440 MB · 1,4 GB (fp32)
Parámetros
110 M · 340 M
Contexto
hasta 512 tokens (una oración o un párrafo)
Datos de entrenamiento
BERT + SNLI (570.000 pares) + MultiNLI (430.000 pares), 1 época
Año
2019
Generación
4 · Transformers
Creadores
Reimers & Gurevych (UKP Lab, TU Darmstadt)
Clase
Modelo

Estadísticas base

Total
247

Escalas ordinales y aproximadas, pensadas para comparar especies entre sí; los números duros están en la ficha.

Debilidades

  • Es menos preciso que un cross-encoder, que lee los dos textos juntos.
  • Hereda la ventana de BERT: los documentos largos hay que partirlos en fragmentos.
  • Su noción de similitud depende de los datos de ajuste y no se transfiere igual a todos los dominios.
  • Un solo número de similitud no distingue paráfrasis, implicación y mera afinidad temática.

Hábitat

Nació ajustando BERT con un millón de pares de oraciones de SNLI y MultiNLI, etiquetados por personas como implicación, contradicción o neutrales. Hoy vive en casi todo buscador semántico, en los recuperadores de RAG y en las bases de datos vectoriales, casi siempre a través de la biblioteca sentence-transformers.

Movimientos

Habilidades

Red siamesa
Dos copias de BERT con los mismos pesos procesan cada oración por separado y se entrenan comparando sus vectores.
Pooling por promedio
El promedio de los vectores de salida de todos los tokens da un único vector de tamaño fijo por oración.
Bi-encoder
Cada texto se codifica una sola vez y se guarda; compararlo con otro cuesta apenas un producto punto.

Anatomía

SBERT en uso, de abajo hacia arriba: la misma red BERT, con los mismos pesos, procesa cada oración por separado; el promedio de sus vectores de salida da un embedding por oración, y la similitud es el coseno entre ambos. Durante el ajuste, en lugar del coseno, un clasificador recibe (u, v, |u − v|) y decide si el par es de implicación, contradicción o neutral.

Cadena evolutiva

  • ajuste siamés para que oraciones enteras tengan vectores comparables028 BERT
031 Sentence-BERT

Sentence-BERT (SBERT) es BERT ajustado para que una oración entera se convierta en un único vector, de modo que dos oraciones puedan compararse con una simple similitud coseno. Lo presentaron Nils Reimers e Iryna Gurevych en 2019 (Reimers y Gurevych, 2019), y su biblioteca, sentence-transformers, se volvió una de las herramientas más usadas para producir embeddings de texto (Alammar y Grootendorst, 2024, pp. 62, 293).

El problema: BERT compara bien, pero caro

BERT funciona como un cross-encoder: para medir cuán parecidas son dos oraciones hay que dárselas juntas, separadas por un token [SEP]. Es preciso, pero no escala: encontrar el par más parecido entre 10.000 oraciones exige unos 50 millones de pasadas por la red, unas 65 horas en una GPU V100 (Reimers y Gurevych, 2019, p. 3982; Alammar y Grootendorst, 2024, p. 294). La alternativa obvia, pasar cada oración sola y promediar sus vectores o usar el de [CLS], da malos embeddings de oración: en siete tareas de similitud semántica ambos rinden peor que el simple promedio de vectores GloVe, y el de [CLS] es el peor de todos (Reimers y Gurevych, 2019, pp. 3982, 3985).

Cómo funciona

SBERT agrega una capa de pooling (por defecto, el promedio de los vectores de salida) y ajusta BERT dentro de una red siamesa: dos copias con los mismos pesos procesan cada oración por separado y producen los vectores u y v (Reimers y Gurevych, 2019, p. 3984; Alammar y Grootendorst, 2024, pp. 294–295). Durante el ajuste, un clasificador recibe (u, v, |u − v|) y debe decidir si el par es de implicación, contradicción o neutral, con los datos de inferencia en lenguaje natural de SNLI (570.000 pares) y MultiNLI (430.000) (Reimers y Gurevych, 2019, pp. 3984–3985). Alcanza una época, menos de 20 minutos de cómputo (2019, pp. 3984–3985). El componente decisivo resultó ser la diferencia |u − v|, que empuja a los pares similares a acercarse y a los distintos a alejarse (2019, pp. 3988–3989). Después, el clasificador se descarta: en uso solo quedan los vectores y el coseno. Es un caso de aprendizaje contrastivo: el modelo aprende qué hace parecidos a dos textos viendo pares parecidos y pares distintos (Alammar y Grootendorst, 2024, pp. 292–295).

Qué cambió

El resultado es un bi-encoder: cada texto se codifica una sola vez y queda guardado. Encontrar el par más parecido entre 10.000 oraciones pasa de 65 horas a unos 5 segundos, más 0,01 segundos de cosenos; con índices adecuados, buscar entre millones de preguntas lleva milisegundos (Reimers y Gurevych, 2019, p. 3983). En similitud semántica, además, SBERT superó a los mejores modelos de embeddings de oración de la época, InferSent y el Universal Sentence Encoder (2019, pp. 3983, 3985).

Esa arquitectura es la base de la búsqueda semántica densa: la consulta y los documentos se proyectan en el mismo espacio y se devuelven los vecinos más cercanos (Alammar y Grootendorst, 2024, pp. 226–228), guardados en una base de datos vectorial. Es el recuperador típico de Generación aumentada por recuperación (RAG).

Límites

El bi-encoder es rápido pero menos preciso que el cross-encoder, que lee ambos textos a la vez; por eso los buscadores suelen encadenarlos: SBERT recupera candidatos y un cross-encoder los reordena (Alammar y Grootendorst, 2024, pp. 226, 244, 295). Hereda la ventana de BERT, así que los documentos largos hay que partirlos (2024, p. 235). Y la similitud que aprende depende de sus datos: ajustado con NLI, rindió peor que el Universal Sentence Encoder en SICK-R y en la clasificación de preguntas de TREC, dominios más cercanos a los datos de este último (Reimers y Gurevych, 2019, pp. 3985, 3988).

Fuentes

  • Alammar, J., & Grootendorst, M. (2024). Hands-on large language models: Language understanding and generation. O’Reilly Media. §
  • Brandom, R. B. (1994). Making it explicit: Reasoning, representing, and discursive commitment. Harvard University Press. §
  • Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. In J. Burstein, C. Doran, & T. Solorio (Eds.), Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers) (pp. 4171–4186). Association for Computational Linguistics. https://doi.org/10.18653/v1/N19-1423 §
  • Gärdenfors, P. (2000). Conceptual spaces: The geometry of thought. MIT Press. https://doi.org/10.7551/mitpress/2076.001.0001 §
  • Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence embeddings using Siamese BERT-networks. In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP) (pp. 3982–3992). Association for Computational Linguistics. https://doi.org/10.18653/v1/D19-1410 §
  • Tversky, A. (1977). Features of similarity. Psychological Review, 84(4), 327–352. https://doi.org/10.1037/0033-295X.84.4.327 §