şükela:  tümü | bugün
  • "general intelligence is the ability to solve a variety of complex problems in a variety of complex environments." diyor ben grotzel. yapay zeka ve benzeri konularda kavramlar henüz tam anlamı ile yerine oturmamış olsa da, bir satranç programı için yapay zeka terimini kullanır ve satranç programının go oynayamayacagını hesaba katar isek değişen karmaşık ortamlardaki karmaşık problemleri çözen yapay zekaya genel yapay zeka diyebiliriz.

    bu hadise ile ugraşan insanların bir de enstitüsü var. gerçi bu son krizden sonra kepenk kapatma ihtimalleri oldugunu düsünsem de barrack ın başkan olması ile umutlarımız yeşerdi.

    (bkz: yapay zihin)
    bir de şöyle bir kitap var
    http://www.springer.com/…ial/book/978-3-540-23733-4
  • simdi bilgisayarda kod neyim ugrasirken genel zeka yapimina giden yolda onemli bir adim olabilecek bir fikir geldi aklima. daha once yapilmis mi, baska birisinin aklina da gelmis mi bilmiyorum. (biliyorsaniz ya ayar verip ya da mesaj atip soyleyin ben de ogreneyim- gerci douglas hofstadter bunu mutlaka dusunmustur)

    simdi fikre gelelim

    oyle bir programlama dili olsun ki, bu programlama dili normal bir programlama dilinin yapabildigigi seylerin yaninda sunlari da yapabilsin;

    1. yazilan program compile edildiginde kendisi yeni compile edilmeye hazir text dosyalari yaratabilsin.

    misal programimizin dosya uzantisi .agi olsun (konuyu basliga iste boyle baglarim)

    simdi agi uzantili compile edilebilir test1.agi isimli dosyada su satirlar yazabilsin

    create a file named 'test2.agi'
    which includes
    for i=3:10
    create a file named 'test(i).agi'
    end

    bir baska deyisle program kendi benzeri programlari yaratmaya muktedir olsun. bu durumda text1.agi text2.agi nin meta programi olmus olur. program yazabilen bir program

    2. yazilan program calistirildiginda kendi benzerlerini editleyebilsin
    ornegin bu kez elimizde 2 farkli dosya olsun; test1.agi test2.agi

    test2.agi inin icinde atiyorum 20. satirda su yaziyor olsun
    print 'hello world 1'

    test1.agi nin icinde de su yazabilsin

    search the file named 'text2.agi'
    replace the text "print 'hello world (i)'" with "print 'hello world (i+1)'"

    text1.agi yi calistirinca text2.agi nin 20. satiri print 'hello world 2' ye donussun

    3. bu zaten diger programlama dillerinde de olan bir ozellik ama yazmak istiyorum
    yazilan program calistiginda kendi benzeri programlari calistirabilsin

    gene elimizde iki farkli dosya olsun text1.agi ve text2.agi

    text 1 agi nin icinde soyle bir komut olabilsin
    run text2.agi

    4 benim icin en onemlisi program calistiginda kendisini cagirabilsin ve editleyebilsin

    misal soyle bir dongu yazmak mumkun olsun

    test1. agi inin icinde

    i=1
    print 'hello world (i)'
    search the file named 'text1.agi'
    replace the text "print 'hello world (i)'" with "print 'hello world (i+1)'"
    run 'text1.agi'
    stop if i=100

    yazabilsin mesela

    simdi bu kodun cikti olarak for loopundan bir farki olmasa da, bu kod sistemin kendi kendisini refere edip editleyebilmesine olanak saglamasi yuzunden for loopdan cok daha derin bir felsefi anlam barindiriyor

    5. (bu opsiyonel cunku zannimca programin isletim sistemi duzeyinde yetkileri olmasini gerektiriyor)

    program kendisini meta ozelliklerini editleyebilsin. bu ornekte dosya adi ve icinde bulundugu folder.

    misal general_folder>folder1 isimli folderin icindeki test1.agi de sunlar yazabilsin

    i=# in the own file name
    j=# in the own folder name
    create a folder 'general_folder>folder(i+1)'
    move general_folder>folder(j)>test(i).agi to general_folder>folder(j+1)>test(i)
    rename general_folder>folder(j+1)>test(i).agi as general_folder>folder(j+1)>test(i+1).agi
    delete general_folder>folder(j)

    boyle bir programda programlama yaparken matrixler arrayler olusturup onlarla islemler yapabildigimiz gibi *.agi dosyalari olusturup onlarla da islemler yapabiliriz.
  • 2017'de bu kadar vurgulanan bir konu değildi machine learning ve artificial intelligence dünyasında. sanırım gerekli sermaye, insan zekası ve zamanı insanın cyborglaşma senaryosuna yatırma kararı alındı bir yerlerde ki 2018 başından beri her yerde bu konuda paylaşılmış yazılar çıkıyor karşıma.
  • toplanın beyler, biraz yapay zeka tarihi konuşalım.

    çok geriye gitmeden, kalp kırmadan, incitmeden leibniz ile başlayalım. leibniz 1692 civarında olması lazım bir hesap makinesi yapıyor, o dönemler meşhurlaşmaya başlamış bir iş zaten hesap makinesi yapmak. makineyi yaptıktan sonra diyor ki bu makine ile spesifik bazı problemleri çözebiliyoruz, peki tüm problemleri çözemesek bile üzerlerinde konuşabileceğimiz bir dil mümkün müdür?

    aynı leibniz bir de şunu fark ediyor, bir kağıt üzerine saçılmış mürekkep lekelerini modelleyebiliriz ne karmaşıklıkta olurlarsa olsunlar. ancak 101 tane mürekkep lekesini 100. dereceden fonksiyonlarla modellemek var, 2. dereceden veya lineer denklemlerle modellemek var. leibniz diyor ki ilkinin hiçbir önemi yok, o sadece her şeyin matematiğinin yapılabileceğine dair bir çıkarım. asıl önemli olan ise ikincisidir. buna sonra yeniden değineceğiz kolmogorov ve chaitlin konuşurken.

    neyse, leibniz'in sorduğu ilk soruya cevaplar aramaya devam ediyor insanlık. sadece logic değil logic of logic çalışmaya başlıyorlar 19. yüzyılda. yani bir şeyler bulmaya değil, bir şeyler bulmaya yarayan metotları bulmaya uğraşıyor bir grup insan. logic/context of discovery ve justification birbirinden ayrılmaya başlıyor.

    bu dönemlerin sonuna doğru, 1903 falan olması lazım, hilbert aynı soruyu alıp biraz şekil verip dönemin matematikçilerine soruyor. bir problemin çözümü olup olmadığını bilmenin bir yolu var mıdır? bu soru da tabii ki zaman içinde daha ufak sorulara bölünüyor, farklı alanlarda farklı isimlerle çalışılıyor. mesela soruya en net cevap olan turing'in 1936'daki makalesi doğrudan mekanik, inşacı bir matematik sistemi üreterek soruya hayır cevabını veriyor. halting problem, np vs p, uncomputable numbers vs aslında temelde hep aynı problem.

    bizim bugün yapay zeka olarak bildiğimiz alan ise turing'in, gödel'in vs çalışmalarından sonra ortaya çıkmaya başlıyor ve bir anlamda oradaki felsefi soruları bir kenara bırakıp pratik işlerle uğraşmaya başlıyor. bu pratiğe kayma kısa vadede iyi sonuçlar verirken uzun vadede boka batıyor. şimdi biraz bunu irdeleyelim.

    ilk yapay zeka çalışmaları ordunun, devletin, uzay çalışmalarının işlerini kolaylaştırmak ekseninde başlıyor. bunun sebebi de aslında çok açık, para orada. para olunca da dünyada 100 tane bilgisayar dahi yokken size 10 bilgisayarlı lab kurabiliyorlar.

    bu dönemde çıkan yapay zeka çözümleri genelde indirgemeci, soyut ve sembolik. problemleri ağaç veya graph'ta yapılan bir aramaya dönüştürüyorlar. bazısı bunu dijkstra gibi doğrudan geometrik yapıyor bazısı da simon ve newell gibi daha fonksiyonel yapıyor ama alttaki mantık aynı.

    özellikle simon ve newell'ın çalışmaları alıp yürüyor. genelde spesifik problemler üzerinde çalışıp onlara uygun algoritmalar geliştirip makinelerin bu problemleri çözmesi sağlanıyor. adı general problem solver olsa da altta olan iş bilinen bir problemin çok iyi sembolize edilip makineye verilmesi, makine ise bu noktadan itibaren sonuca ulaşana kadar recursive olarak alt-problemler tanımlıyor. en sonunda tanımladığı alt-problemler yeterince basitleştiğinde cevapları geriye doğru yerleştirmeye başlıyor. aynı dönemden strips var mesela (stanford research institute problem solver), kendi üzerindeki meta dile uygun yazdığını fonksiyonel sistemlerde cevaplar arıyor probleminize. ancak hemen eksikleri gedikleri ortaya çıkıyor bu anlayışların. bir tanesi sussman anomali mesela.

    başka bir yerde çıkan ama aslında aynı yere göndermede bulunan bir diğer problem de "frame" problemi*. sorun kısaca şu, benim yapay zeka ajanım ne yaptığında, etrafta ne değişiyor. mesela bir adım attığında tüm haritayı yeniden oluşturmaya gerek var mı? ya da duvar boyama operatörünü kullanınca camlar değişiyor mu? fark ediyorlar ki bunun sonu yok. bu yüzden çok kısıtlı, iyi tanımlanmış senaryolar için yapay zekalar geliştirilebileceklerini fark etmeye başlıyorlar.

    bu farkındalık aslında generalist (hard) ai anlayışından, specialized (soft) ai anlayışına geçiş olarak yorumlanıyor. yani insan gibi düşünen sistem bizim neyimize, yakıt miktarı ve motor hızından kaç saatlik yakıt kaldığını tahmin eden basit işler yapalım biz diyorlar.

    1980'lere kadar böyle devam ediyor. ortada bir sürü laf salatası var ancak yapay zeka anlamında pek bir şey yok o döneme gelindiğinde. mühendisin binlerce veriyi sisteme girmesi sonrası, sistemin o verilere binaen arama yapması o dönemdeki çoğu sistem. ya da hanoi kuleleri gibi basit bir algoritmanın binlerce kez tekrarlanmasıyla sorunların çözülmesi.

    80'lerde ise sinir hücrelerine benzer sistemlerle, daha dağıtık, daha az sembolik ai ortaya çıkıyor. daha az sembolik veya semantik olarak yorumlanamaz demek başındaki araştırmacı, mühendis sistemin ne aşamada ne yaptığını pek de bilmiyor demek. aslında connectionist denilen bu yaklaşımın öncüleri 1930-40'lardaki sibernetikçiler. sibernetik diyince çok teknolojik, dijital, soğuk bir şeymiş gibi geliyor ancak walter pitts, gordon pask gibi adamlar doğaya, bitkilere, sinir hücrelerine, basit sistemlerin hareketlerine bakarak ortaya atıyorlar bu teorileri. connectionist yaklaşımların iş yapabileceğine dair ilk modeller de bu adamlardan çıkıyor.

    sonrasında, zaman içinde, öğrenme kuralları* güncelleniyor, matematik* iyileştiriliyor ve seksenlerde connectionist ai yükselişe geçiyor. dil, görmek, işitmek gibi alanlarda bir sürü işleyen model geliştiriliyor. bu modellerin çoğu 10 yıl öncesinin sembolik yaklaşımıyla imkansız olan modeller.

    bu dönemde ai sembollere, soyutlamalara yönelmek yerine veriye, dünyaya yöneliyor. insan sesi fonemlere ayrılıp bu makinelere veriliyor mesela, görüntüler doğrudan bu ağların giriş katmanına bağlanıyor. önceki dönemde arada hep insan yoğun olarak vardı. renkleri tanımlıyordu, objeleri tasvir ediyordu, aradaki ilişkileri belirliyordu ve tüm bunlar yapıldıktan sonra yapay zeka diyordu ki x, y, z yap sonuca ulaşırsın.

    son 30 yıl da aslında buradaki gerilim ve metotların iyileştirilmesi ekseninde geçti diyebiliriz. makinelerin gücü arttıkça, daha fazla eğitim verisi toplandıkça ve bunların paylaşımı internet üzerinden kolaylaştıkça bu anlayışın başarabildikleri de hızla arttı. google'ın, microsoft'un, amazon'un, nasa'nın, tesla'nın, nvidia'nın binlerce çözümü, projesi var dileyen incelesin.

    ancak hala sorunlar var, birincisi kimse bu sistemlerin tam olarak neden çalıştıklarını bilmiyor. ikincisi bu sistemler bir çeşit istatistiksel tümevarım yapıyorlar ancak başlangıçta bahsettiğim gibi matematik felsefesine sırt çevirmek burada da bizi engelliyor. sadece tümevarım ile bilgi çıkabilir mi? daha önce görmediği bir probleme yapay zeka sisteminin yaklaşabilmesi için tümevarımın ötesinde bir bilgi edinme şekli de olmalı. bunlar çok derin ve ayrıntılı konular, belki başka zaman konuşuruz detaylarıyla.

    leibniz'in ikinci problemine, yani modellemek nedir problemine geri dönecek olursak da görüyoruz ki o konuda da klasik computational karmaşıklığa (bu sadece zamansal, mekansal karmaşıklıktır) alternatif kolmogorov-chaitlin algoritmik karmaşıklığı ortaya atıyor. yani diyorlar ki bir işlemin karmaşıklığı sadece onu ne kadar kez yaptığın değildir, onun altındaki matematiksel sürecin de bir karmaşıklığı vardır. kaba bir benzeşimle kod uzunluğu gibi düşünebilirsiniz bunu. tek bir for döngüsü 1 milyon kez çalışsa da iç içe yerleştirilmiş iki for döngüsünden daha az karmaşıktır mesela.

    burada aslında çok derin bir şey var ki bence onun üzerine çalışmak np-p problemine de ışık tutacaktır. bir şeyleri modellemek matematiksel olarak her zaman zaten mümkün, ancak bizim ihtiyacımız olan herhangi bir model değil, basit bir model. bize problemin doğasına, derinliğine dair algı verecek bir model. klasik yapay zeka problemi soyut, sembolik parçalara ayırıp onlar arasında işlem yapıyor, bayesçi veya connectionist yapay zeka ise tümevarım yapıyor özetle. bizim ihtiyacımız olan ise her aşamada kendi matematiğini, kendi evren algısını geliştirecek yapay zekalar. denklem belli olduktan sonra onu çözen değil, o denklemi çıkarımsayan makineler lazım bize. gerçek yapay zekadan ancak o noktada bahsedebiliriz.

    bunun nasıl olacağı ile ilgili de bir sürü cevher var aslında özellikle 19. yüzyıldaki matematikçilerden. onu da bilahare dertleşiriz.

    şunlara bakmanızda fayda var:
    (bkz: #65868859)
    (bkz: #74270188)