Spielen mit SetFit-Ansatz für wenige Schüsse-Transfer für die Textklassifizierung.
Bearbeiten: Ich habe auch einige Experimente mit aktivem Lernen durchgeführt, so dass ich jetzt auch aktiv bin. Ich werde es an einem sonnigen Tag besser organisieren.
$ ~/Dev/projects/setfit$ python main.py --help
Usage: main.py [OPTIONS]
Options:
-d, --dataset-name TEXT The name of the dataset as it appears on the
HuggingFace hub e.g. SetFit/SentEval-CR |
SetFit/bbc-news | SetFit/enron_spam ...
-c, --case INTEGER 0, 1, 2, or 3: which experiment are we
running. See readme or docstrings to know
more but briefly: **0**: SentTF ->
Constrastive Pretrain -> +LogReg on task.
**1**: SentTF -> +Dense on task. **2**:
SentTF -> +LogReg on task. **3**:
FewShotPrompting based Clf over Flan-t5-xl
[required]
-r, --repeat INTEGER The number of times we should run the entire
experiment (changing the seed).
-bs, --batch-size INTEGER ... you know what it is.
-ns, --num-sents INTEGER Size of our train set. Set short values
(under 100)
-e, --num-epochs INTEGER Epochs for fitting Clf+SentTF on the main
(classification) task.
-eft, --num-epochs-finetune INTEGER
Epochs for both contrastive pretraining of
SentTF.
-ni, --num-iters INTEGER Number of text pairs to generate for
contrastive learning. Values above 20 can
get expensive to train.
-tot, --test-on-test If true, we report metrics on testset. If
not, on a 20% split of train set. Off by
default.
-ft, --full-test We truncate the testset of every dataset to
have 100 instances. If you know what you're
doing, you can test on the full dataset.NOTE
that if you're running this in case 3 you
should probably be a premium member and not
be paying per use.
--help Show this message and exit.
Hinweis : Wenn Sie LLMs abfragen möchten, die bei Huggingface (Fall 3) gehostet werden, müssen Sie Ihr Konto für HuggingFace -Hub erstellen und Zugriffstoken generieren, wonach Sie sie in eine Datei einfügen
./hf_token.key.PS: Machen Sie sich keine Sorgen, ich habe diese Datei zu .Gitignore hinzugefügt
$ python active.py --help
Usage: active.py [OPTIONS]
Options:
-d, --dataset-name TEXT The name of the dataset as it appears on the
HuggingFace hub e.g. SetFit/SentEval-CR |
SetFit/bbc-news | SetFit/enron_spam | imdb ...
-ns, --num-sents INTEGER Size of our train set. I.e., the dataset at the
END of AL. Not the start of it.
-nq, --num-queries INTEGER Number of times we query the unlabeled set and
pick some labeled examples. Set short values
(under 10)
-ft, --full-test We truncate the testset of every dataset to have
100 instances. If you know what you're doing,
you can test on the full dataset.NOTE that if
you're running this in case 3 you should
probably be a premium member and not be paying
per use.
--help Show this message and exit.
Oder Sie können einfach ./run.sh nach der Installation der erforderlichen Bibliotheken ausführen (siehe requirements.txt )
Anschließend können Sie das Notebook summarise.ipynb ausführen, um die Ergebnisse zusammenzufassen und zu visualisieren (falls ich diesen Code hinzufügen).
PS: Achten Sie auf
--full-test. Standardmäßig schneiden wir jeden Test auf seine ersten 100 Instanzen ab.
Sie sind alle Klassifizierungsdatensätze, die von den netten und freundlichen Leuten gereinigt wurden, die das Setfit lib gemacht haben. Sie können jedoch jeden HF -Datensatz verwenden , der diese drei Felder enthält: (i) Text (STR), (ii) Label (int) und (iii) Label_Text (STR).
Hier sind meine Ergebnisse:
Diese Tabelle zeigt die Ergebnisse dieses + dem aktiven Lernaufbau. Sofern nicht anders angegeben, wiederholen wir jedes Experiment 5 Mal. Diese Zahlen melden die Aufgabengenauigkeit, als wir nur 100 Instanzen im Zugsatz hatten.
| BBC-News | SST2 | Sental-cr | IMDB | Enron_spam | |
|---|---|---|---|---|---|
| Setfit ft | 0,978 ± 0,004 | 0,860 ± 0,018 | 0,882 ± 0,029 | 0,924 ± 0,026 | 0,960 ± 0,017 |
| Kein kontrastives Setfit ft | 0,932 ± 0,015 | 0,854 ± 0,019 | 0,886 ± 0,005 | 0,902 ± 0,019 | 0,942 ± 0,020 |
| Reguläre ft | 0,466 ± 0,133 | 0,628 ± 0,098 | 0,582 ± 0,054 | 0,836 ± 0,166 | 0,776 ± 0,089 |
| LLM Aufforderung | 0,950 ± 0,000 | 0,930 ± 0,000 | 0,900 ± 0,000 | 0,930 ± 0,000 | 0,820 ± 0,000 |
| Konstantal | 0,980 ± 0,000 | 0,910 ± 0,000 | 0,910 ± 0,000 | 0,870 ± 0,000 | 0,980 ± 0,000 |
[1]: LLM -Aufforderung erfolgt nur mit 10 Instanzen (die tatsächliche Eingabeaufforderung kann je nach Länge weniger enthalten). Es ist auch nicht für verschiedene Samen wiederholt.
[2]: Kontrastive AL wird auch für verschiedene Samen nicht wiederholt.