# 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 losowo 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 ## 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 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 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.

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).