Bu kez oldukça popüler bir konuya: “yapay zekaya” değinmek istiyorum. Bir çoğunuz bu konuyu gayet iyi biliyorsunuz. Bazılarınız da “yapay zeka, bilgisayar, yazılım... bunlar çok teknik konular anlamam” diyorsunuz. Bu popüler konuyu bir de benden okuyun diyor ve yazmaya başlıyorum.
Ben bilgisayarla 1970’lerin başında tanıştım. O günlerde verdiğimiz işi büyük bir hız ve doğrulukla yapan “insiyatifsiz yardımcılarla” çalışırdık. Tanımladığımız işlemleri çok büyük bir hızla yapıyorlardı ve bellekleri giderek büyüyordu. Bir mühendislik hesabını inanılmaz bir hızla yapıyor; ama en temel formülleri bile bilmiyordu. Binlerce kişinin maaşını, vergisini, primini, net ücretini hazırlar, ödeme zarflarını basardı. Ama vergi oranını yanlış girsek, hiç farkına varmaz ve net ücreti eksi ...TL olarak hesaplayabilirdi.
Hepimizin gözlediği gibi, donanım ve yazılım olarak çok büyük gelişmeler oldu ve bu gün zekadan konuşur olduk. Ben, yapay zeka için çok kritik olan iki kavramdan söz etmek istiyorum: makine öğrenimi (machine learning) ve genetik algoritma (genetic algorithm).
Makine öğreniminden başlayalım. Bir çocuk ana dilini nasıl öğrenir? Herhalde kelime ve gramer kurallarını ezberleyerek değil! Daha somut bir örnekle hangi hayvana “kedi”, hangisine “köpek” dendiğini nasıl öğrenir? Büyükleri kedilerin kulaklarının dik ve sivri olduğunu, köpeklerin daha uzun burunları olduğunu ve gözlerinin yanlarda olduğunu “öğretmez”. Çocuk birçok kedi - köpek görür, seslerini duyar, farklarını gözlemler ve “öğrenir”. Yanlış yaptığında da büyükleri düzeltir. İşte günümüzde makinelere birşeyler öğretmenin yöntemi de buna benziyor.
1970’lerde bir dondurma fabrikasında üretim hattına, üretim hedefi vermekle görevli olduğumu düşünelim. Bilgisayarımda, dondurma tüketiminin mevsimlerle değişimi, sıcaklık istatistikleri, plaj büfelerinin ne zaman açılıp kapandığı, 5-40 yaş arası nüfusun yıllık artışı, sektörün reklam giderleri, bir önceki dönemdeki üretim – satış miktarı... gibi bulabildiğim istatiksel bilgileri değerlendirir, katsayılar üretir ve bir formül geliştirmeye çalışırdım. Ardından bu formülü programlayarak üretim hedeflerini hesaplatırdım. (her halde pazarlama raporları, iade sayıları ile formülümü geliştirirdim).
Bilgisayarların işlem hızları, bellek büyüklükleri arttı, internet ile başka bilgisayarlardaki veriye ulaşabiliyorlar ve artık bir çocuk gibi doğrudan veri yığınlarından “öğrenebiliyrlar”. Bilgisayarıma bir “formül” yüklemeden, büyük veri yığını ile dondurma talebi arasındaki ilişkiyi (correlation) “öğrenmesini” ve şirketim için üretim hedefi belirlemesini isteyebilirim.
Kedi - köpek ayrımı yapan çocuk örneğine dönersek bu hayvanları daha çok gören çocuğun bu ayrımı daha çabuk ve doğru yapmasını, daha az gördüğü (sırtlan, çakal..) gibi hayvanlarda daha çok yanılmasını bekleyebiliriz. Benzer yöntemle “öğrenen” bilgisayarların giderek daha çok veriye ulaşabileceklerini, sonuç olarak daha çok “öğrenebieceklerini” söyleyebiliriz.
Gelelim genetik algoritmalara. Yine bir örnek ele alalım: Farklı ağırlıklarda –ve her birinin ağırlığını bildiğimiz- çakıl taşları olduğunu düşünelim. Bunlardan bir veya daha fazlasını bir kavanoza koyup tartalım. Hedefimiz kavanoza bir kilo taş koymak olsun. Kuşkusuz birden fazla çözüm olacak ve çakıl taşı sayısı arttıkça kavanoza koyabileceğimiz taşlar için mümkün (possible) birleşim (combination) sayısı da artacaktır. Yine bu problemi 1970’lerde bilgisayarda çözmek istesek ilk aklımıza gelen, kaba kuvvet (brute force) dediğimiz yöntemle mümkün olan her birleşimi (possible combination) denemek olacaktı. Örneğin 30 çakıl taşımız varsa, bilgisayarımız bir milyardan fazla (1 073 741 823) birleşim üretecek ve sonuca ulaşmak binlerce yıl sürecekti.
Şimdi bu problemi genetik algoritma ile çözelim. Bu algoritmanın adında “genetik” olduğuna göre, doğadaki evrimle, genlerle, kalıtımla benzerliği var. Aşağıda köşeli parantez içinde bu kavramlara işaret edeceğim. İlk adım olarak, örneğin, 10 adet kavanoz alıp bunlara tümüyle rasgele (random) sayıda ve ağırlıkta taşlar koyalım. Böylece ilk 10 birleşimi elde ettik [ilk kuşak]. Birleşimlerde kavanozlardaki taşların toplam ağırlığına bakacağız (fitness function). Bir kiloyu aşmak istemediğimize göre bu kuşaktaki birleşimlerden bir kilonun üzerinde olanları çıkartalım [onlar çevreye uyum sağlayamayan bireyler, öldüler. Ölmedilerse bile bundan sonra üreyemeyecekler]. Kalan kavanozlar arasında yine rasgele çiftler oluşturalım [eş seçimi]. Kavanoz çiftlerinin her birinden birkaç taşı alıp (crossover function) çiftin diğeriye değiştirelim ve kavanozları yeniden tartalım [eşler çiftleşti ve yeni bir kuşak oluştu]. Bilgisayarımızı, yeni birleşimler oluşturma, bir kilonun üzerindeki birleşimleri eleme, kalanları eşleştirme, eşleri çiftleştirme.. sürecini tekrarlayacak biçimde programlayabiliriz. Yeterince hızlı sonuç alamazsak [tür yok olursa], programdaki ilk kuşağı, parametreleri veya fonksiyonları değiştirebiliriz [farklı yaşam biçimleri deneyebiliriz]. Ama benim dikkatinizi çekmek istediğim nokta şu: Bilgisayar, artık mümkün olan bütün olasılıkları denemiyor, hedefini biliyor ve ona doğru ilerliyor.
Yapay zeka uygulamaları kuşkusuz çok hızlı gelişen bir alan ve burada teknolojik gelişime direnmek anlamsız. Bilgisayarlar öğrenebiliyor ve verilen hedefe yöneliyor. Ama “ne öğrenecek”, “hedefi kim belirliyecek”, “kim kontrol edecek” sorularına verilecek cevaplar çok önemli. Bunlar üzerinde biraz daha düşünmeliyiz. İki hafta kadar sonra basit bir yapay zeka uygulaması ile günümüzde ulaşılan durumu göstermeye çalışacağım.
Hiç yorum yok:
Yorum Gönder