Archive for the ‘Yapay Zeka’ Category

yapay bağışıklık algoritması – kodlama

December 30, 2012

yaklaşık 3 yıl önce, üniversiteden heüz mezun olmuş,iş ararkene bi ara yazmış bulunduğum bu konuda verdiğim sözü şimdi tutuyorum 🙂
işte kodlar…

yapay zeka’nın uygulama alanları

October 19, 2009

uzun süredir yapay zeka’ nın uygulama alanlarını nasıl formülüze edeceğimi düşünüyordum.
sonunda buldum: “doğal zeka’ nın yemediği yerlerde yapay zeka kullanırız.”

yapay zekayı nasıl ele alabiliriz?

August 17, 2009

yapay zeka, zeki makineler inşa etme bilimi olarak tanımlanabilir.

peki bir yapay zeka araştırmacısının, yapay zekadaki amacı ne olabilir?
niçin bir insan yapay zeka üzerine araştırma yapar?

bunun bir kaç nedeni olabilir.

1. Hesaplanabilir Psikoloji: Yapay zeka araştırmacısı, yapay zekayı, insan bilişini daha iyi anlamak için kulllanabilir. Bu durumda bir insanın bir işi yerine getirirken kullandığı veri yapısı ve algoritmayla, bilgisayarda aynı problemi çözmek için kullanacağımız veri yapısı ve algoritma aynı olur. Bu yolu seçen araştırmacı bilişsel psikolojiyle içiçedir.

2. Hesaplanabilir Felsefe:  İnsan zekası, hesaplanabilir bir süreç olarak ele alınır. Fakat bu süreçte kullanılacak veri yapısı ve algoritma, insanın zeki davranış sergilerken kullandığı veri yapısı ve algoritmayla aynı değildir. Önemli olan ortaya hesaplanabilir bir süreç koyabilmektedir.

3. İleri Bilgisayar Bilimi: Bu çerçevede yapay zeka araştırmacısı programlamanın sınırını, öğrenebilen- kendini geliştirebilen vs… programları amaçlar.

4. Sezgisel Programlama: Yapay zeka araştırmacısı durumlar arasındaki geçişin “bir kesinlikle” olduğu, sürecin sonunda çalışmanın “durduğu”, “kesinlik” içeren algoritmaların aksine davranış sergileyen yöntemler geliştirir. Bir örnek vermek gerekirse “Genetik Algoritma” bir sezgisel algoritmadır. Kesin bir durma kriteri ya da bir durumdan diğer duruma geçişi belirleyen kesin kurallar yoktur.

Bir de bu noktada “Ai-complete” denilen, yani belli bir problemin çözmünü, yapay zekanın çözümü olarak gören bir yaklaşım vardır. Mesela “Doğal Dil İşleme” bir “Ai-complete” dir çünkü; insanın bir dili anlaması, o insanın tüm yetileriyle birlikte “zeki” olduğunun göstergesidir. Eğer bilgisayar doğal dili işleyebilirse “zeki” olarak kabul edilebilir. Diğer “Ai-complete” alanlar ise “Bilgi Temsili ve Çıkarsama”, “Computer Vision (şu an nasıl çevirebileceğimi bilemiyorum bu kelimeyi)”, “Problem Çözme”, “Öğrenme” ve “Robotik” olarak belirtebiliriz.

Kaynak: Artficial Intelligence, Stuart C. Shapiro

yapay bağışıklık algoritmaları-clonalg

August 3, 2009

bu aralar -ki biraz uzun bir aralık bu- yapay bağışıklık sistemini ve bunun bilgisayar bilimlerindeki tezahürleri üzerine ufak araştırmalar-okumalar yapmaktayım. sistemin biyolojik kökenleri üzerine henüz bir şeyler yazabileceğimi zannetmiyorum. ama size bu alandaki bir algoritmadan söz edeceğim ki zaten herhangi bir biyolojik alt yapı gerektirmeyecek.

algoritmamızın ismi clonalg’dir. kendileri genetik algoritmalarla benzerlik göstermekle beraber ufak tefek farkları vardır. en belirgin farkı ga’ da iyi aday çözümler, kendi aralarında çaprazlanarak yeni bir araştırma uzayı açıyorlardı. fakat clonalg’de yeni bir araştırma uzayı açmak için aday çözümler çaprazlanmaz. her aday çözüm, genel olarak kendi uygunluk değeriyle orantılı olacak şekilde, kendilerini kopyalar ve mutasyona uğratır. yani tek birey üzerinden uzay açılır ve araştırma yapılır. üstadlara göre biz bu şekilde optimizasyon işini local’de daha mükemmel hale getirebiliyormuşuz. zira ga’nın önemli bir eksikliği optimizasyon işine global olarak bakıp, localleri atlayabilmesi (ki bu nedenden dolayı mutasyonda local optimizasyon algoritmaları kullanırız) … devam edecek olursak; ga’daki gibi rasgele aday çözümler oluşturuyoruz, her bir aday çözümün uygunluk (affinity) değerini ölçüyoruz, bu uygunluk değeriyle doğru orantılı olacak şekilde ilgili hücreyi klonluyoruz ve bu klonları uygunluk değeriyle ters orantılı olacak şekilde mutasyona uğratıyoruz. bu klonları populasyondaki kötü bireyler ile değiştiriyoruz vs…

neyse artık algoritmayı sözde kod olarak yazayım. ben kodlama da yaptım bu algoritmayla ilgili. ama onu şu an değil de ileride ekleyeceğim.

bu algoritmanın çalışma şekli aşağıdaki gibidir:

  1. Populasyonu İlkle (B hücrelerini yani aday çözümleri oluştur)
  2. Problemi temsil et (Antigenic Representation)
    1. Her bir B hücresinin uygunluk değerini hesapla
    2. Uygun B hücrelerini klonla
    3. Klonlanan B hücrelerini mutasyona uğrat
    4. Mutasyona uğratılmış B hücrelerini populasyona kat
  3. Döngü

tekrar açıklayacak olursak:

algoritmanın birinci aşamasında rasgele çözüm adayları –yani B hücreleri- oluşturulur aynen genetik algoritmalarda kromozomları oluşturmak gibi.

ikinci aşamada ise problem temsil edilir. bu problem temsili CLONALG’ de  antijen’e karşılık gelmektedir. bu da GA’da fitness function’a karşılık gelmektedir.2-1 aşamasında ise her bir B hücresi için uygunluk değeri –yani antijene ne derecede tepki verebiliyor- hesaplanır ve bu değer oranında ilgili B hücresinin kendisini klonlamasına ve mutasyona uğratılmasına izin verilir.

son aşamada ise klonlanmış ve mutasyona uğratılmış B hücreleri popülasyona bir şekilde –ya en kötü bireylerin yerine ya da rasgele bireyler oluşturup onların en kötüleriyle yer değiştirerek vs…- katılır.

bu işlemler istediğimiz kriterler sağlanıncaya kadar ya da belli bir döngü sayısınca devam eder.

Hebb Öğrenme Kuralı

May 25, 2009

Hebb öğrenme kuralı, YSA’ larda, en eski ve en basit öğrenme kuralıdır. Eğer birbirine bağlı iki nöron, aynı anda aynı işarete sahipse, bu nöronlar arasındaki ağırlık değeri artırılır.

Algoritması

0. Tüm ağırlıkları ilkle:

w(i)=0        (i=1 to n)

1. Her bir eğitim vektörü (s) ve hedef vektörü (t) için  2 -4 işlemlerini yap:

2. Giriş birimlerine eğitim vektörlerini al

x(i)=s(i)        (i=1 to n)

3. Çıkış birimlerine hedef vektörlerini al

y=t

4. Ağırlıkları güncelle:

w(i)_yeni=w(i)_eski+x(i)*y      (i=1 to n)

b_yeni=b_eski+y

Şimdi bir örnek üzerinden algoritmamızı işletelim. Bu örnekte AND fonksiyonunu, bipolar (yani 1 ve -1) temsille öğrenebilen bir Hebb Ağı geliştireceğiz.

x1 x2 b t
1  1  1  1
1 -1 1 -1
-1 1 1 -1
-1 -1 1 -1

Bu sinir ağının yapısından bahsedelim ilk önce. Bu ağ iki girişi (x1 ve x2) ve bir bias ve de bir çıkışı olan bir sinir ağıdır. Üç tane ağırlık bağlantısı (w1, w2, w3) vardır o halde.

Herşeyden önce ağırlıkların hepsine birden o  değerini atayalım.
(w1=0, w2=0, w3=0)

Şimdi ilk eğitim setimizi girelim ağa. (yani x1=1, x2=1 ve b=1 ve de t=1 olan eğitim setini)

x1 x2 b t w1 w2 w3
1   1  1 1  0   0   0

w1_yeni=w1_eski+x1*y

w1_yeni=0+1*1
w1_yeni=1

w2_yeni=0+1*1
w2_yeni=1

b_yeni=b_eski+y
b_yeni=1

Ağırlıklarımızın yeni değerlerini bulduktan sonra, ikinci eğitim vektörü içinde de aynı işlem yapılır.
Sonra üçüncü ve daha sonra da dördüncü eğitim seti için hesaplama yapılır.

Eğitim bittiği vakit w1=2, w2=2 ve b=-2 olmaldır.  Şimdi test edelim:

x1=1, x2=-1 olsun… Çıkış nöronuna net girdi=x1*w1+x2*w2+b  ise:
f_net=((1*2)+(-1*2)+(1*-2))=-2

f(f_net)= Eğer f_net>=0 ise 1; f_net<0 ise -1 dir. O halde çıkış değerimiz -1 olacaktır.

Bu problemi bir de polar (1 ve 0) değerler ile çözün bakalım.
Sonuca ulaşacak mısınız? Kolay gelsin.

“Yapay Zeka Nedir?” sunumu…

May 20, 2009

Yapay Sinir Ağları dersi için arkadaşlarla hazırlamış olduğumuz “Yapay Zeka Nedir?” konulu sunum umarım işinize yarar.

İndirmek için tıklayın.

Görüşmek üzere.

Diophantine ve Genetik Algoritmalar

August 4, 2008

Genetik algoritmaları öğrenmek için çözdüğüm ilk problem “diophantine denklemleri”dir. O zamanlar Java’da bu uygulamayı gerçekleştirmiştim.

Bu aralar Python’a merak sardım. Bari şu diophantine’yi bir de GA ile Python’da çözeyim dedim. Çok basit bir çözüm ama GA’nın da mantığını yansıtan bir örnek oldu.

Problemimiz: a+2*b+3*c+4*d=30 denklemini sağlayan a,b,c,d doğal sayılar nelerdir?

Tasarımız ise şu şekilde oldu: Her bir kromozom aday bir çözümdür. O halde kromozomumuz 4 tane gen içerir ve her bir gen, denklemde bir bilinmeyene karşılık gelir. Uygunluk fonksiyonumuz zaten denklemin kendisidir. Çaprazlama fonksiyonumuz anneden ilk iki gen, babadan ise son iki geni alıp yavru bir kromozom oluşturur. Seçme fonksiyonu ise son derece ilkeldir. Populasyondaki tüm kromozomları uygunluk değerine göre sıralar ve belli aralıktaki kromozomlardan anne ve baba kromozomu seçer. Mutasyon işleminde ise sadece bie kromozomun ilk genine yeniden değer ataması yapılır.

Afiyet olsun.


 (more...)

Sekiz vezir Problemi ve Genetik Algoritmalar

August 3, 2008

İnternette genetik algoritmaların ne olduğuna dair yeterince kaynak var. Bundan dolayı ben işin sadece uygulama kısmına değineceğim. Genetik algoritmalarla ilgili bilgilere kod ve us‘ tan , learnartificialneuralnetworks‘ den ve obitko‘ dan ulaşabilirsiniz.

Sekiz vezir problemi içinde yeterince kaynak var. Bu bilgilere Türkçe wikipedia‘dan, ekşisözlük‘ten ulaşabilirsiniz. Ve bu applet de hediyemiz olsun :).

Şimdi asıl işe gelelim. Ben bu aralar bir genetik algoritmalar kütüphanesi üzerinde çalışıyorum. Bu arada da sekiz vezir problemini çözeyim, böylece kütüphaneyi de test etmiş olurum diye düşündüm. . Burada ben sadece bu problemi çözerken kullandığım sınıfları yazacağım…

(more…)