Makine Öğrenme’ye Giriş – 1

Makine öğrenme (machine learning) günümüzün en popüler konularından birisi ve epeyce bir süre böyle olacak gibi görünüyor. Bu terim bir zamanlar sadece akademik çalışan insanların hayatındayken günümüzde pek çok ticari ve sosyal uygulamada pratik kullanım alanı bulmaktadır. Örneğin; Netflix’in size seveceğinizi öngördüğü yeni film ve dizileri önermesi, Google’ın ses tanıma API’si veya Facebook’un arkadaşlarınızın yüzlerini tanıyıp “etiketleyim mi?” demesi gibi. Peki nedir bu makine öğrenme?

Makine öğrenme, bilgisayarların programlanmadan öğrenme yeteneklerini geliştirmeye çalışan bir bilgisayar bilimidir. Burada kasıt, bilgisayara ne yapacağını adım adım önceden tarif etmekten ziyade daha önce karşılaşmadığı durumlarda dahi mantıklı kararlar vereceği bir program yani model oluşturmaktır. Statik program yönergeleri yerine bir öğrenme modeli oluşturularak karşılaşılan yeni durumlar için önceden tahmin ve karar verme sağlanmaktadır.

Makine öğrenme, aslında bir başka yazının konusu olması gereken örüntü tanımayı (pattern recognition) da kapsayan bir bilim dalı olarak ortaya çıkmıştır. 2016’da ABD’de doktora sonrası araştırmalar yaparken danışman hocam bu konuyla alakalı olarak “geçen yıllarda örüntü tanıma dediklere şeye şimdilerde makine öğrenme diyorlar, bir nevi yeniden markalama olayı” demişti. Dolayısıyla; makine öğrenme, örüntü tanıma, veri madenciliği (data mining) ve hesaplamalı istatistik (computational statistics) konularını birbirinden ayırmak oldukça zor. Pek çok alanda üstüste biniyorlar ve kesişiyorlar. Bunu da buraya not düşelim ve devam edelim…

Makine öğrenme, statik algoritmaların kullanışlı olmayabileceği pek çok alanda kullanılmaktadır: spam filtreleme, ağ tehditlerinin tespiti, optik karakter tanıma, biyometri (parmakizi, yüz, retina tanıma), arama motorları, bilgisayar görme ve daha niceleri…

Makine öğrenme görevleri geribesleme mekanizmaları açısından üç temel kategoride incelenebilir:

  1. Danışmanlı öğrenme: Bilgisayara problemle alakalı giriş verileri ve bu verilere karşılık gelen arzu edilen çıkış verileri önceden bir uzman tarafından verilir ve amaç giriş verileri ile çıkış verileri arasında bir ilişki kurmaktır. Böylece problem için genelleştirilmiş bir model oluşturulur. Eğri uydurma bu işin en temelidir.
  2. Danışmansız öğrenme: Algoritmaya herhangi bir etiket verilmez ve kendi kendisine giriş verilerini yapılandırması ve gizlenmiş örüntüleri bulması istenir.
  3. Takviyeli öğrenme: Algoritma içinde bulunduğu dinamik ortamla ilişki içindedir ve belirli bir amacı gerçekleştirmek için problem uzayında dolaşırken ödül ve ceza sistemi ile geribesleme alır.

Bunlara ek olarak; yarı-danışmanlı öğrenme metotlarında eğitim kümesinde bazı çıkış verileri eksik olarak verilir. Giriş verilerinin küçük bir bölümü etiketlenmişken büyük bölümü ise etiketsizdir (yani arzu edilen karşılık gelen çıkış verileri yoktur).

Arzu edilen çıkış verileri açısından makine öğrenme görevleri ise şu şekilde kategorize edilebilir:

  1. Sınıflandırma: Girişler 2 veya daha fazla sınıfa bölünür. Algoritma daha önce görmediği verileri (girişleri) uygun sınıflara atayabilmelidir. Bu işlem genellikle danışmanlı öğrenme yöntemleri ile yapılır. E-postaların “spam” veya “spam olmayan” olarak kategorilenmesi işlemi buna örnek verilebilir.
  2. Kümeleme: Giriş verilerinin danışmansız olarak gruplanması işlemidir. Sınıflandırmanın aksine gruplar önceden belirli değildir.
  3. Regresyon: Danışmanlı bir öğrenme türü olup çıkışların ayrık değil sürekli olduğu durumları içerir. Örneğin, önceki meteorolojik verileri kullanarak yarın havanın kaç derece olacağını tahmin etmek gibi.
  4. Boyut indirgeme: Girişlerin daha düşük boyutlu bir uzaya haritalanmasıyla verilerin basitleştirilmesidir. Bu işlemi girişlerin bir anlamda sıkıştırılması olarak da algılayabiliriz. Örneğin kişinin kan değerleri ile belirli bir hastalığın teşhisine yönelik bir model oluşturmaya çalışıyoruz ama onbinlerce hastadan 100 farklı kan parametresi elde ettiğimizi düşünelim. 100 boyutlu bir giriş verimiz var. Büyük miktardaki bu veriyi işlemek yerine girişlerin sahip olduğu özniteliklerin %90’lık bir bölümünü belkide sadece 3 boyut ile ifade etme şansımız olsa, bir miktar öznitelikten feragat ederek problem boyutunu 100’den 3’e düşürme şansımız olacak.

Bir makine öğrenme görevinin temel amacı tecrübelerinden genelleştirme yapabilmesidir. Burada genelleştirmeden kasıt; yeni, daha önce karşılaşılmamış örnekler üzerinde eski örneklerden elde ettiği tecrübeyle doğru çalışabilmektir. En büyük problemlerden birisi modelin tecrübesini oluşturacak olan giriş verilerinin eksik (veri uzayını tam kapsamayan) veya hatalı (yanlış ölçülmüş veya etiketlenmiş) olmasıdır. Örneğin eğitim verilerinizdeki parametrelerinden birisi 0 ile 100 arasında değer alıyor olsun. Modeliniz bu parametre için -100 değerinde veya 1000 değerinde nasıl bir davranış sergileyecek?

Terminator

Bir diğer problem ise modelin ne kadar öğrendiğinin ölçümü ve dolayısıyla model için ne zaman “tamam, artık öğrendi” deneceğidir. Eğer modelimiz gerçek problemden daha az karmaşık ise modelleme başarılı olamaz, ne kadar uğraşılsa da öğrenme hatası sıfıra yakınsamaz. Bu modele veriye az-uymuş (underfit) denir (uyduruk oldu biraz, tam karşılığını bulamadım). Tam tersi durumda, yani modelin karmaşıklığı gerçek problemden daha yüksekse, bu sefer de aşırı-uymuş (overfit) bir model elde edilir ve bu durumda çoğu zaman modelin genelleştirme yeteneği zayıftır. İdeal olan; model ile problemin karmaşıklığının denk olmasıdır ama bunu öngörmek pratikte zordur. Dolasıyla, görece karmaşıklığı yüksek bir model seçilip aşırı-öğrenmeyi önleyecek ek önlemler alınır. Mesela öğrenme modelinin oluşturulmasında kullanılacak giriş verilerini eğitim ve test olarak ikiye ayırmak yerine (eğitim verileriyle modelin öğrenmesi sağlanır, test verileriyle modelin genelleştirme yeteneği ölçülür), veriyi eğitim, onay (validation) ve test olmak üzere üçe ayırmak daha akıllıca olabilir. Eğitim verisi ile model öğrenmesi sürerken bir yandan da onay verisi, eğitimden bağımsız olarak kontrol edilip eğer model aşırı-öğrenme eğilimine giriyorsa, öğrenme hatası sıfıra yakınsamasa bile eğitim sonlandırılabilir. Bu yöntemin dezavantajı, zaten elimizdeki kısıtlı giriş verisini eğitim ve test olarak ikiye bölmek yerine eğitim, onay ve test olarak üçe bölerek eğitim verisinin sayısını niceliksel olarak azaltmak ve dolaylı olarak belki de ağın genelleştirme yeteneğini düşürmektir. Eğer elimizdeki giriş verisi yeteri kadar fazlaysa bu problem de ortadan kalkmış olur.

Aslında konuyu devam ettirip makine öğrenme teknikleri hakkında kısa bilgiler de vermeyi planlamıştım. Ama gördüm ki, hem konu çok derin hem de yazı gereksiz yere uzuyor. Dolayısıyla bu yazımı burada bitirerek, yazıyı seriye çevirip, serinin gelecek bölümlerinde detaylara girmeye karar verdim.

Kaynaklar bölümünde bu yazıyı hazırlarken faydalandığım Wikipedia girdisini bulabilirsiniz. Buna ek olarak, bu alanda okunacak eserlerin başında Ethem Alpaydın hocanın Introduction to Machine Learning kitabı gelmektedir. Ücretsiz bir online eğitim olarak Stanford Üniversitesi öğretim üyesi, Baidu’nun (Çin’in Google’ı) baş-araştırmacısı ve Coursera’nın da kurucusu olan Andrew Ng‘nin Machine Learning eğitimine de katılmanızda fayda var.

Bir sonraki yazıda görüşmek üzere…

Rifat Kurban

Kaynaklar:

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.