Przetwarzanie_tekstu/projekt/README.md

153 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Projekt
Wykrywanie czy podany SMS to spam - klasyfikacja.
## Zbiór danych
Wykorzystaliśmy zbiór danych [sms spam](https://huggingface.co/datasets/sms_spam). Dataset posiada tylko zbiór treningowy dlatego w trakcie uczenia modeli podzielilśmy go na 3 podzbiory (wyjątek few-shot learning):
- zbiór testowy 1 000 przykładów
- zbiór treningowy 4 116 przykładów
- zbiór walidacyjny 458 przykładów
W każdym podzbiorze ocenialiśmy zrównoważenie klas.
## Ewaluacja
Ewaluacja modeli występuje po etapie trenowania na zbiorze testowym. Metryki:
- accuracy 0-100%
- Matthewss correlation coefficient - w skrócie accuracy, tylko bierze pod uwagę zbalansowanie zbioru, wyniki: -1 przeciwne predykcje, 0 losowe, 1 idealna predykcja.
## Rozwiązania
Wykorzystaliśmy 4 modele - BERT, GPT2, T5 oraz FLAN-T5
### Transformer Encoder - BERT
Najważniejsze cechy:
- wytrenowany model: bert-base-uncased
- typ modelu transformers.BertForSequenceClassification
- input modelu - treść smsa
- output modelu - klasa 1 lub 2
- finetuning na zbiorze treningowym
- adamW optimizer
- learning rade 2e-5
- 32 batch size
- 4 epoch
- Accuracy: 99%
- MCC: 0.973
### Transformer Encoder - BERT - modyfikacja
Najważniejsze cechy:
- wytrenowany model: bert-base-uncased
- typ modelu zmodyfikowany transformers.BertForSequenceClassification - dodatkowa warstwa liniowa
- input modelu - treść smsa
- output modelu - klasa 1 lub 2
- finetuning na zbiorze treningowym
- adamW optimizer
- learning rade 2e-5
- 32 batch size
- 4 epoch
- Accuracy: 99.5%
- MCC: 0.981
### Transformer Decoder - GPT2
Najważniejsze cechy:
- wytrenowany model gpt2
- typ modelu transformers.GPT2ForSequenceClassification
- input modelu - treść smsa
- output modelu - klasa 1 lub 2
- finetuning na zbiorze treningowym
- adamW optimizer
- learning rate 2e-5
- 8 batch size (because of OOM)
- 4 epoch
- Accuracy: 99%
- MCC: 0.960
### Transformer Decoder - GPT2 - modyfikacja
Najważniejsze cechy:
- wytrenowany model gpt2
- typ modelu zmodyfikowany transformers.GPT2ForSequenceClassification - dodatkowe dwie warstwy liniowe
- input modelu - treść smsa
- output modelu - klasa 1 lub 2
- finetuning na zbiorze treningowym
- adamW optimizer
- learning rate 2e-5
- 8 batch size
- 4 epoch
- Accuracy: 99.1%
- MCC: 0.958
### Transformer Encoder-Decoder - T5
Najważniejsze cechy:
- wytrenowany model t5-base
- typ modelu transformers.T5ForConditionalGeneration
- input modelu - 'binary classification: ' + treść smsa
- output modelu - tekstowo '0' lub '1'
- finetuning na zbiorze treningowym
- adamW optimizer
- learning rate 3e-4
- 16 batch size
- 4 epoch
- Accuracy: 87%
- MCC: 0.042
- Ciekawostka - accuracy bez finetuningu to 30% (dla klas wyjściowych True False)
### Few-shot Transformer Encoder-Decoder - FLAN-T5
Najważniejsze cechy:
- wytrenowany model google/flan-t5-base
- typ modelu transformers.AutoModelForSeq2SeqLM
- input modelu - 4 przykłady + docelowy sms
```
SMS: Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...
Spam: False
SMS: Todays Voda numbers ending 7548 are selected to receive a $350 award. If you have a match please call 08712300220 quoting claim code 4041 standard rates app
Spam: True
SMS: LMAO where's your fish memory when I need it?
Spam: False
SMS: This message is free. Welcome to the new & improved Sex & Dogging club! To unsubscribe from this service reply STOP. msgs@150p 18+only
Spam: True
SMS: treść docelowego smsa
Spam:
```
- output modelu - tekstowo 'True' lub 'False'
- Ewaluacja na całym zbiorze bez 4 przykładów
- Accauracy: 46%
- MCC: -0.001
## Wnioski
### BERT oraz GPT2
Dzięki głowie modelu, która jest przeznaczona specjalnie do zadania klasyfikacji tekstu, modele osiągnęły prawie perfekcyjny wynik accuracy i MCC. Dalsze modyfikacje są zbędne, ponieważ nie poprawiłby znacząco rezultatów.
### T5 oraz FLAN-T5
Modele T5 oraz FLAN-T5 to modele text-2-text, których głównym celem jest multizadaniowość. Nie są zoptymalizowane do zadania klasyfikacji, ale mimo to osiągnęły dobry wynik. W modelu T5 bardzo ważne jest określnie zadania w prefixie inputu, które będzie wykonywał model. Testowaliśmy różne kombinacje - brak prefixu, dokładny opis zadania, różne klasy wyjściowe, ale najlepsze rezultaty uzyskał prefix 'binary classification: ' z klasami wyjściowymi '0' lub '1'. Niski MCC świadczy o niezbalansowaniu predykcji.
<br/><br/>
FLAN-T5 to zoptymalizowany model T5. Został dodatkowo finetunowany na większym zbiorze danych. Przy uczeniu FLAN-T5 zastosowaliśmy metodę few-shot learning. Model mimo bardzo małej ilości przykładów osiągnął accuracy na poziomie 46%, jednak wynik MCC wskazuje na duże niezbalansowanie i losowe predykcje. Jest to jednak bardzo ciekawe, że wykorzystując tylko 4 przykady do uczenia, model może odpowiadać z pasującymi wynikami (niekoniecznie prawdziwymi).
### FLAN-T5 - testy
|Wersja|Rozmiar|Prefiks|Acc|
|---|---|---|---|
|1|base|Content of the text message: [sms_content]<br />Answer if this text message is spam or not [True,False]|0.503593244699964|
|2|large|Content of the text message: [sms_content]<br />Answer if this text message is spam or not [True,False]|0.46119295724038806|
|3|base|The text message contains the following content: [sms_content]<br />Is it true that the content of a text message is spam: [True,False]|0.2551203736974488|
|4|large|The text message contains the following content: [sms_content]<br />Is it true that the content of a text message is spam: [True,False]|0.1433704635285663|
|5|base|The text message: [sms_content]<br />Is this sms spam? Ans: [True,False]|0.28404599353215954|
|6|large|The text message: [sms_content]<br />Is this sms spam? Ans: [True,False]|0.20786920589292132|
## Modele
### Bazowe rozwiązania
https://drive.google.com/drive/folders/1wpoxkwzDtiQhygXCRT4M-Gbrenz-QOLH?usp=sharing
### Modele FLAN_T5 - testy
1. https://drive.google.com/drive/folders/1XO2TEMIKKFXCwpeW1X51hpC89LShCZ6c?usp=share_link
2. https://drive.google.com/drive/folders/1-3DEVCcxhRGSmEVx3jK4SUVVIUixNKqS?usp=share_link
3. https://drive.google.com/drive/folders/1-0Ct4JFzRhyo3bGuOc9ttZhaV4ghQRFx?usp=share_link
4. https://drive.google.com/drive/folders/1-1YgvI9-2cpkRO1hSlYU-hJFH2a1rmDp?usp=share_link
5. https://drive.google.com/drive/folders/1-4KINMK9L_VyCZGpCDueazmF2DUbRXTn?usp=share_link
6. https://drive.google.com/drive/folders/1-3gQuzZVq6IMqcY1nDu2hazVD0dN6F-K?usp=share_link