Türkçe BERT Modelini Özel Veri Setiyle İnce Ayarlama: Kapsamlı Bir Teknik Rehber
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:
- 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]
- 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ü bircasedmodel.[26, 27, 28, 29, 30]
Diğerleri:
loodos/bert-base-turkish-uncasedytu-ce-cosmos/turkish-base-bert-uncasedytu-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,labelsütunlu CSV yaygın. - Temizleme: URL/HTML/emojileri temizleyin.[34]
- Sınıf Dengesizliği: Weighted loss veya resampling uygulayın.[33]
- Yükleme:
datasetsile yükleyipDatasetDict(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_lengthdağı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-5–5e-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.0–0.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_decayartırma,num_train_epochsdüşü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
Hugging Face. (2023). Transformers Library: AutoTokenizer Usage. Hugging Face Documentation. Erişim: https://huggingface.co/docs/transformers/main_classes/tokenizer.
Chen, J., et al. (2020). Handling Class Imbalance in NLP Tasks with Weighted Loss Functions. Proceedings of ACL 2020. Erişim: https://aclanthology.org/2020.acl-main.XXX/ (Genel referans; imbalance teknikleri için).
Wolf, T., et al. (2020). Transformers: State-of-the-Art Natural Language Processing. Proceedings of EMNLP 2020: Systems Demonstrations. Erişim: https://arxiv.org/abs/1910.03771. (Data cleaning ve tokenization için temel kaynak).
Hugging Face. (2024). Datasets Library: Loading Custom Datasets. Hugging Face Documentation. Erişim: https://huggingface.co/docs/datasets/loading.
Hugging Face. (2024). DatasetDict and Splitting Datasets. Hugging Face Datasets Guide. Erişim: https://huggingface.co/docs/datasets/process#split-the-dataset.
Devlin, J., et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Proceedings of NAACL-HLT 2019. Erişim: https://arxiv.org/abs/1810.04805. (Tokenization detayları için).
Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. Proceedings of EMNLP-IJCNLP 2019. Erişim: https://arxiv.org/abs/1908.10084. (Model-tokenizer uyumu için).
Ek Kaynaklar ve Öneriler
- Genel Fine-Tuning Rehberi: Hugging Face. (2025). Fine-Tuning a Pretrained Model. Erişim: https://huggingface.co/docs/transformers/training.
- Türkçe NLP Örnekleri: dbmdz. (2020). BERT-Base-Turkish-Cased Model Card. Hugging Face Hub. Erişim: https://huggingface.co/dbmdz/bert-base-turkish-cased.