Archive for the ‘Yapay Zeka’ Category

nedir bu yapay zeka tam olarak? – 1

January 19, 2018

bilgisayar dünyasında bu ara popüler konulardan birisidir yapay zeka. diğer konular ise herkesin malumu : blockchain, bitcoin, iot vs..

yapay zeka yaklaşık 60 yıllık bir alan olmasına rağmen neden şu an bu kadar popüler oldu? böyle bir yazı yazmayı düşündüğümde sadece tarihi ilerlemelerden bahsetmeyi düşünmüştüm ve kolayca açıklayabileceğimi zannediyordum. ama şu an biraz karıştım : ) neden popüler oldu sorusuna cevap verebilmek için bilgisayarların neden ve ne zaman ortaya çıktığını açıklamak gerektiğini farkettim.çünkü, şu anki yapay zeka konusunda genel anlayış “bilgisayar sistemlerini programlama” şeklindedir.

yapay zekayı ortaya çıkaran süreci bilimsel ve felsefi süreç olarak inceleyebiliriz.

bilimsel süreçten başlayacak olursak bilgisayar bilimleri ilk karşımıza çıkan alan olur. bu alan çok genç bir bilim dalıdır. matematiğin binlerce yıllık geçmişine rağmen bilgiyar bilimleri hepi topu 70-80 yıllık bir alandır. (tabii, öklid’in ya da harezmi’nin algoritmalarını saymazsak..) başlangıcı belki hilbert amcaya dayandırabiliriz. bu zat, matematikçiler uğraşsın diye yüklü miktarda soru üretmiştir. bu sorulardan birisi “bilgisayar bilimleri” nin temeli olmuştur. ama öncesinde bir başka amcaya gitmemiz lazım. kim o? tabii ki ailemizin filozofu aristo.

aristo’yla mantıklı bir forma bürünen “mantık bilim”i, ortaçağda bazılarının tekeline düşünce çeşitli bağnazlıklara neden olmuştur. bunun da bazı nedenleri var: aristonun halk arasında bilinmesi,genel bilgilerden/bilinen genel durumlardan hareket etmesi vb.. aristo mantığı tümdengelimci bir mantıktır. o zamanlardaki, biz her şeyi yalayıp yuttuk diyen adamların işine yarayan bir sistemdi. zaman ilerledikçe bazı filozof kardeşlerimiz (deneyci francis bacon, kapı süpürücüsü descartes.. ) bu duruma içlenmiş olsa gerek, gerçek bilgiyi üretmek için nasıl bir yol izlenmesi gerektiğini sorgulamıştır. bu şahıslardan meşhur olanı francis bacon’dır. francis bacon’a göre bilgiye ulaşma yöntemi gözlem yapıp, gözlemin sonuçları ardı ardına koyarak genel bir kurala ulaşmaktır. bilinen örneklerle durumu açıklarsak:

insanlar ölümdür/sokrates de insandır/ o halde sokrates de ölümdür. burada tümdengelimle hareket edip sokrates’in de ölümlü olduğu bilgisine ulaşıyoruz. ama bu bize yeni bir şey öğremiyor aslında. francis bacon ise 1. kuğuya bakıyor beyaz olduğunu görüyor. 2.kuğunun da beyaz… böylece tüm kuğuların beyaz olacağına dair genel bir fikir ortaya atıyor. ya da çeşitli metallerin ısıyla genleştiğini görüp bütün metallerin sıcaklıkla genleştiğini iddia edebiliyor.

bir taraftan da matematikteki ilerlemelerle yani analizdeki konuların keşifleri ile kopernik/galile/newton matematiği doğaya uygulayıp insan zihnini açıyorlardı. sonraki gelen arkadaşlarla da gelişen matematik, bazı matematikçilerin derin sorgulamasına tabi tutuldu. “acaba, kendisinden sayıları inşa edeceğimiz temel aksiyomlar, postulatlar/teoriler ne ola ki?” diye soruyorlardı. bu da yavaştan matematiğin mantıklaşmasına neden oldu. tabii mantık da tersi bir şekilde etkilendi. mantığı da matematikselleştirmeye başladı bazı amcalar. mantığı değişkenlerle, matematikteki gibi fonksiyonlarla ifade etmenin yolları araştırılmaya başlandı. leibniz, boole,russell (uzun bir süreç evet ) vs.. gibi şahsıların çalışmaları araştırılırsa bu durum gözlemlenir.

mantığın matematikleştiği, matematiğin de mantıklaştığı bu güzel dünyada tekrar hilbert amcaya gelelim. bir konferansta dedi ki : “biz çok aştık arkadaşlar. şimdi öyle bir sistem yapalım ki biz bu sisteme önermeleri verelim. eğer önerme doğruysa bunu ispatlayıp matematik teorisi olarak sunsun bize. yok önerme yanlışsa da kardeş bu yanlış desin”. gödel böyle bir sistemin kurulamayacağını ispatladı. gödel’in kuramına göre “her aksiyomatik sistemde doğruluğu ispatlanamayan önermeler vardır”. bunun tefsiri şudur. biz aksiyomatik sistemleri belirli kabullere göre – ki bu kabulleri ispatlamanın bir yolu yoktur- inşa ederiz. buna en güzel ve basit örnek öklid geometrisidir. 3-5 aksiyoma dayanıp üçgen, kare vs.. gibi geometrik şekiller inşa edilir öklid aleminde. bu arada öklid’de de ilginç şeyler var. “iki nokta arasındaki en kısa mesafe doğrudur” kabulunu bazı matematikçiler “iki nokta arasındaki en kısa mesafe eğridir” şeklinde değiştirip öklid-olmayan geometriler keşfediyorlar. (aslında burada bir yaratıcılık tekniğiyle karşı karşıyayız-varsayımları tersine çevirme tekniği) tüm bu durumların farkında olan turing, soruyu biraz değiştirdi: “bir makinemiz olsun. bu makine x adım sonrasında çözümü bulup durabilir mi?” (evet burada da başka bir yaratıcı yaklaşım var. soruyu yeniden ifade etme. bu teknikleri michael michalko kitaplarında işlemektedir.) buna verdiği cevapla turing makinesi,algoritma teorisi ve daha sonraki çalışmalarla evimizdeki bilgisayarlar ortaya çıktı.

turing bir matematikçiydi fakat biyoloji ile de ilgilenmiştir. bu ilgisinden kaynaklanabilir belki, ileride bir soru ortaya attı: “bilgisayarlar düşünebilir mi?” işte bu soru, yapay zeka aleminin “merhaba dünya!”sıdır. turing makalesinde “eğer bir bilgisayar insan gibi davranıyorsa onun zeki olarak kabul edileceğini ” söyledi. aslında buradaki zeka kabulunde psikolojideki davranışçı ekolün hakimeyeti görülmektedir. davranışçılık ekolü diyerek yapay zekanın dayandığı bir diğer bilim dalını da ortaya çıkarmış oluyoruz: psikoloji..

amaa.. bir bilim dalı daha var: sinir bilimi. bu alanda nöron denilen yapıların keşfi yapay zeka araştırmacılarına ilham verdi. nasıl mı? nöronlar farklı bir hesaplama mantığına sahiptir. “nöron” denilen temel birimler birbirlerine ağlarla bağladır. bu ağlar aracılığıyla bilgi aktarılır, güçlendirilir, ya da zayıflatılır. bu da bize dağıtık bilgi işleyen, sayısal/fonksiyon temelli bir hesaplama aracı sağlar. bunun bilgisayarlarda modellenmesiyle öğrenebilen, kümeleme yapabilen sistemler inşa ediliyor. nasıl ki mantık ve matematik arasında karşılıklı bir etkileşim olmuşsa sinir bilimi ve yapay zeka arasında da karşılıklı etkileşimler olmaktadır. yapay zeka alanında “yapay sinir ağları” denilen bir alanı oluşturdu sinir bilimi. yapay zeka ise sinir bilimi etkileyerek, ona dil, felsefe ve bilgisayar bilimlerini eklemleyerek “bilişsel bilim” denilen bir alanı oluşturmuştur. zaten ilk yapay zekacıların ilk bilişsel bilimciler olduğu da kabuller arasındadır: marvin minsky, pitts, hebb bu duruma örnektir. ama yapay sinir ağlarının bugünkü duruma gelmesi çok kolay olmamıştır. (detaylı bilgi için bknz:xor problemi)

peki felsefi bacağında durum nedir? aslında bilgisayarlar aynı zamanda insan düşünce/bilinç/problem çözme gibi bilişsel yetilerini açıklamaya çalışan felsefi ekoller için de deneysel bir alan sağlamaktadır. zaten ilk zamanlarda ortaya atılan bazı algoritmalar aristo/platon gibi filozofların fikirlerinden ortaya çıkmıştır. bunların detayları için yapay zeka’nın kutsal kitaplarından olan “artificial intelligence a modern approach” in ilk bölümlerine bakabilirsiniz.

şimdi biraz günümüz dünyasına yaklaşalım. son 20-10 yıllık dönemde bilgisayar donanımındaki gelişmeler, sinir bilim/psikolojideki gelişmeler,insan beyninin yavaştan anlaşılmaya başlanması, felsefede yeni bakış açılarının (dil/zihin felsefesi) elde edilmesi gibi durumlar var. bir de üstüne bilgideki muazzam artış yani”big data” konusu.. ham bilginin birbirleriyle ilişkilendirilmesi, bunları kullanarak bilinmeyen yeni şeylerin keşfedilmesi gerekiyordu. bu çalışmalar yavaş yavaş olumlu sonuçlar vermeye başlayınca yapay zeka bir nevi kendini ispatlamış oldu. böylece popüler bir duruma geldi.

bu sıkıcı girişten sonra şimdi en sevdiğim konulara gelebiliriz : ). yapay zeka gerçekte nedir? yani hangi gerçeğe göre nedir? hangi bakış açısına göre ne olarak kabul edilmektedir? ama şimdi gelmeyelim bu konulara.

bir sonraki yazıda buna bakacağız yazılara ilişkin kaynakları da paylaşacağım.

yazımı kişisel bir şüpheyle sonlandırmak istiyorum. dil bilim alanı hiç etkili olmadı mı bu ilerlemeye?

iyi günler ve geceler dilerim.

Advertisements

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

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