Skip to content

Makine Öğrenmesinin 3 Paradigması: Supervised, Unsupervised, Reinforcement

Makine öğrenmesinin üç ana yaklaşımı: etiketli veriden öğrenen supervised, etiketsiz veride yapı arayan unsupervised ve ödül sinyaliyle öğrenen reinforcement. Her birini gerçek kod örnekleri ve canlı çalıştırılabilir Pyodide blokları ile inceliyoruz.

Şükrü Yusuf KAYA
22 min read
Intermediate
Makine Öğrenmesinin 3 Paradigması: Supervised, Unsupervised, Reinforcement
📚 Bu derste 3 ML paradigmasını öğreneceksin
Her birini hem teorik olarak hem de tarayıcıda çalışan Python kodları ile göreceğiz. Pyodide ilk yüklemede ~10 saniye sürer; sonrası ışık hızında.

ML'in 3 dünyası#

Her ML problemi şu sorulara verilen cevaplara göre kategorize edilir:
ParadigmaVeriHedefTipik örnek
Supervised(X, y) çiftleri — etiketliEşleştirme öğrenmekSpam tespiti, fiyat tahmini
UnsupervisedSadece X — etiketsizYapı / örüntü bulmakMüşteri segmentasyonu
ReinforcementAksiyon → ödülOptimal politika öğrenmekOyun, robotik, RecSys
İki yarı-paradigma daha vardır:
  • Semi-supervised — az etiketli + çok etiketsiz veri
  • Self-supervised — veriden kendisinin etiketini türeten (LLM ön-eğitimi)
Etiketli veri (x1,y1),(x2,y2),,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N) verilir. Amaç: y=f(x)y = f(x) fonksiyonunu yaklaşık olarak öğrenmek.
İki alt türü:
  • Classification — y kategoriktir (spam/ham, kedi/köpek/kuş)
  • Regression — y süreklidir (fiyat, sıcaklık)
Performans metrikleri:
  • Classification: Accuracy, Precision, Recall, F1, ROC-AUC
  • Regression: MSE, MAE, R²
Tipik algoritmalar: Logistic Regression, Decision Tree, Random Forest, XGBoost, SVM, Neural Networks.

"Öğrenme" matematiksel olarak ne demek?#

Öğrenme = loss fonksiyonunu minimize edecek parametreleri bulmak. Regresyon için MSE:
Bu loss'u minimize etmenin standart yöntemi gradient descent: parametreleri loss'un en hızlı azaldığı yönde güncelle.
Burada η\eta learning rate'tir — adım büyüklüğü. Çok büyükse loss salınır/diverge eder, çok küçükse eğitim yavaşlar.
python
# Supervised learning canlı örneği — Pyodide ile çalışır
# scikit-learn'in California Housing örneklemini kullanıyoruz
 
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np
 
data = fetch_california_housing()
X, y = data.data, data.target
 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
 
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Train örnek sayısı: {len(X_train)}")
print(f"Test örnek sayısı: {len(X_test)}")
print(f"MSE: {mse:.3f}")
print(f"R²: {r2:.3f}")
 
▶️ Çalıştır butonuna bas — California ev fiyatlarını lineer regresyon ile tahmin ediyoruz. R² ne kadar 1'e yakınsa o kadar iyi.
python · adım 1/5
from sklearn.datasets import fetch_california_housing data = fetch_california_housing() X, y = data.data, data.target # X: (20640, 8), y: (20640,)
Adım 1: Veri seti yüklenir.
fetch_california_housing
8 özniteliği (gelir, oda sayısı, vb.) ve hedefi (medyan ev fiyatı) döner.
Farklı classifier'ların decision boundary karşılaştırması
scikit-learn'den: aynı veri seti üzerinde farklı algoritmaların öğrendiği karar sınırları (decision boundary). Her algoritma veriye farklı şekilde 'şekil' verir.
🎮 RL hakkında bir not
Reinforcement learning bu kursun kapsamını aşar — kendine ait bir matematik ve simülasyon altyapısı gerektirir. Klasik kaynak: Sutton & Barto'nun 'Reinforcement Learning: An Introduction' kitabı (PDF'i ücretsiz). RL'in en sık karıştırıldığı alan: 'reward hacking' — ajan ödülü manipüle ederek hedefe gitmeden yüksek skor alır. Bunu OpenAI 2017 boat racing demosu güzel gösterir.

🇹🇷 Türkçe için ML: Aglutinatif Dilin Yaratıcı Sorunları#

İngilizce için iyi çalışan bir ML pipeline, Türkçe için olduğu gibi kullanılırsa yanlış sonuçlar verir. Bunun temel nedeni Türkçe'nin aglutinatif (eklemeli) bir dil olmasıdır.
Aglutinatif ne demek? Bir kök kelimeye sırayla ekler eklenir; her ek anlamı/grameri değiştirir. Tek bir Türkçe kelime, İngilizce'de bir cümle olur.

Türkçe (aglutinatif)#

ev → house ev-ler → houses ev-ler-im → my houses ev-ler-im-iz → our houses ev-ler-im-iz-de → in our houses ev-ler-im-iz-de-ki → the one(s) in our houses ev-ler-im-iz-de-ki-ler-den → from those in our houses
Tek bir kökten 30+ yüzey biçimi. Eklemeler kombinatoryal — milyonlarca olası kelime.

İngilizce (analitik)#

house, houses, my houses, our houses, in our houses, the ones in our houses, from those in our houses
Aynı anlam birden çok kelimeyle ifade edilir. Tek kelime başına yüzey biçimi azdır.

Tokenization neden kritik?#

Klasik (kelime-bazlı) tokenizer:
  • Türkçe için sözlük 5-10M kelimeye patlar
  • Modelin sözlük dışı kelimeyle (OOV — out-of-vocabulary) karşılaşma olasılığı çok yüksek
  • "Evlerimizden" ile "evlerimizdeki" model için bambaşka iki şeydir
Modern çözümler (Türkçe LLM araştırmalarından, 2022-2026):
YöntemAçıklamaTürkçe için durumu
BPE (Byte-Pair Encoding)İstatistiksel olarak sık alt-dizileri token yaparStandart; morfem sınırlarını ihlal edebilir
WordPieceBPE benzeri, Google BERT tokenizer'ıStandart; aynı sorunlar
SentencePiece / UnigramOlasılıksal subwordDaha esnek; çoğu Türkçe LLM bunu kullanır
Morfoloji-farkındalı hibritKural-tabanlı morfolojik çözümleyici + BPEYeni nesil; TURNA, Kumru, KanarYa bu yönde araştırıyor
Pratik etki: Aynı görevde (örn. Türkçe sentiment classification) iyi seçilmiş tokenizer ile %5-15 puan iyileşme görülebilir. Bu hiperparametre seçiminden bile büyük bir kazanım.
💡 Türkçe NLP projesi başlatırken
(1) Kelime-bazlı tokenization YAPMA — TF-IDF + bag-of-words'le bile subword kullan. (2) HuggingFace'te Türkçe için fine-tune edilmiş modeller mevcut:
dbmdz/bert-base-turkish-cased
,
boun-tabi-LMG/TURNA
,
Trendyol/Trendyol-LLM-7b-base
. Sıfırdan eğitmek yerine bunları fine-tune et. (3) Türkçe stemming/lemmatization için Kemal Oflazer'in açık kaynak
zemberek-nlp
aracı 20 yıllık standarttır. (4) Türkçe evaluation: TR-MMLU, Belebele-tr, TruthfulQA-tr gibi benchmark'lar yayımlandı (2024-2025).
python
# Türkçe için doğru tokenization karşılaştırması
from transformers import AutoTokenizer
 
# Yanlış yaklaşım: sadece İngilizce eğitilmiş tokenizer
en_tok = AutoTokenizer.from_pretrained("bert-base-uncased")
print("EN tokenizer:", en_tok.tokenize("evlerimizdekilerden"))
# ['ev', '##leri', '##miz', '##de', '##ki', '##ler', '##den'] — kötü bölme
 
# Doğru yaklaşım: Türkçe için ön-eğitilmiş tokenizer
tr_tok = AutoTokenizer.from_pretrained("dbmdz/bert-base-turkish-cased")
print("TR tokenizer:", tr_tok.tokenize("evlerimizdekilerden"))
# ['evlerimizdekiler', '##den'] — çok daha anlamlı, daha az token
 
# Production'da: Türkçe LLM (TURNA, Trendyol-LLM, Kumru-2B) tokenizer'larını seç
turna_tok = AutoTokenizer.from_pretrained("boun-tabi-LMG/turna_3b")
print("TURNA tokenizer:", turna_tok.tokenize("evlerimizdekilerden"))
 
Aynı kelime, farklı tokenizer'larda farklı sayıda token olur. Daha az token = daha az inference maliyeti + daha iyi performans.

Türkçe için bilmeniz gereken kaynaklar#

Açık veri setleri:
  • TS Corpus (Türkçe genel korpus, ~100M kelime)
  • Common Crawl Turkish (devasa web verisi)
  • OSCAR-Turkish, MC4-tr — multilingual web korpuslarının Türkçe dilimleri
  • Türk Wikipedia + Türk Wikisource — temiz ansiklopedik veri
  • Boğaziçi Üniversitesi BOUN Web Corpus
Türkçe pre-trained modeller (HuggingFace):
  • dbmdz/bert-base-turkish-cased
    — klasik Türkçe BERT
  • boun-tabi-LMG/turna_3b
    — TURNA encoder-decoder
  • Trendyol/Trendyol-LLM-7b-base
    — bilingual TR/EN, Llama2 fine-tune
  • asafaya/kanarya-2b
    — Kanarya GPT-J
  • KOCDIGITAL/Kanarya-2B
    — Koç Üniversitesi varyantı
  • vngrs-ai/kumru-2b
    — Kumru-2B (Ekim 2025)
  • ytu-ce-cosmos/turkish-gpt2
    — COSMOS YTÜ varyantı
Türkçe evaluation benchmarks:
  • TR-MMLU (Türkçe MMLU çevirisi)
  • Belebele-tr (Meta'nın çok dilli okuma anlama testi)
  • TruthfulQA-tr (halüsinasyon ölçümü)
  • XCOPA-tr (akıl yürütme)
  • OpenLLMTurkishLeaderboard (HuggingFace üzerinde Türkçe LLM sıralaması)
Sıralama · python

Mini-laboratuvar: Iris Sınıflandırma#

Aşağıdaki 3 hücreyi tek tek çalıştır. Iris veri seti ML'in 'merhaba dünya'sı.
python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
 
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.3, random_state=0
)
print(f"Eğitim: {len(X_train)} örnek, Test: {len(X_test)} örnek")
print(f"Sınıflar: {iris.target_names}")
python
model = DecisionTreeClassifier(max_depth=3, random_state=0)
model.fit(X_train, y_train)
preds = model.predict(X_test)
acc = accuracy_score(y_test, preds)
print(f"Test doğruluğu: {acc:.2%}")
Beklenen çıktı: ~95-97% doğruluk. Iris kolay bir veri seti; gerçek hayatta accuracy bu kadar yüksek olmaz.

Anladığını test edelim#

Bu derste neler öğrendik?#

✓ ML'in 3 paradigması: supervised (etiketli), unsupervised (etiketsiz), reinforcement (ödüllü). ✓ Öğrenme = loss fonksiyonunu minimize edecek parametreleri bulmak. ✓ Gradient descent ile parametreler iteratif güncellenir; learning rate kritik. ✓ scikit-learn ile 5 satır kod çalışan bir model verir. ✓ Train/test ayrımı vazgeçilmez — model görmediği veride başarılı olmalı.
Sıradaki ders: İlk modelinizi sıfırdan eğiteceğiniz hands-on lab.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

Related Content