
Rekürsif fonksiyonlar, kısaca kendi kendini oluşturan fonksiyonları betimler. Rekürsiyon aslında problem çözme stratejilerinden bir tanesidir. Prensip olarak genel bir sorunu daha küçük ve basit soruna indirgeyerek sorun çözme yöntemidir. Program yazılımcılar tarafından çok zevkle kullanılan yöntem çoğu problemlere de ışık tutar. Prensip olarak rekürsif fonksiyonlar şöyle tanımlanır: Bir fonsiyonun f(n+1) değeri ondan önceki hesaplanmış f(n), f(n-1), … değerleri tarafından belirlenir. Bu tür fonksiyonlar kendi başlarına bırakılırsa sonsuza kadar devam ederler. Bu nedenle önceden belirlenmiş sınırlar ulaşıldığında rekürsif fonksiyonu hesabı sonlandırır.
Fibonaccı serisi klasik rekürsif bir fonksiyondur. Bilinen sayılar şöyledir:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,….
Başlangıç değerleri ile fib(0)=0 ve fib(1)=1 fibonaccı serisi için şöyle bir fonksiyon verilebilir:
fib(n)=fib(n-1)+fib(n-2), n>1.
Örnek fib(3):
fib(2)=fib(1)+fib(0)=1+0;
fib(3)=fib(2)+fib(1)=1+1=2;
fib(4)=fib(3)+fib(2)=2+1=3
fib(5)=fib(4)+fib(3)=3+2=5;
Rekürsif fonksiyonların önemi fraktal fonsiyonlarda da görülmektedir. Mesela Pitagoras ağacı diye de anlandırılan ağaç rekürsif yapılmıştır.
Bu resimlere baktığımızda şöyle yargıya varmak pek de şaşırtıcı olmamalı: büyük problemler küçük problemlere indirgenebiliyor. Daha da ilginç olan taraf iterasyon ilerledikçe öne serilen resim o kadar netleşiyor ki bu resmin kendi kendi tarafından oluşacağına inanmak zorlaşıyor. Bu resim mutlaka bir “ressam” tarafından yapılmış olmalı diyoruz.
Hayata baktığımızda da iterasyonun başlangıcı sadece bir döllenmiş yumartadır. Ondan sonra yumurta bölünüyor ve bölünün hücreler de bölünüyor. En kısa zamanda esrarengiz bir hal alıyor. Hücrelerdeki bölünme olayı yukardaki anlatılan rekürşif olaydan biraz daha karmaşık, çünkü hücreler bulunduğu bölgelerden de geri bildirim alarak kaotik bir bölünme sergilemiyorlar. O aldıkları enformasyonlarla hangi genlerin açılıp kapanacağını öğreniyorlar, bu da bölünmeye yön veriyor.
Biliyorum burada çok eksikler var ama sizin de katkınız ile eksik yerleri tamamlayabiliriz.
Güzel konu. Rekürsif fonksiyonlar benim de ilgimi çeker. Özellikle yapay zeka uygulamalarında bolca kullanılır.
Bunu teorileştirmek* lazım. Yani yaşama uygulama açısından. 🙂
Yasama nasil uygulanir? Veya bu teori neyi aciklayabilir? Spekülasyon yapmak gerekirse bu teori doganin pek de unutkan olmadigini, yani herseyin tesadüf olmadigini cok net bir sekilde gösteriyor. Bir önceki olgu belirlenmis yöntemlerle yeni olgular üretmek icin gerekli. Eger yukardaki bir agaci yapmak icin tesadüfe basvurulmus olsaydi o agacin olma olasiligi gercekten cok düsük olurdu. Ama tabiat öyle degil. Bir kere basarili denedigi seyi unutmuyor ve baska olgular icin de kullaniyor. Tabiat bir ev insaa eder gibi bodrum katindan baslayarak yukari katlara cikiyor.
Prosesin bitmis halini gören biri yapim algoritmasini bilmedigi icin ona “mükemmel yapim” diyecektir. Cünkü o icindeki gercek mekanizmayi algilayamamaktadir. O halde canli varligin olusmasi icin gerekli bazi mekanizmalari tespit etmek hayatin var olabilecegi konusunda büyük ip uclari verebiliyor. Bunlardan biri su ve yeterince enerji birlestigi zaman canli bir varligin olusma olasiligi cok yüksek. Bu nedenle zaten uzayda su araniyor.
Rekürsif fonksiyonlar, kendine göndermeli olarak anılabilir. Aslında bu da bütün paradoksların sebebidir. Belki mantık yapımızın kendisi de rekürsif.
Söz ettiginiz sey Russell paradoxu olarak da biliniyor galiba.
Sadece o değil. Paradoks olarak bilinen her cümle aslında kendine göndermeyi içerir.
Paradokslar başlığında biraz değinmiştik.
Evet, kendine gönderme paradox olusturuyor, mesela bir Gritlinin
“Her Gritli yalan söyler.”
demesi gibi.
xenix, rekürsiyonun yapay zekayla nasıl bi bağlantısı var açabilir misin biraz?
Yapay zeka denildiginde bilisim agindan bahsedilir. Bu aglarin özelligi önceden hic bir bilginin yüklenmemis olmasi. Kendi bilgilerini deneyimleyerek ediniyorlar. Ilk yapimi “bos” sayilan aglara test sinyalleri verilerek o sinyallerden birseyler ögrenilmesi saglaniyor. Bu ögrenme kendi kendisini yenileyerek gerceklesiyor. Baska bir deyimle ögrenme geri bildirim ile gerceklesiyor. Agdan gecen test sinyali tekrar basa dönüyor (rekürsiyon) ve ag noktasinin degerini degistiriyor.
Bunu bir örnek ile söyle anlatabiliriz. Bir evdeki kalörifer sistemini düsünün. Kalöferin termostatini acmadan önce oda isisi ile termostat isisi dengededir. Termostatin ayari degistiginde odanin isisini ölcer ve odanin o yeni ayarlanan isiya kadar isinmasini saglar. Ayar derecesi gectiginde geri bildirim yaparak isinin artmasini engeller. Ve dogal olarak odanin isisi da düsmeye baslar. Odanin isisi belli bir dereceye düstükten sonra termostat tekrar devreye girer ve odanin isisini yükseltir. Ve bu böyle devam eder gider.
Termostat “akilli”dir, cünkü o odanin isisini deneyerek ölcmesini ögreniyor.
Benlik dediğimiz şey zihnin kendine göndermeli fonksiyonundan başka bir şey değildir.
Yapay zeka algoritmaları örülürken fonksiyonları denetleyen fonksiyonlar, hatta kendini denetleyen (gerekirse durduran) fonksiyonlar yazarsınız devamlı. Yoksa en basit işlemlerde bile döngülere kapılıp program kilitlenir. İnsan zihnin öyle bir özelliği var. Mesela bir paradoksla karşılaştığınızda bunu sonsuza kadar devam ettirmezsiniz.
Bunun için mesela [[Mu Problemi]]ne bakabilirsiniz.
xenix benlik hakkındaki yorumunu açar mısın? nedemek zihnin kendine göndermeli fonksiyonu?
Bizim benlik dediğimiz şey aslında total zihniminizin içinde bir kendini farketme fonksiyonudur. Yani bir bilgisayar programı yazıyorsun, içine bir de fonksiyon ekliyorsun. Bu fonksiyon tüm programı denetleyip kontrol ediyor. Yani kendisinin farkına varıyor gibi diyebiliriz.
Ama tehlikeli olan kısım, o fonksiyon kendisini farklı bir şey (ya da programın dışında bir şey) sanmaya başlıyor. Hatta kendi farkındalığının bilgisayar programından bağımsız olduğunu da sanmaya başlayabilir. Daha da kötüsü tüm programı kendisi sanmasıdır ama.
Termostat akıllı değildir hiçbirşey öğrenmez ,hatta zamanla laçka olduğu için (özellikle eski bimetal termostatlarda)kullanıcı tarafından set değerinin update edilmesi gerekir . ben de sizin gibi düşünürdüm eskiden , ama otomasyon sistemleri ile daha yakından uğraştıkça zeka-otomasyon benzetmesinin çok kaba ve yanlış olduğunu düşünmeye başladım . otomasyon basit feedback devrelerinin organizasyonundan ibarettir , beyincik ve omurilik benzetilebilir ama beyin ve zeka değil.
@Stalker,
termostatin zekaya sahip oldugundan bahsetmedim zaten. Yapay zekadan bahsedilince de zekadan bahsedilmiyor. Iki konumda da “kendi basina ögrenmekten” bahsediliyor.
Bir aga girdi veriyorsunuz, agin cikisi sizin beklentinizle uyusmuyorsa ag cikisi beklenti ile uyusuncaya kadar ag degerleri degistiriliyor. Bu degistirmeye kendi kendine ögrenme deniyor. Beyinde de ayni islemler görüldügü icin, yani nöronlar da kendi kendilerini feedbak ile degistirdikleri icin yapay zeka denilen sey beyin ögrenmeci icin sadece bir modeldir.
Tamam ben de o anlamda aldım , termostat hiçbirşey öğrenmez aksine giderek bozulur(unutur).
Benim vurgulaya çalıştığım yapay zeka için otomasyon sistemlerinin yetersiz bir modelleme olduğu .
siz “ag ogrenmesinden” ne anliyorsunuz?
Pek birşey anlamıyorum henüz, ama müdahale etme nedenim otomasyon sistemlerini bilmemdir . Yanlış örnek üzerinden gidilmesi çıkmaza sürükler diye bu müdahaleye gerek gördüm idi .
Otomasyon sistemleri rekürsif (bu tabiri yeni öğreniyorum) değildir . Bir amaca yönelik programlanmıştır, programcı değiştirmedikçe aynı kalır .
Bir parametrenin set değerinden sapması durumunda motor türünden elmanlar parametreyi set değerine getirecek değişmeleri(hareketleri)yapar . ortada hiç bir öğrenme gelişme yoktur.
Enstrümanlardaki eskimeler nedeni ile bozulmaya gittikçe dış müdahalelerle tamir edilir .
Konu ilginç izliyorum ve de amacım limon sıkmak değildi .
Geri bildirime ne diyorsunuz? Su sozlerinizle siz zaten rekursiyonu betimlemissiniz:
Parametreyi set değerine getirmek öğrenmekten başka ne olabilir? Bunu dıştan bir müdahale ile yapmıyor, bunu kendi kendine yapıyor. Set değeri tutuncaya kadar o sistem kendi kendini ayarlıyor, yani öğreniyor.
Turan: Parametreyi set değerine getirmek öğrenmekten başka ne olabilir? diyorsun.
Aslında bu bir etki-tepki mekanizmasıdır ve öğrenmek bu kadar basit değildir. Mekanik sistemler etkilere tepki vererek sistemi dengede tutabilirler ama öğrenmek demek anlam vermek hatta anlam üretmek demektir. Bir olayın nedenini sorgulamak öğrenmenin temelidir. Bilim “neden?” diye sormaz “nasıl?” diye sorar.
Bir termostat örneğine dönersek, termostat sıcaklık neden arttı? veya neden azaldı? diye sormaz. Saptanmış olan sıcaklığa nasıl dönerim? diye sorar ve gereken değişikliği yapar. İnsan ise meraklı bir varlıktır ve “neden?” sorusu sayesinde beynini geliştirmiştir.
Önemli sorulardan biri “İnsan neden dünyada var?” bu soruyu bilim sormaz. “İnsan nasıl oluştu?” sorusunu sorar ve genetik bilimi ile veya doğa olaylarıyla açıklama getirir. İnsanın dünyadaki varlığı sırf tesadüf müdür? Bu yanıt “neden?” sorusunu karşılıyor mu? Canlılar, örneğin, neden var? Doğa yasaları neden var? veya Rekürsiyon neden var? asıl bu sorular önemli. Yanıtlayan varsa memnun olurum.
Sain Bilgisev, söyledikleriniz bir insan icin geçerlidir. Siz anlam üretmekten, bir olayın nedenini sorgulamaktan bahsediyorsunuz. Siz insan nezdinde öğrenmenin ne olduğunu açıklıyorsunuz. Haklısınız.
Ama AI (artificial intelligence) denen biim dalı yeni sayılır. Olay basitlestirilmezse bu sorunun altından hiç çıkamazsınız. O halde AI ile ilgilenenler bilinç olayını bir kenara atmışlardır. Onlar icin öğrenmek sadece deneyimden kendi strüktürunu değiştirmektir. Eğer bir ağ deneyimleyerek kendi kendini beklentilere göre degistirebiliyorsa buna basitçe “o ağ öğreniyor” deniyor.
Tabii ki o ağın felsefi sorunları çözemediği biliniyor. IBM’in ürettiği deep blue bilgisayarı da aynı şekilde “programlanmistir”. Ona santrac oyunu öğretmek icin o güne kadar oynanmış partiler verilmiştir. O edindiği bilgilerden gore çıkarak yeni partilere çözüm bulmuştur, hatta Kasparov’u bile yenmistir.
Şimdi bu bilgisayar neyi sorgulayabilmistir? Hiç birşeyi. Öğrenmeden bahsederken yapay maddeleri ve canlıları ayırt etmek lazım.
Amerikalılar dünyanın en hızlı ve en büyük hafızalı bilgisayarını yapmışlar. Tüm dünyadan insanları çağırıp “Bu bilgisayara istediğinizi sorun sizi yanıtlar. Çünkü herşeyi biliyor” demişler. Birçok uzman kendi konularında zor sorular sormuşlar ve bilgisayar şıp diye anında yanıtı vermiş.
Sıra bizim Temel’e gelmiş ve Temel sorusunu bir kâğıda yazıp bilgisayara sormuş. Bilgisayar başlamış çalışmaya. Aradan saatler geçmiş hala yanıt gelmemiş. Hatta bilgisayardan dumanlar çıkmaya başlamış. Bilgisayarı programlayanlar telaşa kapılıp Temel’e ne sorduğunu sormuşlar. Temel “Sadece ne var ne yok, diye sordum” demiş.
İşte böyle. En bilgili bilgisayar veya AI bile insan karşısında aciz kalır. Gelsin de bana bir bilgisayar duygular nedir diye açıklasın. O zaman belki kabul ederim. Santranç oynaması önemli değil. Ben de saniyede 1,000,000 hamle düşünebilsem onu rahatça yenebilirim. Kasparov sadece 10 hamle ilerisini düşünüyor ama başabaş oynuyor ve birçok kere berabere kaldı.
Ögrenmenin cok cesitli yönleri vardir, bir seyler implizit ve explizit ögrenilebilir. Implizit ögrenme seklinde ögrenilen seyler bilince intikal etmezler. Explizit ögrenme sekli ise sözel betimlenebilir ögrenmektir.
Literatürde H.M. diye de bilinen bir hastanin epilepsisini önlemek icin beyninin Hippokampus bölgesi ameliyatla alinmis. Bu hasta o günden ihtibaren hic bir yeni enformasyon aklinda tutamiyor. Hastaneye her gitmesinde doktorlarla yeni tanismis gibi davraniyor ve ayni okudugu kitabi yeni okuyormuscasina algiliyor.
Bu böyle olmasina ragmen Hanoi-Kulesi diye de bilinen bir oyunu cok kolaylikla ögrenip bir kac gün sonra da tekrarlayabilmistir.
Bu sunu gösteriyor, bazi ögrenme sekilleri gercekten bilince ihtiyaci vardir, bazilari ise bilince intikal etmeden ögrenilebiliyor.
Bunu nöronal ag teorisine uygularsak Hepp kurallari aslinda ögrenmek icin ip ucu veriyor. Ayni anda “atesleyen” nöronlar birbirleri ile baglaniyorlar (“what fires together, wires together”).
Duygu ve hisler bilincli ögrenmeyi sadece tetiklerler, onlar ögrenmenin olmazsa olmazlari degildirler. Diger üstüne bastiginiz sorun “kimin daha fazla bildigi” sorunu degildir. Milyonlarca yil evrim gecirmis bir canli ile 50-60 yil ömrü olan bir olguyu birbiri ile kiyaslamak imkansizdir. Ama AI ögrenmeyi anlamak icin önemli katkida bulunmustur.
xenix arkadaş şöyle yazmış;
“Bizim benlik dediğimiz şey aslında total zihniminizin içinde bir kendini farketme fonksiyonudur”
ben de (eleştirel değil) soruyorum;
bu kadar emin olduğunuza göre, insan zihni yazıldı mı demek istiyorsunuz? “rekürsiyon fonksiyonlarını” sonuçta
zihin yazıyor. Zihini de birileri mi yazıyor.
Elbette yazılıyor. Çevre, duyular, etkileşim, toplum vs tarafından yazılır insan zihni.
Bu arada termostat örneği rekürsif fonksiyonlara uymuyor. Sadece etki-tepki değil, kendine de gönderme yapması lazım rekürsif olabilmesi için.
Hakli olabilirsin. Cünkü termostat su asagidaki sekil 1) de gsöterildigi gibi calisiyor, oysa rekürsif sistem sekil 2) deki gibi olmasi gerekiyordu. Uyarin icin tesekkürler.
xenix bu durumda bizim benliğimiz yani bilincimiz aslında bir büyük bir programın bir yan ürünü ve ölüm bu yan programın çökmesi mi oluyor?
Ölüm, bedenin çökmesi. Donanım gidince program falan kalmıyor zaten üstünde. 🙂
xenix matematik john nash in dediği gibi adaleti sağlar mı:?çünkü bu dediğin adalet algısıyla çelişir insan bilinci herşeydir diyemez miyiz?
Adaleti insan bilincine veya tanrıya bırakınca sağlanamacağı kesindir. Bu yüzden matematik, adaleti sağlama konusunda diğerlerinden çok daha tutarlı durumdadır.
xenix rekürsiyon ile yapay zekalı insan gibi seri hareket edebilen düşünebilen makinalar yapabilir miyiz?
Sadece rekürsiyon yetmez bunun için. Etki-tepki, duyu, algılama gibi donanımlar da önemli. Ne kadar çok bilgi girişi olursa o kadar çok bilgi işlenecektir ve daha insansı davranan makineler yapılacaktır.
Ama asıl sorun her zaman olduğu gibi bir makine ne kadar insansı davranırsa davransın onun yine insan hakları ile aynı haklara sahip olup olmayacağıdır.
Yani ileride bir robot çıkıp, “ben hissediyorum, düşünüyorum, algılıyorum, seviyorum, acı çekiyorum, kendimin farkındayım, bilinçliyim, aşık oldum” gibi cümleler kurduğunda ona inanacak mısınız?
xenix, biyomekanik bir yapıda olursa inanırım..ya gerçektir yada kandırıcak kadar zekidir her iki durumda da insanidir.sen ne düşünüyorsun?
xenix?
Haklısın, katılıyorum.
Rekürsiyonun cok farkli bir boyutu da vardir. Iletisim konusunda empati ile cok yakindan bir baglantisi vardir. Empati kendinizi karsinizdakinin yerine koymaktir. Bu durumda, eger o sistemde kisir döngüyü durdurma kriteri yok ise, karar alinamiyacaktir. Söyle bir örnek ele alalim. Siz mesela bir yere gitmek istersiniz ama oraya gittiginiz zaman esinizin veya annenizin huzursuz oldugunu fark edersiniz. Huzursuz olmamak icin cevrenizden gelen o tepkilere kulak verirsiniz ve o yere gitmekten vaz gecersiniz. Kulak verdiginizde o sistem kendi icinde dönecektir. Siz istediginiz gibi karar veremiyeceksiniz. Iletisimde kisir döngüyü bozacak kriterlerin olmamasi özgür karar almayi önleyecektir.