153 lines
6.4 KiB
Markdown
153 lines
6.4 KiB
Markdown
# 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%
|
||
- Matthews’s 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 |