Update readme
Browse files
README.md
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# rdr-question_encoder-single-nq-base
|
2 |
+
|
3 |
+
Reader-Distilled Retriever (`RDR`)
|
4 |
+
|
5 |
+
Sohee Yang and Minjoon Seo, [Is Retriever Merely an Approximator of Reader?](https://arxiv.org/abs/2010.10999), arXiv 2020
|
6 |
+
|
7 |
+
The paper proposes to distill the reader into the retriever so that the retriever absorbs the strength of the reader while keeping its own benefit. The model is a DPR retriever further finetuned using knowledge distillation from the DPR reader. Using this approach, the answer recall rate increases by a large margin, especially at small numbers of top-k.
|
8 |
+
|
9 |
+
This model is the question encoder of RDR trained solely on Natural Questions (NQ) (single-nq). This model is trained by the authors and is the official checkpoint of RDR.
|
10 |
+
|
11 |
+
## Performance
|
12 |
+
|
13 |
+
The following is the answer recall rate measured using PyTorch 1.4.0 and transformers 4.5.0.
|
14 |
+
|
15 |
+
For the values of DPR, those in parentheses are directly taken from the paper. The values without parentheses are reported using the reproduction of DPR that consists of [this question encoder](https://huggingface.co/soheeyang/dpr-question_encoder-single-trivia-base) and [this queston encoder](https://huggingface.co/soheeyang/dpr-question_encoder-single-trivia-base).
|
16 |
+
|
17 |
+
| | Top-K Passages | 1 | 5 | 20 | 50 | 100 |
|
18 |
+
|-------------|------------------|-----------|-----------|-----------|-----------|-----------|
|
19 |
+
|**TriviaQA Dev** | **DPR** | 54.27 | 71.11 | 79.53 | 82.72 | 85.07 |
|
20 |
+
| | **RDR (This Model)** | **61.84** | **75.93** | **82.56** | **85.35** | **87.00** |
|
21 |
+
|**TriviaQA Test**| **DPR** | 54.41 | 70.99 | 79.31 (79.4) | 82.90 | 84.99 (85.0) |
|
22 |
+
| | **RDR (This Model)** | **62.56** | **75.92** | **82.52** | **85.64** | **87.26** |
|
23 |
+
|
24 |
+
## How to Use
|
25 |
+
|
26 |
+
RDR shares the same architecture with DPR. Therefore, It uses `DPRQuestionEncoder` as the model class.
|
27 |
+
|
28 |
+
Using `AutoModel` does not properly detect whether the checkpoint is for `DPRContextEncoder` or `DPRQuestionEncoder`.
|
29 |
+
|
30 |
+
Therefore, please specify the exact class to use the model.
|
31 |
+
|
32 |
+
```python
|
33 |
+
from transformers import DPRQuestionEncoder, AutoTokenizer
|
34 |
+
|
35 |
+
tokenizer = AutoTokenizer.from_pretrained("soheeyang/rdr-question_encoder-single-trivia-base")
|
36 |
+
question_encoder = DPRQuestionEncoder.from_pretrained("soheeyang/rdr-question_encoder-single-trivia-base")
|
37 |
+
|
38 |
+
data = tokenizer("question comes here", return_tensors="pt")
|
39 |
+
question_embedding = question_encoder(**data).pooler_output # embedding vector for question
|
40 |
+
```
|