Kategori arşivi: Yapay Zeka

Yapay Sinir Ağlarında Öğrenme

Yapay sinir sistemlerinde öğrenme en basit hali ile dışarıdan bilgi girişi giriş katmanına aktarılır, girişi yapılan datalar işlenir ve aktivasyon fonksiyonundan geçirilerek bir veya daha fazla çıkış üretilir. Sistemden çıkan sonuç ile beklenen sonuç karşılaştırılır. Aradaki fark oransal olarak daha önceden belirlenen orandan büyük ise, bu işlem değişen algoritma ile tekrar sağlanır. Bu süreç belirlenen hata oranını yakalayana kadar devam eder. Algoritma üzerindeki değişikler çoğunlukla var olan ağın ağırlıkları üzerinden yapılır. Ağırlıklar üzerinde oynanarak aktivasyon fonksiyonu daha efektif bir şekilde kullanılması sağlanmak istenir. Yaşanılan duruma göre oynanan ağırlıklar sonucunda gelinmesi istediğimiz sonuca ulaşma evresine yapay sinir ağlarında öğrenme adını veririz.

Beklediğimiz sonuca ağırlıkların oynanması ile ulaştıktan sonra, bir sonraki aşamada dış dünyadan edindiğimiz dataların değişimi izlemektedir. Giriş katmanına verilen data değiştirilir ve önceki datadan farklı bir data deseni ile tekrar ağırlıkların doğruluğu hesaplanır. Belirlenen hata oranı bir başka data deseni verildiği zamanda tutuyorsa makinanın istemiş olduğumuz kuralı öğrendiği anlamına gelir.

Bir ağın öğrenme sürecini maddeler halinde ele alırsak;

  1. Sisteme girilmesini istediğimiz verilerin toplanması gerekmektedir. Veriler sisteme tek tek girilerek ağın problemi öğrenmesi sağlanır. Ağ dışarıdan almış olduğumuz verilerle öğrenmesini tamamladıktan sonra birde test datası oluştururuz. Bu test datası ile ağın ne kadar öğrenip öğrenemediğini test etmemize yarar.
  2. Ağın topolojik yapısı belirlenir. İstenilen sonuca göre uyarlanır. Giriş, gizli katmanlar, çıkış katmanları belirlenir, bu katmanlar arasında hücrelerin ne kadar olacağı bu aşamada belirlenir.
  3. Ağın öğrenme katsayısını toplama ve aktivasyon fonksiyonları, momentum katsayısı, ağırlıkların doğru belirlenmesi gibi parametrelere bağlıdır.
  4. Ağırlıklar başlangıç aşamasında tahmin edilen şekilde verilir. Ağın öğrenmeye başlaması ile ağırlıkların sonuca göre güncellenmesi evresi de başlar.
  5. Ağın ağırlık katsayılarını belirlemek adına test verileri ağın giriş katmanına verilir. Bu sayede ağırlık katsayıları oluşan sonuçlara göre sürekli güncellenir.
  6. Geri hesaplama metodu ile hatanın azaltılması için ağırlıklar güncellenir.
  7. Beklenen sonuç ile çıkan sonuç arasındaki oran istenilen orana yakın olduğu zaman ağın öğrenmesi tamamlanmış olarak kabul edilir.
  8. Öğrenme sürecini tamamlayan ağ yapısına bu sefer dış dünyadan daha farklı veri setleri verilir. Yeni verilen veri setlerinde de ağırlık güncellemesi gerekmez ise ağ yapısı öğrenme sürecini tam anlamı ile tamamlamış kabul edilir.

Ağa sunulan girdiler için istenen çıktının üretilmesi için belirlenen ağırlık değerleri ilk seferde rastgele verilir. Ağın öğrenme sürecine başlaması ile bu ağırlık değerleri üzerinde sürekli bir güncelleme gerekir.

Ağın öğrenme sürecinde beklenen hata payı hiç yakalanmayabilir. Bu durum ile karşılaşıldığı zaman ağırlık katsayılarından çok ağın topolojisi, katman mimarisi veya ağa sunulan verilere bakılması gerekir. Altyapıda bir değişiklik yapmak bu durumlarda daha doğru olacaktır.

Dış dünyadan aldığımız verileri ağ yapısında giriş katmanına veririz ve çıkan çıktıda ağın öğrenmiş olduğunu bekleriz. Öğrenme süreci tamamlanana kadar güncellemeler yapar, ağ yapısından en verimli sonucu almayı amaçlarız. Bir yapay sinir ağ yapısının temelde üç tane öğrenme algoritması vardır. Bunlar; danışmanlı, danışmansız ve takviyeli öğrenmedir.

1. Danışmanlı Öğrenme

Bu tip öğrenme sürecinde herhangi bir şekilde öğretenin bulunması gerekmektedir. Var olan probleme ait girdiler ile beraber çıktı değerlerinin de ağ yapısına verilmesi gerekir. Girdi-çıktı karşılıkların tutarlı olabilmesi için modelde bulunan ağırlıklar katsayıları buna göre güncellenmelidir. En uygun değer bulunana kadar ağırlıklar girdi-çıktı verileri baz alınarak güncellenir.

2. Danışmansız Öğrenme

Bu öğrenme yönteminde çıktı değerleri sisteme verilmez, sadece dış dünyadan alınan girdi verileri ağ yapısına aktarılır. Ağ yapısından verilen girdileri birbirine yakınlığı baz alınarak sınıflandırması beklenir. Ağırlıklar bu sınıflandırmayı yapabilecek şekilde güncellenir. Ağ yapısı yapması gereken sınıflandırmayı verilen ağırlık katsayılarından anlar. Güncelleme tamamlandığında ağ yapısının öğrenmesi de tamamlanmış sayılır.

3. Takviyeli Öğrenme

Bu öğrenme yöntemi çok kullanılmamakla beraber bir öğretici takviyeli öğrenme yönteminde de yoktur. Danışmanlı öğrenme ile kıyaslanırsa bu öğrenme metodolojisinde sisteme çok detay verilmemektedir. Girilen bilgiler karşısında çıkan çıktıya bakılarak, ağ yapısına çıkardığı sonucun doğru veya yanlış ya da iyi veya kötü olduğu söylenir. Verilen bu bilgiyi ağın kullanıp tekrar öğrenmesi amaçlanmaktadır.

Yapay Zeka Terimleri

Dünyanın en karmaşık makinesi şüphesiz insan beynidir. Sayısal bir işlemi birkaç dakikada yapabildiği gibi, çevresinde oluşan olayları idrak edebilme, öğrenme ve sonrasında tekrarlamamak için önlem alma gibi özelliklere sahiptir. Bu durumlar ile ilgili basit örnekler vermek gerekirse; yürümek, araba sürmek, karşıdan karşıya geçmek, yürüme hızını veya araba sürme hızını çevredeki duruma göre karar vermek gibi düşünebiliriz. Akla ilk gelen soru, bu saydığımız özellikler ile bir makineyi yönetebilir miyiz? Makine çevresine göre nasıl davranacağını belirleyebilir mi? Oluşan olayları idrak etme ve deneyimlerle kazanılmış bilgileri ileride tekrar kullanabilir mi? Bu durumlarda insan beynini makinelere göre üstün kılan temel özellik, sinirsel algılayıcılar vasıtası ile kazanılmış ve göreli olarak sınıflandırılmış bilgileri tekrar kullanabilmesidir. Bu durumda akla gelen ilk soru var olan sinirsel ağı algoritma ile yazabilir miyiz? Bu soru ile günümüzde oluşan Yapay Zeka terimleri; Uzman Sistemler(US), Bulanık Mantık(BM), Genetik Algoritma(GA) ve Yapay Sinir Ağları(YSA) çıkmıştır. Her bir terim Yapay Zeka alanının alt dalıdır. Araştırma ve geliştirmeler bu terimler üzerinden yapılmaktadır.

Uzman sistemler temel anlamda insan beynindeki düşünceleri gerçekleştirmek amacıyla bilgisayar tarafından işlenen bir yazılımdır. Oluşan belirli bir bilgi ve birikimleri bilgisayarlara algoritmalar yoluyla bilgisayarlara aktarmadan oluşan bir yapay zeka dalıdır.

Bulanık mantık, bulanık küme teorisine dayanan bir matematiksel durumdur. Daha basit bir mantığa dayalıdır. Soğuk- Sıcak, Kısa-Uzun yerine Sıcak-Ilık-Soğuk, Kısa-(Kısa-Orta)-(Orta-Uzun)-Uzun gibi ara değerler ile çalışma prensibini benimser.

Genetik algoritmalar evrimsel hesaplamanın bir parçası olarak düşünülebilir. Bir veri öbeğinden özel bir veriyi bulmak için kullanılan bir arama yöntemidir. En iyi, en özeli bulmaya yönelik algoritmalar geliştirilir. Genellikle çözümü zor hatta imkansız olan problemlerin çözümü için kullanılır.

Yapay sinir ağları, insan beyninin sinir ağlarını taklit eden bilgisayar programlarıdır. Herhangi bir olaya ait örnekler ile eğitilerek bilgiler programa aktarılır. Böylelikle, örnekler sayesinde açığa çıkarılmış özellikler üzerinde çeşitli genellemeler yapılarak daha sonradan ortaya çıkma ihtimali olan durumlar için çözümler üretilmesi beklenmektedir.

Yapay Zeka Teknolojisinin Tarihçesi

Teknolojinin ilerlemesi ile insanların hayatındaki zaman daha değerli bir duruma geldi. Her bir dakikanın para ile ölçülebilecek bir değer haline geldiği günümüzde, bütün teknolojik çalışmaların odak noktası insan hayatını kolaylaştırmak üzere olmuştur. Bunun üzerine birçok çalışmalar ve geliştirmeler yapılmaktadır. Biz teknolojinin yeni bir dalı olan “Yapay Zeka” konusunu ele alacağız.

Yapay zeka mantığı çok eski tarihlere dayanmaktadır. En basit mantığı ile cansız nesnelere hayat verip zeki nesneler haline getirmek olarak tanımlanabilir. Yapay zeka ile ilgili çalışmalar ilk olarak 1884 yılında görülmüştür. Charles Babbage mekanik bir makinenin kendi kendine karar verebilecek zeki davranışlar göstermesine yönelik çalışmalar yapmıştır. Bu çalışmalar sonunda hiçbir nesnenin insan gibi karar verebilen, düşünebilen, öğrenebilen varlıklar olamayacağına kanaat getirilmiştir.

Yapay zeka ile ilgili çalışmalar 1940 yıllarında bilgisayarların üretilmesi ile daha büyük bir önem kazanmıştır. Bilgisayarların ortaya çıkması ile modellenebilmesi, kendine ait bir karar mekanizması olabilir mi düşünceleri de beraberinde ortaya çıkmıştır. 1950 yılında Alan Turing bir makine kendi kendine düşünebilir mi sorusu üzerine giderek bir makine tasarlamış ve insanların yazışmasını istemiştir. Yazışma esnasında insanlardan karşıdaki kişinin makine mı yoksa insan mı olduğu sorulmuştur. Testler esnasında insan olarak değerlendirilen makinelerin zekası geçerli sayılmıştır.

Programlama dünyasında bir devrim olarak görülen bir olay; 1957 yılında MIT’den John McCarthy tarafından geliştirilmiş olan LISP(List Processing Language) programlama dilidir. Esnek programlar yapmaya imkan sağlayan yapay zeka için geliştirilmiş eski ve köklü olarak sayılan programdır.

Tam anlamıyla başarılı ve istenen sonuçlar alınamadığı için uzun süreli geliştirilmesine ara verilen “Yapay Zeka” kavramı 1970’li yıllarının başlarıyla tekrar ivme kazanmıştır. İlk uygulama alanları arasında yer alan Tıp uygulamaları arasında yer almıştır. Hastalık teşhisi gibi konular üzerinde çalışmalar yapılmış ve sonuçları başarılı olduğu gözlemlenmiştir. Bu uygulama alanında gösterilen başarı ile diğer uygulama alanlarında da kullanımı için çeşitli çalışmalar yapılmıştır.

1980’li yıllara geldiğimizde çeşitli uygulama alanları ile büyük projelerde de yer almaya başlamıştır. Geçen süre içerisinde neredeyse tüm uygulama alanlarında boy gösteren yapay zeka kavramı, günümüzde başka bir hal alarak devam etmektedir.

Bu zamana kadar yapay zeka ile ilgili uygulamalar tek kanal üzerinden ve daha basit otomasyon işleri için kullanılmaktaydı. Günümüzde bununda tam olarak yeterli olmadığının anlaşılması ile yapay sinir ağlarının geliştirilmesi çalışmaları hız kazanmıştır.

Yapay zeka ile beklenen artık insan gibi düşünebilen, kendi kendine öğrenebilen, doğru ve yanlış gibi basit kavramları rahatlıkla idrak edebilen düzeye gelmesidir. Otomasyon haricinde tekrarlı olan her işte rol alması ve bir insan gibi yapmış olduğu işten tecrübe kazanarak ileriki zamanda daha iyi bir hizmet verebilmesi gibi çalışmalar yürütülmektedir. Yapay zekanın bir alanı olan “Chatbot” konusu da tam olarak bu hizmete karşılık gelmektedir. Bir ürün düşünelim bir insan gibi sorulan sorulara doğru cevaplar versin, bir insan gibi bir defalığına öğrendiği bir şeyi ileriki bir durumda tekrar kullanabilsin ve daha önemlisi kendi kendini geliştirip, yönetebilsin.

Akıl ve Zeka

Yapay zeka ile ilgili ilk yazımı aslında “Yapay Zeka” konusunu özetleyen bir yazı olmasını istemiştim fakat internet üzerinden yapmış olduğum araştırmalarda boşluğun orada değil başlangıç için “Yapay Zeka” konusu öncesinde Akıl ve Zeka arasındaki ayrımın doğru yapılamadığını farketmemle ilk yazımı bu yöne kaydırmak durumunda kalmamdı. En temelde bu farkı iyi bilmemiz lazım. Bu iki terimin hiçbir şekilde birbirine karışmıyor olması lazım. O zaman başlayabiliriz.

Akıl kavramı genellikle zeka ile paralel anlamda kullanılır. Aslında ikisi farklı kavramlardır. Akıl, anlama, idrak etme, kavrama, karar verme ve önlem alma yetenekleri için kullanılır. Muhakeme ve bilgi edinme gibi yetilerimizde akıl ile ölçülmektedir. Zeka, çevrende oluşan olayları anlama, bu olayları yargılama ve oluşan olaylardan sonuç çıkarma gibi yetenekler olarak düşünülebilir.

Akıl, genetik yoldan geldiği gibi çevreden aldığımız etkileşimler ve kısıtlardan da etkilenir. Sevgi, korku, kıskançlık gibi doğal güdülerimizle akıl ile alakalı olgulardır. Bunlardan dolayı akıl sabit bir durum değildir. Hayat boyu gelişim gösterir ve bundan dolayı herhangi bir algoritma ile taklit edilmesi mümkün değildir.

Zeka, doğuştan belirli bir orana sahiptir. Belirli konular üzerinde çalışarak, öğrenerek, eğitilerek, öğrenilen bilgi ve birikimler ile geliştirilebilir. Herhangi yaşanan bir olayı algılama, öğrenme, analiz etme ve olaydan sonuç çıkarabilme zeka ile ilişiktir. Zeka bu durumdan dolayı taklit edilebilir ve bundan dolayı “Yapay Zeka” olarak adlandırılır.