Türkçe BERT Modelini Özel Veri Setiyle İnce Ayarlama: Kapsamlı Bir Teknik Rehber

Community Article Published October 31, 2025

Bölüm 1: İnce Ayarın Temelleri: Transfer Öğrenmesi ve BERT Mimarisi

1.1. Giriş: Modern NLP'de Paradigma Değişimi

Doğal Dil İşleme (NLP) alanı, son yıllarda devrim niteliğinde bir dönüşüm yaşamıştır. Geleneksel makine öğrenmesi yaklaşımında, her bir görev için (örneğin metin sınıflandırma, duygu analizi) tek bir veri seti kullanılarak izole bir şekilde sıfırdan modeller eğitilirdi.[1] Bu yöntem, özellikle dar ve iyi tanımlanmış görevler için etkili olsa da, büyük miktarda etiketli veri gerektirmesi ve her yeni görev için sürecin tekrarlanması gibi önemli zorluklar barındırıyordu. Ancak, transfer öğrenmesi (transfer learning) adı verilen bir tekniğin yükselişi, bu paradigmayı temelden değiştirmiştir.[2, 3] BERT (Bidirectional Encoder Representations from Transformers) gibi önceden eğitilmiş büyük dil modellerinin ortaya çıkmasıyla, bir alanda edinilen derin dilbilimsel bilginin başka alanlara aktarılması mümkün hale gelmiş, bu da NLP uygulamalarının geliştirilme biçimini ve erişilebilirliğini kökten değiştirmiştir.[4]

1.2. Ön-Eğitim (Pre-training) ve İnce Ayar (Fine-tuning) Ayrımı

Modern NLP modellerinin geliştirilmesinde iki temel aşama bulunmaktadır: ön-eğitim ve ince ayar. Bu iki kavram, amaçları, kaynak gereksinimleri ve uygulama alanları bakımından önemli farklılıklar gösterir.

  • Ön-Eğitim (Pre-training): Bu aşama, bir modelin devasa boyutlardaki (genellikle milyarlarca kelime içeren) etiketsiz metin verileri üzerinde eğitildiği, temel ve kaynak-yoğun bir süreçtir.[5, 6] Wikipedia, kitaplar veya internetten toplanan geniş metin derlemleri gibi veri kaynakları kullanılarak modelin dilin genel yapısını, dilbilgisini, anlamsal ilişkileri ve temel dünya bilgisini öğrenmesi hedeflenir.[7, 8] Ön-eğitim, modelin çok yönlü bir bilgi tabanı oluşturmasını sağlar; ancak bu süreç, haftalar veya aylar sürebilen, yüksek maliyetli GPU/TPU kümeleri gerektiren ve derin uzmanlık isteyen bir işlemdir. Bu nedenle, çoğu kurum ve geliştirici için sıfırdan bir model ön-eğitmek pratik değildir.[6, 7]

  • İnce Ayar (Fine-tuning): İnce ayar, ön-eğitim aşamasını tamamlamış ve genel dil anlama yeteneği kazanmış bir modelin, daha küçük ve göreve özel etiketli bir veri seti kullanılarak belirli bir görevde uzmanlaştırılması sürecidir.[5, 9] Örneğin, genel metinler üzerinde ön-eğitilmiş bir BERT modeli, müşteri yorumları ve bu yorumların duygu etiketlerini (olumlu/olumsuz) içeren bir veri seti ile ince ayarlanarak yüksek doğruluklu bir duygu analizi modeline dönüştürülebilir. Bu süreç, ön-eğitime kıyasla çok daha az veri, zaman ve hesaplama gücü gerektirir.[7, 8] İnce ayarın temel avantajları, belirli bir alanda yüksek hassasiyet (precision) ve geliştirme sürecinde sağladığı verimliliktir (efficiency).[5]

Bu iki aşama, birbiriyle yakından ilişkilidir. Ön-eğitim, modelin sağlam bir temel oluşturmasını sağlarken, ince ayar bu temeli kullanarak modeli gerçek dünya uygulamaları için özelleştirilmiş bir araca dönüştürür.[6, 10]

1.3. Transfer Öğrenmesi: Bilginin Aktarımı Sanatı

İnce ayar sürecinin temelinde yatan ana fikir, transfer öğrenmesidir. Transfer öğrenmesi, bir görev veya veri seti üzerinde öğrenilen bilginin, ilgili başka bir görevdeki model performansını artırmak için yeniden kullanıldığı bir makine öğrenmesi tekniğidir.[1, 11, 12] Bu yaklaşımın NLP alanındaki önemi çok yönlüdür:

  • Veri Verimliliği: Transfer öğrenmesi, özellikle etiketli veri bulmanın zor veya maliyetli olduğu durumlarda büyük bir avantaj sağlar. Model, ön-eğitimden gelen geniş dilbilgisi sayesinde, göreve özel az miktarda etiketli veri ile bile yüksek performans gösterebilir.[3, 13]
  • Hesaplama Tasarrufu: Sıfırdan bir model eğitmek yerine, önceden eğitilmiş bir modelin ağırlıklarını başlangıç noktası olarak kullanmak, eğitim süresini ve gereken hesaplama kaynaklarını önemli ölçüde azaltır.[12, 14]
  • Gelişmiş Performans: Önceden eğitilmiş modeller, geniş veri setlerinden öğrendikleri zengin dilsel kalıplar sayesinde daha iyi genelleme yapma eğilimindedir. Bu durum, genellikle sıfırdan eğitilen modellere kıyasla daha yüksek doğruluk, kesinlik ve duyarlılık gibi metriklerde kendini gösterir.[3, 14]

Özellikle Türkçe gibi eklemeli (agglutinative) ve morfolojik olarak zengin diller için transfer öğrenmesi kritik bir rol oynar. Bu tür dillerde, bir kelime köküne çok sayıda ek getirilerek yeni anlamlar türetilebilir. Önceden eğitilmiş modeller, devasa Türkçe metin verileri üzerinde bu karmaşık morfolojik yapıları ve kelimeler arasındaki uzun mesafeli anlamsal bağımlılıkları (long-term dependencies) öğrenir.[15, 16] İnce ayar sırasında bu derin dilbilimsel bilgi, metin sınıflandırma veya varlık ismi tanıma gibi daha spesifik görevlere aktarılarak, modelin Türkçe'nin zorluklarının üstesinden daha kolay gelmesi sağlanır.[16]

İnce ayar süreci, sadece bir "kısayol" veya basit bir bilgi transferi değildir; aynı zamanda bir "bilgi damıtma" süreci olarak da görülebilir. Ön-eğitim, modele geniş bir "dünya nasıl işler" ve "dil nasıl kullanılır" bilgisi verir.[5, 6] İnce ayar ise, modeli bu genel bilgiyi, "bu müşteri yorumu olumlu mu, olumsuz mu?" gibi çok daha dar ve spesifik bir görevin kısıtlamaları dahilinde uygulamaya zorlar.[6, 9] Bu süreçte, görevle doğrudan ilgili olan nöral bağlantılar güçlenirken, görevle ilgisi olmayanlar zayıflayabilir. Bu durum, "felaket unutma" (catastrophic forgetting) olarak bilinen, modelin genel bilgisini kaybetme riskini de beraberinde getirir.[9] Başarılı bir ince ayar, bu unutmayı en aza indirirken, göreve özgü bilgiyi en üst düzeye çıkaran hassas bir denge kurar. Dolayısıyla ince ayar, bilgiyi belirli bir amaç için "damıtmak" ve "uzmanlaştırmaktır".

1.4. BERT Mimarisine Derinlemesine Bakış

BERT (Bidirectional Encoder Representations from Transformers), temelini Transformer mimarisinden alan ve özellikle "self-attention" (öz-dikkat) mekanizması sayesinde metin içindeki kelimeler arasındaki bağlamsal ilişkileri öğrenmede son derece başarılı olan bir modeldir.[17, 18] BERT'i kendisinden önceki modellerden ayıran ve bir devrim yaratmasını sağlayan iki temel özelliği vardır:

  • Çift Yönlülük (Bidirectionality): Geleneksel dil modelleri, bir metni ya soldan sağa ya da sağdan sola doğru işleyerek bir sonraki kelimeyi tahmin etmeye çalışırdı. BERT ise, bir kelimenin anlamını hem solundaki hem de sağındaki bağlamı aynı anda dikkate alarak öğrenir.[2, 15] Bu çift yönlü yaklaşım, modelin dilin karmaşık ve nüanslı yapısını çok daha derin bir seviyede anlamasını sağlar.

  • Ön-Eğitim Görevleri: BERT, bu çift yönlü öğrenmeyi iki yenilikçi ön-eğitim görevi ile gerçekleştirir:

    1. Masked Language Modeling (MLM): Girdi olarak verilen cümlenin içindeki kelimelerin yaklaşık %15'i rastgele olarak özel bir [MASK] token’ı ile değiştirilir. Modelin amacı, cümlenin geri kalanındaki çift yönlü bağlamı kullanarak bu maskelenmiş kelimeleri tahmin etmektir.[2, 19] Bu süreç, modelin derin bağlamsal temsiller (contextual representations) öğrenmesini zorunlu kılar.[15]
    2. Next Sentence Prediction (NSP): Model iki cümle alır ve ikinci cümlenin, orijinal metinde birinci cümlenin hemen ardından gelip gelmediğini tahmin eder.[15, 19] Bu görev, modelin cümleler arasındaki mantıksal ve anlamsal ilişkileri (örneğin, neden-sonuç, devamlılık) anlamasına yardımcı olur.

Bu mimari ve ön-eğitim stratejileri sayesinde BERT, çok çeşitli NLP görevlerinde ince ayar için son derece güçlü bir temel model haline gelmiştir.


Bölüm 2: Görev İçin Doğru Aracı Seçmek: Türkçe BERT Modelleri

Başarılı bir ince ayar projesinin ilk adımı, görevin gereksinimlerine en uygun önceden eğitilmiş modeli seçmektir. Bu bölümde, Türkçe NLP görevleri için model seçerken dikkat edilmesi gereken varyantlar ve Hugging Face Hub'daki öne çıkan modeller incelenecektir.

2.1. Hugging Face Hub: NLP Modellerinin Merkezi

Hugging Face Model Hub, binlerce önceden eğitilmiş modele, veri setine ve tokenizere ev sahipliği yapan, NLP topluluğu için merkezi bir platformdur. Araştırmacılar ve geliştiriciler, bu platform üzerinden en yeni modelleri kolayca indirip kendi projelerinde kullanabilirler. Platformun arama ve filtreleme özellikleri, dil, görev veya kütüphane gibi kriterlere göre model bulmayı kolaylaştırır.[20, 21, 22] Türkçe dilinde ince ayar yapmak için de bu platform, zengin bir model yelpazesi sunmaktadır.

2.2. Model Varyantlarını Anlamak: Base vs. Large

BERT ve benzeri Transformer tabanlı modeller, genellikle iki farklı boyutta sunulur: Base (temel) ve Large (büyük).[4, 18]

Özellik BERT Base BERT Large
Encoder Katmanı Sayısı 12 24
Gizli Katman Boyutu 768 1024
Dikkat Başlığı Sayısı 12 16
Toplam Parametre Sayısı ~110 Milyon ~340 Milyon

Tablo 1: BERT Base ve Large Modellerinin Mimari Karşılaştırması [18, 23]

BERT-large daha yüksek performans potansiyeline sahipken, çok daha fazla GPU belleği ve hesaplama gücü gerektirir.[18] Birçok pratik uygulama için BERT-base, performans/verimlilik dengesinde daha erişilebilir bir başlangıç noktasıdır.

2.3. Kritik Bir Seçim: Cased vs. Uncased

  • Uncased: Metni küçük harfe çevirir ve bazı diyakritikleri kaldırır.[24]
  • Cased: Orijinal büyük/küçük harf yapısını korur; Apple (şirket) / apple (meyve) gibi ayrımlar için faydalıdır.

Türkçe için not: I/ı ve İ/i gibi karakterlerden dolayı uncased modellerde bilgi kaybı olabilir.[25] NER/POS gibi görevlerde cased model seçimi genellikle daha güvenlidir. BERTurk bu açıdan güçlü bir adaydır.[26]

2.4. Öne Çıkan Türkçe Modeller: BERTurk ve Diğerleri

  • dbmdz/bert-base-turkish-cased (BERTurk): 35 GB+ Türkçe korpus (OSCAR, Wikipedia, OPUS) ile eğitilmiş, yaygın ve güçlü bir cased model.[26, 27, 28, 29, 30]

Diğerleri:

  • loodos/bert-base-turkish-uncased
  • ytu-ce-cosmos/turkish-base-bert-uncased
  • ytu-ce-cosmos/turkish-tiny-bert-uncased (çok küçük, hızlı çıkarım için)
Model (HF ID) Mimari Parametre Cased? Eğitim Verisi Önerilen Kullanım
dbmdz/bert-base-turkish-cased BERT-Base ~110M Cased 35GB (OSCAR, Wikipedia, OPUS) Genel NLP, NER, POS
loodos/bert-base-turkish-uncased BERT-Base ~110M Uncased Büyük Türkçe derlem Duygu analizi, sınıflandırma
ytu-ce-cosmos/turkish-base-bert-uncased BERT-Base ~110M Uncased Büyük Türkçe derlem Duygu analizi, sınıflandırma
ytu-ce-cosmos/turkish-tiny-bert-uncased BERT-Tiny ~4.4M Uncased Büyük Türkçe derlem Mobil/edge, hızlı prototip

Tablo 2: Popüler Türkçe BERT Modelleri


Bölüm 3: Uygulamalı İnce Ayar: Veri Hazırlığından Model Yapılandırmasına

3.1. Proje Ortamının Kurulumu

pip install transformers datasets evaluate scikit-learn torch

GPU kullanımı önerilir (örn. Colab).[32, 33]

3.2. Özel Veri Setinin Hazırlanması

  • Format: text, label sütunlu CSV yaygın.
  • Temizleme: URL/HTML/emojileri temizleyin.[34]
  • Sınıf Dengesizliği: Weighted loss veya resampling uygulayın.[33]
  • Yükleme: datasets ile yükleyip DatasetDict(train/test) oluşturun.[35, 36]

3.3. Tokenizasyon

Modelle aynı tokenizer kullanılmalıdır.[26, 35]

from transformers import AutoTokenizer
model_name = "dbmdz/bert-base-turkish-cased"
tokenizer = AutoTokenizer.from_pretrained(model_name)

def tokenize_function(examples):
    return tokenizer(
        examples["text"],
        padding="max_length",
        truncation=True,
        max_length=128
    )
tokenized_datasets = raw_datasets.map(tokenize_function, batched=True)

Notlar:

  • BERT, başa [CLS], cümle ayırmada [SEP] tokenlarını ekler.[34, 39]
  • max_length dağılıma göre seçilmelidir.[33]

3.4. Modelin Yüklenmesi

from transformers import AutoModelForSequenceClassification

num_labels = 2
id2label = {0: "OLUMSUZ", 1: "OLUMLU"}
label2id = {"OLUMSUZ": 0, "OLUMLU": 1}

model = AutoModelForSequenceClassification.from_pretrained(
    model_name,
    num_labels=num_labels,
    id2label=id2label,
    label2id=label2id
)

Bölüm 4: Hugging Face Trainer API ile Model Eğitimi

4.1. Trainer API'ye Genel Bakış

Trainer, eğitim döngüsünü, değerlendirme ve kayıt süreçlerini standartlaştırır.[36, 41]

4.2. TrainingArguments: Hiperparametreler

Argüman Açıklama Tipik Aralık Etki
learning_rate Adım boyutu 1e-55e-5 Çok yüksekse kararsızlık, çok düşükse yavaş öğrenme
per_device_train_batch_size Batch boyutu 8, 16, 32 Büyük değer daha çok bellek
num_train_epochs Epoch sayısı 2–5 Az → yetersiz; çok → overfit
weight_decay L2 regularization 0.00.1 Overfit’i azaltır
warmup_steps LR ısınma adımı 0–500 Başlangıç kararlılığı
gradient_accumulation_steps Gradyan biriktirme 1–4+ Düşük bellekle efektif büyük batch

Tablo 3: Temel Hiperparametreler [36]

4.3. Metrikler: compute_metrics

import numpy as np
import evaluate

accuracy_metric = evaluate.load("accuracy")
f1_metric = evaluate.load("f1")

def compute_metrics(eval_pred):
    predictions, labels = eval_pred
    predictions = np.argmax(predictions, axis=1)
    accuracy = accuracy_metric.compute(predictions=predictions, references=labels)
    f1 = f1_metric.compute(predictions=predictions, references=labels, average="weighted")
    return {"accuracy": accuracy["accuracy"], "f1": f1["f1"]}

4.4. Trainer ile Eğitim

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    learning_rate=2e-5,
    weight_decay=0.01,
    evaluation_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["test"],
    tokenizer=tokenizer,
    compute_metrics=compute_metrics,
)

trainer.train()

Bölüm 5: Değerlendirme, Çıkarım ve Optimizasyon

5.1. Performans Değerlendirmesi

trainer.evaluate() ile sonuçları alın.[40] Sınıf bazında analiz için karışıklık matrisi oluşturun.

5.2. Çıkarım (Inference)

from transformers import pipeline

model_path = "./results/checkpoint-XXXX"
classifier = pipeline("text-classification", model=model_path)

results = classifier("Servis sırasında fren hidroliği kaçağı tespit edildi.")
print(results)

5.3. Modeli Kaydetme ve Paylaşma

trainer.save_model("my_final_model") ile kaydedin. trainer.push_to_hub() ile Hugging Face Hub’a yükleyin.[35, 36]

5.4. İleri İpuçları

  • Overfitting’e karşı: weight_decay artırma, num_train_epochs düşürme, EarlyStopping.[9, 33]
  • Hiperparametre araması: Optuna / Ray Tune entegrasyonları.
  • Katman dondurma: Küçük veri veya sınırlı kaynakta alt katmanları dondurup üstleri eğitme.[33, 39]

5.5. Sonuç ve Gelecek Adımlar

Bu rehber, Türkçe BERT’i özel veriyle ince ayarlama sürecini temelden pratiğe anlattı. Sonraki adımlar: NER, QA gibi farklı görevlerde ince ayar veya DistilBERT/ALBERT gibi verimli mimarilerle hız/maaliyet optimizasyonu.[4, 48]

Kaynakça

Aşağıda, metinde atıf yapılan kaynaklar Markdown formatında listelenmiştir. Bu liste, Hugging Face dokümanları ve ilgili akademik/pratik referanslara dayanarak hazırlanmıştır. Kaynaklar APA benzeri bir stilde formatlanmıştır.

Ana Kaynaklar

Ek Kaynaklar ve Öneriler

Community

Sign up or log in to comment