HÜSEYİN EMRE MUTLU

Bu yazı, makine öğrenmesi kavramını duymuş ama konu hakkında hiçbir fikri olmayan meraklı zihinleri uyandırmak amacıyla hazırlanmıştır. Yapay zekânın alt araştırma dallarından birisi olan makine öğrenmesi (machine learning), hayatı kolaylaştıran çeşitli yetenekleri sayesinde günlük hayatımızda vazgeçilmez bir yere sahiptir. Bu teknik ve yöntemler grubu günümüzde o kadar çok alanda kullanılmaktadır ki maalesef yazımda bu konuya giremeyeceğim. Merak edenler hemen alttaki bağlantıyı inceleyebilirler.

Yapay Zeka Kullanım Alanları ve Uygulamalarına Derinlemesine Bir Bakış https://medium.com/@ayyucekizrak/yapay-zeka-kullan%C4%B1m-alanlar%C4%B1-ve-uygulamalar%C4%B1na-derinlemesine-bir-bak%C4%B1%C5%9F-d0fecaf7f61b

Makine Öğrenmesi Nedir?

Başlıkta geçen “öğrenme” kelimesinden tahmin etmişsinizdir ki aslında gerçek anlamda öğrenen bir algoritmadan bahsediyoruz. Bu algoritma, kendisine gösterdiğimiz bir veri kümesini kendi yöntemleriyle inceleyerek çıkarımlarda bulunuyor ve kullanım amacına yönelik kurallar geliştiriyor. Veri kümesinin incelenerek kuralların oluşturulması aşamasına eğitim (training) diyoruz. Eğitimin sonucunda elde edilen bu kurallara da model diyoruz. Eğitilmiş bir modeli, veri kümesinde bulunmayan yeni verilerin işlenmesinde kullanacağız.

Şimdiye kadar tanımladığımız bu süreci bir örnekle açıklayalım. Örneğin, kedi ve kuş fotoğraflarından oluşan bir veri kümemiz olsun. Makine öğrenmesi algoritmasına kedi fotoğrafı gösterdiğimizde 1, kuş fotoğrafı gösterdiğimizde 2 cevabı vermesi gerektiğini söylüyoruz. Algoritma bu şekilde bir model eğitiyor ve sıra bu modelin test aşamasına geliyor. Modele, veri kümesinde bulunmayan başka kedi ve kuşların fotoğraflarını gösteriyoruz ve bunları doğru şekilde sınıflandırmasını bekliyoruz. 

Öğrenme Tipleri

Makine öğrenmesinin tek uygulaması elbette “fotoğrafta kedi mi var yoksa kuş mu?” sorusunun cevabını aramak değil. Fakat yöntemleri sıralarken bu örnekten başlayabiliriz.

Gözetimli Öğrenme (Supervised Learning): Bu öğrenme tipinde algoritmaya girdiler ve çıktılar birlikte verilerek bir model eğitilmektedir. Yani kedi ve kuşları birbirinden ayıran bir modeli eğitirken kedi fotoğrafı verdiğimizde bunun bir kedi olduğunu söylüyoruz. Yani sınıflandırma yapacak olan modeli gözetimli şekilde eğitiyoruz. Gözetimli öğrenmenin tek uygulaması sınıflandırma değil. Regresyon dediğimiz diğer bir uygulamayı şöyle örnekleyebiliriz: Diyelim ki bir emlâk danışmanlığı büromuz var ve verdiğimiz hizmetlerin en önemlilerinden birisi müşterinin satmak istediği bir taşınmaz malın değerini belirlemek. Bu işte ne kadar isabetli karar verirsek o kadar çok kazanıyoruz, çünkü isabetli kararlar sonucunda taşınmaz malı biz satıyoruz ve komisyonumuzu alıyoruz. Bir taşınmazın değerini belirlerken dikkate aldığımız birtakım kriterler var. Mesela bir evin değerini belirleyen en temel unsurlar evin metrekaresi, oda sayısı, cephesi, bulunduğu kat, bulunduğu semt şeklinde sıralanabilir ve bu liste uzayıp gider. Büromuzda çok iş var ve bu kadar çok kriteri hesaba katarak bir eve değer biçmek oldukça hassas ve zaman isteyen bir konu. Bu sorunu bir regresyon modeli ile saniyeler içinde çözebiliriz. Bugüne kadar isabetli kararlar sonucunda satışını kârla yaptığımız bütün evlerin özelliklerinin ve satış tutarının olduğu bir veri kümesi oluşturarak işe başlıyoruz. Burada evin özellikleri algoritmanın girdisini, satış tutarı da çıktısını oluşturuyor. Eğitim sonucunda model en basit şekilde büyük bir evin fiyatının yüksek olacağını ve bunun gibi daha birçok ilişkiyi öğreniyor. Nihayetinde elde ettiğimiz model artık kullanıma hazır. Yeni bir müşteri geldiğinde evi hakkındaki bilgileri modele söylüyoruz ve model de bize evin tahminî satış fiyatını söylüyor. Bu uygulamada evi koyabileceğimiz bir sınıf yok. Modelin bize vereceği çıktı nümerik bir değer olacaktır. Sonuç olarak söyleyebiliriz ki gözetimli öğrenme, bir veri kümesi içinde sebep sonuç ilişkilerini ve ilintileri çıkararak bir sınıflandırma ya da regresyon modeli elde etme yöntemidir.

Gözetimsiz Öğrenme (Unsupervised Learning): Gözetimsiz öğrenmede algoritmanın amacı veri kümesi içindeki ayrıştırıcı yapıları, başka bir bilgi kullanmadan tespit etmek ve veri kümesindeki öğeleri kümelere ayırmak ya da bu öğeler arasında bir hiyerarşi oluşturmaktır. Bu öğrenme tipini en basit şekilde şöyle örnekleyebiliriz: Elimizde kedi ve kuş fotoğrafları olsun, ama bu sefer hangi fotoğrafın kedi hangisinin kuş olduğu bilgisi yok. Bu fotoğrafları algoritmaya gösteriyoruz ama neyin ne olduğunu söylemiyoruz. Algoritma kendisi fotoğrafları inceliyor ve sonunda birbirine benzer ve birbirinden farklı birtakım yapılar tespit ediyor. Örneğin kedi fotoğraflarında dört tane ayak, kuş fotoğraflarında ise bir tane gaga olduğunu öğreniyor. Bunun gibi çok sayıda ayırt edici özellik tespit ediyor ve kümedeki fotoğrafları iki farklı sınıfa ayırıyor. Bu öğrenme yöntemi sonucunda elde ettiğimiz modelin nasıl kullanıldığının cevabı ise akıllı telefonlarımızda. Telefonumuzun “Galeri” uygulamasının kendi kendine albümler oluşturduğunu fark etmişsinizdir. Mesela farklı zamanlarda farklı mekânlarda sevgilinizle objektife hep aynı pozu verdiyseniz bu fotoğraflar muhtemelen aynı albüm içine otomatikman konulacaktır. Telefonunuz en yakın arkadaşınızla olan fotoğraflarla da benzer şekilde başka bir albüm oluşturacaktır. İşte akıllı telefonunuzun bu özelliği, gözetimsiz öğrenmenin bir kullanımıdır.

Pekiştirmeli Öğrenme (Reinforcement Learning): Bu öğrenme tipinin, gözetimli öğrenme ve gözetimsiz öğrenmenin arasında bir yerde olduğu söylenebilir. Modelimizin eğitimi esnasında algoritma, girdi olarak verdiğimiz veriye karşılık bir karar vermektedir. Biz ise doğru kararın ne olduğunu değil, ancak kararı yanlış ise algoritmanın yanlış bir karar verdiğini kendisine söylüyoruz. Bu açıdan bakarsak doğru kararın ne olduğunu söylemediğimiz için gözetimsiz öğrenmeye; kararının yanlış olduğunu söylediğimiz için de gözetimli öğrenmeye benzemektedir. Algoritma öğrenme sürecinde doğru kararları karşılığında ödüllendirilmekte, yanlış kararları karşılığında ise cezalandırılmaktadır. Bu eğitim yöntemi süresince algoritma kazandığı ödülleri artırıp aldığı cezaları ise azaltmanın yolunu arayarak, problemi doğru şekilde çözmek için kendi kendini sürekli geliştirmektedir. Genellikle ardışık doğru kararlar verilerek hedefe ulaştığımız tipteki problemlerin çözümünde kullanılan bu öğrenme yöntemi, otonom sürüş modeli eğitiminde, bildiğimiz meşhur oyunlarda dünya şampiyonlarını yenen yapay zekâ modellerinin eğitiminde, hatta kendi kendine yerdeki tozları süpürmesi için eve satın aldığımız robot süpürgelerin eğitiminde kullanılmaktadır. Bir örneğini görmek isterseniz altta birinci bağlantıdaki YouTube videosuna bir göz atabilirsiniz. Alttaki ikinci bağlantı ise dünya Go şampiyonunu yenen AlphaGo’nun haberi.

AI Learns to Park – Deep Reinforcement Learning
https://www.youtube.com/watch?v=VMp6pq6_QjI
Google’s AlphaGo AI beats the world’s best human Go player
https://techcrunch.com/2017/05/23/googles-alphago-ai-beats-the-worlds-best-human-go-player/

Evrimsel Öğrenme (Evolutionary Learning): Evrimsel öğrenme, bildiğimiz evrim teorisinin makine öğrenmesi alanındaki uygulamasıdır. Evrim teorisine göre bir canlı türü, hayatta kalma şansını artıran özellikleri kodlayan genleri sonraki kuşaklara aktarmaktadır. Hayatta kalma şansını artırmayan, hatta düşüren genler ise bu genleri taşıyan bireylerin daha kısa süre yaşaması ve kısa sürede daha az sayıda döl üretmesi ya da hiç üretememesi sonucu zamanla yok olmaktadır. Bu teorinin mantığıyla bir modeli eğiten evrimsel öğrenme algoritmaları, işe rastgele bir model oluşturmakla başlıyor. Bu ilk model, göreve başlıyor ve muhtemelen başarısız oluyor. İkinci kuşağa geçerken algoritma, bu ilk model mutasyona uğramış çok sayıda döl oluşturuyor. İkinci kuşaktaki her model görevi yerine getirmek için çalışıyor. Görevler sona erdiğinde görevde en çok ilerlemiş olan modeller seçiliyor ve yapıları üçüncü kuşağa aktarılıyor. Üçüncü kuşak modeller de ikinci kuşakta en çok ilerlemeyi kaydetmiş modellerin mutasyonu ile elde ediliyor. Bu süreç görevi kusursuz şekilde tamamlayan bir model elde edilene kadar devam ediyor, hatta ve hatta bu modelin bile birkaç kuşak daha kendisini geliştirmesi sağlanıyor. Bu öğrenme yönteminin örneklerini de alttaki iki YouTube videosunda görebilirsiniz.

Neural network racing cars around a track
https://www.youtube.com/watch?v=wL7tSgUpy8w
Genetic algorithms – evolution of a 2D car in Unity
https://www.youtube.com/watch?v=FKbarpAlBkw

Yapılar ve Algoritmalar

Yukarıda bahsettiğim öğrenme yöntemleri çeşitli algoritmalarla yapılabilmektedir. Bu kısımda en çok bilinen birkaç algoritma ve yapıdan bahsedeceğim.

Karar Ağaçları (Decision Trees): En basit ve en temel yapılardan birisi olan karar ağaçları, küçük boyutlu problemleri hızlı bir şekilde çözen popüler bir algoritmadır. Aslında karar ağacı deyince zihninizde canlanan şeyden hiç de farkı yok. Elinizde birtakım kriterler var ve bu kriterleri tek tek test ederek bir karar vereceksiniz. Her bir kriterin testi sonucunda bir sonraki seviyeye geçiyorsunuz. Ağacın bittiği yerde son kriteri test ediyorsunuz ve sonunda bir karara varıyorsunuz. Makine öğrenmesi söz konusu olduğunda aslında önemli olan bu karar ağacını oluşturabilmek. Karar vermek için test etmeye hangi kriterden başlamak lazım? Birinci kriteri belirledikten sonra ikinci kriter ne olacak? İşte bu sorular ise ancak “ID3”, “C4.5” ya da “CART” gibi karar ağacı eğitimi için tasarlanmış algoritmaların cevaplayabileceği cinsten. Eğitim için kullandığınız veri kümesindeki her bir öğe belli kriterlere ve bu kriterlere uygun bir karara sahip. Yani eğitim esnasında algoritmanın girdisini ve çıktısını biz veriyoruz. Dolayısıyla karar ağaçları gözetimli öğrenmenin bir örneğidir.

Doğrusal Yöntemler (Linear Methods): 2 Boyutlu koordinat düzlemini gözünüzün önüne getirin; eksenleri x ve y olsun. Düzlemin sol tarafına kırmızı çarpıları, sağ tarafına mavi yuvarlakları gelişi güzel, ama birbiri içine girmeyecek şekilde dağıtın. Son olarak yeşil kaleminizle bu iki kümeyi birbirinden ayıran düz ve net bir çizgi çizin. İşte bu yeşil çizgi, doğrusal bir yöntem ile elde edilmiş doğrusal bir sınıflandırıcı modelidir. Bu tip sınıflandırıcılar, basit yapıda olan (matematiksel olarak doğrusal olan) ya da basit hâle getirilebilen (matematiksel olarak kendi doğasında doğrusal olmayan ama kabul edilebilir bir hata karşılığında doğrusal yakınsaması elde edilebilen) problemleri çözmek için kullanılırlar. Tek bir çizgi ancak ikili sınıflandırma yapabilir (var ya da yok, kedidir ya da değildir gibi). Çalıştığımız problem ikiden fazla sınıf içeriyorsa, en az sınıf sayısının bir eksiği kadar sınıflandırıcı çizgiye ihtiyacımız var demektir. Makine öğrenmesi algoritmaları, verilen bir kümesi için bu çizgileri öğrenirler. Bunun da ötesinde, verideki yapıların özelliklerinden genellemeler çıkararak en az hata yapacak şekilde çizgiler hesaplarlar. Kırmızı çarpı mavi yuvarlak örneğine dönelim.

Şekil 1. Doğrusal sınıflandırma modeli.

Şekil 1’de gördüğümüz noktaları ayıracak sonsuz sayıda yeşil çizgi çizebiliriz (kesikli yeşil çizgiler bunu temsil ediyor). Ancak yeşil çizgiyi kırmızı çarpılara çok yakın konumlandırırsak, sınırda bir kırmızı çarpı verisi geldiği zaman bunu yanlış sınıflandırma (yani bu yeni gelen kırmızı çarpıya mavi yuvarlak deme) ihtimalini artırmış oluruz. Gündelik hayatımıza devam ederken bir arkadaşınız gelse ve size bu iki kümeyi ayıracak yeşil çizgiyi hiç düşünmeden çizmenizi istese, içgüdüsel olarak yapacağınız şey çizgiyi tam ortaya çekmek olur. Çünkü iki kümeye eşit mesafedeki çizginin iki kümeyi birbirinden çok net şekilde ayıracağını ve bunun en güvenli seçenek olduğunu hissedersiniz. İstatistiksel olarak eğer kırmızı çarpıların ve mavi yuvarlakların meydana gelme olasılığı eşit ise, tam ortadaki yeşil çizgi hata olasılığını en aza indirir. En popüler doğrusal sınıflandırıcı olan “SVM” algoritmasının yaptığı iş tam olarak budur.

Yapay Sinir Ağları (Artificial Neural Networks): En popüler sınıflandırıcı sinir ağları değil miydi diye aklınızdan geçirdiğinizi hisseder gibiyim. Çok karmaşık problemler için evet. Ancak sinir ağlarında işlem yükü, oluşturulan ağın yapısına ve boyutuna bağlı olarak, doğrusal yöntemlere göre katbekat fazla olduğu için eğer işe yarıyorsa doğrusal bir model öncelikli tercihtir. Doğrusal bir sınıflandırmada cevap, sınıf sayısının bir eksiği kadar vektör çarpımı ve sonrasında bir mantık işlemi (büyüktür, küçüktür ya da eşittir) sonucunda elde edilirken; sinir ağlarında katmanlar vardır ve her katmanda en az bir matris çarpımı gerçekleştirilir.

Bu karmaşık detayları şimdi bir kenara bırakalım ve bu yapının işleyişini, bu alanda çığır açan, 2012’de yapılmış bir çalışmadan örnek vererek inceleyelim. Toronto Üniversitesi’nden Prof. Dr. Geoffrey Hinton’ın danışmanlığında Alex Krizhevsky ve Ilya Sutskever, toplamda sekiz katman, 650 bin nöron (sinir hücresi) ve 60 milyon parametreden (bu parametreler yukarıda bahsettiğim, çarpımı yapılan matrislerdeki elemanlar) oluşan bir yapay sinir ağı oluşturuyorlar ve eğitimini 6 günde tamamlıyorlar. Evet, sadece bir işi bitirmek için bilgisayarınızı 6 gün boyunca çalıştırdığınızı ve hiç kullanmadığınızı (kullanamadığınızı) düşünün. Çünkü bilgisayar, o zamanın en güçlü GPU’larından iki tanesi ile birlikte matris çarpımlarına gömülmüş durumda. Eğitim sonucunda elde edilen model, toplam 1000 farklı sınıftan yaklaşık 15 milyon fotoğrafın bulunduğu ImageNet veri kümesi üzerinden düzenlenmiş yarışmayı açık ara farkla kazanıyor ve AlexNet adı ile meşhur oluyor. Peki AlexNet’i bu kadar başarılı yapan şey neydi?

Şekil 2. AlexNet mimarisi (Krizhevsky ve diğ., 2012).

Yapay sinir ağları her ne kadar son yıllarda elde ettiği başarılar ile biliniyor olsa da aslında hiç de yeni bir yapı değil. 1943 yılında biyolojik sinir hücrelerinin matematiksel modeli olarak ortaya atılan bu fikir, birkaç evreden geçtikten sonra 1980’lerin sonlarına doğru öğrenme mekanizması ile de birleşerek kullanılabilir halini aldı. 1990’larda “geri yayılım (backpropagation)” algoritması ile eğitilen tek katmanlı yapay sinir ağlarının başarısı belirli bir sınırı aşamazken; 2000’lerde çok katmanlı yapıların geri yayılım algoritması ile eğitilebileceğinin anlaşılması ve bilgisayar teknolojisindeki gelişmelerin beraberinde getirdiği hesaplama kapasitesindeki dramatik artış, bir anda yapay sinir ağlarının patlamasına yol açtı. Bugün yapay zekâ ya da makine öğrenmesi dendiğinde aklımıza ilk gelen şey sinir ağlarıdır çünkü problemimizi çözmek için sonsuz farklı şekilde tasarlayabiliyor, daha önce hiç denenmemiş yöntemler ve fonksiyonlar ekleyebiliyoruz. Bu esnek yapısı sayesinde en karmaşık problemlerde bile beklenenin üzerinde başarı gösteriyor. Bugün “akıllı” sıfatını önünde kullandığımız bütün cihazlar gücünü yapay sinir ağlarından almaktadır.

Yapay sinir ağlarında kullanılan en önemli yapılardan birisi, görüntüler üzerinde çalışması için tasarlanmış olan evrişimsel ağlardır (Convolutional Neural Network – CNN). Evrişimsel ağlar, görüntü içindeki örüntüleri tespit etmekle görevlidir. Eğitilmiş çok katmanlı bir ağda birinci katmandaki evrişimsel yapı görüntüdeki kenar ve köşe gibi en basit yapıları ortaya çıkarır. İkinci katman birinci katmanın tespit ettiği kenar ve köşelerin kombinasyonu olan daha karmaşık yapıları, sonraki katmanlar da artan karmaşıklıktaki daha “anlamlı” yapıları ve “nesneleri” tespit etmektedir. İşte AlexNet’i bu kadar başarılı yapan şey, evrişim katmanları içeren akıllıca tasarlanmış derin bir mimariye sahip olmasıydı. Şekil 2’de en soldaki katman, modele verdiğimiz görüntüyü, arkasından gelen beş tane kübik yapı evrişimsel katmanları temsil etmektedir. En sağdaki kutu çıkışı temsil etmekte, altında yazan “1000” sayısından da sınıflandırıcının 1000 ayrı sınıf öğrendiği anlaşılmaktadır. Bu model derin öğrenme (deep learning) denen akımın öncü örneklerinden birisidir ki sonrasında buna benzer modellerin sayısında tam anlamıyla bir patlama olmuştur. Derin öğrenme kavramını kullanan akademik yayın sayısının yıllara göre grafiğini Şekil 3’te görebilirsiniz.

Şekil 3. Derin öğrenme kavramını içeren yayın sayısı (Hao, 2018).

Kapanış

Her geçen gün yeni bir teknolojik gelişmenin yaşandığı dünyamızda makine öğrenmesinin farklı bir yeri vardır. Çünkü araştırma yapılan her alanda işleri hızlandırmak için makine öğrenmesi yöntemlerinden faydalanılmaktadır. Bir ilaç firması, yeni bir etken madde tasarlarken genetik algoritması ile moleküllerin farklı formlarını oluşturmakta ve test edilmektedir. Otomobil tasarımcıları, otomobilin aerodinamiğini iyileştirmek için pekiştirmeli öğrenmeden faydalanmaktadır. Hayatın bu kadar içine işlemiş bu kavram hakkında Bill Gates’in düşüncesi şöyledir: Makine öğrenmesindeki bir (1) yenilik on (10) Microsoft değerinde olabilir. Dünyanın en büyük markalarından biri olan Microsoft’un kurucusunun bu sözlerinden, makine öğrenmesinin insanlığın geleceğine yön verecek bir kavram olduğunu düşündüğünü anlayabiliriz.

Kaynaklar

Krizhevsky, A., Sutskever, I., Hinton, G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. Advances in Neural Information Processing Systems 25.

Hao, K. (2018). What is machine learning? Erişim tarihi: 12/10/2020 https://www.technologyreview.com/2018/11/17/103781/what-is-machine-learning-we-drew-you-another-flowchart/

Kızrak, A. (2019). Yapay Zeka Kullanım Alanları ve Uygulamalarına Derinlemesine Bir Bakış. Erişim tarihi: 12/10/2020 https://medium.com/@ayyucekizrak/yapay-zeka-kullan%C4%B1m-alanlar%C4%B1-ve-uygulamalar%C4%B1na-derinlemesine-bir-bak%C4%B1%C5%9F-d0fecaf7f61b

Etherington, D. (2017). Google’s AlphaGo AI beats the world’s best human Go player. Erişim tarihi: 12/10/2020 https://techcrunch.com/2017/05/23/googles-alphago-ai-beats-the-worlds-best-human-go-player/

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s