Sesgo de género en el BERT español.

Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español

bertgeneroPNLTA
29 junio, 2021 Sesgo de genero en el Bert Español
29 junio, 2021 Sesgo de genero en el Bert Español


Traducción de Inglés a Español realizada por Jose

Texto original escrito por Nick Dorion

***

Los mejores métodos disponibles para el Procesamiento del Lenguaje Natural (PLN) se basan en grandes modelos preentrenados (como BERT, XLM-R o GPT-2) para convertir el texto en vectores multidimensionales.

El primer modelo preentrenado, word2vec, demostró a menudo haber aprendido significados sobre ejemplos de género: Hombre => Mujer es similar a Rey => Reina (con advertencias ).
Se están investigando los sesgos aprendidos por los modelos ingleses (como asociar carreras con géneros), y los sesgos y la representación en Wikipedia que afectan a los modelos lingüísticos, pero no se han analizado tanto los modelos de otros idiomas.

En Español, las palabras suelen tener un género binario

El idioma español tiene género gramatical, lo que significa que los sustantivos y adjetivos suelen tener formas masculinas y femeninas. Una frase ambigua en inglés («The doctor arrived at work early»), al traducirse a Español, exige concretar el género: normalmente un doctor masculino o una doctora femenina.
Los modelos lingüísticos deben aprender y codificar por separado estas palabras específicas con variación de género. La traducción automática puede anticiparse a este problema, aunque Google Translate tiende a elegir un género a medida que la frase se vuelve más compleja:

Google Translate ofrece traducciones en femenino y masculino para «The doctor arrived at work early»; pero sólo el masculino («El doctor») para la frase «The doctor arrived at work early and logged into her computer«; y sólo el femenino («La maestra») si el sujeto es «The teacher»

No pretendo destacar el español o Google Translate aquí… Elegí el español porque sé lo suficiente para traducir y generar frases sencillas, y hay múltiples modelos lingüísticos y conjuntos de datos con los que trabajar.

El idioma cambia continuamente

Un equipo de la Universidad de Chile anunció el BETO el pasado mes de diciembre:

El anuncio escribe l@s fanatic@s con un -@s en lugar de -os (grupo masculino o mixto) o -as (grupo femenino). Le pregunté a Jorge sobre cómo -@s podría ser procesado por BETO – su respuesta:

Vaya pregunta! Lamentablemente 😐, yo diría que @ -> o sigue siendo lo que tiene más sentido en español. Con eso estás seguro de que no estás cambiando la semántica.

El Washington Post y el New York Times cubrieron recientemente otra tendencia en la que algunos argentinos utilizan la -e tanto en singular como en plural, lo que se traslada al lenguaje hablado e incluso a un discurso presidencial.
Ambos cambios han sido contestados (incluso por la Real Academia Española). No soy lingüista ni hablante nativo, así que lee el artículo de Wikipedia lenguaje no sexista y Remezcla para más información.

Sería bueno saber más

Durante meses, esta cuestión estuvo en mi mente. Después de publicar unmodeloespecífico para el hindi, me surgieron nuevas preguntas sobre las limitaciones y los sesgos de los modelos lingüísticos. Cada modelo BERT es una nueva nube de palabras de ~768 dimensiones, que luego se utiliza como base para otros modelos y herramientas, por lo que debemos mejorar nuestros análisis y explicaciones sobre su funcionamiento.
Después de leerartículosanteriores, tengo tres objetivos para mi proyecto de español:

  • Adaptar la métrica de género inglesa a una lengua con género gramatical
  • Generar frases espejo (contrafactuales) cambiando el género de las palabras, para poder auditar las predicciones de los modelos
  • Recomendar prácticas que aborden el sesgo en los modelos y el código de la PNL española

***

Medición del sesgo en BETO

Esta sección incluye un cuaderno CoLab

Similitud (no distancia) entre vectores de palabras

Varios proyectos de investigación utilizan el Word Embedding Association Test (WEAT) para comparar los vectores de palabras de un modelo en un espacio multidimensional. Se originó en este trabajo (Caliskan 2017). En un trabajo
más reciente (Liang 2020), las relaciones de los vectores se condensan en gráficos 2D que muestran las relaciones antes y después de su desbaratamiento:

Liang y otros, 2020

Nota al margen: ¿Qué representan las dimensiones de los vectores de las palabras y los gráficos?
Es una pregunta tentadora, pero los ejes dentro del modelo son secundarios. No esperamos que conceptos como género o menos/más sigan un eje, y no esperamos que surja el mismo modelo o forma si volvemos a entrenar con datos nuevos o barajados.

Al principio esperaba calcular la distancia lineal entre las coordenadas de las palabras, pero los documentos especifican que se utilice la similitud del coseno… es más importante encontrar un vector de cualquier magnitud que apunte en la dirección correcta, que buscar una coordenada vecina.

Ejemplos de parejas de palabras

Comienzo calculando las similitudes del coseno en BETO para hombre, mujer, él y ella con algunos títulos y plurales:

Man / Doctor: 0.148 | Woman / Doctora: 0.133 (Woman / Doctor: 0.097)
Man / Médico: 0.113 | Woman / Médica: 0.124
Man / science: 0.039 | Woman / science: 0.080
Man / presidente: 0.070 | Woman / presidente: 0.047
he (él) / presidente: 0.023 | she (ella) / presidente: 0.001
He (Él) / presidente: 0.021 | She (Ella) / presidente: 0.022
Man / coworkers: 0.088 | Woman / coworkers: 0.097
Man / coworkers (f): 0.049 | Woman / coworkers (f): 0.213

Es difícil interiorizar estos números directamente. La menos parecida es 0,001 y la más cercana es 0,213. Pero tiene una lógica aparente:

  • Las puntuaciones para hombre/doctor y mujer/doctora son más o menos las mismas, aunque hay más similitud en el caso de los hombres.
  • La comparación de géneros no coincidentes mujer/doctor reduce la similitud
  • compañeros es similar para cualquiera de los dos géneros; el cambio a compañeras duplica la similitud para mujer y casi la reduce a la mitad para hombre.
  • presidente es confuso; Él y Ella están casi empatados en cuanto a similitud, pero él (minúscula) está muchas veces más cerca que ella.

Para medir el sesgo global, necesitamos un script que compare más que estos ejemplos elegidos a mano.

Normas y puntos de referencia traducidos

Después de buscar en GitHub ejemplos de WEAT, elegí una lección de código abierto (WEATLab, por el Dr. Ameet Soni) que incluye múltiples listas de palabras categorizadas.

He creado un fork, WEAT-ES, para traducir las categorías y apoyar una columna extra para los sustantivos o adjetivos femeninos. He eliminado algunas palabras que se convertían en frases de varias palabras o que se traducían mal. La distancia a gender_f se promedia sobre una lista de palabras femeninas (mujer, señora, señorita, femenina, niña, ella, hija, chica, hermana, madre, tía, abuela) y gender_m sobre una lista de palabras masculinas (él, masculino, hombre, señor, padre, hijo, chico, hermano, tío, abuelo, hombre, niño).

Esperamos que las palabras masculinas y femeninas estén en lugares diferentes, por lo que el sesgo se calcula comparándolas con palabras de dos categorías diferentes, por ejemplo: «ciencia» y «arte»:

gráficos de caja que comparan los vectores masculino y femenino de BETO con las listas de palabras de ciencia y arte

En BETO, los vectores de las ciencias y las artes son, por término medio, más parecidos al femenino, pero el género_f tiene un sesgo hacia las palabras de arte, y el género_m está ligeramente más cerca de sus palabras de ciencias.
Juntando las dos listas, las palabras más destacadas fueron:

gender_m: física, baile, ciencia, arte, nasa
gender_f: novela, poesía, baile, shakespeare, ciencia

El guión calculó una puntuación de sesgo de 0,95 (en una escala de 0-2) en estas categorías. La puntuación de sesgo es mucho menor (0,27) en el caso de agradable/desagradable, en el que el género_m y el género_f se acercan más a «agradable».

gráficos de caja que comparan los vectores masculino y femenino de BETO con listas de palabras agradables y desagradables

Comparación del BERT multilingüe (mBERT) con BETO

BETO supera a mBERT en múltiples pruebas de referencia en español porque se centra en el texto en español. ¿Cómo se comparan estas dos mentes en cuanto al sesgo?

En ciencia/arte, mBERT tiene un pequeño (-0,35) sesgo a favor de lo femenino y la ciencia. Las mismas cinco palabras principales aparecen para lo masculino y lo femenino, solo que en un orden diferente.

Gráficos comparando los vectores masculino y femenino de mBERT con las listas de palabras de ciencia y arte

En cuanto a lo agradable/desagradable, el sesgo es casi inexistente (-0,08), y mBERT también dice que los humanos son más agradables que desagradables.

Gráficos comparando los vectores masculino y femenino de BETO con listas de palabras agradables y desagradables

Una categoría en la que BETO estaba menos sesgada era la carrera profesional frente a la familia (sesgo de 0,97 para mBERT, 0,28 para BETO).
Esto se refleja parcialmente en las primeras palabras de mBERT (trabajo asalariado en negrita)

niños, padres, abogado, maestro, matrimonio
niñas , madres, sociedad, periodista, matrimonio

frente a las principales palabras para BETO:

niños, padres, maestro, doctor, profesor
niñas , madres, profesora, doctora, abogada

¿Las listas de palabras paralelas suponen una diferencia real en las métricas de WEAT?

Al analizar lo agradable frente a lo desagradable en un modelo, las palabras más cercanas fueron:

gender_m: amigo, familia, enfermo, amor, extraño
gender_f: amiga, familia, encantadora, enferma, rebelde

Las palabras más cercanas a gender_f incluyen tres palabras femeninas de mi código de referencia que conecta las palabras correspondientes. Si hubiéramos trabajado sólo a partir de la primera lista, ¿cuáles serían las palabras más cercanas al femenino?

género_f: familia, amigo, rebelde, divorcio, chismoso

El sesgo medido también aumentó de 0,27 a 1,12 en este experimento. Para ser claros: esto no es un sesgo de BETO o mBERT – esta es la razón por la que WEAT-ES debe comparar listas de palabras paralelas para hacer comparaciones justas.

***

Creación de frases espejo

Esta sección incluye un cuaderno CoLab

Cambio de género programado en un texto en español

Una forma común de crear modelos ML interpretables son los contrafactuales. Probamos por separado nuestra entrada original y una entrada en la que se cambia una característica, para ver si el cambio de esa característica modifica la salida del modelo. Esta misma herramienta podría aplicarse también durante el entrenamiento, o incluso a todo el corpus para crear incrustaciones.

Uno de mis objetivos es hacer un contrafactual en el que cambiemos sin problemas el género en la frase. Las incrustaciones de BETO pueden ayudarnos a encontrar las palabras correspondientes y a analizar las frases. Sin embargo, debemos hacerlo con cuidado:

  • No cambiaremos biblioteca porque es una biblioteca; de todos modos no hay biblioteco correspondiente
  • Debemos cambiar el/la y primer/primera cuando cambie su sustantivo. Esto significa que nuestro script debe tomar una frase completa como entrada, o analizar una frase gramaticalmente, en lugar de cambiar las palabras una por una.
  • Algunas palabras (lingüista) cambian su artículo (el/la) y los adjetivos, pero no el sustantivo base.
  • Para los plurales, -os (grupo masculino o mixto) cambiaría por -as (grupo femenino). Este cambio de especificidad no es un reflejo exacto: por ejemplo, padres cambia por madres.
  • Los nombres de pila deben cambiar, pero ¿en qué nombre concreto se convierte «Ana»?
  • Algunas acciones (dar a luz) y palabras (guapo) están convencionalmente asociadas al género, o cambian de significado si se aplican a otro género. El modelo lingüístico puede ignorar los nuevos pronombres o reaccionar de forma extraña.

Aunque más adelante necesitaría entradas más largas, empecé con palabras individuales. Creé un noun_diff y un article_diff para medir la distancia entre el masculino y el femenino para diferentes partes de la oración. Las primeras palabras de salida eran buenas coincidencias, y no diferían mucho para los métodos de coordenadas más cercanas o de similitud de coseno (se pueden considerar otras distancias vectoriales con Milvus.io). Las listas más largas de sustantivos y adjetivos más específicos (como las de la prueba WEAT-ES) eran propensas a errores, o a que varias palabras se resolvieran en una más común.

Nota al margen: por qué he utilizado un modelo lingüístico que distingue entre mayúsculas y minúsculas
En el modelo BETO que distingue entre mayúsculas y minúsculas, la palabra vecina más cercana es a veces la palabra de género opuesto. Es fácil. En otros casos, es la palabra con mayúsculas. Intenté cambiar a un modelo que no distinguiera entre mayúsculas y minúsculas para eliminarlas. Desgraciadamente, a) los resultados eran menos precisos, b) la nueva palabra más cercana era a menudo el plural, y c) coincidencias como biblioteca/Biblioteca eran una fuerte pista para no invertir la palabra

Reflejo de los nombres

Los nombres siguieron siendo difíciles: los nombres femeninos a veces encontraban vecinos dentro del modelo lingüístico (Paula/Bruno, Cecilia/Claudio), pero los nombres masculinos en los que podía pensar a menudo cambiaban a maestra (esto era un artefacto de que yo estableciera maestro/maestra como el noun _diff; los revoltijos de letras al azar también «cambiaban» a maestra).

Finalmente encontré el paquete gender-guesser que puede estimar el género binario de los nombres, incluyendo categorías difusas (mostly_female para Ashley).
Por suerte, este paquete incluye información sobre la popularidad de los nombres en España, por lo que puedo elegir nombres comunes masculinos y femeninos adecuados.

Calificaciones de plomo/adivinador de género

Este paquete utiliza los datos subyacentes del programa «gender» de Jorg Michael (descrito aquí). Su uso es bastante…

github.com

Considerando seq2seq

Para las frases, mi primer plan fue una red neuronal seq2seq (secuencia a secuencia), utilizada a menudo en la traducción automática y el resumen. Revisé ejemplos de TensorFlow, HuggingFace y PyTorch. Al final me eché atrás por estas razones:

  • El ejemplo de TensorFlow no tiene un modelo preentrenado, por lo que no puede manejar palabras fuera de su vocabulario. Intenté actualizar manualmente el conjunto de datos a través de las primeras 3.300 líneas – construir esto completamente tomaría tiempo y tal vez aún no tendría resultados.
  • El ejemplo de HuggingFace transpone entre dos modelos diferentes, y no estaba seguro de cómo adaptarlo para esta tarea.
  • PyTorch es mi punto de partida ideal (traducción automática + modelo preentrenado de Transformers), pero lo descubrí más tarde.

Escala de sentencias con spaCy

Decidí que el etiquetado de partes del discurso y el análisis de dependencias de SpaCy podrían hacer el trabajo de deconstrucción de oraciones.

Elcuaderno deCoLab es el mejor lugar para ver este guión, pero el orden principal es:

  • analizar la frase con spaCy, y luego repasar cada palabra:
  • para sustantivos o pronombres, pasar a pub_flip_noun para buscar un homólogo de género cercano
  • para el nombre de una persona -swap con gender-guesser
  • para una palabra que dependa de un sustantivo, pasar el token del sustantivo original a pub_flip_noun para ver si éste ha sido / será cambiado, y luego emparejarlo
  • para los verbos, la puntuación y otras palabras – sin cambios

Esto ha funcionado muy bien. Considere esta frase de la Wikipedia en español:
«Durante las audiciones, el actor británico Hugh Laurie se econtraba en las filmaciones de la película…»

«las audiciones» es neutro; se deja solo
«el actor británico Hugh Laurie» se convierte en «la actriz británica Cecília Laurie»

  • el modelo maneja un sustantivo irregular (actor/actriz)
  • el artículo anterior y el adjetivo siguiente cambian para coincidir con actriz
  • El nombre Hugh cambia, y Laurie se queda solo como apellido

En general, BETO era bueno para encontrar las palabras correspondientes, y spaCy era el héroe para saber si hacía una coincidencia válida.

Utilizar la información de spaCy sobre el género de los sustantivos para decidir si sus artículos deben cambiar

Seguí experimentando con la escritura en espejo, y mis únicos problemas serios ahora son Nosotras (cuando se escribe en mayúsculas – en parte porque spaCy no asignó un género…), y lugares que también son nombres (Savannah, Georgia).

¿Utilizar este código para un texto de género neutro?

¿Por qué no añadir la @ o la -e de género neutro? Podríamos (muy teóricamente) reducir el sesgo de género en las propuestas de charlas de conferencias o en las evaluacionesacadémicas.

El problema es que el tokenizador divide las palabras con letras desconocidas (@) y las palabras que el modelo no ha aprendido (argentinos). El conocimiento de «hay otra palabra similar a argentinos, terminada en -es», y cualquier otra regla, tendría que ser codificado desde cero.

  • Este código recorre el texto y selecciona las palabras con homólogos de género, por lo que puede ser útil para acelerar la edición.
  • Volveré a hablar de esto más adelante, pero se podría cambiar el tokenizador y volver a entrenar el modelo con un gran corpus de lenguaje de género neutro.

¿Utilizar este código para otras lenguas con género gramatical?

He creado un repositorio en GitHub para que la gente pueda intentar ejecutar el código fuera de un cuaderno, y bifurcarlo en más proyectos. Pasé un poco de tiempo reescribiendo el código para FlauBERT (uno de los BERTs franceses). Cuando calculé un noun_diff de il/elle o homme/femme, todo se convirtió en esas dos palabras. La elección del modelo de BERT adecuado y el cálculo de la diferencia vectorial podrían ser un proyecto propio.

Existen muchos otros BERT, pero los modelos preformados de spaCy son un factor limitante: su sitio oficial muestra soporte para alemán, griego, francés, italiano, lituano, noruego, holandés y portugués.

***

Recomendaciones para los modelos de PNL españoles

Esta sección incluye un cuaderno CoLab

Diagrama que incluye múltiples intervenciones posibles; cualquier combinación merecería ser investigada

¿Despliegue con conocimiento de los prejuicios?

La primera opción se basa en frases espejo / contrafactuales. Cuando recibimos un texto de entrada para una predicción, nuestro código puede enviar el texto original y su frase espejo al modelo, e informar si obtiene respuestas diferentes. Para este ejercicio, he entrenado un clasificador de críticas de películas. El uso del BETO específico para el español mejora ligeramente la precisión en el conjunto de evaluación original, pasando del 75% al 77%.

Comparé los resultados de cada fila del conjunto de evaluación.
Resultó que pequeños errores del guión espejo, como un punto de más, podían cambiar la clasificación de toda la revisión.
Mis cambios previstos, como actor/actriz, sí aparecían en algunas frases del espejo. Pero cuando aislé sólo esos cambios, el resultado del clasificador no tenía ese cambio. Esto me indicó que el clasificador no estaba muy sesgado; no obstante, me gustaría recomendar esta prueba contrafactual.

¿Equilibrar o aumentar los datos de formación?

Otra opción es aceptar que un modelo preentrenado tiene algunos sesgos, pero el entrenamiento para la construcción de un nuevo modelo/ajuste podría estar sesgado. Supongamos que niño y niña se trazan como polos opuestos en un eje. Entonces entreno un clasificador sobre miles de ejemplos de entrenamiento y sus frases reflejadas. El clasificador resultante verá que ese eje tiene menos importancia y captará otras diferencias.

También podría considerar la posibilidad de añadir contrafactuales para aumentar y mejorar la precisión a largo plazo de un modelo. Probé dos enfoques: extraer al azar de los ejemplos originales o reflejados, o incluir ambas frases en los datos de entrenamiento. Ambos métodos alcanzaron una precisión del 93% en el conjunto de evaluación original. No dispongo de una gran muestra de tareas y conjuntos de datos y curvas y tiempo global de entrenamiento para publicar resultados concluyentes, pero esto fue prometedor y espero que la investigación pueda continuar en este sentido.

¿Considerar la posibilidad de depreciar antes de construir un modelo preentrenado?

Si tuviéramos que formar a un nuevo modelo desde cero, ¿qué podríamos hacer de forma diferente? Yo recomendaría:

  • permitir que @ pase por el tokenizador, excepto cuando se trate de nombres de usuario y direcciones de correo electrónico
  • incluir el español neutro en el preentrenamiento, idealmente un gran conjunto de datos de libros o subtítulos con un equivalente en español convencional
  • si la herramienta de oraciones contrafactuales se puede refactorizar para que sea más rápida (mapeando el diccionario completo y todos los nombres de una vez) y se haga fiable en grandes bloques de texto, o se haga más inteligente con seq2seq, se podría ejecutar en el 25-50% del corpus para reducir los sesgos y las asociaciones de palabras
  • publicar una ficha modelo con un debate sobre los prejuicios (no limitado a los prejuicios de género), y una métrica estándar basada en WEAT / WEAT-ES

Este es mi último consejo para este post!
Bibliografíatrabajosinvestigación
Los cuadernos de CoLab: (1, 2, 3)

Soy Nick, un desarrollador web que busca trabajos de Ingeniero ML, también abierto a presentar en meetups! Portafolio ML – mapmeld en Twitter y GitHub)

Una nota del equipo de Plain English

¿Sabías que tenemos cuatro publicaciones y un canal de YouTube? Puedes encontrar todo esto desde nuestra página de inicio en plainenglish.io – ¡muestra un poco de amor siguiendo nuestras publicaciones y suscribiéndoteanuestro canal de YouTube!

Rate this post

Articulos relacionados


Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español

Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español

Traducción a Español de un artículo de Azad Yaşar, explicando los nuevos modelos Seq2Seq de Traducción Automática Neuronal, capaces de mapear y trazar relaciones entre 2 idiomas en base a un corpus paralelo.