Dropout alone trains sentence embeddings, no labels required
SimCSE learns sentence embeddings by asking a sentence to predict itself using only standard dropout as noise, and optionally hardens the task with NLI supervision.

What it does SimCSE learns to compress sentences into dense vectors using contrastive learning. In its unsupervised mode, a sentence is trained to agree with itself across two separate forward passes; the supervised mode adds natural-language-inference pairs, treating entailments as positives and contradictions as hard negatives. The repository provides pre-trained BERT and RoBERTa checkpoints, a small Python embedding utility, and evaluation code for semantic textual similarity tasks.
The interesting bit The unsupervised approach is almost insultingly simple: standard dropout is the only noise source, so the model learns by matching a sentence to its own stochastically masked twin. No paraphrasing, no synonym substitution, no extra unlabeled corpus—just the same text fed through twice with different random masks.
Key highlights
- Unsupervised models are trained on Wikipedia; supervised variants add NLI datasets and use contradiction pairs as hard negatives.
- Released checkpoints span BERT and RoBERTa (base and large), with the supervised RoBERTa-large averaging 83.76 on STS benchmarks.
- The
simcsepackage exposes encoding, cosine-similarity, and Faiss-backed search, and all checkpoints load natively in HuggingFace Transformers. - Evaluation relies on a modified SentEval suite that reports Spearman correlation across seven STS tasks.
- A small demo website demonstrates sentence retrieval, borrowing its frontend from the DensePhrases project.
Caveats
- Faiss search has known compatibility problems on Nvidia Ampere GPUs (RTX 3090 and A100), forcing a CPU fallback on newer hardware.
- Pooling strategy is tightly coupled to model flavor: supervised models want
cls, unsupervised checkpoints needcls_before_pooler, and vanilla BERT/RoBERTa prefers averaging the first and last layers. - The original published scores were obtained with PyTorch 1.7.1, so reproduction on newer releases may drift slightly.
Verdict A solid choice if you need sentence embeddings off the shelf or want to test how little augmentation contrastive learning can get away with. Pass if you are already locked into another embedding pipeline and have no patience for pooling-method bookkeeping.
Frequently asked
- What is princeton-nlp/SimCSE?
- SimCSE learns sentence embeddings by asking a sentence to predict itself using only standard dropout as noise, and optionally hardens the task with NLI supervision.
- Is SimCSE open source?
- Yes — princeton-nlp/SimCSE is open source, released under the MIT license.
- What language is SimCSE written in?
- princeton-nlp/SimCSE is primarily written in Python.
- How popular is SimCSE?
- princeton-nlp/SimCSE has 3.7k stars on GitHub.
- Where can I find SimCSE?
- princeton-nlp/SimCSE is on GitHub at https://github.com/princeton-nlp/SimCSE.