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 dakikalık okuma
Orta📚 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:
| Paradigma | Veri | Hedef | Tipik örnek |
|---|---|---|---|
| Supervised | (X, y) çiftleri — etiketli | Eşleştirme öğrenmek | Spam tespiti, fiyat tahmini |
| Unsupervised | Sadece X — etiketsiz | Yapı / örüntü bulmak | Müşteri segmentasyonu |
| Reinforcement | Aksiyon → ödül | Optimal politika öğrenmek | Oyun, 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 verilir. Amaç: 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 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_housingfrom sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error, r2_scoreimport 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. 8 özniteliği (gelir, oda sayısı, vb.) ve hedefi (medyan ev fiyatı) döner.
fetch_california_housing
🎮 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öntem | Açıklama | Türkçe için durumu |
|---|---|---|
| BPE (Byte-Pair Encoding) | İstatistiksel olarak sık alt-dizileri token yapar | Standart; morfem sınırlarını ihlal edebilir |
| WordPiece | BPE benzeri, Google BERT tokenizer'ı | Standart; aynı sorunlar |
| SentencePiece / Unigram | Olasılıksal subword | Daha esnek; çoğu Türkçe LLM bunu kullanır |
| Morfoloji-farkındalı hibrit | Kural-tabanlı morfolojik çözümleyici + BPE | Yeni 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: , , . Sıfırdan eğitmek yerine bunları fine-tune et. (3) Türkçe stemming/lemmatization için Kemal Oflazer'in açık kaynak 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).
dbmdz/bert-base-turkish-casedboun-tabi-LMG/TURNATrendyol/Trendyol-LLM-7b-basezemberek-nlppython
# Türkçe için doğru tokenization karşılaştırmasıfrom transformers import AutoTokenizer # Yanlış yaklaşım: sadece İngilizce eğitilmiş tokenizeren_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ş tokenizertr_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):
- — klasik Türkçe BERT
dbmdz/bert-base-turkish-cased - — TURNA encoder-decoder
boun-tabi-LMG/turna_3b - — bilingual TR/EN, Llama2 fine-tune
Trendyol/Trendyol-LLM-7b-base - — Kanarya GPT-J
asafaya/kanarya-2b - — Koç Üniversitesi varyantı
KOCDIGITAL/Kanarya-2B - — Kumru-2B (Ekim 2025)
vngrs-ai/kumru-2b - — COSMOS YTÜ varyantı
ytu-ce-cosmos/turkish-gpt2
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_irisfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitfrom 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...