Makine Öğrenmesi Nedir? Bilgisayarlar Verilerden Nasıl Öğrenir?
makine öğrenmesi mühendislik teknoloji yapay zeka
Makine Öğrenmesi Nedir? Bilgisayarlar Verilerden Nasıl Öğrenir?
Hiç telefonunuzun tam da ilgilendiğiniz bir ürünün reklamını göstermesine şahit olup şaşırdınız mı? Youtube’un ilginizi çeken videoları nasıl nokta atışı tahmin edebildiğini düşündünüz mü? E-mail kutunuzda spam olarak işaretlenen maillerin neye göre oraya düştüğünü? Bütün bunların arkasında farklı teknolojiler bulunsa da bazı durumlarda ortak bir teknoloji karşımıza çıkar: makine öğrenmesi.
Son yıllarda yapay zekânın giderek hayatımızın içine direkt olarak girmesiyle birlikte makine öğrenmesi kavramını da sıkça duymaya başladık. Peki, makine öğrenmesi tam olarak nedir? Bilgisayarlar gerçekten öğrenebilir mi?
Bu soruların cevaplarını anlamak için karmaşık matematiksel formüllere veya uzun kodlara ihtiyacımız yok. Tabi ki arka planda büyük bir matematik var fakat temel seviyede de makine öğrenmesinin mantığını anlayabiliriz.
Makine Öğrenmesi Nedir?
Makine öğrenmesi (Machine Learning), bilgisayarların verilerden yararlanarak belirli örüntüleri öğrenmesini ve bu öğrendiklerini yeni durumlarda tahmin yapmak, sınıflandırmak veya karar süreçlerine yardımcı olmak için kullanmasını sağlayan bir yapay zekâ alanıdır.
Makine öğrenmesi mantığına gelmeden önce klasik programlamada, makineye bazı komutlar verilir ve bu komutları şartlara(if,else) göre sırayla uygulanması beklenirdi. Fakat bir insanın yüzünü tanımanın, bir el yazısını okuyabilmenin bir mantığı var mıydı, nasıl oluşturulabilirdi? Bu eksikliği giderme noktasında bize makine öğrenmesi yardımcı oldu.
Bunu daha basit bir örnekle düşünelim.
Bir çocuğa kedileri tanımayı öğretmek istediğimizi varsayalım. Çocuğa yalnızca bir kedinin fotoğrafını göstermek yerine farklı renklerde, boyutlarda ve türlerde çok sayıda kedi fotoğrafı gösteririz. Ardından köpek, tavşan ve diğer hayvanların fotoğraflarını da gösteririz. Zamanla çocuk, kedileri diğer hayvanlardan ayırmasına yardımcı olan özellikleri fark etmeye başlar.
Makine öğrenmesinde de benzer bir mantık kullanılır. Bilgisayara örnek veriler sunulur. Algoritmalar bu verilerdeki ilişkileri ve tekrar eden özellikleri öğrenmeye çalışır. Daha sonra daha önce karşılaşmadığı bir veriyle karşılaştığında, öğrendiklerinden yararlanarak bir tahminde bulunabilir.
Ancak burada önemli bir ayrıntı var: Bilgisayar, insan gibi bilinçli bir şekilde öğrenmez. Veriler üzerinde matematiksel hesaplamalar yapar ve belirli örüntüleri temsil eden bir model oluşturur.
Kısacası makine öğrenmesi, bilgisayara her olası durumu tek tek anlatmak yerine, örneklerden yararlanarak yeni durumlara uyum sağlayabilen sistemler geliştirmemize yardımcı olur.
Yapay Zekâ, Makine Öğrenmesi ve Derin Öğrenme Arasındaki Fark Nedir?
Bu üç kavram sık sık birbirinin yerine kullanılsa da aslında aralarında bir ilişki vardır.
Yapay zekâ (Artificial Intelligence), bilgisayarların normalde insan zekâsıyla ilişkilendirdiğimiz problem çözme, anlama, planlama ve karar verme gibi görevleri yerine getirmesini amaçlayan geniş bir alandır.
Makine öğrenmesi, yapay zekânın bir alt alanıdır. Sistemlerin verilerden öğrenerek tahminlerde bulunmasına ve belirli görevleri yerine getirmesine odaklanır.
Derin öğrenme (Deep Learning) ise makine öğrenmesinin bir alt alanıdır. İnsan beynindeki sinir ağlarından esinlenen yapay sinir ağlarını kullanır. Özellikle görüntü tanıma, ses işleme ve doğal dil gibi karmaşık alanlarda önemli başarılar elde edilmesini sağlamıştır.
Bu ilişkiyi iç içe geçmiş üç alan gibi düşünebiliriz: Yapay zekâ en geniş alanı, makine öğrenmesi onun içindeki bir alanı, derin öğrenme ise makine öğrenmesinin içindeki daha özel bir alanı oluşturur.
Makine Öğrenmesi Nasıl Çalışır?
Makine öğrenmesi sistemlerinin nasıl çalıştığını anlamanın en kolay yolu, basit bir örnek üzerinden ilerlemektir.
Bir evin fiyatını tahmin eden bir sistem geliştirmek istediğimizi düşünelim. Elimizde daha önce satılmış evlere ait bilgiler bulunsun. Bu bilgiler arasında evin metrekaresi, oda sayısı, bulunduğu konum, yaşı ve satış fiyatı yer alsın.
Sistemimizi geliştirmek için genel olarak şu adımları izleriz:
1. Veri toplama
İlk olarak modelin öğrenebileceği verileri toplarız. Örneğimizde farklı özelliklere ve bilinen satış fiyatlarına sahip evlerin bilgileri bulunur.
Verinin yeterli, doğru ve temsil edici olması önemlidir. Yanlış veya eksik bilgilerle eğitilen bir modelin güvenilir tahminler yapmasını beklemek zordur.
2. Veriyi hazırlama
Toplanan veriler doğrudan kullanılmaya her zaman uygun değildir. Eksik değerler, hatalı kayıtlar veya birbiriyle tutarsız bilgiler bulunabilir.
Bu nedenle veriler kontrol edilir, gerekli düzenlemeler yapılır ve modelin kullanabileceği hâle getirilir. Gerçek projelerde bu aşama, çalışmanın önemli bir bölümünü oluşturabilir.
3. Modeli eğitme
Hazırlanan veriler bir algoritmaya verilir. Algoritma, evlerin özellikleri ile satış fiyatları arasındaki ilişkileri öğrenmeye çalışır.
Örneğin, aynı koşullar altında daha büyük evlerin genellikle daha yüksek fiyatlarla satıldığını veya belirli konumların fiyat üzerinde etkili olduğunu öğrenebilir.
Ortaya çıkan model, öğrendiği ilişkileri kullanarak tahmin yapabilecek bir yapıya dönüşür.
4. Modeli test etme
Bir modelin eğitim verilerini iyi öğrenmesi, yeni verilerde de başarılı olacağı anlamına gelmez. Bu nedenle model, eğitim sırasında kullanmadığı örnekler üzerinde test edilir.
Daha önce görmediği evlerin fiyatlarını ne kadar doğru tahmin ettiğine bakılır. Böylece modelin yalnızca geçmiş örnekleri ezberleyip ezberlemediği ve yeni durumlara ne kadar iyi uyum sağladığı değerlendirilir.
5. Modeli kullanma ve izleme
Model yeterince başarılıysa gerçek bir uygulamada kullanılabilir. Yeni ev bilgileri girildiğinde tahmini bir fiyat üretebilir.
Ancak iş burada bitmez. Piyasa koşulları, faiz oranları ve insanların konut tercihleri zamanla değişebilir. Bu nedenle modelin performansı takip edilmeli ve gerektiğinde yeni verilerle güncellenmelidir.
Bu örnekte model bize kesin satış fiyatını söylemez. Yalnızca mevcut verilerden öğrendiği ilişkilere dayanarak bir tahmin üretir. Makine öğrenmesinin temelinde de bu yaklaşım bulunur: Verilerden öğrenmek, yeni örnekler üzerinde tahmin yapmak ve sonuçları değerlendirmek.
Makine Öğrenmesinin Türleri Nelerdir?
Makine öğrenmesi farklı yöntemlerle uygulanabilir. Temel olarak üç yaygın yaklaşım üzerinden açıklanabilir.
1. Denetimli Öğrenme (Supervised Learning)
Denetimli öğrenmede model, hem girdilerin hem de doğru sonuçların bilindiği örneklerle eğitilir. Yani girdilerle sonuçlar eşleştirilir ve böylece model hangi girdilerin hangi özelliklerinin sonuç üzerinde ne kadar etkili olduğunu öğrenebilir. Tahmin etme, teşhis etme işlemlerinde sıklıkla bu yöntem kullanılır.
Örneğin, geçmişteki evlerin özelliklerini ve satış fiyatlarını birlikte veririz. Model, evlerin özelliklerinden fiyat tahmini yapmayı öğrenir.
Başka bir örnek de, e-postaların spam olup olmadığını belirleyen bir sistemdir. Eğitim sırasında hangi e-postaların spam, hangilerinin normal olduğu bilinir. Model de bu örneklerden yararlanarak yeni e-postaları sınıflandırmayı öğrenir.
Denetimli öğrenme; fiyat tahmini, hastalık riskinin değerlendirilmesi, müşteri davranışlarının tahmin edilmesi ve görüntü sınıflandırması gibi pek çok alanda kullanılır.
2. Denetimsiz Öğrenme (Unsupervised Learning)
Denetimsiz öğrenmede verilerdeki doğru sonuçlar önceden etiketlenmiş değildir. Model, veriler arasındaki benzerlikleri, ilişkileri veya grupları keşfetmeye çalışır.
Örneğin, bir alışveriş sitesinin milyonlarca müşterisi olduğunu düşünelim. Müşterilerin hangi ürünleri satın aldığı, ne sıklıkla alışveriş yaptığı ve ne kadar harcama yaptığı gibi bilgiler incelenebilir. Bunlar çoğunlukla kümeleme algoritmalarıdır. Model, benzer davranışlara sahip müşterileri gruplandırabilir. Bir grup sık sık alışveriş yapan müşterilerden, başka bir grup ise yalnızca indirim dönemlerinde alışveriş yapan müşterilerden oluşabilir.
Bu yöntem; müşteri segmentasyonu, olağan dışı davranışların araştırılması gibi amaçlarla kullanılabilir.
3. Pekiştirmeli Öğrenme (Reinforcement Learning)
Pekiştirmeli öğrenmede bir sistem, bir ortamda eylemlerde bulunur ve bu eylemlerin sonuçlarına göre ödül veya ceza niteliğinde geri bildirimler alır. Zaman içinde toplam ödülünü artıracak davranışları öğrenmeye çalışır.
Bunu bir oyunda strateji geliştirmeye benzetebiliriz. Bir hamle oyuncuyu hedefe yaklaştırıyorsa olumlu bir sonuç doğurabilir; yanlış bir hamle ise başarısızlığa neden olabilir. Sistem, çok sayıda deneme ve geri bildirim aracılığıyla daha iyi stratejiler geliştirebilir.
Bu yaklaşım robotik, oyun sistemleri ve bazı kontrol problemlerinde kullanılabilir.
Bu üç yaklaşım, makine öğrenmesinin temelini anlamak için iyi bir başlangıçtır. Bununla birlikte gerçek projelerde farklı yöntemler bir arada kullanılabilir ve her problem için en uygun yaklaşım ayrıca değerlendirilir.
Makine Öğrenmesi Günlük Hayatta Nerelerde Kullanılır?
Makine öğrenmesi, günlük hayatta birçok alanda kullanılmaktadır. Netflix ve YouTube gibi platformlarda kişiselleştirilmiş öneriler sunmak, bankacılıkta dolandırıcılığı tespit etmek ve kredi riskini değerlendirmek, sağlıkta hastalık belirtilerini belirlemek, ulaşımda trafik ve varış süresini tahmin etmek için bu teknolojiden yararlanılır. Ayrıca e-ticarette ürün önerileri ve stok planlaması, tarımda ise bitki hastalıklarının tespiti ve ürün veriminin tahmini gibi amaçlarla kullanılır. Bütün bu örneklerin ortak noktası, büyük miktarda verinin insanlar tarafından tek tek incelenmesi yerine, verilerden yararlanarak belirli görevleri yerine getiren sistemler geliştirilmesidir. Ancak elde edilen sonuçların doğruluğu, kullanılan verilerin kalitesine ve modelin başarısına bağlıdır.
Makine Öğrenmesi Öğrenmek İçin Nereden Başlanmalı?
Makine öğrenmesi birbirine benzer birçok alanın birleşiminden oluşur: Programlama, matematik, istatistik, olasılık..
İşin teorik arka planı özellikle matematik alanıyla doğrudan alakalı olsa da pratik uygulamalar için modellerin temel mantıklarını kavrama ve programlama bilgisi ilk aşamada yeterlidir.
İlk olarak Python gibi bir programlama dilinin temelini öğrenmek iyi bir başlangıçtır. Python, makine öğrenmesi projelerinde yaygın olarak kullanılır ve öğrenme sürecini kolaylaştıran pek çok kütüphaneye sahiptir. Ardından veri analizi, verileri görselleştirmek gibi Python’un kendi araçlarıyla(NumPy, Pandas,Matplotlib vs.) yapılabilecek işlemlerle veri dünyasına giriş yapılabilir. Sonrasında ise scikit-learn kütüphaneler kullanılarak basit makine öğrenmesi modelleri geliştirilebilir. Örneğin, ev fiyatlarını tahmin eden bir model oluşturmak, müşterileri gruplandırmak veya bir veri kümesindeki örnekleri sınıflandırmak iyi birer başlangıç projesidir.
Sonrasında ana mantığı kavramak ve ilerlemek için matematik de oldukça önemli hâle gelir. Özellikle temel istatistik, olasılık, doğrusal cebir ve bazı optimizasyon kavramlarını anlamak, modellerin nasıl çalıştığını kavramayı kolaylaştırır.
En önemlisi, yalnızca eğitim videoları izlemekle yetinmemektir. Küçük bir veri kümesi seçmek, soruyu belirlemek, verileri hazırlamak, bir model eğitmek ve sonuçları değerlendirmek, konunun mantığını öğrenmenin en etkili yollarından biridir.
Sonuç: Makineler Gerçekten Öğreniyor mu?
Makine öğrenmesi, bilgisayarların verilerden yararlanarak örüntüleri keşfetmesini ve yeni durumlarda tahminler üretmesini sağlayan gerçekten güçlü bir teknolojidir. Şuanda da hayatımızın birçok yerinde farkında olarak veya olmadan karşılaştığımız bir teknolojidir.
Ancak bu sistemlerin insan gibi düşündüğünü veya her zaman doğru sonuçlar verdiğini varsaymamak gerekir. Makine öğrenmesi modelleri, kendilerine sunulan veriler ve kullandıkları yöntemler çerçevesinde çalışır. Başarıları da büyük ölçüde bu verilerin kalitesine, problemin doğru tanımlanmasına ve sonuçların ne kadar dikkatli değerlendirildiğine bağlıdır.
Yapay zekâ teknolojilerinin gelişmeye devam ettiği günümüzde makine öğrenmesini anlamak, yalnızca yazılım geliştirmek isteyenler için değil, kullandığımız teknolojilerin nasıl çalıştığını merak eden herkes için değerlidir.