top of page

Veri Bilimci Yol Haritası #6: Makine Öğrenimine Giriş

Yazarın fotoğrafı: Selçuk ŞentürkSelçuk Şentürk

Güncelleme tarihi: 8 Oca



Makine Öğrenimi Tipleri


Üç ana makine öğrenim sistem kategorisi vardır:

  • Gözetim modları (gözetimli, gözetimsiz, pekiştirmeli öğrenme)

  • Öğrenme modları (çevrimiçi öğrenme, toplu öğrenme)

  • Çıkarım türü (örnek tabanlı, model tabanlı)


Bu kategoriler birbirini dışlamaz ve problemimizin ihtiyacına göre birleştirilebilir.


Örnek

Kendi kendine giden bir araç, gözetimli öğrenme kullanan, toplu öğrenme yoluyla öğrenen ve kısa vadeli tahminler yapmasını sağlayan istatistiksel bir model sayesinde 'düşünen' bir makine öğrenim sistemi kullanabilir ("Öndeki araç frene basıyor, yakında frenleri aktif etmem gerekecek!").


Gözetimli Öğrenme (Supervised Learning)


En yaygın öğrenme modu gözetimli öğrenmedir. Bu, sistemi istenen çözümü içeren veriler aracılığıyla eğitmekten oluşur: bu çözümlere "etiketler(label)" denir.


"Etiketlenmiş" bir veri örneği, bir arabanın görüntüsü (asıl veri) ve buna atanmış araba modeli (etiket) olabilir. Bir makine öğrenim sistemi, veriler ve etiketleri üzerinde eğitildikten sonra, yeni bir görüntü alabilir ve (varsayılan) etiketini çıktı olarak verebilir! Sistemin doğru etiketi atama "becerisini" ölçmek için kullanılan metrikler çeşitlidir ve farklı kılavuzlarda daha ayrıntılı olarak incelenecektir. Bir modeli eğitmek kadar, sonuçlarını ölçmek ve takip etmek de en önemli adımlardan biridir.


Gözetimli öğrenme ile ele alınabilecek en yaygın iki görev, sınıflandırma ve regresyondur. Bir sınıflandırma problemi, yeni bir girdiye ayrık bir etiket atamaktan oluşur. Bu, sayısal bir değer veya bir kategori olabilir (örneğin, verilen bir resmin bir köpeği mi yoksa bir kediyi mi temsil ettiğini söylemek), ancak her durumda iyi tanımlanmış bir seçenek kümesi içinde yer alır. Tanımların doğru yapılması modelin performansını yüksek derecede etkileyebilir.




Bir regresyon problemi ise yeni verilere sürekli bir değer atamaktan oluşur. Örneğin, belirli bir değer kümesi (örneğin oda sayısı, metrekare bazında büyüklüğü, banyo sayısı) verildiğinde bir evin fiyatını tahmin etmek gibi. Bu durumda çıktı, sonlu bir küme yerine sürekli bir aralıkta yer alacaktır.




Gözetimli öğrenme, modelin etkili bir şekilde öğrenebilmesi için önemli miktarda etiketlenmiş veri setinin sağlanmasını gerektirir.


Klasik örnek, binlerce kedi ve köpek görüntüsünden oluşan bir veri seti üzerinde eğitilen ve sunulan yeni fotoğrafları bu iki kategoriden birine sınıflandırmayı öğrenen bir modeldir. Sınıflandırma modelleri, temsili bir veri setine sahip oldukları sürece, herhangi bir sayıda sınıfı ayırt etmeyi öğrenebilir!


Genellikle, sınıflandırma modelleri bir girdi örneğinin her bir çıktı sınıfına ait olma olasılığını sayısal bir değer olarak öngörür. Olasılıklar, modelin belirli bir örneğin her bir sınıfa ait olduğuna dair güveni olarak yorumlanabilir. Tahmin edilen bir olasılık, en yüksek olasılığa sahip sınıfın etiketi seçilerek bir sınıf değerine dönüştürülebilir.


Örnek

Kedi ve köpek resimlerini ayırt etmek üzere eğitilmiş bir model, bir kedi resmi girdi olarak verildiğinde 0.876 olasılıkla kedi, 0.124 olasılıkla köpek sınıflarına olasılıksal değerler verebilir. Bu durumda model bu resmin kedi olduğuna karar verecektir, çünkü ortaya çıkan olasılık yeterince büyük. Ayrıca bu değerin modelin sonuca güveni olarak da düşünebiliriz.


Gözetimsiz Öğrenme


Peki ya etiketlenmiş verimiz yoksa veya amacımız hakkında bilgi sahibi olmadığımız bir şeyi bulmaksa? İşte burada gözetimsiz öğrenme devreye girer çünkü girdi, etiketlerin kullanımı olmaksızın "ham" verilerden oluşur.


Örneğin, müşterilerin yaptığı tüm alışverişleri sepet sepet içeren bir süpermarket satış veri setimiz olduğunu hayal edelim. Sıklıkla birlikte satın alınan ürünleri gruplandırarak ürün ilişkileri çıkarabilir ve ürünleri yakın raflara koymayı veya diğerlerini satın aldığınızda birini indirimli yapmayı seçebilirsiniz.


Gözetimsiz öğrenme aynı zamanda gözetimli öğrenmenin bir tamamlayıcısı olarak, verileri keşfetmek (hatta önceden etiketlenmiş olsa bile) ve fark edilmemiş başka türde gruplamalar bulmak için kullanılır (ve böylece veri setinin her bir örneği hakkında sahip olduğumuz bilgi miktarını artırır).


Bu öğrenme türünün bir başka kullanımı da boyut indirgemedir. Bunun amacı, verinin "değerini" koruyarak dikkate alınacak özellik sayısını azaltmaktır. Bu, veri seti çok geniş ve seyrek olduğunda oldukça kullanışlıdır.



Pekiştirmeli Öğrenme


Pekiştirmeli öğrenme tamamen farklı bir şeydir. Bu bağlamda öğrenme sistemi ajan olarak adlandırılır ve çevresini gözlemleyerek (bir tür sensör aracılığıyla), eylemler gerçekleştirerek ve bunları bir tür ödüle (reward) dayalı olarak değerlendirerek (iyi eylem / kötü eylem) problemi çözmeyi öğrenir.


Ajan, kendini geliştirmeye çalışacak, eylem parametrelerini ayarlayacak ve giderek daha büyük bir ödül elde etmeyi hedefleyecek şekilde tasarlanmıştır. Model bunu sağlayacak şekilde çıktılarını değiştirir, en yüksek ödüle ulaşmak için optimize eder.


Pekiştirmeli öğrenme, robotik alanında yoğun olarak kullanılmaktadır. Örneğin, bir robot hatalarından kademeli olarak öğrenerek çevresinde hareket etmeyi öğrenir (bir duvara çarparak ödül azalır, bunun yerine robot çarpışma olmadan hareket ederken ödül artar, bu da onu nesnelerden kaçınmaya teşvik eder).



Öğrenme modları


Makine öğrenim sistemlerinin bir diğer önemli özelliği, tek seferlik (toplu öğrenme) modunda veya sürekli artan (çevrimiçi öğrenme) modunda öğrenebilmeleridir.


Toplu öğrenme (çevrimdışı öğrenme olarak da adlandırılır) durumunda, sistem mevcut tüm verileri kullanarak eğitilir: bu genellikle uzun ve hesaplama açısından maliyetli bir süreçtir, bu yüzden sadece ara sıra gerçekleştirilir. Modeli yeniden eğitmek istediğinizde, tüm veriler üzerinde tekrar yapmanız gerekir, bu yüzden bunu sadece yeni modelin performansını gerçekten iyileştirebilecek önemli miktarda yeni veri varsa yapmak en iyisidir (yeni model hem yeni hem de eski veriler üzerinde eğitilecektir).


Neyse ki, bu eğitim yöntemi kolayca otomatikleştirilebilir, böylece modeli örneğin her gece veya her hafta eğitmeye karar verebilirsiniz.


Ancak, değişikliklere daha hızlı tepki veren bir sisteme ihtiyacınız varsa (örneğin ticari dolandırıcılık veya siber saldırı belirtilerinin tespiti için) en iyi çözüm çevrimiçi öğrenmedir. Bu durumda (canlı öğrenme olarak da adlandırılır) sistem, mini-batch adı verilen küçük veri gruplarını girdi olarak alarak sıralı bir şekilde eğitilir. Yeni verilerden öğrenmek (hesaplama açısından) ucuz ve hızlıdır çünkü sistem, veriler toplandıkça anında öğrenir.


Çevrimiçi öğrenme, reaktif bir sistem yanıtına ihtiyaç duyduğunuz veya düşük hesaplama gücüne sahip olduğunuz durumlarda optimaldir. "Çevrimiçi" teriminin, sistemin bir ağa bağlı olması gerektiği anlamına gelmediğini, sadece sürekli bir veri akışıyla beslenmesi gerektiğini unutmayın.


Çıkarım türü


Makine öğrenim sistemlerini kategorize etmenin son bir yolu da genelleştirme şekillerine göredir. Model tabanlı sistemler, bilginin bir temsilini (model) oluşturmayı amaçlar ve bu model daha sonra çıktılar üretmek için kullanılır. Örnek tabanlı sistemler ise görülmemiş bir girdiden genelleme yapmaz, bunun yerine onu önceki tüm verilerle (bellekte saklanan) karşılaştırır ve en yakın değeri bulmaya çalışır, yani veriyi doğru noktaya yerleştirmeye çalışır. Bu farkı anlamak için bir örnek çok faydalı olabilir.


Örnek senaryo


"Bilgimizi" oluşturan bir dizi koordinat (veri: X, Y) verildiğinde, yeni bir noktanın X'i verildiğinde, hangi Y'nin en uygun olduğunu anlamaya çalışalım. Bir strateji şöyle olabilir: noktanın X değerini bilinen noktaların değerleriyle karşılaştır, mesafe açısından en yakın bilinen noktayı al ve onun Y'sini yeni noktaya ata.




Ancak, bu yaklaşım çok basit ve yeni bir noktanın konumunun en yakın komşusu tarafından belirlendiği güçlü varsayımına dayanmaktadır.


Sistem bilgisini "ezbere" öğrenir ve yeni durumlara körü körüne uygular, belleğe kaydedilenlere göre bir benzerlik ölçüsü (bu durumda X boyutuna göre mesafe) uygular.


Eski durumlardan yola çıkarak yeni durumları genelleştirmek için kullanılabilecek diğer yaklaşım, sahip olduğum verilerin (şekildeki gri noktalar) nasıl oluşturulduğuna dair bir "temsil" veya "fikir" oluşturmak ve bu "fikri" (modeli) yeni noktaların Y'sini üretmek için kullanmak olabilir. Dolayısıyla bir model, uygun şekilde ayarlandığında, yeni bir noktanın X'i verildiğinde Y'nin makul bir tahminini sağlayabilen bir parametre setidir.


Bizim durumumuzda, modelimizin gri noktalar serisini en iyi şekilde temsil edebilecek düz bir çizgi olduğunu düşünelim. Parametrelerimiz, çizginin eğimi ve y eksenini kestiği noktadır (y-kesişimi), ve modelin eğitim süreci bu iki parametrenin sayısal değerlerinin ne olduğunu anlamaktan oluşur.



Bir makine öğrenimi modeli, burada en basit versiyonuyla (iki parametre), bazen on binlerce hatta milyonlarca parametreden oluşabilir. Bunları eğitmek ve dolayısıyla parametrelerin "iyi değerlerini" bulmak için çok fazla hesaplama gücü gerekir ve modellerin eğitim sürecinin optimizasyonu, içten ve acil bir araştırma konusudur.



Makine Öğreniminin Ana Zorlukları


Yetersiz veri


Makine öğreniminin temel varsayımı, modelleri eğitmek ve daha sonra problemleri çözmek için kullanmak üzere ihtiyacınız olan verilere sahip olmaktır. Gerçek dünyada, ilginç olabilecek kalıpları doğru bir şekilde tanımak için bir model eğitmek üzere sahip olunan verilerin yeterli olmadığı durumlar olabilir.


Basit problemler için bile binlerce örnek gereklidir ve görüntü tanıma veya ses tanıma gibi karmaşık problemler için milyonlarca örnek gerekebilir.


Çeşitli organizasyonlar, veri setlerini paylaşmak ve aksi takdirde ulaşılamayacak uygulamaların geliştirilmesine olanak sağlamak için açık veri platformları oluşturmaya yönelmektedir.


Etiketleme konusu (gözetimli öğrenme için verileri etiketleme) günümüzde çok önemlidir. CloudFactory veya AWS Mechanical Turk gibi hizmetler, veri etiketleme ihtiyacı olan organizasyonları ve iş gücünü bir araya getirerek bu ihtiyacı karşılamaya çalışmaktadır. Bu tür hizmetlerin, etiketlemenin doğruluğu ve gerçekleştirilmesi için gereken süre gibi belirli sınırlamaları vardır.



Düşük kaliteli ve temsil edici olmayan veriler

Modelleri eğitmek için kullanılan verilerle ilgili bir diğer çok yaygın sorun, düşük kaliteleridir. Eksik, kötü biçimlendirilmiş veya hatta yanlış veriler, bir makine öğrenimi projesi için ölümcül olabilir. İdeal olarak, yüksek kaliteli veriler doğrudan üretilmelidir, ancak projeler genellikle mevcut (ve düşük kaliteli) veriler üzerinde başlatılır.


Bu nedenle, bir ML uygulaması geliştirmenin en önemli (ve zaman alıcı!) adımlarından biri veri ön işlemedir.


Verilerin ön işlemesi, verileri temizlemek ve eğitmemiz gereken Makine Öğrenimi modeli için hazırlamaktan oluşur: hasarlı örnekleri kaldırırız, dizelerin biçimini ayarlarız ve eksik alanları (eksik değerler) yönetiriz. Ön işleme aşaması bağlama bağlıdır ve çok farklı biçimler alabilir.


Bu aşamada genellikle kullandığımız veri setinin boyutunu artırmaya çalışırız: örneğin, bir görüntü veri setimiz varsa, her görüntünün bir kopyasını veri setine eklemeyi düşünebiliriz, ancak 90° döndürülmüş veya bir tür gürültüyle bulanıklaştırılmış versiyonunu ekleyebiliriz. Bunu aynı görselin farklı açılardan görüntüsü gibi düşünebiliriz.


Veri artırma olarak adlandırılan bu teknik, uygulamamızın sağlamlığını artırmak için özellikle faydalıdır (çünkü model hasarlı/bozulmuş görüntüleri de görmeye ve yine de tanımaya eğitilir), ancak genellikle "yeni bilgi" eklemez, bu sadece ek verilerle elde edilebilir.


Sıklıkla temsil edici olmayan verilerle de karşılaşabilirsiniz: bir modelin etkili bir şekilde genelleştirmesi için, çoğu durumu kapsayan ve gerçekliği gerçekçi bir şekilde temsil eden çeşitli vakaları (verileri) görmüş olması gerekir.


Örneğin, yılın çeşitli günlerinde toplanan sıcaklıklardan oluşan bir veri setini ele alalım ve görevimiz belirli bir günün sıcaklığını tahmin etmek olsun. Eğer sadece Kasım ayı sıcaklıklarına sahipsek, model Nisan ayı sıcaklık modelini nasıl keşfedebilir? Daha da kötüsü, eğer o belirli Kasım ayı özellikle sıcak ve dolayısıyla temsil edici değilse, yanıltıcı tahminler yapan bir model elde etme riskiyle karşı karşıya kalabiliriz!


Düşündürücü bir gerçek olarak, rastgele bir modelin (örneğin [min. sıcaklık - maks. sıcaklık] aralığında rastgele bir sayı üretimi) temsil edici olmayan veriler üzerinde eğitilmiş bir modelden daha iyi performans elde edebileceğini düşünün!



Yetersiz Öğrenme (Underfitting)


Yetersiz öğrenme problemi, seçtiğimiz modelin veri setinin etkili bir genellemesini temsil etmek için çok basit (az sayıda parametre) olduğunda ve dolayısıyla verilerde ortaya çıkan kalıpları yakalayamadığında ortaya çıkar.


Örneğin, köpek ve kedi resimlerini sınıflandırmak için doğrusal bir model kullanmak isteseydik, muhtemelen kabul edilemez performanslar elde ederdik, çünkü doğrusal model üzerinde eğittiğimiz verilerin karmaşıklığını yakalayamaz.


Genellikle, yetersiz öğrenmeye bir çözüm, daha karmaşık modeller (örneğin, milyonlarca parametreye sahip olabilen bir sinir ağı) eğitmeye çalışmaktan oluşur. Bu modeller, çıktı seçiminde etkisi olabilecek tüm değişkenleri "dikkate alabilir". Örneğin, 64 x 64 piksellik bir görüntüde, sonucu etkileyebilecek 4096 olası nokta vardır! Az sayıda parametreye sahip bir model bu karmaşıklığı zor ele alabilir.



Aşırı Öğrenme (Overfitting)


Aşırı öğrenme kavramı, az önce açıklanan durumun tam tersi durumda ortaya çıkar, yani bir model verilen görev için "çok karmaşık" olduğunda.


Örneğin, ev fiyatlarını tahmin etmek için eğitilmiş bir modelden elde edilen karmaşık yüksek dereceli bir eğri kullanmak etkisiz olacaktır, çünkü ağ veri setini o kadar iyi temsil etmeyi öğrenecektir ki, ortaya çıkan model sadece verilerin basit bir depolaması olacaktır! Aşırı öğrenmeden muzdarip bir model iyi genelleme yapamaz çünkü bildiği tek dünya temsilinden, yani eğitildiği veri setinden "kopamaz".



Yetersiz Öğrenme ve Aşırı Öğrenme Dengesi


Model karmaşıklığı (parametre sayısı), mevcut veri miktarı ve görevin zorluğu arasındaki denge, model mimarisinin seçimi arkasındaki temel kavramlardan bazılarıdır. Aşağıda, bir modelin iki boyutlu koordinatları girdi olarak verilen bir noktanın kırmızı mı yoksa mavi mi olduğunu sınıflandırması gereken üç farklı durumu temsil eden bir şekil bulunmaktadır:




  • Yetersiz Öğrenme (Underfitting): Model çok basittir (örneğin, doğrusal bir model) ve veri setinin karmaşıklığını kavrayamaz.

  • Normal Öğrenme: Model, verilerin nasıl dağıldığının genel "fikrini" kavrar, her noktayı temsil etmek için kendini çok fazla değiştirmeye çalışmaz.

  • Aşırı Öğrenme (Overfitting): Model, her noktayı temsil etmek için kendini aşırı derecede değiştirir, ancak sonuç olarak eğitim verilerini "ezberler" ve bu nedenle daha sonra genelleme yapmakta zorlanır.


Sonuç


Makine öğrenimi modellerinin nasıl sınıflandırıldığını, sınıflandırma ve regresyonun neler olduklarını görmüş olduk. Bu yazı dizisinin devamında, artık makine öğrenimi modeli üretmek üzere teknik bilgiler ile donatılıyor olacağız. Matematiksel kavramlarla başlayıp makine öğrenim modellerinin mimari yapılarını incelemekle devam edeceğiz. Nihai hedef ise tabi ki, problemlerimiz için yapay zekâ modelleri üretebilme becerisi kazanmak. Bir sonraki yazıda görüşmek üzere.



0 yorum

Son Yazılar

Hepsini Gör

Comments


Takipte Kalın

En yeni yazıların size ulaşması için hemen eposta adresinizi yazabilirsiniz.

Abone oldunuz, tebrikler.

bottom of page