--- language: en tags: - ad-creative - ctr-prediction - survival-analysis - multi-task-learning - clip - fatigue-prediction license: mit --- # Creative Intelligence Scorer **Multi-Task Creative Lifespan Prediction** — predicts ad creative CTR score and fatigue half-life from a raw image using a frozen CLIP backbone and a trainable multi-task head. ## Architecture ``` Input image (224×224 RGB) ↓ [FROZEN] CLIP-ViT-B/32 (openai/clip-vit-base-patch32) ↓ 512-dim embedding Projection: Linear(512→256) → ReLU → Dropout(0.2) ↓ 256-dim shared representation ┌─────────────────────┐ ↓ ↓ CTR head Fatigue head Linear(256→1) Linear(256→2) Sigmoid Weibull params (log_scale, log_shape) ``` Loss = 0.5 × BCELoss(ctr) + 0.5 × WeibullNLLLoss(fatigue, right-censored) ## Training data - Meta Ad Library (Apify scrape): 3,502 real ad images — gaming, ecommerce, finance verticals - PIL-generated synthetic ads: 18,746 images with rule-based CTR and half-life labels - Total: 22,248 images | 80/10/10 train/val/test split ## Metrics (test set) | Metric | Value | Target | |--------|-------|--------| | Spearman r (CTR ranking) | TBD | > 0.30 | | MAE (CTR calibration) | TBD | < 0.15 | ## Limitations - **CTR labels are proxy scores**, not real click-through rates — derived from ad activity signals, not A/B test data. - **GradCAM is a spatial approximation** — CLIP's pooler_output discards spatial structure; the 16×16 heatmap is gradient-weighted feature attribution on the projection layer, not true spatial GradCAM. - Trained on a dataset with known label imbalance (wear-out >> cut-out). ## Intended use Portfolio project demonstrating Multi-Task Creative Lifespan Prediction for ad creative scoring. Not intended for production ad serving decisions.