BERT'i sınıflandırma görevi için nasıl ince ayar yaparsınız? Çıkıştan ne alınmalı?
sobes.tech yapay zeka
AI'dan gelen yanıt
BERT'i sınıflandırma görevi için ince ayar yaparken, genellikle [CLS] özel tokeninin çıkışı alınır; bu, model tarafından tüm dizinin bilgilerini toplamak için kullanılır.
Ana adımlar:
-
BERT üzerine bir sınıflandırma katmanı ekleyin — genellikle BERT'in çıkış katmanından [CLS] tokenine karşılık gelen vektörü alan tam bağlantılı bir katman.
-
Giriş verileri, başında [CLS] tokeni ile BERT'e verilir.
-
BERT'in son gizli katmanından [CLS] gömme alınır. Bu vektör, örneğin, 768 boyutunda (temel model için), tüm dizinin sıkıştırılmış bilgisini içerir.
-
Bu vektörü sınıflandırıcıya aktarın (örneğin, çok sınıflı sınıflandırma için linear + softmax).
-
Tüm modeli (BERT + sınıflandırıcı) birlikte eğitin hedef göreve uygun bir kayıp fonksiyonu kullanarak (örneğin, CrossEntropyLoss).
PyTorch örneği:
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
Bu nedenle, sınıflandırma için, özellikle BERT'in son katmanından [CLS] tokeninin çıkışı alınır.