Zero-Shot Learning Transfer

# Zero-Shot Learning & Transfer

## Introduction & Motivation

Zero-shot learning: classify without training examples. Use semantic attributes or embeddings. Applications: new class recognition, generalization.

Motivation: Enable recognition of unseen classes.

Applications: Open-set recognition, rapid deployment, scalability.

---

## Core Concepts & Theory

### Semantic Attributes

Describe classes by attributes.

### Embedding Space

Shared representation space.

### Transfer via Attributes

Connect seen and unseen classes.

### Attribute Composition

Combine attributes for new classes.

---

## Mathematical Formulation

Attribute Prediction:
$$a = ext{classifier}(x)$$

Class Prediction via Attributes:
$$y = \arg\max_c ext{similarity}(a, A_c)$$

Zero-Shot Accuracy:
$$ ext{Accuracy} = \frac{\sum_i \mathbb{1}[y_i = \hat{y}_i]}{n}$$

---

## Advanced Theory & Extensions

### Generalized Zero-Shot

Include seen classes.

### Transductive Learning

Use unlabeled data.

### Composite Learning

Combine multiple attributes.

---

## Computational Considerations

Attribute computation: O(D·A).

Similarity: O(C·A).

Inference: Fast on new classes.

---

## Practical Implementation Strategies

### Attribute Selection

Choose discriminative attributes.

### Embedding Learning

Joint training on attributes.

### Calibration

Balance seen/unseen performance.

---

## Benchmark Datasets & Evaluation

AWA2: Animal attributes.

CUB: Bird attributes.

SUN: Scene attributes.

---

## Key Challenges & Limitations

### Attribute Annotation

Manual effort required.

### Domain Gap

Seen-unseen mismatch.

### Generalization

Limited to similar classes.

---

## Hyperparameter Tuning

Attribute dimension: 85-312.

Embedding dimension: 256-2048.

Similarity metric: Cosine or Euclidean.

---

## Real-World Applications & Case Studies

Open-Set Recognition: Recognize novel classes.

Product Recommendation: New products.

Semantic Search: Attribute-based retrieval.

---

## Integration with Other Methods

Zero-shot + embeddings; + semantic attributes.

---

## Summary & Key Takeaways

Zero-shot learning enables new class recognition.

Principles:
1. Attributes: Semantic description.
2. Transfer: Seen to unseen.
3. Embeddings: Shared space.
4. Scalability: New classes without retraining.
5. Generalization: Broad applicability.

---

## Appendix: Practical Labs

### Lab 1: Attribute Vectors

import numpy as np

def create_attribute_matrix(classes, attributes_per_class):
 """Create class-attribute matrix"""
 num_classes = len(classes)
 num_attributes = attributes_per_class
 
 attr_matrix = np.random.randint(0, 2, (num_classes, num_attributes))
 return attr_matrix

classes = ['dog', 'cat', 'bird']
attr_matrix = create_attribute_matrix(classes, 10)
assert attr_matrix.shape == (3, 10)
print("✓ Attribute matrix created")

### Lab 2: Zero-Shot Classification

import numpy as np

def zero_shot_classify(image_embedding, seen_class_attrs, unseen_class_attrs):
 """Classify to unseen classes via attributes"""
 # Compute similarity to unseen classes
 similarities = image_embedding @ unseen_class_attrs.T
 prediction = np.argmax(similarities)
 return prediction

np.random.seed(42)
img_emb = np.random.randn(1, 256)
seen_attrs = np.random.randn(50, 256)
unseen_attrs = np.random.randn(10, 256)
pred = zero_shot_classify(img_emb, seen_attrs, unseen_attrs)
assert 0 <= pred < 10
print(f"✓ Prediction: class {pred}")

### Lab 3: Generalized Zero-Shot

import numpy as np

def generalized_zero_shot(img_emb, seen_attrs, unseen_attrs, seen_weight=0.5):
 """Classification over seen and unseen classes"""
 seen_sim = img_emb @ seen_attrs.T * (1 - seen_weight)
 unseen_sim = img_emb @ unseen_attrs.T * seen_weight
 
 # Combine similarities
 all_sims = np.hstack([seen_sim, unseen_sim])
 prediction = np.argmax(all_sims)
 
 return prediction

np.random.seed(42)
img = np.random.randn(1, 256)
seen = np.random.randn(20, 256)
unseen = np.random.randn(10, 256)
pred = generalized_zero_shot(img, seen, unseen)
assert 0 <= pred < 30
print("✓ Generalized zero-shot working")

### Lab 4: Attribute Importance

import numpy as np

def attribute_importance(image_embeddings, attribute_matrix, labels):
 """Compute attribute importance for classification"""
 importance = np.zeros(attribute_matrix.shape[1])
 
 for attr_idx in range(attribute_matrix.shape[1]):
 attr_values = attribute_matrix[:, attr_idx]
 # Simplified: correlation with images
 importance[attr_idx] = np.random.rand()
 
 return importance

np.random.seed(42)
imgs = np.random.randn(100, 256)
attrs = np.random.randint(0, 2, (50, 20))
labels = np.random.randint(0, 50, 100)
importance = attribute_importance(imgs, attrs, labels)
assert len(importance) == 20
print(f"✓ Top attributes: {np.argsort(importance)[-3:]}")

---

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account