Чӣ гуна BERT-ро барои вазифаи класификатсия ба таври хуб танзим кардан мумкин аст? Аз баромад чӣ бояд гирифт?
sobes.tech AI
Ҷавоб аз AI
Барои танзими финалӣ кардани BERT барои вазифаҳои класификатсия, одатан аз баромади токени махсуси [CLS], ки модел барои ҷамъоварии маълумот дар бораи тамоми пайдарпайӣ истифода мебарад, истифода мешавад.
Қадамҳои асосӣ:
-
Илова кардани қабати класификатсия болои BERT — одатан як қабати хаттӣ, ки векторро аз қабати охирини BERT, ки ба токени [CLS] тааллуқ дорад, мегирад.
-
Маълумоти воридотӣ бо токени [CLS] дар оғоз ба BERT дода мешаванд.
-
Баровардани эмбединг [CLS] аз қабати ниҳонии охирини BERT. Ин вектор, масалан, бо андоза 768 (барои моделҳои асосӣ), маълумоти ҷамъбастшудаи тамоми пайдарпайиро дар бар мегирад.
-
Ин векторро ба класификатор (масалан, linear + softmax барои класификатсияи бисёрсинфӣ) фиристед.
-
Тренировкаи тамоми модел (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]
logits = self.classifier(cls_output)
return logits
Аз ин рӯ, барои класификатсия, махсусан, истифодаи баромади токени [CLS] аз қабати охирини BERT гирифта мешавад.