Menu iconMenu icon
NLP with Transformers: Fundamentals and Core Applications

Project 2: News Categorization Using BERT

6. Paso 3: Ajuste Fino de BERT para Categorización de Noticias

El ajuste fino implica adaptar un modelo BERT pre-entrenado a tu conjunto de datos específico. Este proceso aprovecha el conocimiento existente del modelo sobre patrones y estructuras del lenguaje, mientras le enseña a realizar tu tarea particular de clasificación. Durante el ajuste fino, los pesos del modelo se ajustan ligeramente usando tu conjunto de datos, permitiéndole aprender las características y patrones específicos relevantes para la categorización de noticias.

Este enfoque es mucho más eficiente que entrenar un modelo desde cero, ya que requiere menos datos y recursos computacionales mientras típicamente logra mejores resultados. El proceso de ajuste fino implica equilibrar cuidadosamente la tasa de aprendizaje para prevenir tanto el subajuste (no aprender lo suficiente de tus datos) como el olvido catastrófico (perder el valioso conocimiento pre-entrenado).

Cargar el Modelo Pre-entrenado

Utilizaremos un modelo BERT pre-entrenado con una capa de clasificación para esta tarea.

from transformers import BertForSequenceClassification

# Load pre-trained BERT with a classification head
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=4)  # Adjust num_labels based on your dataset

Analicemos los componentes clave:

  1. Primero, importamos la clase necesaria:
from transformers import BertForSequenceClassification
  1. Luego, cargamos el modelo con estos parámetros:
  • 'bert-base-uncased': Esta es la variante del modelo BERT pre-entrenado que se utilizará
  • num_labels=4: Especifica que el modelo clasificará el texto en 4 categorías, que en este caso son Mundial, Deportes, Negocios y Ciencia/Tecnología

El modelo BertForSequenceClassification está específicamente diseñado para tareas de clasificación de texto, ya que añade una capa de clasificación sobre el modelo base de BERT. Este enfoque aprovecha el conocimiento pre-entrenado de BERT sobre patrones del lenguaje mientras lo adapta a la tarea específica de categorización de noticias.

Configurar el Entrenamiento

Definir los argumentos de entrenamiento y el recopilador de datos para un procesamiento eficiente por lotes.

from transformers import TrainingArguments, Trainer
from datasets import DatasetDict

# Split dataset into training and evaluation sets
train_dataset = tokenized_datasets['train']
eval_dataset = tokenized_datasets['test']

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    save_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
)

# Define the Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
)

Analicemos los componentes principales:

1. División del Conjunto de Datos
El código divide el conjunto de datos tokenizado en conjuntos de entrenamiento y evaluación:

  • train_dataset para el entrenamiento del modelo
  • eval_dataset para la evaluación del rendimiento

2. Configuración de Argumentos de Entrenamiento
La clase TrainingArguments establece parámetros esenciales de entrenamiento:

  • output_dir="./results": Directorio para guardar las salidas del modelo
  • evaluation_strategy="epoch": Evalúa el rendimiento del modelo después de cada época
  • save_strategy="epoch": Guarda puntos de control del modelo después de cada época
  • learning_rate=2e-5: Una tasa de aprendizaje pequeña adecuada para el ajuste fino
  • per_device_train_batch_size=16: Número de muestras procesadas en cada lote de entrenamiento
  • num_train_epochs=3: Número total de ciclos de entrenamiento
  • weight_decay=0.01: Parámetro de regularización para prevenir el sobreajuste

3. Configuración del Entrenador
La clase Trainer combina todos los componentes necesarios para el entrenamiento:

  • model: La instancia del modelo BERT
  • args: Los argumentos de entrenamiento definidos anteriormente
  • train_dataset: Los datos de entrenamiento
  • eval_dataset: Los datos de evaluación
  • tokenizer: Para procesar las entradas de texto

Esta configuración crea el pipeline completo de entrenamiento que maneja el proceso de ajuste fino del modelo BERT para tareas de categorización de noticias.

Entrenar el Modelo

# Train the model
trainer.train()

6. Paso 3: Ajuste Fino de BERT para Categorización de Noticias

El ajuste fino implica adaptar un modelo BERT pre-entrenado a tu conjunto de datos específico. Este proceso aprovecha el conocimiento existente del modelo sobre patrones y estructuras del lenguaje, mientras le enseña a realizar tu tarea particular de clasificación. Durante el ajuste fino, los pesos del modelo se ajustan ligeramente usando tu conjunto de datos, permitiéndole aprender las características y patrones específicos relevantes para la categorización de noticias.

Este enfoque es mucho más eficiente que entrenar un modelo desde cero, ya que requiere menos datos y recursos computacionales mientras típicamente logra mejores resultados. El proceso de ajuste fino implica equilibrar cuidadosamente la tasa de aprendizaje para prevenir tanto el subajuste (no aprender lo suficiente de tus datos) como el olvido catastrófico (perder el valioso conocimiento pre-entrenado).

Cargar el Modelo Pre-entrenado

Utilizaremos un modelo BERT pre-entrenado con una capa de clasificación para esta tarea.

from transformers import BertForSequenceClassification

# Load pre-trained BERT with a classification head
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=4)  # Adjust num_labels based on your dataset

Analicemos los componentes clave:

  1. Primero, importamos la clase necesaria:
from transformers import BertForSequenceClassification
  1. Luego, cargamos el modelo con estos parámetros:
  • 'bert-base-uncased': Esta es la variante del modelo BERT pre-entrenado que se utilizará
  • num_labels=4: Especifica que el modelo clasificará el texto en 4 categorías, que en este caso son Mundial, Deportes, Negocios y Ciencia/Tecnología

El modelo BertForSequenceClassification está específicamente diseñado para tareas de clasificación de texto, ya que añade una capa de clasificación sobre el modelo base de BERT. Este enfoque aprovecha el conocimiento pre-entrenado de BERT sobre patrones del lenguaje mientras lo adapta a la tarea específica de categorización de noticias.

Configurar el Entrenamiento

Definir los argumentos de entrenamiento y el recopilador de datos para un procesamiento eficiente por lotes.

from transformers import TrainingArguments, Trainer
from datasets import DatasetDict

# Split dataset into training and evaluation sets
train_dataset = tokenized_datasets['train']
eval_dataset = tokenized_datasets['test']

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    save_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
)

# Define the Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
)

Analicemos los componentes principales:

1. División del Conjunto de Datos
El código divide el conjunto de datos tokenizado en conjuntos de entrenamiento y evaluación:

  • train_dataset para el entrenamiento del modelo
  • eval_dataset para la evaluación del rendimiento

2. Configuración de Argumentos de Entrenamiento
La clase TrainingArguments establece parámetros esenciales de entrenamiento:

  • output_dir="./results": Directorio para guardar las salidas del modelo
  • evaluation_strategy="epoch": Evalúa el rendimiento del modelo después de cada época
  • save_strategy="epoch": Guarda puntos de control del modelo después de cada época
  • learning_rate=2e-5: Una tasa de aprendizaje pequeña adecuada para el ajuste fino
  • per_device_train_batch_size=16: Número de muestras procesadas en cada lote de entrenamiento
  • num_train_epochs=3: Número total de ciclos de entrenamiento
  • weight_decay=0.01: Parámetro de regularización para prevenir el sobreajuste

3. Configuración del Entrenador
La clase Trainer combina todos los componentes necesarios para el entrenamiento:

  • model: La instancia del modelo BERT
  • args: Los argumentos de entrenamiento definidos anteriormente
  • train_dataset: Los datos de entrenamiento
  • eval_dataset: Los datos de evaluación
  • tokenizer: Para procesar las entradas de texto

Esta configuración crea el pipeline completo de entrenamiento que maneja el proceso de ajuste fino del modelo BERT para tareas de categorización de noticias.

Entrenar el Modelo

# Train the model
trainer.train()

6. Paso 3: Ajuste Fino de BERT para Categorización de Noticias

El ajuste fino implica adaptar un modelo BERT pre-entrenado a tu conjunto de datos específico. Este proceso aprovecha el conocimiento existente del modelo sobre patrones y estructuras del lenguaje, mientras le enseña a realizar tu tarea particular de clasificación. Durante el ajuste fino, los pesos del modelo se ajustan ligeramente usando tu conjunto de datos, permitiéndole aprender las características y patrones específicos relevantes para la categorización de noticias.

Este enfoque es mucho más eficiente que entrenar un modelo desde cero, ya que requiere menos datos y recursos computacionales mientras típicamente logra mejores resultados. El proceso de ajuste fino implica equilibrar cuidadosamente la tasa de aprendizaje para prevenir tanto el subajuste (no aprender lo suficiente de tus datos) como el olvido catastrófico (perder el valioso conocimiento pre-entrenado).

Cargar el Modelo Pre-entrenado

Utilizaremos un modelo BERT pre-entrenado con una capa de clasificación para esta tarea.

from transformers import BertForSequenceClassification

# Load pre-trained BERT with a classification head
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=4)  # Adjust num_labels based on your dataset

Analicemos los componentes clave:

  1. Primero, importamos la clase necesaria:
from transformers import BertForSequenceClassification
  1. Luego, cargamos el modelo con estos parámetros:
  • 'bert-base-uncased': Esta es la variante del modelo BERT pre-entrenado que se utilizará
  • num_labels=4: Especifica que el modelo clasificará el texto en 4 categorías, que en este caso son Mundial, Deportes, Negocios y Ciencia/Tecnología

El modelo BertForSequenceClassification está específicamente diseñado para tareas de clasificación de texto, ya que añade una capa de clasificación sobre el modelo base de BERT. Este enfoque aprovecha el conocimiento pre-entrenado de BERT sobre patrones del lenguaje mientras lo adapta a la tarea específica de categorización de noticias.

Configurar el Entrenamiento

Definir los argumentos de entrenamiento y el recopilador de datos para un procesamiento eficiente por lotes.

from transformers import TrainingArguments, Trainer
from datasets import DatasetDict

# Split dataset into training and evaluation sets
train_dataset = tokenized_datasets['train']
eval_dataset = tokenized_datasets['test']

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    save_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
)

# Define the Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
)

Analicemos los componentes principales:

1. División del Conjunto de Datos
El código divide el conjunto de datos tokenizado en conjuntos de entrenamiento y evaluación:

  • train_dataset para el entrenamiento del modelo
  • eval_dataset para la evaluación del rendimiento

2. Configuración de Argumentos de Entrenamiento
La clase TrainingArguments establece parámetros esenciales de entrenamiento:

  • output_dir="./results": Directorio para guardar las salidas del modelo
  • evaluation_strategy="epoch": Evalúa el rendimiento del modelo después de cada época
  • save_strategy="epoch": Guarda puntos de control del modelo después de cada época
  • learning_rate=2e-5: Una tasa de aprendizaje pequeña adecuada para el ajuste fino
  • per_device_train_batch_size=16: Número de muestras procesadas en cada lote de entrenamiento
  • num_train_epochs=3: Número total de ciclos de entrenamiento
  • weight_decay=0.01: Parámetro de regularización para prevenir el sobreajuste

3. Configuración del Entrenador
La clase Trainer combina todos los componentes necesarios para el entrenamiento:

  • model: La instancia del modelo BERT
  • args: Los argumentos de entrenamiento definidos anteriormente
  • train_dataset: Los datos de entrenamiento
  • eval_dataset: Los datos de evaluación
  • tokenizer: Para procesar las entradas de texto

Esta configuración crea el pipeline completo de entrenamiento que maneja el proceso de ajuste fino del modelo BERT para tareas de categorización de noticias.

Entrenar el Modelo

# Train the model
trainer.train()

6. Paso 3: Ajuste Fino de BERT para Categorización de Noticias

El ajuste fino implica adaptar un modelo BERT pre-entrenado a tu conjunto de datos específico. Este proceso aprovecha el conocimiento existente del modelo sobre patrones y estructuras del lenguaje, mientras le enseña a realizar tu tarea particular de clasificación. Durante el ajuste fino, los pesos del modelo se ajustan ligeramente usando tu conjunto de datos, permitiéndole aprender las características y patrones específicos relevantes para la categorización de noticias.

Este enfoque es mucho más eficiente que entrenar un modelo desde cero, ya que requiere menos datos y recursos computacionales mientras típicamente logra mejores resultados. El proceso de ajuste fino implica equilibrar cuidadosamente la tasa de aprendizaje para prevenir tanto el subajuste (no aprender lo suficiente de tus datos) como el olvido catastrófico (perder el valioso conocimiento pre-entrenado).

Cargar el Modelo Pre-entrenado

Utilizaremos un modelo BERT pre-entrenado con una capa de clasificación para esta tarea.

from transformers import BertForSequenceClassification

# Load pre-trained BERT with a classification head
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=4)  # Adjust num_labels based on your dataset

Analicemos los componentes clave:

  1. Primero, importamos la clase necesaria:
from transformers import BertForSequenceClassification
  1. Luego, cargamos el modelo con estos parámetros:
  • 'bert-base-uncased': Esta es la variante del modelo BERT pre-entrenado que se utilizará
  • num_labels=4: Especifica que el modelo clasificará el texto en 4 categorías, que en este caso son Mundial, Deportes, Negocios y Ciencia/Tecnología

El modelo BertForSequenceClassification está específicamente diseñado para tareas de clasificación de texto, ya que añade una capa de clasificación sobre el modelo base de BERT. Este enfoque aprovecha el conocimiento pre-entrenado de BERT sobre patrones del lenguaje mientras lo adapta a la tarea específica de categorización de noticias.

Configurar el Entrenamiento

Definir los argumentos de entrenamiento y el recopilador de datos para un procesamiento eficiente por lotes.

from transformers import TrainingArguments, Trainer
from datasets import DatasetDict

# Split dataset into training and evaluation sets
train_dataset = tokenized_datasets['train']
eval_dataset = tokenized_datasets['test']

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    save_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
)

# Define the Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
)

Analicemos los componentes principales:

1. División del Conjunto de Datos
El código divide el conjunto de datos tokenizado en conjuntos de entrenamiento y evaluación:

  • train_dataset para el entrenamiento del modelo
  • eval_dataset para la evaluación del rendimiento

2. Configuración de Argumentos de Entrenamiento
La clase TrainingArguments establece parámetros esenciales de entrenamiento:

  • output_dir="./results": Directorio para guardar las salidas del modelo
  • evaluation_strategy="epoch": Evalúa el rendimiento del modelo después de cada época
  • save_strategy="epoch": Guarda puntos de control del modelo después de cada época
  • learning_rate=2e-5: Una tasa de aprendizaje pequeña adecuada para el ajuste fino
  • per_device_train_batch_size=16: Número de muestras procesadas en cada lote de entrenamiento
  • num_train_epochs=3: Número total de ciclos de entrenamiento
  • weight_decay=0.01: Parámetro de regularización para prevenir el sobreajuste

3. Configuración del Entrenador
La clase Trainer combina todos los componentes necesarios para el entrenamiento:

  • model: La instancia del modelo BERT
  • args: Los argumentos de entrenamiento definidos anteriormente
  • train_dataset: Los datos de entrenamiento
  • eval_dataset: Los datos de evaluación
  • tokenizer: Para procesar las entradas de texto

Esta configuración crea el pipeline completo de entrenamiento que maneja el proceso de ajuste fino del modelo BERT para tareas de categorización de noticias.

Entrenar el Modelo

# Train the model
trainer.train()