YZ00: Yapay Zeka’ya Giriş

Merhaba!

Yapay Bot’a hoşgeldiniz. Bu blogda; son zamanlarda iyice popülerleşen Yapay Zeka (Artificial Intelligence), ve Nesnelerin İnterneti (Internet of Things) hakkında yazılar paylaşacağım. Blogu açmaktaki amacım, hem bu konulara çalışırken aldığım notları paylaşmak hem de 7’den 70’e herkesin bu kavramları bilmesini, tanımasını ve en önemlisi de kolayca uygulamasını sağlamak.

Bu ilk yazım yapay zekanın felsefesi ve tarihi üzerine olacak. Daha sonraki yazılar uygulamalı olacak. “Yapay zeka şöyle gelişti, böyle gelişti” demek yerine bizzat nasıl yapıldığını göreceğiz.

Peki nedir bu yapay zeka? Yeni mi çıktı? Yapay zeka dediğimiz şey aslında yeni bir kavram değil. 1950’lerden itibaren bu alanda çalışmalar yapılıyor. O yıllarda olmayan ama şimdi olan şey ise bilgisayarların işlem kapasiteleri ve veri kaynaklarının sayısı.

Klasik bilgisayarlarda CPU (Central Processing Unit) denilen merkezi işlemci birimi bulunur. Bu işlemci klavye ve fare aracılığıyla aldığı komutları sırayla yerine getirir. Bilgisayar donduğu zaman çeşitli programları açmak için tıklarsanız, donma geçtiği zaman sırasıyla tıklanma sırasına göre programların açıldığını farkedeceksiniz.

Yapay zeka algoritmalarında matris işlemleri (özellikle matris çarpımı) sıklıkla kullanılır. Günümüzde eş zamanlı olarak birçok matris çarpım işlemi yapabilmek için CPU yerine işlemleri eş zamanlı yapabilen GPU (Graphical Processing Unit) denilen görsel işlemci birimi kullanılıyor. Çok aşırı büyük verilerle uğraşmayacaksanız klasik bir laptopta bulunan CPU ile de yapay zeka uygulamalarını geliştirebilirsiniz. GPU, CPU’ya göre hızlı fakat güç tüketimi ve fiyatı fazla. Çok karmaşık ağ yapılarını CPU ile yapmak isterseniz bilgisayarı açık bırakıp bir iki haftalık bir tatile çıkabilirsiniz. Çünkü ancak tatil dönüşü bilgisayarınız “muhtemelen” işlemi bitirmiş olacaktır.  

Cerrahi müdahalelerle insana yapay kalp gibi organlar takılabiliyor. Peki bir insana “yapay zeka” monte edebilir miyiz? Artık bir fenomen haline gelen Tesla‘nın CEO’su Elon Musk tam da bunu yapmaya çalışıyor. ABD’de kurulan Tesla, elektrikli ve sürücüsüz araç, otonom sürüş ve yapay zeka gibi konularla ilgileniyor. Yapay zekanın insana entegre edilmesi ile öğrenme kavramı baştan aşağı değişecek. Bu sayede gelecekte yeni bir dili 5 dakikada öğrenebilmek belki de mümkün olacak.

İnsana yapay zeka monte etmek biraz uçuk bir fikir. Ama makinelere yapay zeka monte etmek daha uygulanabilir bir fikir. Peki bu nasıl olacak? Bir bilgisayara ya da bir elektronik cihaza “zeka” katabilmek için öncelikle onun çevresini ya da aldığı verileri algılamasını, algıladığı şeylerden bir anlam çıkarmasını ve bunun sonucunda bir karar vermesini sağlamamız gerekir. Tabii bu noktada karşımıza çok büyük bir engel çıkıyor: Henüz insan beyninin tam olarak nasıl çalıştığını ve nasıl karar aldığını kimse bilmiyor. Bilmek zorunda da değiliz bana göre. Çünkü kuşları taklit ederek üretilen uçakların birebir kuşlar kadar iyi uçması gerekmez. Amacı yolcu taşımak olan bir yolcu uçağı, uçsun ve yolcuları taşısın yeter. Yani yapay zeka oluşturma amacımız insan hayatını kolaylaştırmaktır. İnsanın birebir kopyasını yapabilmek değil.

Yapay Zekanın Kısa Tarihçesi

Yapay zekayla ilgili ilk pratik çalışmalar 1950’lerden itibaren yapılmaya başlandı. Transistörün 1947’de icat edildiğini düşünürsek başlangıç tarihinin neden 1950’ler olduğunu daha rahat anlayabiliriz. Çünkü modern bilgisayarlar transistör denilen ufak elektronik parçalardan oluşuyor. Tabii o yıllarda devasa boyutlardaki bilgisayarların yapabildiği tek şey, toplama ve çıkarma gibi basit işlemlerdi. Toplama ve çıkarmayı güç bela yapan zamanın bilgisayar teknolojisinden, günümüzün yapay zeka modellerinin yaptığı gibi milyonlarca veriyi işlemesi beklenemez.

Bilimsel bir çalışmanın önüne kimi zaman teknoloji engeli çıkabilir. Teorisi ortaya atılan her şeyin teknolojik olarak gerçeklenmesi mümkün olmayabilir. Yapay zekanın başına gelen de tam budur. Günümüz teknolojisi ise teorik olarak oluşturulan bir modelin yazılım ve donanım olarak gerçeklenmesine imkan tanıyor.

İnsan öğrenen bir varlıktır. İnsandaki öğrenmenin nasıl gerçekleştiği tam olarak bilinemese de nöron denilen sinir sistemi hücresinin öğrenmeyi gerçekleştirdiği düşünülmektedir. Yapay zeka ile uğraşan bilim adamları da “eğer biyolojik nöronu modelleyebilirsek, ortaya öğrenen makineler çıkarabiliriz” demişlerdir. Nöron modelinden yola çıkarak McCulloch Pitts, Perceptron, Hebb gibi algoritmalar geliştirilmiştir. Bu modellerin ayrıntılarına daha sonraki yazılarda değineceğim. Biyolojik kısımla ilgili detaya girmeyeceğim çünkü sıkıcı bir konu.

Bilgisayar teknolojisinin yetersiz olması ve basit nöron modeliyle çalışan algoritmaların gerçek hayat problemlerinin çözümünde “basit kalması” nedeniyle yapay zeka rüyası hüsranla sonuçlanmıştır. 

Bunun üzerine uzman sistemlere (expert systems) yönelim olmuştur. Uzman sistemlerde olay, uzmanlardan bilgiyi almak ve buna bağlı olarak hangi durumda ne olur sorusuna yanıt verecek bir program geliştirmektir. Örneğin grip olduğunuzda doktora giderseniz doktorlar “mide bulantısı var mı?”, “boğazınız ağrıyor mu?“, “son 24 saat içinde ne yediniz?” gibi sorular sorarlar. Bu sorulara verilecek olası yanıtlara ve uzman bilgisine göre bir program yazmak mümkündür. Uzman sistemlerin en büyük problemi programın uzman görüşleriyle kısıtlı olması ve farklı bir probleme çözüm getirememesidir. Bir de tabii “her uzmanın yoğurt yemesi” farklı olduğu için hangi uzman tarafından hazırlandığına bağlı olarak uzman sistemlerin başarısı artmakta ya da azalmaktadır.

Yapay Zeka Hangi Programlarla Yapılır?

Günümüzde yapay zeka uygulamaları genellikle Python programlama diliyle geliştirilmektedir. Algoritmaları sıfırdan kodlamakla uğraşmamak için Python üzerinde kullanılan matris işlemlerinin kolaylıkla yapılmasını sağlayan Numpy kütüphanesini ve yapay zeka algoritmalarını hazır bir şekilde kullanabileceğimiz Google‘ın TensorFlow‘unu kullanacağız. Bunların nasıl kurulduğunu internetten aratarak bulabilirsiniz. Yine de yapamazsanız yorum yazarak destek isteyebilirsiniz. Yani yapay zeka algoritmalarını uygulamak için sadece bir bilgisayara ihtiyacınız bulunmaktadır. 

Makinelerin Öğrenme Şekilleri

Makinelere yapay zeka katmak ve aldığı verileri anlamlı hale getirmesini sağlamak için çeşitli yöntemler (algoritmalar) kullanıyoruz.

  1. Eğiticili (Supervised): Eğiticili öğrenmede gelen verilere karşılık olması gereken değerler vardır. Yani makineye “bak şu veriler gelecek ve ait olduğu sınıf da bu” diyoruz. Gelen verilere karşılık, çıktının ne olmasını bilen makine, öğrenme aşamasında kendi ürettiği çıkış ile olması gereken çıkışı sürekli karşılaştırır ve ikisi arasındaki farkı yani hatayı hesaplar. Çeşitli yöntemler kullanarak bu hatayı azaltmaya çalışır. Eğiticili denmesinin sebebi giriş verilerine karşılık olması gereken çıkışları bilgisayara bildirmemizdir. 
  2. Eğiticisiz (Unsupersived): Eğiticisiz öğrenmede ise olması gereken çıktıları bilgisayara bildirmiyoruz. Çeşitli yöntemler kullanarak gelen verileri grupluyoruz. En bilinen yöntem verileri kümelemektir. 
  3. Takviyeli (Reinforcement): Takviyeli öğrenme, eğiticisiz öğrenme ile ağın öğrenmesini sağlayıp öğrendiği şeylere göre bir ödül ya da ceza verilmesi esasına dayanır.

Yapay Zeka ile Neler Yapabiliriz?

  • SINIFLAMA (CLASSIFICATION): Doktor olduğunuzu varsayalım. 100 tane hastadan 10’ar tane farklı ölçüm aldınız diyelim. Hastalarınızın bir kısmı hasta bir kısmı ise sağlıklı çıktı. Bu verileri yapay zeka algoritması ile eğittikten sonra herhangi başka bir insandan 10 tane ölçüm almamız durumunda bu kişinin hasta mı sağlıklı mı olduğunu tahmin edebiliriz. Yani yeni kişiden alınan 10 adet ölçümün hasta sınıfına mı yoksa sağlıklı sınıfına mı ait olduğunu tespit edebiliriz.
  • REGRESYON ANALİZİ (REGRESSION ANALYSIS): Regresyon (regression) ilişki tespiti demektir.  İstatistikle ya da ekonomi ile uğraşanların yoğun olarak kullandığı bir terimdir. Yapay zeka ile ekonomik verilerden yola çıkarak borsanın kaç olacağını tespit etmek için regresyon analizi yapılabilir.
  • KÜMELEME (CLUSTERING): İlkokulda kümeleri öğrenmiştik. Hangi verinin hangi kümeye ait olacağı çeşitli yöntemlerle belirlenir. Detaylarına daha sonra gireceğiz. Eğiticisiz öğrenmenin en bilinen yöntemidir.
  • OBJE TANIMA: Daha karmaşık algoritma ve çok büyük veri (yüzbinlerle ifade edilecek kadar) kullanılması durumunda buna Derin Öğrenme (deep learning) diyoruz. Elinizde binlerce resim var diyelim. Her bir resimde ya kedi ya da köpek var ve derin öğrenme algoritmasına bu bilgiyi resimle birlikte veriyorsunuz. Ağı eğittikten sonra yeni bir resim gösterip resimde kedi mi köpek mi olduğunu anlamasını isteyebiliyorsunuz. Bunun da örneğini yapacağız. 

Yukarıdakileri Yaparsam Zeki Bir Sistem mi Yapmış Olacağım?

Kısmen evet. Makinelerin öğrenmesini sağlamış oluyorsunuz ama bana göre yine de zeki bir sistem yapmış olmuyorsunuz. Örneğin sınıflama örneği için 10 adet ölçüm verisi kullanarak hasta mı yoksa sağlıklı mı olduğunu anlıyorduk. Yani tasarladığımız makine gelen verileri anlamlandırdı. Bunun bir sonraki adımı bu anlamlı veriyi kullanarak bir aksiyon almak. Veriyi makinenin anlayabileceği hale getirmek de büyük başarı fakat yeterli değildir. Makine öğrenmesi zeki yani insan gibi davranan makinelerin ilk adımıdır. İnsan gibi davranan bir makine üretmek için anlamlı veriyi kullanarak kritik kararlar alınmasını sağlamalıyız.

EĞER SİZ DE

Yapay zekayı öğrenmek ve uygulamak istiyorsanız, doğru yerdesiniz! Lütfen olumlu ya da olumsuz yorum yapmaktan çekinmeyin. Tek isteğim olumsuz bir görüş bildirdiğinizde nedenini ve önerinizi de yazmayı unutmayın. 

Yazıyı sosyal medya hesaplarınızdan (Linkedin, Facebook, Twitter) paylaşırsanız memnun olurum. 

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 )

Google fotoğrafı

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

Twitter resmi

Twitter 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