Navigation

Introduction to AI

Machine Learning

Deep Learning

Generative AI

Tools & Frameworks

General

Transfer Learning - Leveraging Pre-trained Models

Transfer learning is one of the most practical and impactful techniques in modern AI. Rather than training from scratch, we leverage knowledge from existing models trained on large datasets. This dramatically reduces data requirements and training time.

Why Transfer Learning Works

Pre-trained models have learned useful representations:

  • Low-level features (edges, corners, textures)
  • Mid-level features (shapes, patterns)
  • High-level features (objects, concepts)

These features transfer to new tasks.

Analogy: Learning to play tennis helps learning badminton. You don’t start from scratch.

The Transfer Learning Spectrum

1. Pre-training + Fine-tuning (Most Common)

Process:

  1. Model trained on large dataset (ImageNet, Wikipedia, etc.)
  2. Remove task-specific layers
  3. Add layers for new task
  4. Train on small labeled dataset

Data Requirement: 100s to 1000s of examples (vs 100,000s from scratch)

Example:

Pre-trained model: BERT (trained on Wikipedia)
New task: Sentiment classification
Labels needed: 1000 examples (vs billions for scratch training)

2. Feature Extraction

Use pre-trained model as fixed feature extractor.

Process:

  1. Load pre-trained model
  2. Remove classification layer
  3. Extract features for all data
  4. Train simple classifier (SVM, logistic regression)

Advantage: Very fast, no GPU needed

Disadvantage: Less accurate than fine-tuning

3. Domain Adaptation

Source and target domains different but related.

Example:

Source: Real-world photos
Target: Synthetic images from game

Learn to map synthetic to real, then fine-tune

4. Multi-Task Learning

Learn multiple tasks jointly.

Shared Layers
    ├─→ Task 1 Head
    ├─→ Task 2 Head
    └─→ Task 3 Head

Benefit: One model solves multiple tasks

Pre-Trained Model Sources

Computer Vision

ImageNet-Trained Models:

  • ResNet: Various depths
  • VGG: Simple, interpretable
  • Inception: Multi-scale
  • EfficientNet: Accuracy-efficiency tradeoff
  • Vision Transformers: Latest approach

Availability:

  • PyTorch torchvision: ImageNet-pretrained
  • TensorFlow Hub: Many models
  • Hugging Face: Community models

NLP

Pre-trained Language Models:

  • BERT: Encoder, bidirectional
  • GPT: Decoder, autoregressive
  • T5: Encoder-decoder
  • RoBERTa: Improved BERT
  • DistilBERT: Smaller, faster BERT

Training Data: Wikipedia, books, web (billions of tokens)

Other Domains

Multimodal:

  • CLIP: Image-text alignment
  • DALL-E: Text-to-image generation

Audio:

  • Speech models
  • Music models

Fine-Tuning Strategies

Full Fine-Tuning

Update all model parameters.

Pros:

  • Maximum customization
  • Best performance potential

Cons:

  • Large memory requirement
  • Risk of forgetting pre-trained knowledge
  • Slow training

Partial Fine-Tuning

Freeze early layers, fine-tune later layers.

Layer 1-3: Frozen (general features)
Layer 4-6: Fine-tune (task-specific)

Rationale:

  • Early layers learn general features (shared)
  • Later layers learn task-specific features

Benefit: Fewer parameters to train, faster, less risk of overfitting

Layer-wise Fine-Tuning

Gradually unfreeze layers.

Step 1: Fine-tune last layer only
Step 2: Unfreeze and fine-tune last 2 layers
Step 3: Unfreeze and fine-tune last 4 layers
...

Benefit: Gradual adaptation, stability

Low-Rank Adaptation (LoRA)

Add trainable low-rank matrices.

Output = (W + LoRA_A @ LoRA_B) @ Input
         └─ Frozen W  └─ Trainable (0.1% params)

Advantages:

  • Fraction of parameters
  • Much faster training
  • Switch between tasks

Data Requirements

Rule of Thumb

Small dataset (100s): Feature extraction
Medium dataset (1000s): Partial fine-tuning
Large dataset (100k+): Full fine-tuning
Huge dataset (millions): Train from scratch competitive

Practical Example

Task: Classify medical images

Option 1: From Scratch

  • Data: 100,000+ labeled images
  • Training: Weeks on GPUs
  • Performance: Moderate (medical data challenging)

Option 2: Transfer Learning

  • Data: 1,000 labeled images
  • Training: Hours on GPUs
  • Performance: Better (leverages ImageNet knowledge)

Transfer learning wins despite different domain (medical vs natural images)

Common Mistakes

Over-Regularization

Mistake: Using high regularization during fine-tuning

Problem: Prevents model from adapting

Solution: Use moderate regularization or decay during fine-tuning

Too High Learning Rate

Mistake: Using normal learning rates

Problem: Destroys pre-trained weights

Solution: Use lower learning rate (10x lower typical)

Insufficient Training Data

Mistake: Using too few examples

Problem: Overfitting despite transfer learning

Solution: Use data augmentation, early stopping, validation monitoring

Domain Mismatch

Mistake: Using model pre-trained on irrelevant domain

Problem: Features don’t transfer

Solution: Choose model pre-trained on similar domain

Forgetting Pre-training

Mistake: Training too long

Problem: Model unlearns general knowledge

Solution: Early stopping, lower learning rate

Practical Fine-Tuning Recipe

Step 1: Choose Pre-trained Model

  • Task similarity: Pick model trained on similar task
  • Architecture: Choose based on constraints (accuracy, speed)
  • Size: Balance accuracy vs speed

Step 2: Prepare Data

  • Clean and organize
  • Split into train/validation/test
  • Apply domain-specific preprocessing

Step 3: Setup Fine-tuning

# Load pre-trained model
model = load_pretrained("bert-base-uncased")

# Add task-specific head
model.classifier = nn.Linear(768, num_classes)

# Freeze early layers
for param in model.bert.parameters():
    param.requires_grad = False

# Setup optimizer with lower learning rate
optimizer = torch.optim.Adam(
    model.classifier.parameters(),
    lr=1e-5
)

Step 4: Train with Monitoring

best_val_loss = float('inf')
patience = 3
patience_counter = 0

for epoch in range(max_epochs):
    train_loss = train_one_epoch(model, train_data)
    val_loss = evaluate(model, val_data)
    
    if val_loss < best_val_loss:
        best_val_loss = val_loss
        patience_counter = 0
        save_checkpoint(model)
    else:
        patience_counter += 1
        if patience_counter >= patience:
            break  # Early stopping

Step 5: Evaluate

  • Test set performance
  • Error analysis
  • Comparison to baseline

Advanced Techniques

Gradual Unfreezing

LSTM approach applied to fine-tuning:

Phase 1: Train last layer
Phase 2: Train last 2 layers
Phase 3: Train all layers

Discriminative Learning Rates

Different learning rates for different layers:

Early layers: 1e-6 (preserve pre-training)
Middle layers: 1e-5
Final layers: 1e-4 (task-specific)

Knowledge Distillation

Large pre-trained model (teacher) → Small student model

Train student to match teacher predictions
Benefit: Compress knowledge, faster inference

Domain Adaptation

Source domain ≠ target domain

Example:

Source: Real car photos
Target: Synthetic car game screenshots

Approaches

Fine-tuning:

  • Train on target domain
  • May need less data than training from scratch

Domain Adversarial:

  • Adversarial training
  • Domain classifier tries to distinguish domains
  • Feature extractor tries to fool domain classifier

Self-training:

  • Label target data with source model
  • Refine labels iteratively

When NOT to Use Transfer Learning

  • Target task very different from pre-training
  • Target domain very different (sim-to-real gap)
  • Pre-training data contains errors/biases
  • Need interpretable model (transfer learning often black-box)

Tools and Resources

PyTorch

from torchvision import models
model = models.resnet50(pretrained=True)

TensorFlow Hub

Pre-trained models:

import tensorflow_hub as hub
model = hub.KerasLayer("https://...")

Hugging Face

NLP models:

from transformers import AutoModel
model = AutoModel.from_pretrained("bert-base-uncased")

Conclusion

Transfer learning leverages pre-trained models to solve new tasks with less data and computation. By fine-tuning models trained on large datasets, we achieve strong performance on smaller target datasets. Understanding when and how to apply transfer learning—choosing appropriate pre-trained models, setting learning rates, balancing frozen and trainable layers—is crucial for practical AI development. Transfer learning has become standard practice, enabling rapid prototyping and deployment of AI systems across domains.