Sobes.tech
Middle — Senior

Πώς κάνετε fine-tuning το BERT για μια εργασία ταξινόμησης; Τι να πάρουμε από την έξοδο;

sobes.tech AI

Απάντηση από AI

Για το fine-tuning του BERT για εργασίες ταξινόμησης, συνήθως λαμβάνεται η έξοδος του ειδικού token [CLS], το οποίο χρησιμοποιείται από το μοντέλο για την συγκέντρωση πληροφοριών ολόκληρης της ακολουθίας.

Βασικά βήματα:

  1. Προσθέστε ένα επίπεδο ταξινόμησης πάνω από το BERT — συνήθως ένα γραμμικό επίπεδο που λαμβάνει τον διανυσματικό εκπρόσωπο από το τελευταίο επίπεδο του BERT που αντιστοιχεί στο token [CLS].

  2. Τα εισερχόμενα δεδομένα δίνονται στο BERT με το token [CLS] στην αρχή.

  3. Εξάγετε το ενσωματωμένο [CLS] από το τελευταίο κρυφό επίπεδο του BERT. Αυτό το διάνυσμα, π.χ., με μέγεθος 768 (για το βασικό μοντέλο), περιέχει την συμπιεσμένη πληροφορία ολόκληρης της ακολουθίας.

  4. Περάστε αυτό το διάνυσμα στον ταξινομητή (π.χ., γραμμικό + softmax για πολυταξινόμηση).

  5. Εκπαιδεύστε ολόκληρο το μοντέλο (BERT + ταξινομητής) μαζί στην επιλεγμένη εργασία, χρησιμοποιώντας μια κατάλληλη λειτουργία απώλειας (π.χ., CrossEntropyLoss).

Παράδειγμα σε PyTorch:

from transformers import BertModel, BertTokenizer
import torch.nn as nn

class BertClassifier(nn.Module):
    def __init__(self, bert_model_name, num_classes):
        super().__init__()
        self.bert = BertModel.from_pretrained(bert_model_name)
        self.classifier = nn.Linear(self.bert.config.hidden_size, num_classes)

    def forward(self, input_ids, attention_mask):
        outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask)
        cls_output = outputs.last_hidden_state[:, 0, :]  # [CLS] token
        logits = self.classifier(cls_output)
        return logits

Έτσι, για την ταξινόμηση, λαμβάνεται συγκεκριμένα η έξοδος του token [CLS] από το τελευταίο στρώμα του BERT.