Bir cümlelik özet
Makine öğrenmesi, bir bilgisayarın her kuralı tek tek yazmak yerine birçok örneğe bakarak kalıpları kendisinin bulmasıdır.
Neden önemli?
Bir önceki derste yapay zekânın veriden kalıp bulan bir araç olduğunu, sihir olmadığını konuşmuştuk. Peki bu kalıpları nasıl buluyor? İşte bunun en yaygın yolu makine öğrenmesidir (İngilizcesi: machine learning).
Bunu anlamak önemli, çünkü çevrende gördüğün pek çok sistem bu fikirle çalışır: fotoğraflardaki yüzleri çerçeveleyen kamera, gelen kutunda spam iletileri ayıran e-posta uygulaması, sesini yazıya çeviren asistan. Bunların hiçbiri “akıllı” olduğu için çalışmaz. Hepsi çok sayıda örnekten kalıp öğrendiği için çalışır.
Bir başka önemli nokta: bu sistemler öğrendikleri örnekler kadar iyidir. Örnekler eksik veya yanlıysa sonuç da yanlış olur. Bu yüzden makine öğrenmesinin nasıl çalıştığını bilmek, ona ne zaman güvenip ne zaman kontrol edeceğimizi anlamamıza yardım eder.
Kural yazmak ile örnekten öğrenmek
Önce: kuralı biz yazarız
Kodlama modüllerinde yaptığımız işin çoğu buydu. Bir problemi çözmek için adımları ve kuralları biz düşünüp yazdık. Örneğin bir sayının tek mi çift mi olduğunu bulmak kolaydır, çünkü kuralı biliyoruz:
Eğer sayı 2'ye tam bölünüyorsa
"çift" de
Değilse
"tek" de
Bu tür problemlerde makine öğrenmesine ihtiyacımız yok. Kural nettir, biz yazarız, bilgisayar uygular.
Sorun: bazı kurallar yazılamaz
Şimdi şunu dene: bir kediyi köpekten ayıran kuralı kelimelerle yaz. “Kedinin bıyığı vardır” dersen köpeğin de bıyığı vardır. “Kedi küçüktür” dersen bazı köpekler kediden küçüktür. Kulak şekli, tüy, kuyruk… her kuralın bir istisnası çıkar.
Bir fotoğrafta kedi olup olmadığını anlamak senin için çok kolaydır, ama bunu yaparken kullandığın kuralı adım adım yazamazsın. İşte tam burada yaklaşımı değiştiririz.
Sonra: örnekleri veririz, kuralı makine bulur
Makine öğrenmesinde kuralı tek tek yazmayız. Bunun yerine bilgisayara çok sayıda örnek gösteririz ve “bunların ortak kalıbını sen bul” deriz.
Kedi–köpek örneğinde bu şöyle olur: bilgisayara binlerce fotoğraf gösteririz ve her fotoğrafın altına doğru cevabı yazarız — “bu kedi”, “bu köpek”, “bu kedi”… Bilgisayar bu örneklere bakarak, kedi fotoğraflarında sık görünen kalıpları yavaş yavaş yakalar. Sonra hiç görmediği yeni bir fotoğraf geldiğinde, öğrendiği kalıba göre bir tahmin yapar.
Buradaki kelimeye dikkat: tahmin. Makine öğrenmesi kesin bir sonuç değil, bir tahmin üretir. Çoğu zaman doğrudur, ama yanılabilir de.
Öğretmenli öğrenme: etiketli örnekler
Etiket ne demek?
Yukarıdaki her fotoğrafın altına yazdığımız doğru cevaba etiket denir. “Bu kedi” etiketidir, “bu köpek” bir başka etikettir.
Örneklerin yanında doğru etiket de verilerek yapılan öğrenmeye öğretmenli öğrenme (İngilizcesi: supervised learning) denir. İsmi güzel bir benzetmeden gelir: sanki bir öğretmen her örneğin doğru cevabını göstererek öğrenciye yol gösterir.
Günlük hayattan örnek: meyve tanıma
Diyelim bir markette meyveleri ağırlıklarına göre ayırmak istiyoruz. Elmalar genelde daha hafif, portakallar genelde daha ağır. Kesin bir kural yazmak yerine, elimizdeki tartılmış ve isimlendirilmiş meyvelerden öğrenebiliriz.
Aşağıdaki kod gerçek bir model eğitmez; küçük ve dürüst bir deneydir. Etiketli örneklerden her sınıfın ortalama ağırlığını öğrenir, sonra yeni bir meyveyi hangi ortalamaya daha yakınsa ona benzetir:
# Etiketli örnekler: (agirlik_gram, etiket)
ornekler = [
(120, "elma"), (130, "elma"), (110, "elma"),
(150, "portakal"), (170, "portakal"), (160, "portakal"),
]
# Her sinifin ortalama agirligini ornekten "ogren"
elmalar = [a for a, e in ornekler if e == "elma"]
portakallar = [a for a, e in ornekler if e == "portakal"]
elma_ort = sum(elmalar) / len(elmalar)
portakal_ort = sum(portakallar) / len(portakallar)
# Yeni bir meyveyi, daha yakin oldugu ortalamaya gore tahmin et
def tahmin_et(agirlik):
if abs(agirlik - elma_ort) < abs(agirlik - portakal_ort):
return "elma"
return "portakal"
print(tahmin_et(125)) # elma
print(tahmin_et(165)) # portakal
Kuralı biz elle yazmadık; “elma 130 gramdan hafiftir” gibi bir eşik koymadık. Program eşiği örneklerdeki ortalamalardan kendi çıkardı. Gerçek makine öğrenmesi çok daha karmaşıktır, ama temel fikir tam olarak budur: örneklerden bir kalıp çıkar, sonra yeni veride onu kullan.
Örnekler değişirse sonuç da değişir
Bu deneyde tuhaf bir şeyi kolayca görebilirsin. Örneklere yanlışlıkla 300 gramlık bir “elma” eklersen, elmanın ortalaması yükselir ve program sonraki tahminlerde şaşırmaya başlar. Kodu değiştirmedik; sadece veriyi değiştirdik ve davranış bozuldu.
Bu, makine öğrenmesinin en önemli dersidir: sonuç, verdiğin örneklere bağlıdır. Örnekler dengesiz, eksik veya taraflıysa öğrenilen kalıp da taraflı olur.
Mini uygulama
Bilgisayar gerekmez; kalem kâğıt yeter.
- Bir kutuya 8 tane küçük etiketli örnek yaz. Her örnek bir hayvan olsun ve iki bilgi taşısın: yaklaşık ağırlığı ve etiketi (“kedi” veya “köpek”).
- Şimdi kod gibi düşün: kedilerin ortalama ağırlığını ve köpeklerin ortalama ağırlığını hesapla.
- Arkadaşından yeni bir ağırlık söylemesini iste (örneğin 6 kg). Bu ağırlık hangi ortalamaya daha yakınsa tahminin o olur.
- Şimdi bir “tuzak” örneği ekle: 40 kg’lık bir “kedi”. Ortalamayı tekrar hesapla ve aynı tahmini yeniden yap. Sonuç değişti mi?
- Son adımda kısa bir cümleyle yaz: Kodu mu değiştirdin, yoksa veriyi mi? Sonuç neden bozuldu?
Bu uygulama, öğretmenli öğrenmenin hem gücünü hem de kırılgan tarafını tek seferde gösterir.
Uygulama laboratuvarı: Makine Öğrenmesi Nedir?
Makine Öğrenmesi Nedir? konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Kural yazmak ile örnekten öğrenmek ile Sorun: bazı kurallar yazılamaz arasındaki ilişkiyi kullanarak temizlenmiş küçük veri tablosu, açık sınıflandırma kuralı ve hata değerlendirmesi hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: eğitim ve test verisini ayırarak basit model karşılaştırma. Dersin ana hedefi “Bir sistemin kurallardan değil örneklerden nasıl öğrendiğini öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Verinin kaynağı ve amacı açık mı?
- Eksik, tekrar eden ve sıra dışı değerler işaretlendi mi?
- Kişisel bilgi kullanılmadan örnek kurulabiliyor mu?
- Eğitim ve test verisi birbirinden ayrıldı mı?
- Yanlış tahminler saklanıp nedenleri incelendi mi?
“Makine Öğrenmesi Nedir?” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın eğitim ve test verisini ayırarak basit model karşılaştırma senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Kural yazmak ile örnekten öğrenmek ve Sorun: bazı kurallar yazılamaz ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Makine öğrenmesini programlamayla karıştırmak
Programlamada kuralı sen yazarsın. Makine öğrenmesinde örnekleri verirsin, kalıbı makine çıkarır. Her problem makine öğrenmesi gerektirmez; kuralı kolayca yazabildiğin yerde düz kod daha iyidir.
“Doğru cevabı biliyor” sanmak
Makine öğrenmesi kesin bilgi değil, tahmin üretir. Önemli bir kararda çıktıya körü körüne güvenmek yerine sonucu kontrol etmek gerekir.
Az veya taraflı örnekle öğretmek
Sadece siyah kedi fotoğrafı gösterirsen, sistem turuncu bir kediyi tanımakta zorlanabilir. Örnekler ne kadar çeşitli ve dengeliyse öğrenilen kalıp o kadar adil olur.
Yanlış örneği fark etmemek
Tek bir hatalı etiket (“köpek” yerine yanlışlıkla “kedi” yazmak) bile öğrenilen kalıbı bozabilir. Örnekleri hazırlarken dikkatli olmak, kodu yazmak kadar önemlidir.
Güvenlik notu
- Makine öğrenmesi araçlarını bir yetişkinle birlikte ve platformun yaş kurallarına uyarak kullan.
- Kendinin veya başkasının kişisel bilgilerini (ad, adres, telefon, okul, yüz fotoğrafı) çevrimiçi yapay zekâ araçlarına veya veri kümelerine yükleme. Bir kez yüklenen bilgi başkaları tarafından da kullanılabilir.
- Makine öğrenmesi sistemleri yanılabilir ve verideki adaletsizliği öğrenebilir. Önemli bir sonucu — bir teşhis, bir not, bir karar — tek başına makineye bırakma; bir insan mutlaka kontrol etmeli.
- Sorumluluk her zaman insandadır. Bir sistemi kimin, hangi veriyle, ne amaçla eğittiği; sonucun adil ve doğru olup olmadığı insanların sorumluluğudur.
Ders özeti
- Makine öğrenmesi, kuralları tek tek yazmak yerine örneklerden kalıp çıkarmaktır.
- Kuralı kolayca yazamadığımız problemlerde (kedi–köpek ayırt etmek gibi) işe yarar.
- Etiketli örneklerle yapılan öğrenmeye öğretmenli öğrenme denir.
- Sonuç bir tahmindir; her zaman doğru olmayabilir ve verdiğimiz veriye bağlıdır.
- Eksik veya taraflı veri, taraflı sonuç üretir; sorumluluk her zaman insandadır.
Kontrol soruları
- Makine öğrenmesi ile normal programlama arasındaki temel fark nedir?
- “Etiket” ne demektir ve öğretmenli öğrenmede neden gereklidir?
- Kedi–köpek örneğinde bilgisayara kuralları mı yazarız, örnekleri mi veririz?
- Meyve deneyinde kodu değiştirmeden sonucu bozmanın bir yolu nedir?
- Bir yapay zekâ aracına kişisel fotoğrafını yüklemeden önce neden dikkatli olmalısın?
Cevaplar
- Programlamada kuralları insan yazar; makine öğrenmesinde insan örnekleri verir, kalıbı (kuralı) makine örneklerden kendi çıkarır.
- Etiket, bir örneğin doğru cevabıdır (“bu kedi” gibi). Öğretmenli öğrenmede makine, doğru cevapları görerek kalıbı öğrendiği için etiket gereklidir.
- Örnekleri veririz. Çok sayıda etiketli fotoğrafa bakarak kalıbı makine bulur, çünkü kediyi köpekten ayıran kuralı kelimelerle yazmak çok zordur.
- Veriyi değiştirmek. Örneğin örneklere çok ağır, hatalı bir “elma” eklersek ortalama bozulur ve program yanlış tahmin etmeye başlar.
- Çünkü bir kez yüklenen kişisel bilgi başkaları tarafından görülüp kullanılabilir; bu yüzden yükleme yapmadan önce bir yetişkine danışmak ve platformun kurallarına uymak gerekir.
Kaynak ve doğrulama notu
“Makine Öğrenmesi Nedir?” dersi için doğrulama odağı Kural yazmak ile örnekten öğrenmek ile Sorun: bazı kurallar yazılamaz arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Bu modüldeki veri kümeleri eğitim amaçlı ve küçüktür; gerçek kişisel veri kullanılmamalıdır. Bir yapay zekâ sonucunun doğruluğu kadar, verinin dengesi, hataların dağılımı ve açıklanabilirliği de değerlendirilmelidir.
Sonraki ders
Eğitim Verisi ve Test Verisi: Bir makine öğrenmesi sistemini örneklerle nasıl öğretiriz ve öğrenip öğrenmediğini nasıl adil şekilde sınarız.