Sobes.tech
Middle — Senior

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:

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

  2. Giriş verileri, başında [CLS] tokeni ile BERT'e verilir.

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

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

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