İçeriğe geç
Educora
Başlangıç16 dk2 / 10

Makine öğrenmesi veriden nasıl öğrenir

Öznitelikler ve etiketler, üç öğrenme türü, “tahmin et, kontrol et, düzelt” döngüsü, yapay sinir ağları ve veri kalitesi; ağır matematik olmadan, küçük ve çalıştırılabilir bir Python örneğiyle.

Kendini test et
Bu derste öğreneceklerin
  • Bir veri kümesinde öznitelikleri ve etiketi ayırt etmek
  • Denetimli, denetimsiz ve pekiştirmeli öğrenmeyi ayırt etmek
  • Bir modelin hatasını azaltarak nasıl öğrendiğini açıklamak
  • Kötü verinin ve aşırı öğrenmenin tehlikesini fark etmek

Kediyi köpekten ayırt etmeyi nasıl öğrendin? Kimse sana “kulakları sivri, bıyıkları uzunsa kedidir” gibi bir kural listesi vermedi. Sadece çok sayıda kedi ve köpek gördün, biri sana hangisinin hangisi olduğunu söyledi, beynin de farkları kendisi buldu. Makine öğrenmesi şaşırtıcı derecede benzer çalışır: kural yazmak yerine bilgisayara örnekler gösteririz ve örüntüyü kendisinin bulmasını sağlarız.

Tanım
Makine öğrenmesi

Bir programın, programcının yazdığı kurallara uymak yerine veriden (örneklerden) öğrenerek bir görevde giderek daha başarılı olduğu yapay zekâ dalı. Öğrenmenin sonucu bir modeldir: parametre adı verilen ayarlanabilir değerleri olan bir fonksiyon.

Veri: öznitelikler ve etiketler

Bakü'de bir taksi yolculuğunun ücretini tahmin etmek istediğimizi düşünelim. Geçmişteki her yolculuk bir örnektir. Yolculuktan önce bildiklerimiz, yani mesafe, günün saati ve haftanın günü, özniteliklerdir (features). Tahmin etmek istediğimiz şey, yani ücret, etikettir (label). Bu tür örneklerden oluşan tabloya eğitim verisi denir.

YolculukMesafe, km (öznitelik)Ücret, manat (etiket)
112,0
222,6
333,0
443,4
554,0
Aşağıdaki örnekte kullanılan beş yolculuk. Gerçek sistemler binlerce örnek ve çok sayıda öznitelik kullanır.

Öğrenmenin üç türü

TürNasıl öğrenirÖrnek
Denetimli öğrenmeDoğru cevapları (etiketleri) olan örneklerdenYolculuk ücreti tahmini, spam tespiti, el yazısı okuma
Denetimsiz öğrenmeCevapsız örneklerden; grupları ve yapıyı kendisi bulurMağaza müşterilerini alışveriş alışkanlıklarına göre gruplamak
Pekiştirmeli öğrenmeDeneme yanılmayla, iyi hamleler için ödül alarakAlphaGo gibi oyun programları, robot kontrolü

Her gün karşılaştığın yapay zekânın çoğu denetimli öğrenme kullanır. Sohbet asistanları ise birkaç yöntemi birleştirir; bunu bir sonraki derste göreceksin.

Model nasıl öğrenir: tahmin et, kontrol et, düzelt

Modelimiz bir doğrudur: ücret = w · km + b. Burada w kilometre başına ücret, b ise açılış ücretidir; bunlar iki parametredir. Başta model hiçbir şey bilmez: w = 0 ve b = 0'dır, bütün tahminleri yanlıştır. Öğrenme bir döngüdür:

  1. 1
    Tahmin et

    Model, eğitim verisindeki her yolculuk için ücreti tahmin eder.

  2. 2
    Kontrol et

    Her tahmini gerçek ücretle karşılaştırır ve ortalama hatayı hesaplar (burada farkların karelerinin ortalaması).

  3. 3
    Düzelt

    w ve b'yi hatayı küçülten yönde çok az değiştirir. Bu adımın büyüklüğüne öğrenme oranı denir.

  4. 4
    Tekrarla

    Hata azalmayı bırakana kadar döngüyü yüzlerce veya binlerce kez tekrarlar.

Python
km = [1, 2, 3, 4, 5]
fare = [2.0, 2.6, 3.0, 3.4, 4.0]

w, b = 0.0, 0.0   # the model: fare = w * km + b
lr = 0.02         # learning rate: the size of each small step

for step in range(2001):
    grad_w = grad_b = 0.0
    for x, y in zip(km, fare):
        error = (w * x + b) - y
        grad_w += 2 * error * x / len(km)
        grad_b += 2 * error / len(km)
    w -= lr * grad_w
    b -= lr * grad_b
    if step % 500 == 0:
        loss = sum((w * x + b - y) ** 2 for x, y in zip(km, fare)) / len(km)
        print(f'step {step:4d}: w = {w:.3f}, b = {b:.3f}, error = {loss:.4f}')

print(f'Prediction for 8 km: {w * 8 + b:.2f} manat')
▸ Beklenen çıktı
step    0: w = 0.398, b = 0.120, error = 2.8551
step  500: w = 0.492, b = 1.516, error = 0.0036
step 1000: w = 0.480, b = 1.559, error = 0.0032
step 1500: w = 0.480, b = 1.560, error = 0.0032
step 2000: w = 0.480, b = 1.560, error = 0.0032
Prediction for 8 km: 5.40 manat
Kodu çalıştır. Hata 2,86'dan 0,0032'ye düşer ve model w ≈ 0,48 ile b ≈ 1,56 değerlerini bulur.

Model, verinin içinde saklı kuralı keşfetti: kilometre başına yaklaşık 0,48 manat, artı 1,56 manat açılış ücreti. Bu kuralı kimse yazmadı; örneklerden çıktı. Artık model hiç görmediği bir yolculuğu da tahmin edebilir: 8 km → 5,40 manat. Spam filtresinden sohbet asistanına kadar bütün modern yapay zekâ aynı döngüyle öğrenir, yalnızca çok daha fazla parametre ve veriyle.

Yapay sinir ağları ve derin öğrenme

Bir doğrunun iki parametresi vardır: taksi ücreti için bu yeterlidir ama bir yüzü tanımak ya da cümle yazmak için yetmez. Bu tür görevlerde yapay sinir ağları kullanılır: katmanlar hâlinde dizilmiş çok sayıda basit birim (yapay nöron). Her birim girdilerini ağırlıklarla çarpar, toplar ve sonucu bir sonrakine iletir. Çok katmanlı ağa derin ağ denir; derin öğrenme terimi de buradan gelir. Ağırlıklar aynı “tahmin et, kontrol et, düzelt” döngüsüyle öğrenilir.

Veri kalitesi ve aşırı öğrenme

Bir model ancak verisi kadar iyi olabilir. Örnek yolculukların hepsi gündüz yapıldıysa model, gece ücretlerinin farklı olabileceğini bilemez. Veride hatalar varsa ya da veri çoğunlukla tek tür örnekten oluşuyorsa model bu hataları da öğrenir.

Zayıf veri
Training photos for a 'cat' detector:

20 photos
all of orange cats
all taken indoors, on a sofa

→ the model learns: orange + sofa = cat
→ a grey cat in a garden: 'not a cat'
İyi veri
Training photos for a 'cat' detector:

20 000 photos
cats of every colour and breed
indoors and outdoors, day and night
+ many photos without cats

→ the model learns ears, eyes, whiskers, shape
→ a grey cat in a garden: 'cat'
Model, verinin gösterdiği her şeyi, kanepe gibi tesadüfi örüntüleri de öğrenir.

Bir diğer tuzak aşırı öğrenmedir (overfitting): model genel örüntüyü öğrenmek yerine eğitim örneklerini ezberler; tıpkı geçen yılın sınav cevaplarını ezberleyip yeni sınavda başarısız olan bir öğrenci gibi. Bunu yakalamak için verinin bir kısmını her zaman bir test kümesi olarak ayırır ve modeli hiç görmediği örneklerde sınarız.

Uygulama

Öznitelikler, etiket, öğrenme türü

Bir okul, bir öğrencinin mezuniyet sınavını geçip geçemeyeceğini tahmin etmek istiyor. Geçmiş yıllara ait veriler var: devam durumu, ödev puanları, haftalık çalışma saatleri ve her öğrencinin sınavı geçip geçmediği. Öznitelikleri, etiketi ve öğrenme türünü belirle.

Çözümü göster
Öznitelikler: devam durumu, ödev puanları, çalışma saatleri.
Etiket: geçti / geçemedi.
Öğrenme türü: denetimli öğrenme (geçmiş veride doğru cevaplar var). Etiket bir sayı değil, bir kategori olduğu için bu bir sınıflandırma görevidir.
Önemli: tahmin bir hüküm değil, bir olasılıktır; öğretmenler onu öğrencileri etiketlemek için değil, zamanında yardım önermek için kullanmalıdır.
Alıştırma

fare = 0,5 · km + 1,5 doğrusu bir insanın tahminidir. Beş yolculuk üzerindeki ortalama hatasını (farkların karelerinin ortalamasını) hesapla ve 4 ondalık basamakla yazdır. Öğrenilmiş modelin 0,0032 hatasından daha iyi mi, daha kötü mü?

Alıştırma · Python
km = [1, 2, 3, 4, 5]
fare = [2.0, 2.6, 3.0, 3.4, 4.0]
w, b = 0.5, 1.5
total = 0
# add the squared error of every trip to total,
# then print total / len(km) with 4 decimals
▸ Beklenen çıktı
0.0040

Önemli noktalar

  • Makine öğrenmesinde program kuralı örneklerden kendisi bulur; sonuç, parametreleri olan bir modeldir.
  • Öznitelikler önceden bildiklerimiz, etiket ise tahmin etmek istediğimiz cevaptır.
  • Üç öğrenme türü: denetimli, denetimsiz ve pekiştirmeli öğrenme.
  • Model, “tahmin et → kontrol et → düzelt → tekrarla” döngüsünde hatasını azaltarak öğrenir.
  • Bir model ancak verisi kadar iyidir; onu her zaman hiç görmediği test verisinde sına.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
Taksi örneğinde etiket hangisidir?