Destripando a BERT: Nuevo modelo de Google NLP

Hoy vengo a traer toda la información que sé o puedo aportar dentro de mi poco conocimiento sobre NLP, que para nada soy un experto en este área vaya por delante la verdad, ya sabes que me gusta ser sincero, aunque estoy intentando aprender todo lo que puedo jeje, y como ya sabes me gusta intentar entender qué sucede con los algoritmos de Google, vamos a ver que es BERT, un poco más a fondo de lo que por ahora he visto en habla hispana.

Bert afecta a 1 de cada 10 búsquedas aproximadamente, es la nueva red neuronal de código abierto, está diseñado para pre entrenar representaciones bidireccionales profundas de texto. Es capaz de procesar palabras en cada oración, y no palabra por palabra como hasta ahora lo hacían, lo que implica un mejor entendimiento del contexto completo de cada oración, ya que las preposiciones cambian lo que queremos expresar y/o buscar, en teoria deberia mejorar estos resultados por la mejora en la comprensión.

Uno de los desafíos más grandes del NLP (procesamiento del lenguaje natural), era la escasez de datos para entrenarlos ya que eran unos pocos miles o cientos de miles de ejemplos etiquetados por humanos, luego llegaron los modelos de NLP basados en aprendizaje profundo ya que se entrenan con cantidades mucho mayores, llegando a millones o miles de millones de datos web sin anotaciones (pre entrenamiento), este pre entrenamiento luego puede ser ajustado con pequeños conjuntos de datos como la respuesta a preguntas, análisis de sentimientos, lo que da como resultado grandes mejoras en la precisión en comparación con el entrenamiento de estos conjuntos desde cero. Pues aquí es donde entra BERT, es un nueva técnica para el entrenamiento previo de NLP. Google implementa BERT en su propio sistema y también lo lanza de forma que cualquiera pueda entrenar su propio sistema ya que es de código abierto.

¿Qué es BERT?

Es una red neuronal basada en la arquitectura transformer. El modelo se entrena con un corpus de 3.300 millones de palabras ( 800m de palabras de BooksCorpus y Wikipedia (2.500M de palabras). Para que te hagas una idea, Bert es capaz de descubrir relaciones y secuencias dentro de la frase para una entidad, es donde el concepto transformer marca la diferencia.

Cito textualmente:

«El transformador es el primer modelo de transducción (conversión de secuencias de entrada en secuencias de salida ) que se basa completamente en la auto atención para calcular las representaciones de su entrada y salida sin utilizar RNNs o convolución alineados con la secuencia».

«La auto-atención, a veces llamada intra-atención, es un mecanismo de atención que relaciona diferentes posiciones de una sola secuencia para calcular una representación de la secuencia».

Prateek Joshi

¿Bert sustituye o reemplaza a RankBrain?

No, Bert es un método adicional para depurar y comprender el contenido, consultas y por ende mejorar el sistema de clasificación en el índice. RankBrain seguirá activo, simplemente Google utilizará un método más, ya que realmente utiliza varios, y no solo utilizaba RankBrain, como por ejemplo las correcciones ortográficas, hasta donde yo sé (pensad que es como un algoritmo hibridizado que cambia y evoluciona constantemente), utiliza entre otros un método que se basa en la distancia de edición ponderada (distancia de Damerau – Levenshtein), usando un número mínimo de modificaciones posibles para encontrar una alternativa escrita correctamente, también corrige errores de origen fonético, generalmente sustituye una parte de la palabra incorrecta con una secuencia de caracteres fonéticamente equivalente, hasta que localiza la ortografía correcta, o probabilidades de escribir mal en un teclado (Modelo Oculto de Markov) etc..

¿Os suena quizás las correcciones que nos hace al buscar? o el quizás quisiste decir?

Destripando a BERT: Nuevo modelo de Google NLP 2

Más a fondo con BERT: el pre entrenamiento y ajuste

El pre entrenamiento ocurre con dos tareas que deben aprender en la red al mismo tiempo el significado de los tokens y la estructura de sus entradas. Acepta un vector de hasta 512 tokens que puede dividirse en dos segmentos (a y b).

El salto está en la relación y dirección de las palabras, en vez de izquierda a derecha o de derecha a izquierda, usan dos tareas no supervisadas. En la primera tarea enmascaran un porcentaje de tokens (un 15% normalmente) al azar de la oración/es y luego predicen (descodifican).

Aclaracion sobre el 15%:

Las palabras enmascaradas no siempre fueron reemplazadas por los tokens enmascarados porque el token nunca aparecería durante el ajuste fino.

Entonces, los investigadores utilizaron la siguiente técnica:

  • El 80% de las veces las palabras fueron reemplazadas por el token enmascarado
  • 10% del tiempo las palabras fueron reemplazadas por palabras aleatorias
  • 10% de las veces las palabras no se modificaron
Destripando a BERT: Nuevo modelo de Google NLP 3
Procedimientos generales de Pre- Entrenamiento y ajuste de Bert

A diferencia de los descodificadores automáticos en vez de reconstruir toda la entrada, solo lo hacen sobre las palabras enmascaradas. Es decir, oraciones con tokens enmascarados y se le pide que produzca el ID de vocabulario de la palabra que falta. Es «similar» a los saltos de ngramas de Word2Vec, exceptuando que este ultimo nunca se representa en una oración, solo la palabra central de la ventana donde se elige la palabra objetivo.

La segunda tarea se basa en la predicción de la siguiente oración (NSP), que se basa en la comprensión de la relación entre dos oraciones. Esto es muy importante para la parte de QA (Question Answering) y NLI (Natural Language Inference) consiguiendo el modelo final entre un 97-98% de precisión en la predicción de la siguiente oración. Aquí el modelo BERT se presenta con dos oraciones, codificadas con incrustaciones de segmento A y B como parte de una entrada. Otras veces, el modelo se presenta con dos oraciones consecutivas del corpus, a veces una segunda oración no es un secuenciador, y es escogido al azar del conjunto de datos. Esta tarea de pre entrenamiento está destinada a mejorar el rendimiento del componente de doble segmento del modelo.

En todas las tareas de pre entrenamiento las entradas están representadas por un vector que contiene una inserción de token, segmento y posición.

Destripando a BERT: Nuevo modelo de Google NLP 4
  • Las incrustaciones de tokens ayudan a transformar palabras en representaciones vectoriales.
  • Las incrustaciones de segmentos ayudan a comprender la similitud semántica de diferentes partes del texto.
  • Las incrustaciones de posición significan que palabras idénticas en diferentes posiciones no tendrán la misma representación de salida.

Además de las capas de salida, usan las mismas arquitecturas en el pre entrenamiento como en el ajuste.

Diferencias entre BERT vs OPENAI GPT vs ELMo

Destripando a BERT: Nuevo modelo de Google NLP 5

BERT como hemos hablado utiliza un transformador bidireccional profundo, OpenAI GPT usa un transformador de izquierda a derecha (unidireccional), ELMo (superficialmente bidireccional) usa la concatenación de LSTM de izquierda a derecha y de derecha a izquierda entrenados independientemente para luego generar funciones para tareas posteriores.

BERT a parte es el único que funciona relacionando contextos en ambas direcciones en cada capa. BERT y OpenAI GPT son de ajuste fino y ELMo está basado en características de aproximación.

Las diferencias a parte de las tareas de pre entrenamiento y bidireccionalidad también está en el entrenamiento:

  • GPT está entrenado con BooksCorpus (800m de palabras) y Bert con BooksCorpus y Wikipedia (2.500M de palabras).
  • GPT fue entrenado por 1 millón de pasos en lotes de 32.000 palabras y BERT por 1 millón de pasos en lotes de 128.000 palabras.
  • GPT usa el mismo ratio de aprendizaje en todos los experimentos de ajuste fino y BERT elije la tasa de aprendizaje que mejor sea para el conjunto de desarrollo ( Cabe señalar que para cada uno de estos ajustes, todo el modelo debe ajustarse, no solo las capas superiores)
  • GPT usa un separador de oraciones () y token clasificador () que solo se introducen en el momento de ajuste. Mientras que BERT aprende () y () y las incrustaciones de oración A/B durante el pre entrenamiento.

¿Puedo optimizar para BERT?

No, si has entendido de que va y lo que hace, no tiene sentido realmente la pregunta como tampoco la tenía para Rankbrain.

Ejemplos BERT en acción

Destripando a BERT: Nuevo modelo de Google NLP 6
La diferencia de la comprensión entre el sentido de la búsqueda con el resultado.

Mi conclusión sobre BERT por ahora

Actualización:

Está claro que Google y los SEOS son bastante alarmistas con cada update, que parece que BERT es la GRAN actualización del siglo, no lo creo, es un gran paso en cuanto a mejora de la comprensión, pero por ahora solo está desplegado en idioma Inglés, se irá replicando en otros idiomas, afectará principalmente a longs tails, y los QA, si tu web responde principalmente a longs tails simplemente, comprueba que la intención no ha cambiado / mejorado, vamos lo único que yo haría, sería revisar constantemente CTRS (cosa que ya deberías estar haciendo realmente), y ver si hay una caída notable, analizar si es por que ahora entiende mejor la búsqueda y tu respuesta no era acertada / bien enfocada. Veremos en qué más afecta este algoritmo ya que seguramente no solo afecte a longs tails y alguna main kw pueda verse afectada.

Algunos documentos leídos:

Share This