Multimodal hateful meme detection
Tests whether a multimodal model can detect hateful memes, comparing joint fusion against two separately trained models.
What it is
A controlled comparison for Intelligent Information Systems, with one colleague: does reading a meme's image and text together beat combining two separate models? Early fusion was Gemma 4 E4B fine-tuned with LoRA. Late fusion averaged the probabilities of a frozen BERT on the text and a frozen ViT on the image. Both trained on 500 memes from the Hateful Memes dataset, which was built with confounders to punish naive combinations, and were tested on 1,000.
Early fusion scored the highest AUROC, 0.649. BERT alone reached 0.607 and ViT alone 0.481, close to chance, while averaged late fusion fell to 0.529, below the better single model. The pattern reported for very large models held for open models small enough to fit on one Colab T4.
dashed line · chance, 0.5
The numbers
| Method | AUROC | 95% CI |
|---|---|---|
| BERT, text only | 0.607 | none |
| ViT, image only | 0.481 | none |
| Late fusion, averaged scores | 0.529 | none |
| Gemma 4 E4B, joint fusion with LoRA | 0.649 | 0.616 to 0.684 |
Recomputed from the saved test-set predictions, matching the notebook outputs.
- Uses the hateful memes dataset from Meta's earlier public challenge.
- Compares Gemma 4 doing joint fusion against a late-fusion pair of BERT and ViT.
What I learnt
- Pick the checkpoint by validation AUROC, not the last epoch. One run fell from 0.639 at epoch four to 0.487 at epoch five.
- LoRA on only the language side of a multimodal model is not enough to make it use the image. The adapter has to reach the vision tower and its connector too.
- Averaging a strong signal with a near-random one pulls the result down, not up.
- On a hard test set the F1-maximising threshold can drop so low that accuracy and F1 stop meaning much, so AUROC is the metric to report.
What I would do next
Swap the frozen ViT for CLIP, and learn the fusion weights instead of a fixed 50/50 average.
Regularise the classification heads and train on more than 500 memes.
Evaluate the confounder memes on their own once a dataset version labels them.