Archive for the ‘Yapay Zeka’ Category

Eleştirel Düşünmenin Bileşenlerine Çok Hızlı Bir Giriş ve Yapay Zeka Disiplini Üzerinde Uygulaması

September 26, 2017

Düşünüyoruz. Sürekli Düşünüyoruz. Neyi? Çekip gitmeyi, karşılaştığımız problemi nasıl çözeceğimizi, hangi model araba alacağımızı, yeni bir ürün olarak piyasaya ne süreceğimizi…

Çoğu kez bu düşünmeyi bilinçsiz bir şekilde, yani fikri unsurlarına ayırıp her bir bileşeni belirli süzgeçlerden geçirmeden, çevresel koşulları göz ardı ederek yapıyoruz. Bilinçsiz bir şekilde üretilen fikirler ön yargılı, benmerkezci ya da toplum merkezci düşüncelerin eseri oluyor. Bunun örneklerini görmek için herhangi bir gazetenin web sayfasına girip yapılan yorumlara bakmamız yeterlidir.

Düşünme sürecimizi iyileştirmenin, düşüncelerimizi kaliteli hale getirmenin bir yolu yok mu peki? Var: Eleştirel Düşünme Yöntemi.

Peki eleştirel düşünme nedir? 3 tane üstada bu soru yöneltildiğinde alınan cevaplar aşağıdaki gibidir.

  1. “Eleştirel düşünme neye inanacağımıza veya ne yapacağımıza karar vermeye odaklanmış mantıklı yansıtıcı bir düşünmedir.” (Robert Ennis)
  2. “Eleştirel düşünme, iyi bir yargıya götüren becerili ve sorumlu bir düşünmedir, çünkü içinde bulunduğu bağlama duyarlıdır, kriterler üzerine kurulur ve kendini düzeltici bir yapıya sahiptir.” (Matthew Lipman)
  3. “Eleştirel düşünme, düşündüğünüz esnada düşünmenizi daha iyi bir hale getirmek amacıyla, kendi düşündükleriniz hakkında düşünmedir.” (Richard Paul – en üstad insan bu 🙂 )

Bu tanımlardan hareketle aklımıza şu sorular gelir.

  1. Madem düşünceleri değerlendirmemiz gerekiyor bu değerlendirme kriterleri nelerdir? (Bunlara ELEŞTİREL DÜŞÜNME STANDARTLARI diyeceğiz)
  2. Düşünce denilen şey hangi bileşenlerden oluşur? (Bunlara da DÜŞÜNCENİN BİLEŞENLERİ diyeceğiz.) Çünkü bir şeyi değerlendirebilmemiz için onun bir kavram olarak karşımızda olması gerekmektedir.

Bu soruların cevabı bizi “Eleştirel Düşünme” ye götürür. Yani eleştirel düşünmeye göre her bir düşünce çeşitli bileşenlerden, ve bu bileşenleri değerlendireceğimiz standartlardan oluşur.

Eleştirel düşünmenin üç boyutu vardır. Biz şimdilik sadece ANALİTİK BOYUTU ele alacağız. Tüm boyutları sıralayacak olursak:

  1. Düşünceleri bileşenlerine ayırmalıyız. ANALİTİK BOYUT
  2. Her bir bileşeni standartlar etrafında değerlendirilmeliyiz. DEĞERLENDİRİCİ BOYUT
  3. Hataları kusurları gidermeli/fikirleri geliştirmeliyiz. SENTEZ BOYUTU

ELEŞTİREL DÜŞÜNME BİLEŞENLERİ

Richard Paul/Linda Elder tüm bileşenleri tek bir cümleyle şöyle ifade etmiştir :”Akıl yürüttüğümüz her an, bir bakış açısı içerisinde bazı kavramlar ya da fikirlerkullanarak bir amacı yerine getirmeye çalışırsınız. Sonuca ulaşmak için varsayımlaradayanarak,eldeki verileri kullanarak ve bütün bunların bazı etkileri olan, bir sorukonu veya problem üzerine odaklanırsınız.”

Şimdi Yapay Zeka disiplini açısından bunu örneklendirelim.

AMAÇ

Makinelere buharla ruh verip belirli bir müddet gelişimini devam ettiren insanlık elektriğin keşfi ve mantıktaki/matematikteki ilerlemelerle, yani cümlelerin sembolik bir düzeye getirilmesi ve matematiksel hesaplama araçlarının (Turing, stack machine vs..) ortaya çıkmasıyla daha da ileri gidip, girdileri belirli kurallarla işleyip çıktı üreten fiziksel makineler ortaya çıkarmıştır. Eğer bir iş kesin adımlarla tariflenebiliyorsa bu bir bilgisayar programı yardımıyla otomatize edilebilir. Böylece insanlığa angarya olan ya da çözümü zor olan problemler programlar aracılığıyla cevaplanmış olur.

Bilgisayarlara dair bu kısa girişten sonra düşünmenin ilk bileşeninin AMAÇ olduğunu söyleyebiliriz. Bilgisayar fikrinin amacı (tabi iyi niyetli bir BAKIŞ AÇISIYLA) insan işlerini kolaylaştırmaktır. Turing biraz daha ileri gidip makinelerin, insanların düşünerek çözdüğü sorunları çözüp çözemeyeceğini tartışır. AMACI düşünebilen bir bilgisayarın ortaya çıkmasıdır.

SORULAR

Düşünen bir bilgisayarı amaçladığımız zaman cevaplamamız gereken bazı sorular vardır. Bunlar :

  • Düşünmek nedir ve nasıl gerçekleşir?
  • Bilgisayarda düşünme süreci nasıl modellenebilir?
  • Bir bilgisayarın düşündüğünü nasıl anlarız?

gibi sorular.

VARSAYIMLAR

Eğer bilgisayarların düşünebileceğini iddia edersek belirli bazı varsayımlara dayanmamız lazım. Bu noktadaki en temel varsayımlar:

  • Makineler düşünebilir.
  • Düşünme süreci modern mantık / matematik dizgeleriyle ifade edilebilir.

BAKIŞ AÇISI

Soruna baktığımız tepe diyebiliriz bakış açısı için. Varsayımlarla ilişki içerisindedir. Bilgisayar bilimcilerinin bakış açısı genellikle düşünme işinin bilgi-işlem süreci olarak ele alınabileceğini şeklindedir. Bundan dolayı nöroloji ve psikoloji gibi dallarla iş birliği içinde düşünme işindeki fonksiyonları belirleyip bunların programlanmasından yanadırlar. Tabi bu tarafta da çeşitli yol ayrımları mevcuttur. Bazı bilgisayar bilimcileri düşünme işini modelleyebilmek için mantığa dayanmamız gerektiğini (LISP, PROLOG gibi dillerin temel felsefesi budur) bazıları için de mantığa dayanmayan, küçük küçük bilgi işleyen parçacıkların birbirleriyle olan ilişkisiyle (bu ekolden de Yapay Sinir Ağları,Genetik Algoritmalar gibi yaklaşımlarla) elde edilebileceğini var sayarlar.

Eğer bir biyolog olsaydık belki elektronik devre tabanlı bilgisayarlar yerine biyolojik temelli malzemeler kullanmamız gerektiğini önerebilirdik. Hatta daha da farklı bakış açısıyla ele alalım olayı. Psikolog/sosyolog olduğumuzu hayal edelim. Bu durumda düşünceyi oluşturan şey belki de toplumsal ilişkilerimizdir. Dolayısıyla da bilgisayarda düşünme işlemine karşılık gelen bir model yaratırken bu ilişkilerden faydalanmamız gerektiğini benimseriz.

Görüldüğü gibi her bir disiplin kendi çerçevesinde sorunu ele almakla kalmıyor, çözümlerini belirli VARSAYIMLAR,BİLGİLER üzerine kuruyor. VARSAYIM ve BAKIŞ AÇISI birbiriyle ilişkilidir.

BİLGİ/KANIT/VERİ

Makinelerin düşünebildiğini iddia ediyoruz. Peki bunu neye dayanarak yapıyoruz? Hatırlarsanız giriş bölümünde buharlı makinelerden elektronik dünyasına doğru bir gelişmeden bahsettim. Aynı zamanda beyin üzerine yapılmış ciddi araştırmalar var. Bu araştırmalar düşünme, dil anlama, problem çözme gibi önemli bilişsel süreçlerin nasıl gerçekleştiğini içermektedir. Bu çalışmalar belirli matematiksel formüllerle ifade edilebilir durumdadır. Keza yapay sinir ağları beynin nörolojik yapısından esinlenerek ortaya atılmış bir algoritmik modeldir. Bir taraftan da mekatronikteki gelişmeler ile insan organlarına benzer organlara sahip robotlar üretiliyor ve bunlar üretim hatlarına dahil ediliyor. Sadece insan değil hayvan zekası üzerinde de çeşitli veriler ve araştırmalar mevcuttur.Tüm bu çalışmaları ve hatta daha fazlasını belirli kavramlar ve teoriler çerçevesinde modeller ortaya koyabiliriz.

KAVRAM/GÖRÜŞLER

Bu aşamada, önceki adımda elde ettiğimiz verileri kavramsallaştırıp belirli teorilerle ortaya “Düşünen makine modelleri” koyarız. Kullanacağız kavram ve görüşler bilgisayar bilimlerinden gelecektir. Tabii kendimiz de kavramsallaştırma yoluna gidebiliriz. Algoritma, kişisel bilgisayarlar, kuantum bilgisayarlar, sistem teorisinden vs..yararlanırız. Burada model dediğimiz şey aslında, elde ettiğimiz verileri kullanarak amacımıza nasıl ulaşacağımız belirleyen bir yoldur.

ÇIKARIMLAR ve YORUM

‘Elde ettiğimiz veriler neticesinde düşünme işlemi dile dayanmaktadır. Dil ise beynin şu şu şu özellikleri ile ortaya çıkmaktadır. Bu yapı ise sinir ağları ile beyinde tutulur. Dil kendisini cümleler, cümleler ise kavramların birbirine eklemlenmesiyle oluşur. Kavramlar ise özellik ve fonksiyonlardan oluşan varlıklardır.Özellik ve fonksiyonlar da şöyle şöyle bilgisayarda temsil edilebilir’ gibi verilere/kanıtlara dayanarak bir model oluşturuyorsak “Güçlü Yapay Zeka”nın savunucusu durumunda oluruz. Bu durumda da tüm çalışmalarımız dil anlayan bir sistem geliştirmeye odaklanır.

Tabii başka fikirler de mevcuttur. Örneğin bazı yapay zeka araştırmacıları/filozoflar insan seviyesinde zekanın mümkün olamayacağını da savunabilir mevcut bilgilerden /araştırmalardan yola çıkarak. Robotların yaptığı işi anlamadıklarını, belirli algoritmalara dayandıklarını iddia edip önemli olanın bilgisayarlara zor problemleri çözdürmek olduğunu iddia ederler. Bu durumda da “Zayıf Yapay Zeka”nın savunucusu olurlar.

İMA ve SONUÇLAR

Düşünme sadece belirli kavramları, varsayımları, bilgi ve bakış açılarını birbirine eklemleyip bir sonuca varmaktan ibaret değildir. Düşünenin bir sorumluluğu, düşüncenin ise sonuçları vardır. Tüm bu mantıksal süreç bizi nereye getirdi? Biz “Güçlü Yapay Zeka”yı savunuyorsak ve bu alanda araştırmalarımızı yapıyorsak bunun sonuçları neler olabilir? Olumlu ve olumsuz yanları neler olacaktır? İstediği her şeyi öğrenebilecek midir? Ya da çocuk sahibi olmak isteyecek midir? Tembellik yapıp işini askıya alır mı?

KAYNAKLAR

  • ELEŞTİREL DÜŞÜNME ve DİSİPLİNLERARASI ELEŞTİREL DÜŞÜNME REHBERİ / Gearld M. Nosich
Advertisements

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…)