Fine-Tuning (ajuste fino) es una técnica de aprendizaje transferido
Un modelo previamente entrenado en una gran cantidad de datos.
Es ajustado con un conjunto de datos.
Más específico y reducido.
Se basa en un modelo preentrenado
Ej: BERT, ResNet, GPT.
Se entrena con un conjunto de datos específico
Para una tarea particular.
Se ajustan solo algunas capas del modelo
En lugar de entrenarlo desde cero.
Ventajas del Fine-Tuning
Ahorra tiempo y recursos
No es necesario entrenar desde cero.
Mejora el rendimiento
Se adapta mejor a la tarea específica.
Reduce la necesidad de grandes volúmenes de datos.
Ejemplo de Fine-Tuning con Transfer Learning en Visión por Computadora
Ajustar un modelo ResNet-50 que ha sido entrenado en ImageNet
Para clasificar imágenes de perros y gatos.
import torch
import torch.nn as nn
import torchvision.models as models
from torchvision import transforms, datasets
from torch.utils.data import DataLoader
#Cargar el modelo preentrenado ResNet-50
modelo = models.resnet50(pretrained=True)
#Congelar las capas convolucionales para no actualizarlas
for param in modelo.parameters():
param.requires_grad = False
#Reemplazar la capa de clasificación final
num_ftrs = modelo.fc.in_features
modelo.fc = nn.Linear(num_ftrs, 2) # 2 clases: perros y gatos
#Definir la función de pérdida y el optimizador
criterio = nn.CrossEntropyLoss()
optimizador = torch.optim.Adam(modelo.fc.parameters(), lr=0.001)
#Preparar los datos
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
])
dataset = datasets.ImageFolder(«ruta/dataset_perros_gatos», transform=transform)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
#Entrenar solo la nueva capa
for epoch in range(5):
for images, labels in dataloader:
optimizador.zero_grad()
outputs = modelo(images)
loss = criterio(outputs, labels)
loss.backward()
optimizador.step()
print(«Fine-Tuning completado»)
Explicación del Código
Cargamos ResNet-50 preentrenado en ImageNet.
Congelamos las capas convolucionales
Evitar modificar los pesos preentrenados.
Reemplazamos la capa de clasificación final
Ajustarla a 2 clases.
Entrenamos solo la nueva capa
Con nuestro conjunto de datos específico.
Fine-Tuning en Procesamiento de Lenguaje Natural (NLP)
También se usa en modelos como BERT, GPT, T5
Tareas de NLP.
Análisis de sentimiento.
Resumen de texto.
Respuestas a preguntas.
Ejemplo con BERT en Hugging Face
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
#Cargar modelo preentrenado BERT
modelo = BertForSequenceClassification.from_pretrained(«bert-base-uncased», num_labels=2)
tokenizador = BertTokenizer.from_pretrained(«bert-base-uncased»)
#Ajuste fino con un dataset de clasificación de texto
entrenamiento_args = TrainingArguments(output_dir=»./resultados», per_device_train_batch_size=8)
trainer = Trainer(model=modelo, args=entrenamiento_args)
trainer.train()
print(«Fine-Tuning de BERT completado»)
Aplicaciones del Fine-Tuning en IA
Clasificación de imágenes Transfer Learning con CNNs.
Procesamiento de lenguaje natural
Fine-Tuning en modelos como GPT y BERT.
Reconocimiento de voz
Fine-Tuning en modelos como Whisper.
Generación de texto y chatbots
GPT ajustado para atención al cliente.
El Fine-Tuning permite adaptar modelos.
Preentrenados a tareas específicas.
Reduce la necesidad de grandes volúmenes de datos.
Acelera el entrenamiento.
Es clave en modelos modernos de Visión por Computadora y NLP.






