Paper · 2021-04-14 · cs.CL
TSDAE: Using Transformer-based Sequential Denoising Auto-Encoder for Unsupervised Sentence Embedding Learning
Trains a sentence encoder without labels: each sentence loses 60% of its words, the encoder turns the damaged text into one CLS vector, and a weight-tied Transformer decoder rebuilds the original from that vector alone. Author-reported: best unsupervised average on four domain tasks (55.2 vs 52.4 for CT) and up to 6.4 points over CT on SciDocs; also a strong pre-training step.
Denoising autoencoderText embeddingContrastive learningMasked language modelingsentence-embeddingsunsupervised-learningdenoising-autoencoderdomain-adaptationpre-training
arXivPDFCodeMarkdown15 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Good sentence embeddings usually need many labelled pairs of similar sentences, and labelling is expensive. This paper asks whether a sentence encoder can learn from plain, unlabelled sentences alone. The method is a game of reconstruction: the input is a sentence with many of its words removed, and the model has to rebuild the full sentence. The only route for that information is a single vector produced by the encoder, so that vector has to hold the meaning of the sentence.
After training, the decoder is thrown away and the encoder alone produces the embeddings. The authors also argue that the usual test, similarity on general news-style sentence pairs, says little about how a model will do on specialised text. They therefore test on search, re-ranking and paraphrase tasks drawn from different domains. On those tasks the method beats other unsupervised approaches, and it is also a good starting point for further training on labelled data.
TL;DR
- The encoder reads a sentence with 60% of its words deleted and produces one vector. A decoder rebuilds the original sentence from that vector only §3.1 §3.2 app. A.
- The decoder's cross-attention sees only the sentence vector, which forces the vector to carry the meaning §3.2.
- Author-reported: TSDAE has the best unsupervised average over four domain tasks, 55.2 against 52.4 for CT tab. 2. It is weak on general STS: 66.0 Spearman on STSb against 73.9 for CT tab. 3.
- Author-reported: as a pre-training step before labelled training, TSDAE beats masked language modelling on most datasets §6 fig. 2.
- Training runs a second Transformer, a decoder with cross-attention, next to the encoder denoising_auto_encoder.py. Only the encoder is used at inference §3.2.
Problem
Sentence embeddings for search, re-ranking and paraphrase detection are usually trained with labelled sentence pairs. For most domains those labels are not available, and making them is costly §1. Earlier unsupervised methods were mostly judged on STS, but STS sentences are general-domain, have an artificial score distribution, and do not reflect how the embeddings do on real tasks §4.
The paper asks how unsupervised methods perform on specialised domains, whether labelled data can be added later, and whether the method helps as pre-training §1 §4.
Method
Training objective. The encoder receives a damaged sentence x̃ and produces a fixed-size sentence vector. The decoder must predict every token of the original sentence x from that vector. The objective is the expected log-likelihood of x given x̃, summed over the tokens of x §3.1. The output probability of each token is a softmax over the vocabulary embeddings, scored against the decoder hidden state §3.1. The paper's displayed objective is unnumbered; the only numbered equations in the paper are the two BERT-flow equations eq. 1 eq. 2.
Damage. The noise is token deletion. The paper's text names deletion and swapping §3.1; its appendix compares five noise types and picks deletion app. A tab. 5. The deletion ratio is the fraction of tokens affected, and the search selected 0.6 app. A tab. 6. The paper's stated example is a ratio of 0.3 meaning 30% of tokens are affected app. A.
Decoder bottleneck. The paper's modified cross-attention takes its keys and values only from the sentence vector, as a one-row matrix of size d, so the decoder never sees the encoder's per-token states §3.2. The decoder hidden state at each decoding step attends to that single row §3.2.
Sentence vector. The sentence vector is the [CLS] token output, selected in the appendix search app. A tab. 7.
Weight tying. Encoder and decoder share parameters during training. Cross-attention weights have no encoder counterpart and are not shared app. A. The paper does not say how the decoder is initialised; the code starts it from the same checkpoint as the encoder when weights are tied denoising_auto_encoder.py.
Training. For TSDAE the paper uses 100K steps, batch size 8, AdamW, learning rate 3e-5 app. B. It does not use early stopping on labelled data, because labelled data is assumed to be unavailable app. B.
# One TSDAE training step [§3.1] [§3.2]
# Code citations are relative to sentence_transformers/sentence_transformer/
# Input: original sentences, token ids (B, L)
# Output: scalar loss
def tsdae_loss(encoder, decoder, original_ids, del_ratio=0.6):
# Damage each sentence by deleting tokens [app. A] [tab. 6]
damaged_ids = delete_tokens(original_ids, del_ratio)
# One sentence vector per input, from the [CLS] position [§3.2] [app. A]
sentence_vecs = encoder(damaged_ids) # (B, d)
# The decoder sees only this vector, as a memory of length 1 [§3.2]
memory = sentence_vecs[:, None, :] # (B, 1, d)
# Teacher forcing: predict each next token of the original [§3.1]
decoder_input = original_ids[:, :-1] # (B, L-1)
labels = original_ids[:, 1:] # (B, L-1)
# Token logits from the decoder, attending to the memory [§3.2]
logits = decoder(decoder_input, memory) # (B, L-1, V)
# Average cross-entropy over non-padding tokens
# [code: losses/denoising_auto_encoder.py#L213-L214]
loss = cross_entropy(logits, labels, ignore=PAD_ID)
return loss
# Random deletion of words [app. A]
# [code: datasets/denoising_auto_encoder.py#L49-L61]
def delete_tokens(sentence_ids, ratio):
# Split the sentence into words [code: datasets/denoising_auto_encoder.py#L53]
words = to_words(sentence_ids)
# Drop each word with probability ratio [code: datasets/denoising_auto_encoder.py#L58]
keep = [random() >= ratio for word in words]
# If every word was dropped, keep one random word
# [code: datasets/denoising_auto_encoder.py#L59-L60]
if not any(keep):
keep[random_index(len(words))] = True
return to_ids([w for w, k in zip(words, keep) if k])Steps:
- Sample a batch of sentences and damage each one by deleting tokens at ratio 0.6 app. A tab. 6.
- Encode the damaged sentence and take the CLS vector as the sentence embedding §3.2 app. A.
- Feed the vector to the decoder as the only encoder-side input and train the decoder to output the original tokens, shifted by one position §3.1 §3.2.
- Update encoder and decoder together, since their weights are shared app. A app. B.
- After training, use the encoder alone with the pooling in step 2 to embed sentences §3.2.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| Training steps (TSDAE) | 100K | app. B | Same as the other unsupervised methods; not stated for the STS-B analysis |
| Batch size (TSDAE) | 8 | app. B | |
| Optimiser (TSDAE) | AdamW | app. B | |
| Learning rate (TSDAE) | 3e-5 | app. B | |
| Weight decay (TSDAE) | not stated | app. B | Weight decay 0.01 is given for BERT-flow only |
| Learning-rate schedule and warmup (TSDAE) | not stated | app. B | |
| Max sequence length | not stated | train_stsb_tsdae.py | The paper does not state one; the example uses 75 |
| Deletion ratio | 0.6 | app. A tab. 6 | Fraction of tokens affected; best of 0.1 to 0.9 |
| Noise type | Deletion | app. A tab. 5 | Best of five types at ratio 0.3 |
| Sentence vector | CLS pooling | app. A tab. 7 | Mean pooling scored slightly higher; CLS chosen |
| Weight tying | Encoder and decoder | app. A | Raised the validation score from 78.77 to 79.15 app. A |
| Decoder init when tied | Encoder checkpoint | denoising_auto_encoder.py | Not stated in the paper |
| Base checkpoint | BERT-base-uncased | §5 | Other checkpoints in app. C |
| Seeds | 5 | §5 | Mean over 5 seeds |
| Tuning run | 30K steps, eval every 1.5K | app. A | On SNLI+MultiNLI without labels, scored by STS-B Spearman |
| Corpus size study | 128 to 65,536 sentences | §7.1 | Up to 10 epochs or 100K steps, best dev score reported |
| MLM baseline | 100K steps, batch 8, lr 5e-5 | §5.2 | Mean pooling; other MLM settings from BERT |
| CT baseline | lr 1e-5, RMSProp, mean pooling | app. B | Segmented schedule: 1e-5 to step 500, 8e-6 to 1000, 6e-6 to 1500, 4e-6 to 2000, then 2e-6 |
| SimCSE baseline | 1 epoch, batch 512, AdamW, lr 5e-5 | app. B | Linear layer on CLS; official code |
| BERT-flow baseline | lr 1e-6, AdamW, weight decay 0.01 | app. B | Mean pooling; encoder frozen |
| In-domain SBERT | 10 epochs, max 20K steps, batch 64 | app. B | Cosine similarity; early stopping on validation |
Results
Author-reported. Setup: BERT-base-uncased with mean pooling unless noted; four domain datasets (AskUbuntu, CQADupStack, TwitterPara, SciDocs), each scored by MAP or AP and averaged across sub-tasks; 5 seeds §4.1 §5 tab. 2.
Main table tab. 2. The paper's † marks cases where TSDAE beats both CT and SimCSE in all five runs. The Avg. column is the mean of the four dataset scores.
| Method | AskU. | CQADup. | TwitterP. TURL | TwitterP. PIT | TwitterP. Avg | SciDocs Cite | SciDocs CC | SciDocs CR | SciDocs CV | SciDocs Avg | Avg. |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Unsupervised, BERT-base | |||||||||||
| TSDAE | 59.4† | 14.5† | 76.8† | 69.2 | 73.0 | 71.4† | 73.9† | 75.0† | 75.6† | 74.0† | 55.2† |
| MLM | 54.3 | 11.7 | 71.9 | 69.7 | 70.8 | 71.2 | 75.8 | 75.1 | 76.2 | 74.6 | 52.9 |
| CT | 56.3 | 13.3 | 74.6 | 70.4 | 72.5 | 63.4 | 67.1 | 70.1 | 69.7 | 67.6 | 52.4 |
| SimCSE | 55.9 | 12.4 | 74.5 | 62.5 | 68.5 | 62.5 | 65.1 | 67.7 | 67.6 | 65.7 | 50.6 |
| BERT-flow | 53.7 | 9.2 | 72.8 | 65.7 | 69.3 | 61.3 | 62.8 | 66.7 | 67.1 | 64.5 | 49.2 |
| Domain adaptation: NLI+STS → target | |||||||||||
| TSDAE | 58.7 | 13.6 | 75.8 | 66.2 | 71 | 69.9† | 73.8† | 75† | 75.7† | 73.6† | 54.2† |
| MLM | 54.4 | 9.7 | 69.8 | 68.1 | 69 | 67.1 | 71.8 | 72.6 | 72.9 | 71.1 | 51.1 |
| CT | 57.9 | 14.2 | 75.6 | 70.6 | 73.1 | 62.3 | 66.2 | 68.5 | 68.9 | 66.5 | 52.9 |
| SimCSE | 56.6 | 13.8 | 73.4 | 65.9 | 69.7 | 61.8 | 63.7 | 67.01 | 66.7 | 64.8 | 51.2 |
| BERT-flow | 58.2 | 13.9 | 76.5 | 67.4 | 72 | 62.2 | 64.8 | 68.1 | 68 | 65.8 | 52.5 |
| Domain adaptation: target → NLI+STS | |||||||||||
| TSDAE | 59.4† | 14.4† | 75.8 | 73.1† | 74.5† | 75.6† | 78.6† | 78.1† | 78.2† | 77.6† | 56.5† |
| MLM | 60.6 | 14.3 | 75.0 | 68.6 | 71.8 | 74.7 | 78.2 | 77.0 | 77.6 | 76.9 | 55.9 |
| CT | 56.4 | 13.4 | 75.9 | 68.9 | 72.4 | 66.5 | 69.6 | 70.6 | 72.2 | 69.7 | 53.0 |
| SimCSE | 56.2 | 13.1 | 75.5 | 67.3 | 71.4 | 65.5 | 68.5 | 70.0 | 71.4 | 68.9 | 52.4 |
| Other unsupervised approaches | |||||||||||
| BM25 | 53.4 | 13.3 | 71.9 | 70.5 | 71.2 | 58.9 | 61.3 | 67.3 | 66.9 | 63.6 | 50.4 |
| Avg. GloVe | 51.0 | 10.0 | 70.1 | 52.1 | 61.1 | 58.8 | 60.6 | 64.2 | 65.4 | 62.2 | 46.1 |
| Sent2Vec | 49.0 | 3.2 | 47.5 | 39.9 | 43.7 | 61.6 | 66.0 | 66.1 | 66.7 | 65.1 | 40.2 |
| BERT-base-uncased | 48.5 | 6.5 | 69.1 | 61.7 | 65.4 | 59.4 | 65.1 | 65.4 | 68.6 | 64.6 | 46.3 |
| Out-of-the-box supervised pre-trained | |||||||||||
| SBERT-base-nli-v2 | 53.4 | 11.8 | 75.4 | 69.9 | 72.7 | 66.8 | 70.0 | 70.7 | 72.8 | 70.1 | 52.0 |
| SBERT-base-nli-stsb-v2 | 54.5 | 12.9 | 75.9 | 68.5 | 72.2 | 66.2 | 69.2 | 69.9 | 72.3 | 69.4 | 52.3 |
| USE-large | (59.3) | (15.9) | 77.1 | 69.8 | 73.5 | 67.1 | 69.5 | 71.4 | 72.6 | 70.2 | 54.7 |
| In-domain supervised (upper bound) | |||||||||||
| SBERT-supervised | 63.8 | 16.3 | 81.6 | 75.8 | 78.7 | 90.4 | 91.2 | 86.2 | 83.6 | 87.9 | 61.6 |
USE-large was trained on in-domain data for AskUbuntu and CQADupStack; those values are shown in parentheses tab. 2. The per-dataset MAP or AP scores are as the paper reports them; the paper gives no per-task variance for this table.
Checkpoint study tab. 9, mean ± standard deviation over 5 seeds. Each checkpoint gets the four unsupervised methods that tab. 9 reports; there are no MLM rows.
| Checkpoint | Method | AskU. | CQADup. | TwitterP. | SciDocs | Avg. |
|---|---|---|---|---|---|---|
| BERT-base | TSDAE | 59.4 ± 0.3 | 14.5 ± 0.1 | 73.0 ± 0.4 | 74.0 ± 0.4 | 55.2 ± 0.2 |
| BERT-base | CT | 56.3 ± 0.7 | 13.3 ± 0.3 | 72.5 ± 0.5 | 67.6 ± 0.4 | 52.4 ± 0.3 |
| BERT-base | SimCSE | 55.9 ± 0.8 | 12.4 ± 0.0 | 68.5 ± 0.0 | 65.7 ± 0.0 | 50.6 ± 0.2 |
| BERT-base | BERT-flow | 53.7 ± 0.2 | 9.2 ± 0.1 | 69.3 ± 0.2 | 64.5 ± 0.1 | 49.2 ± 0.1 |
| DistilBERT-base | TSDAE | 59.2 ± 0.3 | 14.6 ± 0.1 | 73.9 ± 0.3 | 72.3 ± 0.9 | 54.9 ± 0.2 |
| DistilBERT-base | CT | 57.7 ± 0.8 | 14.0 ± 0.3 | 66.4 ± 0.4 | 72.2 ± 0.7 | 52.3 ± 0.3 |
| DistilBERT-base | SimCSE | 54.8 ± 0.7 | 12.3 ± 0.1 | 66.8 ± 0.6 | 65.9 ± 0.1 | 49.9 ± 0.3 |
| DistilBERT-base | BERT-flow | 55.0 ± 0.2 | 11.0 ± 0.0 | 65.9 ± 0.0 | 70.5 ± 0.1 | 50.5 ± 0.1 |
| RoBERTa-base | TSDAE | 58.3 ± 0.7 | 12.2 ± 0.3 | 70.0 ± 0.8 | 61.4 ± 0.5 | 50.3 ± 0.3 |
| RoBERTa-base | CT | 56.7 ± 0.5 | 14.2 ± 0.3 | 69.4 ± 1.3 | 63.1 ± 0.3 | 50.5 ± 0.4 |
| RoBERTa-base | SimCSE | 56.6 ± 0.5 | 12.4 ± 0.2 | 66.8 ± 0.7 | 64.4 ± 0.3 | 50.1 ± 0.2 |
| RoBERTa-base | BERT-flow | 54.5 ± 0.2 | 10.5 ± 0.1 | 69.0 ± 0.1 | 53.5 ± 0.2 | 46.6 ± 0.1 |
| DistilRoBERTa-base | TSDAE | 58.9 ± 0.5 | 12.5 ± 0.1 | 68.5 ± 0.5 | 59.3 ± 0.6 | 49.9 ± 0.4 |
| DistilRoBERTa-base | CT | 57.9 ± 0.8 | 13.8 ± 0.3 | 63.6 ± 1.4 | 62.7 ± 0.5 | 49.8 ± 0.4 |
| DistilRoBERTa-base | SimCSE | 57.1 ± 0.2 | 12.2 ± 0.1 | 65.6 ± 0.8 | 63.4 ± 0.4 | 49.6 ± 0.2 |
| DistilRoBERTa-base | BERT-flow | 56.0 ± 0.2 | 11.1 ± 0.1 | 68.5 ± 0.1 | 53.0 ± 0.2 | 46.9 ± 0.1 |
| ELECTRA-base | TSDAE | 56.6 ± 1.1 | 8.0 ± 0.3 | 69.0 ± 1.6 | 66.2 ± 5.6 | 49.9 ± 1.1 |
| ELECTRA-base | CT | 50.3 ± 0.4 | 5.0 ± 0.2 | 66.5 ± 0.7 | 46.1 ± 0.6 | 41.6 ± 0.8 |
| ELECTRA-base | SimCSE | 50.9 ± 0.3 | 6.2 ± 0.1 | 61.8 ± 0.6 | 49.3 ± 0.3 | 42.0 ± 0.1 |
| ELECTRA-base | BERT-flow | 51.3 ± 0.3 | 5.2 ± 0.0 | 62.4 ± 0.1 | 41.2 ± 0.1 | 38.4 ± 3.0 |
The paper marks best values within each group by underline and the overall best by bold tab. 9; those marks are not reproduced here. Each value is shown as the paper gives it.
Other STS and pre-training numbers:
| Setting | Metric | Baseline | This paper | Source |
|---|---|---|---|---|
| STS benchmark test, Spearman | STSb | CT 73.9 | TSDAE 66.0 | tab. 3 |
| Specific tasks, avg. of tab. 2 | Avg. | CT 52.4 | TSDAE 55.2 | tab. 3 |
| SciDocs avg., unsupervised | MAP/AP | CT 67.6 | TSDAE 74.0 | tab. 2 |
| Labelled pairs to match TSDAE, average | count | not applicable | 2333 | tab. 10 |
| Labelled pairs to match TSDAE, AskUbuntu | count | not applicable | 140 | tab. 10 |
| Pre-training vs MLM | per dataset | MLM | TSDAE, except AskUbuntu | §6 fig. 2 fig. 5 |
| Checkpoint for the TSDAE decoder and encoder, average | Avg. | BERT-base 55.2 | BART-base 47.6, T5-base 31.7, scratch 50.5 | tab. 4 |
Table 3 gives the averages; the per-dataset STS table is tab. 11. The label-efficiency numbers in tab. 10 are estimates from a binary search over labelled-pair counts with precision set to one standard deviation of the score app. D. The annotation-time estimate, 20 minutes per 100 Twitter pairs, is from one annotator in one experiment app. D.
Ablations app. A tab. 5 tab. 6 tab. 7. Noise type, ratio and pooling, scored by STS-B Spearman on the tuning run:
| Setting | Value | Score |
|---|---|---|
| Noise type (ratio 0.3, CLS) | Delete | 78.33 |
| Swap | 76.85 | |
| Mask | 76.56 | |
| Replace | 74.01 | |
| Add | 72.65 | |
| Deletion ratio | 0.1 / 0.2 / 0.3 / 0.4 / 0.5 | 77.81 / 77.70 / 77.75 / 78.02 / 78.25 |
| 0.6 | 78.77 | |
| 0.7 / 0.8 / 0.9 | 78.19 / 77.69 / 75.67 | |
| Pooling (ratio 0.6) | CLS / Mean / Max | 78.77 / 78.84 / 78.17 |
Whether these ablation scores are on the validation or test split is not stated; the text calls the tied-weight result a validation score app. A.
Paper vs code
The paper's footnote links UKPLab/sentence-transformers. The code cited here is the repository at commit 1fa45b4 (version 6.2.0.dev0 in pyproject.toml), which is much newer than the v0.3.8 the paper says it used app. B pyproject.toml. The clone is shallow and contains no v0.3.8 code, so the code below is the current implementation. Whether it reproduces the paper's tables was not checked.
- Deletion probability, example scripts. The paper's ratio 0.6 means 60% of tokens are affected app. A. The legacy dataset deletes each word with probability 0.6 denoising_auto_encoder.py and the README keeps each word with probability 1 − 0.6 README.md. The STS-B example script keeps each word with probability 0.6, so it deletes about 40% train_stsb_tsdae.py. The file-based example uses the same rule train_tsdae_from_file.py. Neither matches the paper's 60% deletion.
- Loss normalisation. The paper's objective sums log-probabilities over tokens for each sentence §3.1. The code averages cross-entropy over non-padding tokens in the batch denoising_auto_encoder.py. The learning rate tuned under one normalisation may not transfer to the other.
- Decoder causality. The decoder is loaded as a causal language model with cross-attention enabled denoising_auto_encoder.py. The paper does not state whether the decoder self-attention is causal.
- Decoder input and target. Teacher forcing feeds the original sentence without its last token and predicts it shifted by one denoising_auto_encoder.py. The paper gives no shift rule.
- Weight tying direction. The tying replaces encoder parameters with the decoder's objects, and the cross-attention weights are skipped denoising_auto_encoder.py denoising_auto_encoder.py. The paper does not describe direction or the cross-attention exception.
- Sentence vector. The example scripts use CLS pooling train_stsb_tsdae.py, which matches app. A. The README snippet does not set pooling, so it uses the library default.
- Training length. The paper trains 100K steps at batch 8 app. B. The STS-B example trains for one epoch over the wiki1m dataset at batch 8, which gives about 124K steps for the 990K training rows shown in its comment train_stsb_tsdae.py train_stsb_tsdae.py train_stsb_tsdae.py.
- Mixed precision and sequence length. The example uses fp16 and a maximum sequence length of 75 tokens train_stsb_tsdae.py train_stsb_tsdae.py. The paper states neither.
- Static embeddings are refused. The loss raises an error for models whose first module is a static embedding denoising_auto_encoder.py.
No discrepancies were checked for the baselines (CT, SimCSE, BERT-flow, MLM), because their code is not in this repository. The paper says it re-implemented BERT-flow and used the official SimCSE code §5.5 app. B.
Pitfalls
- Score-table mismatch. The Table 2 caption says "average precision", but Section 4 says MAP for AskUbuntu, CQADupStack and SciDocs and AP for TwitterPara §4.1 tab. 2.
- Gain over CT. The text says 2.6 points on average over all tasks §6. Table 2 gives 55.2 against 52.4, a 2.8-point gap tab. 2. The "up to 6.4 points" claim is the SciDocs average tab. 2.
- "93.1% of supervised". The abstract's 93.1% is the AskUbuntu ratio, 59.4 over 63.8 for in-domain SBERT tab. 2. The other datasets give lower ratios, for example TwitterPara 73.0 over 78.7.
- Pooling choice. Mean pooling scored slightly higher than CLS (78.84 against 78.77), but the paper chose CLS because mean pooling loses position information app. A tab. 7. An implementer who wants the best score on the ablation can take mean pooling.
- Decoder initialisation. When tying is on, the decoder is initialised from the encoder checkpoint, and its cross-attention weights are new and random. The paper does not say how cross-attention is initialised denoising_auto_encoder.py train_stsb_tsdae.py.
- Deletion versus swap. The text names deletion and swapping as noise §3.1, but the code only implements deletion denoising_auto_encoder.py. The appendix comparison of five noise types is the only evidence for other types app. A tab. 5.
- Ablation split. The tuning run trains on SNLI+MultiNLI and reports STS-B Spearman app. A. Whether those scores are validation or test is not stated. The noise type, ratio and pooling were chosen on these STS-B scores, so the STS-B numbers in the main tables are not a clean held-out result for that configuration.
- Dev-set selection. The main experiments do not early-stop on labelled data app. B. The corpus-size study reports the best development score across epochs §7.1. That is a different protocol from the main table.
- STS does not predict downstream. TSDAE trails CT by 7.9 points on STSb tab. 3. The paper argues that STS is a weak selection criterion for the downstream tasks it reports §4 §8 §9; the implementer should not expect STS gains from TSDAE.
- Cost. Each training step runs the encoder and the decoder, and the code's docstring says tying the weights limits memory use denoising_auto_encoder.py. The paper does not report training time or memory.
- Decoder checkpoint. Using BART or T5 as the base made the decoder overfit: low training loss but worse test scores than training from scratch §8 tab. 4. The paper recommends single-encoder checkpoints such as BERT.
- Evaluation toolkit. The paper's evaluation splits and toolkit are at UKPLab/useb §4.1. That repository was not fetched or checked.
- Figures and equations. The paper's figures are described in words only here; they are not reproduced. Only two equations are numbered in the paper eq. 1 eq. 2; the TSDAE objective is cited by section §3.1.
- Commented-out content. The TeX source includes commented-out sections (dataset statistics, training-dynamics figures, an MNRL section). They are not part of the compiled paper and are not used here.
- Sentence sampling for STS. The STS-analysis training corpus is "sampled from Wikipedia" §6.1. Its size and sampling procedure are not stated.
Lineage
- Builds on: Sequential denoising autoencoders, cited as Vincent et al. 2010 and Goodfellow et al. 2016 §3; the Transformer encoder-decoder architecture §3.1, changed so the decoder reads only the sentence vector §3.2.
- Compared against: Contrastive Tension, cited as Carlsson et al. 2021 §5.3; SimCSE, cited as Gao et al. 2021 §5.4; BERT-flow, cited as Li et al. 2020 §5.5; masked language modelling as in BERT §5.2; Sentence-BERT in its supervised and out-of-the-box forms §5.1; USE-large §5.1.
- Superseded by: not stated.
Source and license
Adapted from “TSDAE: Using Transformer-based Sequential Denoising Auto-Encoder for Unsupervised Sentence Embedding Learning” by Kexin Wang, Nils Reimers, Iryna Gurevych (arXiv:2104.06979), used under CC BY-SA 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. This page is licensed under CC BY-SA 4.0. Code citations refer to https://github.com/UKPLab/sentence-transformers at commit 1fa45b4212a5 (Apache-2.0). Any quoted code is shown under that license.