CapÃtulo 5: Innovaciones y DesafÃos en Transformadores
5.4 Ejercicios Prácticos
Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.
Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras
Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.
Instrucciones:
- Cargar un modelo de incrustación de palabras pre-entrenado.
- Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
- Interpretar los resultados para identificar sesgos potenciales.
Solución:
from whatlies.language import SpacyLanguage
# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")
# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]
# Calculate and display similarity scores
for profession in professions:
for gender in genders:
similarity = language[profession].similarity(language[gender])
print(f"Similarity between {profession} and {gender}: {similarity:.2f}")
Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos
Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.
Instrucciones:
- Utilizar un pipeline de análisis de sentimientos de Hugging Face.
- Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
- Comparar las puntuaciones de sentimiento.
Solución:
from transformers import pipeline
# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
# Test sentences
sentences = [
"He is a doctor.",
"She is a doctor.",
"He is a nurse.",
"She is a nurse."
]
# Perform sentiment analysis
for sentence in sentences:
result = sentiment_pipeline(sentence)
print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")
Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales
Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.
Instrucciones:
- Crear un conjunto de datos con oraciones que contengan términos específicos de género.
- Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
- Imprimir el conjunto de datos aumentado.
Solución:
# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]
# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
if "He" in sentence:
augmented_dataset.append(sentence.replace("He", "She"))
elif "She" in sentence:
augmented_dataset.append(sentence.replace("She", "He"))
# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)
Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP
Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.
Instrucciones:
- Cargar un pipeline de análisis de sentimientos de Hugging Face.
- Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
- Visualizar las explicaciones.
Solución:
import shap
from transformers import pipeline
# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)
# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]
# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)
# Calculate SHAP values
shap_values = explainer(sentences)
# Visualize the SHAP values
shap.plots.text(shap_values)
Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género
Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.
Instrucciones:
- Cargar un pequeño conjunto de datos de oraciones.
- Filtrar las oraciones que contengan "él" o "ella".
- Mostrar el conjunto de datos filtrado.
Solución:
import pandas as pd
# Create a sample dataset
data = pd.DataFrame({
"text": [
"He is a doctor.",
"She is a nurse.",
"Engineers solve problems.",
"Teachers educate students."
]
})
# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)
Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.
5.4 Ejercicios Prácticos
Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.
Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras
Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.
Instrucciones:
- Cargar un modelo de incrustación de palabras pre-entrenado.
- Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
- Interpretar los resultados para identificar sesgos potenciales.
Solución:
from whatlies.language import SpacyLanguage
# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")
# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]
# Calculate and display similarity scores
for profession in professions:
for gender in genders:
similarity = language[profession].similarity(language[gender])
print(f"Similarity between {profession} and {gender}: {similarity:.2f}")
Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos
Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.
Instrucciones:
- Utilizar un pipeline de análisis de sentimientos de Hugging Face.
- Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
- Comparar las puntuaciones de sentimiento.
Solución:
from transformers import pipeline
# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
# Test sentences
sentences = [
"He is a doctor.",
"She is a doctor.",
"He is a nurse.",
"She is a nurse."
]
# Perform sentiment analysis
for sentence in sentences:
result = sentiment_pipeline(sentence)
print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")
Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales
Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.
Instrucciones:
- Crear un conjunto de datos con oraciones que contengan términos específicos de género.
- Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
- Imprimir el conjunto de datos aumentado.
Solución:
# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]
# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
if "He" in sentence:
augmented_dataset.append(sentence.replace("He", "She"))
elif "She" in sentence:
augmented_dataset.append(sentence.replace("She", "He"))
# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)
Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP
Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.
Instrucciones:
- Cargar un pipeline de análisis de sentimientos de Hugging Face.
- Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
- Visualizar las explicaciones.
Solución:
import shap
from transformers import pipeline
# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)
# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]
# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)
# Calculate SHAP values
shap_values = explainer(sentences)
# Visualize the SHAP values
shap.plots.text(shap_values)
Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género
Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.
Instrucciones:
- Cargar un pequeño conjunto de datos de oraciones.
- Filtrar las oraciones que contengan "él" o "ella".
- Mostrar el conjunto de datos filtrado.
Solución:
import pandas as pd
# Create a sample dataset
data = pd.DataFrame({
"text": [
"He is a doctor.",
"She is a nurse.",
"Engineers solve problems.",
"Teachers educate students."
]
})
# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)
Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.
5.4 Ejercicios Prácticos
Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.
Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras
Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.
Instrucciones:
- Cargar un modelo de incrustación de palabras pre-entrenado.
- Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
- Interpretar los resultados para identificar sesgos potenciales.
Solución:
from whatlies.language import SpacyLanguage
# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")
# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]
# Calculate and display similarity scores
for profession in professions:
for gender in genders:
similarity = language[profession].similarity(language[gender])
print(f"Similarity between {profession} and {gender}: {similarity:.2f}")
Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos
Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.
Instrucciones:
- Utilizar un pipeline de análisis de sentimientos de Hugging Face.
- Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
- Comparar las puntuaciones de sentimiento.
Solución:
from transformers import pipeline
# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
# Test sentences
sentences = [
"He is a doctor.",
"She is a doctor.",
"He is a nurse.",
"She is a nurse."
]
# Perform sentiment analysis
for sentence in sentences:
result = sentiment_pipeline(sentence)
print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")
Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales
Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.
Instrucciones:
- Crear un conjunto de datos con oraciones que contengan términos específicos de género.
- Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
- Imprimir el conjunto de datos aumentado.
Solución:
# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]
# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
if "He" in sentence:
augmented_dataset.append(sentence.replace("He", "She"))
elif "She" in sentence:
augmented_dataset.append(sentence.replace("She", "He"))
# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)
Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP
Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.
Instrucciones:
- Cargar un pipeline de análisis de sentimientos de Hugging Face.
- Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
- Visualizar las explicaciones.
Solución:
import shap
from transformers import pipeline
# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)
# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]
# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)
# Calculate SHAP values
shap_values = explainer(sentences)
# Visualize the SHAP values
shap.plots.text(shap_values)
Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género
Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.
Instrucciones:
- Cargar un pequeño conjunto de datos de oraciones.
- Filtrar las oraciones que contengan "él" o "ella".
- Mostrar el conjunto de datos filtrado.
Solución:
import pandas as pd
# Create a sample dataset
data = pd.DataFrame({
"text": [
"He is a doctor.",
"She is a nurse.",
"Engineers solve problems.",
"Teachers educate students."
]
})
# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)
Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.
5.4 Ejercicios Prácticos
Esta sección de ejercicios prácticos refuerza los conceptos discutidos en el capítulo sobre IA Ética proporcionando tareas prácticas para evaluar, identificar y mitigar sesgos en modelos de lenguaje. Cada ejercicio incluye una solución con código para guiar la implementación.
Ejercicio 1: Evaluar el Sesgo de Género Usando Incrustaciones de Palabras
Tarea: Usar incrustaciones de palabras para comparar similitudes entre palabras con género y profesiones para identificar sesgos potenciales.
Instrucciones:
- Cargar un modelo de incrustación de palabras pre-entrenado.
- Calcular puntuaciones de similitud para pares de palabras con género (por ejemplo, "hombre," "mujer") y profesiones (por ejemplo, "doctor," "enfermera").
- Interpretar los resultados para identificar sesgos potenciales.
Solución:
from whatlies.language import SpacyLanguage
# Load a pretrained language model
language = SpacyLanguage("en_core_web_md")
# Define words
professions = ["doctor", "nurse", "engineer", "teacher"]
genders = ["man", "woman"]
# Calculate and display similarity scores
for profession in professions:
for gender in genders:
similarity = language[profession].similarity(language[gender])
print(f"Similarity between {profession} and {gender}: {similarity:.2f}")
Ejercicio 2: Analizar las Predicciones del Modelo en Busca de Sesgos
Tarea: Evaluar las predicciones de un modelo de análisis de sentimientos para oraciones relacionadas con el género.
Instrucciones:
- Utilizar un pipeline de análisis de sentimientos de Hugging Face.
- Proporcionar oraciones que solo varíen por género (por ejemplo, "Él es doctor" vs. "Ella es doctora").
- Comparar las puntuaciones de sentimiento.
Solución:
from transformers import pipeline
# Load sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
# Test sentences
sentences = [
"He is a doctor.",
"She is a doctor.",
"He is a nurse.",
"She is a nurse."
]
# Perform sentiment analysis
for sentence in sentences:
result = sentiment_pipeline(sentence)
print(f"Sentence: {sentence} => Sentiment: {result[0]['label']}, Score: {result[0]['score']:.2f}")
Ejercicio 3: Mitigar el Sesgo Usando Aumento de Datos Contrafactuales
Tarea: Crear ejemplos contrafactuales para un conjunto de datos pequeño mediante la inversión de términos relacionados con el género.
Instrucciones:
- Crear un conjunto de datos con oraciones que contengan términos específicos de género.
- Generar ejemplos contrafactuales reemplazando "él" por "ella" y viceversa.
- Imprimir el conjunto de datos aumentado.
Solución:
# Original dataset
dataset = ["He is a great leader.", "She is an excellent teacher.", "He solved the problem."]
# Counterfactual augmentation
augmented_dataset = []
for sentence in dataset:
if "He" in sentence:
augmented_dataset.append(sentence.replace("He", "She"))
elif "She" in sentence:
augmented_dataset.append(sentence.replace("She", "He"))
# Combine original and augmented datasets
combined_dataset = dataset + augmented_dataset
print("Augmented Dataset:")
print(combined_dataset)
Ejercicio 4: Evaluar y Visualizar el Sesgo Usando SHAP
Tarea: Utilizar SHAP (Explicaciones Aditivas de Shapley) para analizar las predicciones del modelo y visualizar sesgos potenciales.
Instrucciones:
- Cargar un pipeline de análisis de sentimientos de Hugging Face.
- Usar SHAP para explicar predicciones de oraciones relacionadas con el género.
- Visualizar las explicaciones.
Solución:
import shap
from transformers import pipeline
# Load the sentiment analysis pipeline
model_pipeline = pipeline("sentiment-analysis", return_all_scores=True)
# Define sentences for bias analysis
sentences = ["He is a leader.", "She is a leader."]
# Initialize SHAP explainer
explainer = shap.Explainer(model_pipeline)
# Calculate SHAP values
shap_values = explainer(sentences)
# Visualize the SHAP values
shap.plots.text(shap_values)
Ejercicio 5: Filtrar Conjunto de Datos para Lenguaje Neutro de Género
Tarea: Filtrar un conjunto de datos de texto para eliminar oraciones con pronombres de género.
Instrucciones:
- Cargar un pequeño conjunto de datos de oraciones.
- Filtrar las oraciones que contengan "él" o "ella".
- Mostrar el conjunto de datos filtrado.
Solución:
import pandas as pd
# Create a sample dataset
data = pd.DataFrame({
"text": [
"He is a doctor.",
"She is a nurse.",
"Engineers solve problems.",
"Teachers educate students."
]
})
# Filter for gender-neutral sentences
filtered_data = data[~data["text"].str.contains("he|she", case=False)]
print("Filtered Dataset:")
print(filtered_data)
Estos ejercicios proporcionan herramientas prácticas para evaluar y mitigar sesgos en modelos de lenguaje. Al completarlos, se obtiene experiencia práctica en la identificación de sesgos de género y otros tipos, comprendiendo su impacto y aplicando estrategias como la aumentación contrafactual y el filtrado de conjuntos de datos para promover la equidad. La IA ética es un esfuerzo continuo, y estas técnicas contribuyen a construir sistemas de PLN más equitativos e inclusivos.