Bölüm 4: Öğrenme Algoritması Anatomisi (Anatomy of a Learning Algorithm)
Kaynak: Andriy Burkov -- "The Hundred-Page Machine Learning Book" (theMLbook.com)
Bölüm 4: Öğrenme Algoritmasi Anatomisi
4.1 Bir Öğrenme Algoritmasinin Yapi Taslari
Bölüm 3'teki algoritmalari inceleyerek, her öğrenme algoritmasinin uc temel parcadan olustugu gorulur:
1. Kayip Fonksiyonu (Loss Function)
Tek bir örnekteki hatanin olcusu. Örneğin: - Doğrusal regresyon: Karesel hata kaybi - Lojistik Regresyon: Log-olabilirlik kaybi - SVM: Mentes kaybi (hinge loss)
2. Optimizasyon Kriteri (Maliyet Fonksiyonu)
Kayip fonksiyonuna dayali genel hedef. Örnekler:
- Doğrusal regresyon: Ortalama karesel hata (MSE) -- ampirik riski minimize et
- Lojistik regresyon: Log-olabilirlik -- olabilirligi maksimize et
- SVM: Marj büyüklugu + ceza -- C * ||w||^2 + ortalama mentes kaybi
3. Optimizasyon Yöntemi (Routine)
Eğitim verisini kullanarak optimizasyon kriterine çözüm bulan algoritma: - Kapali form çözüm (doğrusal regresyon) - Gradyan Inisi / SGD (lojistik regresyon, SVM, sinir aglari) - Acgozlu yaklasim (karar ağaçlari)
Önemli ayrinti: Bazi algoritmalar belirli bir kriteri acikca optimize eder (doğrusal regresyon, lojistik regresyon, SVM). Diger algoritmalar kriteri dolayli olarak optimize eder (karar ağaçi öğrenmesi, kNN). Karar ağaçi ve kNN, sezgiye dayali olarak deneysel bicimde icat edilmistir; optimizasyon kriterleri daha sonra bu algoritmalarin neden calistigini açıklamak için geliştirilmiştir.
4.2 Gradyan Inisi (Gradient Descent)
Gradyan Inisi, bir fonksiyonun minimumunu bulmak için kullanilan yinelemeli (iterative) bir optimizasyon algoritmasidir.
Temel Prensip
- Rasgele bir noktadan basla
- Fonksiyonun o noktadaki gradyaninin negatifine orantili adimlar at
- Gradyan inisi, fonksiyon azalan yone dogru ilerler
- Minimum noktaya yaklasildikca adimlar kuculur
Uygulama Alanlari
- Doğrusal regresyon (kapali form çözümu de olsa gosterim amacli kullanilabilir)
- Lojistik regresyon
- SVM
- Sinir aglari
Konveks fonksiyonlar (lojistik regresyon, SVM gibi) icin: Tek bir minimum vardir (global minimum). Gradyan inisi bu minimumu bulur.
Konveks olmayan fonksiyonlar (sinir aglari gibi) icin: Birden fazla yerel minimum olabilir, ancak pratikte yerel bir minimum bulmak bile yeterlidir.
Doğrusal Regresyon Ornegi ile Gosterim
Veri seti: 200 sirketin yillik radyo reklam harcamalari (M$) ve satis adetleri.
Model: f(x) = w*x + b
Ortalama karesel hata (MSE):
l = (1/N) * Toplam(i=1..N) (y_i - (w*x_i + b))^2
Kismi Turevlerin Hesaplanmasi
Gradyan inisi, her parametrenin kismi turevini hesaplayarak baslar:
w'ye gore kismi turev:
dl/dw = (1/N) * Toplam(i=1..N) -2*x_i * (y_i - (w*x_i + b))
b'ye gore kismi turev:
dl/db = (1/N) * Toplam(i=1..N) -2 * (y_i - (w*x_i + b))
Bu turevler zincir kurali kullanilarak elde edilir:
- (y_i - (w*x + b))^2 ifadesinde f_1 = y_i - (w*x + b) ve f_2 = f_1^2
- f_2'nin f_1'e gore turevi: 2*(y_i - (w*x + b))
- f_1'in w'ye gore turevi: -x
- Carpim: -2*x*(y_i - (w*x + b))
Parametre Guncelleme Kurali
Parametreler w ve b icin, başlangıç değerleri w_0 = 0 ve b_0 = 0 olarak atanir. Her eğitim örneği için guncelleme:
w_i <- alpha * (-2 * x_i * (y_i - (w_{i-1} * x_i + b_{i-1}))) / N
b_i <- alpha * (-2 * (y_i - (w_{i-1} * x_i + b_{i-1}))) / N
Burada alpha (öğrenme hizi / learning rate), guncellemenin büyüklugunu kontrol eder.
Epoch (Donem) Kavrami
Tum eğitim örnekleri üzerinden yapilan bir tam gecis bir epoch olarak adlandirilir.
- Genellikle birden fazla epoch gerekir
wvebdeğerleri fazla degismemeye basladiginda: durulur- Örnek: 15.000 epoch sonrasi kayip değerleri:
- Epoch 0: kayip = 92.32
- Epoch 400: kayip = 33.79
- Epoch 800: kayip = 27.99
- Epoch 3000: kayip = 19.08
Kayip her epoch'ta azalir ve regresyon cizgisi giderek veriye daha iyi uyar.
Python'da Gradyan Inisi Uygulamasi
Parametre guncelleme fonksiyonu (bir epoch):
- Her eğitim örneği için dl/dw ve dl/db toplanir
- Epoch sonunda w ve b guncellenir: w = w - (1/N) * dl_dw * alpha
Eğitim dongusu: - Belirli sayida epoch boyunca guncelleme fonksiyonu cagrilir - Periyodik olarak ortalama kayip hesaplanip yazdilir
Tahmin fonksiyonu:
- Optimal w ve b bulunduktan sonra: tahmin = w * x_yeni + b
- Örnek: x_yeni = 23.0 için tahmin sonuçu: 13.97
4.2.1 Öğrenme Hizi (Learning Rate) -- alpha
Öğrenme hizi (alpha), gradyan inisinin en kritik hiperparametresidir.
- Cok büyük alpha: Adimlar cok büyük olur, minimum noktayi atlayabilir (iraksama)
- Cok küçük alpha: Yakinlasma cok yavas olur, cok fazla epoch gerekir
- Uygun alpha: Makul surede minimum noktaya yakinsama saglar
Gradyan Inisinin Iyilestirilmis Versiyonlari
Standart gradyan inisi büyük veri setleri için yavas olabilir. Önemli iyilestirmeler:
Stokastik Gradyan Inisi (Stochastic Gradient Descent -- SGD): - Gradyani, eğitim verisinin küçük alt kümeleri (mini-batch) kullanarak yaklasik olarak hesaplar - Hesaplama hizini önemli ölçüde arttirir - Her adimda tum veri seti yerine rastgele secilen bir parçası kullanılır
Adagrad:
- Her parametre için alpha'yi gradyan gecmisine gore ölçekler
- Büyük gradyanlar için alpha azaltilir, küçük gradyanlar için arttirilir
- Her parametrenin farkli öğrenme hizi olmasi saglanir
Momentum: - SGD'yi ilgili yonde hizlandirarak salinimlari azaltir - Gradyanlarin hareketli ortalamasini kullanir - Fiziksel benzetme: Bir topun tepedan asagi yuvarlanmasi gibi ivme kazanir
RMSprop: - Sinir agi eğitiminde sik kullanılır - Her parametrenin gradyan karelerinin hareketli ortalamasini kullanarak öğrenme hizini adapte eder
Adam (Adaptive Moment Estimation): - Momentum ve RMSprop'un birlesimi - Sinir agi eğitiminde en sik kullanilan optimizer - Hem birinci moment (ortalama) hem ikinci moment (varyans) tahminlerini kullanir
Önemli Not: Gradyan inisi ve çeşitleri birer makine öğrenmesi algoritmasi degildir. Bunlar, gradyani olan fonksiyonlarin minimizasyonu için kullanilan cozuculerdir (solver).
4.3 Makine Öğrenmesi Muhendişleri Nasil Calisir?
Araştırma bilimcisi veya büyük AR-GE butceli bir sirket disinda calisiyorsaniz, genellikle MO algoritmalarini kendiniz uygulamazsiniz. Kutuphaneler (libraries) kullanirsiniz.
scikit-learn
En sik kullanilan acik kaynakli MO kutuphanesi. Python ve C ile yazilmistir.
Doğrusal regresyon örneği:
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(x, y)
y_new = model.predict(x_new) # Sonuç: 13.97
Avantajlar:
- LinearRegression'i baska bir algoritmayla degistirmek kolaydir
- LogisticRegression, SVC (SVM), DecisionTreeClassifier, NearestNeighbors vb. ayni arayuzle kullanilabilir
- Kod yapisini degistirmeden algoritma degisikli yapilabilir
4.4 Öğrenme Algoritmalarinin Özellikleri
Farkli öğrenme algoritmalari asagidaki özellikleriyle birbirinden ayrilir:
Hiperparametreler
| Algoritma/Cozucu | Hiperparametreler |
|---|---|
| SVM | C (ceza katsayisi) |
| Karar Ağaçi (ID3) | epsilon (min. entropi azalma), d (maks. derinlik) |
| Gradyan Inisi | alpha (öğrenme hizi) |
Kategorik vs. Sayisal Özellikler
- Kategorik kabul edenler: Karar ağaçi algoritmasi ("kirmizi", "sari", "yesil" gibi değerleri doğrudan isleyebilir)
- Yalnizca sayisal: SVM, lojistik regresyon, doğrusal regresyon, kNN (Oklid mesafesi veya kosinus benzerligi ile). scikit-learn'deki tum algoritmalar sayisal özellik bekler
- Kategorik özellikleri sayisala donusturme yöntemleri Bölüm 5'te anlatilir
Sinif Agirliklandirma
Bazi algoritmalar (örneğin SVM) her sınıf için ağırlık tanimlamasina izin verir: - Yüksek ağırlıkli siniftaki örnekleri yanlis sınıflandırmaktan kacinir - Dengesiz veri setlerinde (bir sınıfın az örneği varken) özellikle faydalidir - Agirlik arttirmak, karar sinirini o sinifa daha hassas hale getirir
Cikti Turleri
| Algoritma | Cikti |
|---|---|
| SVM, kNN | Yalnizca sınıf etiketi |
| Lojistik regresyon, karar ağaçi | Sinif etiketi + 0-1 arasi skor (guven/olasılik) |
SVM ve kNN için de sentetik skor oluşturma teknikleri mevcuttur.
Toplu vs. Yinelemeli Eğitim
Toplu eğitim (Batch): Modeli tum veri setiyle bir kerede oluşturur. Yeni veriler gelirse model sifirdan olusturulur. - Karar ağaçi, lojistik regresyon, SVM
Yinelemeli eğitim (Incremental/Online): Model, her seferinde bir parti (batch) veriyle guncellenir. Yeni veriler geldiginde model yalnizca yeni verilerle guncellenir. - Naive Bayes, cok katmanli algilayici (MLP), SGDClassifier/SGDRegressor, PassiveAggressiveClassifier/PassiveAggressiveRegressor
Sınıflandırma ve Regresyon Destegi
| Algoritma | Sınıflandırma | Regresyon |
|---|---|---|
| Karar Ağaçi | Evet | Evet |
| SVM | Evet | Evet |
| kNN | Evet | Evet |
| Lojistik Regresyon | Evet | Hayir |
| Doğrusal Regresyon | Hayir | Evet |
Kutuphane Dokumantasyonu
Her kutuphane (scikit-learn vb.) su bilgileri saglar: - Algoritmanin cozdugu problem turu - Kabul edilen girdi değerleri - Modelin urettigi çıktı turu - Hiperparametreler ve varsayilan değerleri
Ozet
| Kavram | Aciklama |
|---|---|
| Kayip Fonksiyonu | Tek bir örnekteki hata olcusu |
| Maliyet Fonksiyonu | Tum örnekler üzerindeki toplam/ortalama hata |
| Gradyan Inisi | Gradyanin negatifine orantili adimlarla minimum arama |
| Öğrenme Hizi (alpha) | Guncelleme adiminin büyüklugunu kontrol eden hiperparametre |
| Epoch | Tum eğitim verisi üzerinden bir tam gecis |
| SGD | Küçük alt kümelerle gradyan yaklasimi -- daha hizli |
| Adagrad | Parametre basina adaptif öğrenme hizi |
| Momentum | Gradyan yonunde ivme kazandirma |
| Adam | Momentum + RMSprop bilesimi, en populer optimizer |
| scikit-learn | En yaygin Python MO kutuphanesi |
| Toplu Eğitim | Tum verilerle bir kerede model oluşturma |
| Yinelemeli Eğitim | Verilerle parcali guncelleme |
Lisans ve Atıf
Bu sayfa, Andriy Burkov tarafından yazılan "The Hundred-Page Machine Learning Book" kitabına dayalı notlar içermektedir.
- Kitap: theMLbook.com
- GitHub: github.com/aburkov/theMLbook
- Lisans: MIT License — Copyright (c) 2019 Andriy Burkov
- İlke: "Read first, buy later" — Kitabı önce okuyun, beğenirseniz satın alın.
MIT Lisansı gereği bu copyright bildirimi ve izin bildirimi, Yazılımın tüm kopyalarına veya önemli bölümlerine dahil edilmelidir.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. Bu içerik eğitim amaçlıdır ve orijinal eserin yerine geçmez. Tam kitap için themlbook.com adresini ziyaret edin.