- 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.
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.
| Yolculuk | Mesafe, km (öznitelik) | Ücret, manat (etiket) |
|---|---|---|
| 1 | 1 | 2,0 |
| 2 | 2 | 2,6 |
| 3 | 3 | 3,0 |
| 4 | 4 | 3,4 |
| 5 | 5 | 4,0 |
Öğrenmenin üç türü
| Tür | Nasıl öğrenir | Örnek |
|---|---|---|
| Denetimli öğrenme | Doğru cevapları (etiketleri) olan örneklerden | Yolculuk ücreti tahmini, spam tespiti, el yazısı okuma |
| Denetimsiz öğrenme | Cevapsız örneklerden; grupları ve yapıyı kendisi bulur | Mağaza müşterilerini alışveriş alışkanlıklarına göre gruplamak |
| Pekiştirmeli öğrenme | Deneme yanılmayla, iyi hamleler için ödül alarak | AlphaGo 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:
- 1Tahmin et
Model, eğitim verisindeki her yolculuk için ücreti tahmin eder.
- 2Kontrol et
Her tahmini gerçek ücretle karşılaştırır ve ortalama hatayı hesaplar (burada farkların karelerinin ortalaması).
- 3Dü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.
- 4Tekrarla
Hata azalmayı bırakana kadar döngüyü yüzlerce veya binlerce kez tekrarlar.
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
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.
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'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'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
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Çözümü gizle
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.
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ü?
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.