Sayfalar

10 Temmuz 2012 Salı

COUCHBASE VE .NET


                 COUCHBASE KULLANARAK .NET PROJELERİ GELİŞTİRMEK
      Araştırma konusu olarak verilen Couchbase ile C# arasındaki bağlantıyı sağlamak için çeşitli araştırmalar yaptım.Öncelikle daha önce hiç duymadığım bir konu üzerinde araştırma yapmak beni korkutmuştu. Daha sonra yavaş yavaş araştırmalarıma başladım. Genel olarak araştırmalarımı www.couchbase.com adresinden yola çıkarak yaptım. İlk önce Couchbase’in genel yapısını,sunucusunu,özelliklerini ve bize sağladığı kolaylıkları anlamaya çalıştım. Bir haftalık ön araştırmadan sonra C# ile Couchbase ‘in bağlantısını kurmak için çalıştım. En başta http://www.couchbase.com/develop/net/current adresinden , Couchbase.NET SDK altında bulunan Download Client Library  ile .NET SDK sını indiriyoruz.Daha sonra visual studio ‘u  açıp indirdiğimiz bu SDK dosyalarını referanslar bölümüne eklememiz gerekir.Bu durumları  basamaklar şeklinde aşağıda göstermeye çalışacam.

1-Visual Studio 2010’u açın ve HelloCouchbase(herhangi bir isim verebilirsiniz) adında bir proje oluşturun.
2-File->New->Project
3-C# bölmünü seçip->Windows->Console Application bölümlerini seçiniz
4-Proje isminizi veriniz(Örneğin:HelloCouchBase)

5-Daha sonra oluşturduğunu projenin üstüne gelerek yani HelloCouchBasenin üzerine gelip sağ tıklayın Add->New Folder->Dosya isminizi veriniz(örneğin:Kutuphane)
6-Daha sonra indirdiğiniz .Net SDK klasöründeki .dll,.pdb,.xml uzantılı  dosyaları Kutuphane klasörüne kopyalayın
7-Sonra References bölümüne sağ tıklayın Add references kısmını seçin
8-Çıkan ekranda Browser bölümünü tıklayın ve karşınıza çıkan Enyim.Caching.ve  Couchbase.dll dosyalarına referanslar kısmına ekleyiniz.
9-Sonra Couchbase .NET 4.0 da çalıştığı için Solutions bölümünün altındaki Properties bölümüne çift tıklayın,açılan sayfada Target Framework bölümüne gelerek .NET Framework 4.0 ı seçin.

10-Sonra References kısmına tekrardan sağ tıklayın Add references kısmını seçin,çıkan pencerede .Net kısmını seçin ve "System.Web (Version 4.0.0.0)" referansalar kısmına ekleyiniz.

11-Program.cs altında app.config diye bir bölüm oluşacaktır. App config’ üzerine gelerek tıklayın ve açılan sayfanın içinde aşağıdaki kod bloğunu yapıştırınız.
<?xml version="1.0"?>
<configuration>
 
  <configSections>
    <section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>
  </configSections>
 
  <couchbase>
    <servers bucket="default" bucketPassword="">
      <add uri="http://127.0.0.1:8091/pools/default"/>
    </servers>
  </couchbase>
 
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>
 

12-Program cs sayfasını açarak kod yazmaya başlayabilirsiniz artık.Örnek kod aşağıda verilmiştir;
using System;
using Enyim.Caching.Memcached;
using Couchbase;
 
namespace HelloCouchbase
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var client = new CouchbaseClient())
            {
                String spoon = null;
 
                if ((spoon = client.Get<string>("Spoon")) == null)
                {
                    Console.WriteLine("There is no spoon!");
                    client.Store(StoreMode.Set,
                                 "Spoon",
                                 "Hello, Couchbase!",
                                 TimeSpan.FromMinutes(1));
                }
                else
                {
                    Console.WriteLine(spoon);
                }
            }
        }
    }
}

13-Bu kod bloğunu çalıştırdığınızda ilk önce ekrana alttaki çıktı gelmelidir
There is no spoon!
Press any key to continue

13-Daha sonra tekrar ctrl f5  yaptığınızda ekranda alttaki çıktı gelmelidir.
Hello, Couchbase!
Press any key to continue

14-İşte bu kısımda bir hata ile karşılacaksınız ekranda aşağıdaki çıktı verilmeyecektir.
Hello, Couchbase!
 15-Bunun temel  sebebi ise ip adresi uyuşmazlığıdır. Yaptığım araştırmalar sonucu bu sorunun çözümünü de aşağıda adım adım anlatmaya çalışacağım.
15.1-
C:\Program Files\Couchbase\Server\bin\service_stop.bat
Bu dosyayı açın ve service_stop çalıştırınız.
15.2-Daha sonra
C:\Program Files\Couchbase\Server\bin\service_unregister.bat
Bu dosyayı çalıştırınız.
15.3-  Bunları yaptıktan sonra
 C:\Program Files\Couchbase\Server\bin\service_register.bat

Dosyayısa gelip sağ tıklayın ve düzenle diyerek;
NS_NAME=ns_1@%IP_ADDR%
 Kısmına geliniz ve %IP_ADDR% kısmını silip onun yerine 127.0.0.1 yazınız.Daha sonra
C:\Program Files\Couchbase\Server\bin\service_register.bat
Dosyasını çalıştırınız.

15.4-
C:\Program Files\Couchbase \Server\var\lib\couchbase\mnesia.

Mnesia adlı klasörün içindeki bütün dosyaları siliniz ama kesinlikle bu klasörü de silmeyiniz.
15.5- Son adım olarak da
C:\Program Files\Couchbase\Server\bin\service_start.bat
 Bu dosyayı çalıştırınız.Bunu yaptıktan sonra size yeni bir server sayfası gelecektir ve sizin de tekrardan setup ayarlarını yapmanız gerekecektir.

Couchbase ile program geliştirmeye başladığınız zaman birden çok sunucu kullanmak isteyebilirsiniz. Bunu yapmak için de birkaç işlem yapmanız gerekmektedir.
1-ilk önce  Couchbase sunucuyu açın ve Server Nodes bölümüne gelip tıklayın açılan sayfada Add Server diyerek istediğiniz Server ip adresini giriniz ve serveri  ekleyiniz.


2-Sunucuyu ekledikten sonra açılacak sayfada Rebalance diye bir buton olacaktır ona tıklayın.

Bunu yaptıktan sonra diğer Serveri açın ve giriş yapın.Zaten serveri eklediğiniz zaman eklemiş olduğunuz server setup ayarlarına dönecektir o bölümü tamamlamanız gerekir.Ya da Ana server’in kullanıcı adı ve şifresiyle de diğer Server’ e giriş yapabilirsiniz.Bunu yanında da kod sayfanızı açıp App.config dosyasına da bu serverin Ip adresini eklemeniz gerekecektir.

Daha detaylı bilgiye bu adresten ulaşabilirsiniz.

9 Temmuz 2012 Pazartesi

Couchbase NoSQL Veritabanı



                                       COUCHBASE NOSQL VERİ TABANI

                                                               TARİHÇE
CouchDB  IBM lotus Notes geliştiricisi olan Damien  Katz tarafından 2005 yılı Nisan ayında oluşturulan bir projedir. En başta Damien Katz bu projeyi “büyük ölçekli nesne veritabanı için bir depolama sistemi” olarak tanımladı.Onun temel hedefi büyük bir internet veritabanı yaratmak ve bunu da web uygulamaları üzerinde dizayn etmek olmuştur.Projesini iki yıl boyunca GNU Genel Kamu Lisansı altında bir açık kaynak projesi olarak piyasaya sürdü 2008 şubat ayında bir Apache inkübator projesi oldu lisansı Apache Lisansı olarak değiştirildi.Bundan birkaç ay sonra bir üst proje için mezun olan Damien Katz 2012 nin başlarında Couchbase’e odaklanmak için projeden ayrıldı ve Couchbase geliştirmesine devam etti.

                                                            ÖZELLİKLER
CouchDB kullanımı kolay olan ve tamamen Web i kucaklayan açık bir kaynaktır.CouchDB bir NOSQL veritabanıdır. Veri depolamak için en başta JavaScript kullanılmıştır,daha sonra .NET,PHP,RUBY ,C ve PHYTON dilleri de kullanılmıştır.Bir ilişkisel veritabanı aksine CouchDB veri ve tablolar arasındaki, ilişkileri saklamaz. Bunun yerine her veritabanı bağımsız belgeler topluluğu oluşturur. Her doküman kendi veri ve kendi şemasını tutar ve böylece bir uygulama çoklu verilere ulaşabilir. Örneğin başka bir sunucudaki bir kişinin ceptelefonunda saklanan verilere ulaşmak  gibi. Belgeler metadata ve revizyon gibi bilgileri içerir.CouchDB dosyaları yazdırırken veritabanı kilitlenmesi gibi durumlardan korunmak için MVCC(Multi-Version Concurrency Control) biçimi uygular. Veriler arasındaki çatışmalar bir uygulamanın çözümüne bırakılmıştır. Çatışmaların çözümünde genellikle belgelerin içinde ilk olarak veri birleştirmesi yapılır daha sonra eski veri silinir.

Maddeler halinde genel özellikler:
-Belge Depolama(Document Storage)
CouchDB “belgeler” olarak verileri saklar.Bir veya daha fazla  alan/değer olarak veriler tutulur. Alan değerleri dizeler,numaralar veya tarihler şeklinde olabilir ama bunun yanında da sipariş listeleri ve ilişkisel dizeler de kullanılabilir.CouchDB içindeki her bir belgenin benzersiz bir kimliği(id) vardır ama gerekli belge şemaları yoktur.
-Asit Anlambilim(ACID Semantics)CouchDB Asit Anlambilimi sağlar.Bunu bir formu uygulayarak Çoklu-Model Eşzamanlılık Kontrolü yapar.Bunun anlamı ise CouchDB içsel bir çatışma olmadan yüksek hacimli okuyucuları ve yazıcıları işleyebilir.
-Harita/Görüntüleme ve Dizinleri Azaltmak(Map/Reduce and Views and Indexes)
Depolanan veri kullanıcı görünümleri kullanılarak yapılandırılmıştır.CouchDB içinde her bakış JavaScript donksiyonları tarafından yapılmıştır ve bu bir Haritanın Yarısı/Operasyonların Azaltılması gibi davranabilir.Fonksiyon bir belge alır ve onu döndüren tek bir değere dönüştürür.CouchDB index görünümler olabilir ve bir belgenin eklenmesi ,taşınması ve güncellenmesini sağlar.Kısacası belgeleri güncel olarak tutar.
-Çoğaltma ve Dağıtılmış Mimari(Distributed Architecture with Replication)
CouchDB iki yönde çoğaltma(veya senkronizasyon) ve akıldaki çevrimdışı işlemler olarak tasarlanmıştır. Bunun temel anlamı Çoklu kopyalamalar aynı verilerin kopyalarını oluşturabilir ve daha sonra bu değişiklikleri senkronize edebilir.
--Temsili Durum Transferi  (Rest API)
Tüm öğeler tek bir URL ye sahiptir ve bunlar  HTTP REST üzerinden POST,GET,PUT ve DELETE  metodlarını 4 temel CRUD(create,read,update,delete) için kullanırlar.
--Nihai Tutarlılık(Eventual Consistency)
CouchDB bölüm toleransları ve kullanabilirlik sunmak için nihai tutarlılığı garanti eder.
-- Çevrimdışı için tasarlandı( Built For Offline)
CouchDB cihazları çoğaltabilir(akıllı telefonlar ), cihaz çevrimdışı olabilir ve cihaz tekrar çevrimiçi olduğunda veriler senkronize edilebilir.
--Şema Gereksinimi duyulmaz(No Schema Required)
Veriler şema tanımlanmadan bir NOSQL veri tabanına yerleştirilebilmektedir.Sonuç olarak eklenmiş olan verinin formatı uygulama kesintisi olmaksızın herhangi bir zamanda değiştirilebilir.Bu da önemli bir iş esnekliği sunar ve muazzam uygulama esnekliği sağlar
Esneklik(Auto-Sharding)
Bir NOSQL veritabanında uygulamalara katılmadan otomatik olarak sunucular arasında veri yayılır.   Uygulama kesintisi olmadan sunucular ,veri katmanına eklenip çıkarılabilir.Couchbase in en önemli özlliklerinden birisi esnek olmasıdır. Yani birden çok couchbase server birbirleriyle bağlantılı bir şekilde çalışabilir.Programdaki veriler bağlanılan sunucular arasında paylaştırılır ve bu şekilde RAM kapasitesi de dengelenebilir.



                Couchbase ‘i oluşturan iki temel yapı CouchOne ve Membase
CouchOne(CouchDB):
CouchDB B ağaç yapısının bir versiyonu olan oldukça hıza sahip B+ ağaç yapısını kullanmaktadır.B+ çok büyük miktarlarda veri saklmak ve bu verilere çok hızlı ulaşmasını sağlayan mükemmel bir veri yapısıdır.B ağaçları genellikle sığ ama geniş bir veri yapısına sahiptir.B ağaçlarında girdiler milyonlarca ,tek basamaklı bir yüksekliğe sahip olabilir.Couch DB için ilginç olan tarafı ise bu ağacın yaprakları bir sabit disk gibi yavaş bir ortamda saklanır.
   CouchDB de B-tree uygulanması orjinalinden biraz farklıdır ,yani B-tree nin tüm önemli özellikleri korunurken bir MVCC ve birde tasarım eklenir bu yapıya.B ağaçlar ana veritabanı dosyalarını indexler şeklinde depolamak için kullanılır.Bir veritabanı içintek B tree ve bir index görünümü için tek B tree vardır.MVCC eşzamanlı izin okumaya ve kilitleme sistemi olmadan yazmaya izin verir.Bu şekilde yazılar seri bir şekilde yazılır ve bir veritabanı için sadece bir yazı işlemine izin verilir. Yaz işlemleri okuru engellemez ve herhangi bir zamanda okuma işlemi yapılabilir.Her okuma işlemi veritabanının tutarlılığını gösterir.
Membase:
Dağıtık nesne deposu:
Kolayca depolanabilir veherhangi bir uygulama gerekmeden çok sayıda veriyi alabilir.
Dinamik küme boyutlandırması ve dengelenmesi:
Kolayca büyür ve Membase kümelerini küçültür,bir uygulamanın veri yönetimi değişimlerini uyum sağlar.
Garantili veri tutarlılığı:Uygulama da asla verilerin tutarlılığı garantisi verilmektedir.
Düşük öngürülebilir gecikme:
Belek dışında çalışırken çoğu işlemler 1ms”den daha az sürede gerçekleşir

Membase verilerin önbelleğe alınması ve kümeleme teknolojileirin lideri durumundaydı
CouchOne:çok güvenilir ve tüm özellikleri barındıran belge veritabanıdır.
Couchbase: bu ikisinin birleşmesiyle oluşan Couchbase çok hızlı ve en güvenilir NoSQL veritabanı  durumuna gelmiştir

                                                     Couchbase Mobil
CouchOne ve MemBase’nin birleşmesiyle oluşan NOSQL veritabanı şirketi CouchBase IOS beta sürümü için Mobile CouchBase’n hazır olduğunu duyurdu. Mobile CouchBase Apache CouchDB ile güçlendirilmiştir.CouchBase ailesine katılan Mobil CouchBase yerli İOS  uygulama geliştiricileri ve mobile-cloud veri senkronizasyonu sağlayan tek NOSQL veritabanıdır. Mobile CouchBase ile geliştiriciler ,ağ bağlantısı kullanılabilir olduğunda otomatik olarak bir bulut yada veri merkezi dağıtılan CouchBase yerel olarak depolanan verileri senkronize ederek IOS uygulamalar geliştirebilmektedir. CouchBase teknolojisi ölçeklenebilir web ve mobil uygulamalar geliştirmek için en kapsamlı veri yönetimi çözümünü temsil eder.bunun yanında esnek kümeleme ,sağlam depolama yönetimi ve sürekli artan yüksek performansı  sistem yöneticileri ve operatörler tarafından sağlanılır.

IOS için Mobile CouchBase uygulama geliştirmede büyük bir sorunu çözer,yani uygulamaların mobile aletlere senkronize çalışmasını sağlar.Sync çözülememiş bir sorun olmuştur. Ağ sorunları olsa bile kullanıcılar genellikle yavaş uygulamalar tarafından kapatılır. Ama CouchBase sayesinde artık geliştiriciler herhangi bir mobil cihaz üzerinden rahat bir şekilde veri paylaşabilir.Bu yüzden Mobile CouchBase NOSQL alanında lider hale gelmiştir.
                                 

3 Temmuz 2012 Salı

Yapay Zeka


                                           YAPAY ZEKA
Günümüzde hızla ilerleyen teknoloji sayesinde bir çok büyük problemler çözülmeye başlamıştır. Çeşitli işlevler gören robotlar,makineler,insansız otomobiller ve uçaklar üretilmiştir. Bu da yapay zekanın teknolojik araçlarda oluşturulmasıyla gerçekleşmiştir. Bu konuya olan ilgimden dolayı bu sayımızda Yapay Zeka konusunda araştırma yapıp bunu sizlerle paylaşmayı istedim

Yapay Zeka Ansiklopedisi’ne bakıldığında, Yapay Zeka’nın şu tanımıyla karşılaşılır:

            Yapay Zeka, bilgisayar biliminin akıllı, yani dili kullanabilme, öğrenme, akıl yürütme, problem çözme gibi niteliklere sahip bilgisayar sistemleri tasarımlamakla uğraşan koludur.

Benzer bir tanımı başka kaynaklarda, örneğin Patrick Winston’ın, bu alanın klasik kaynakları arasında sayılan Yapay Zeka başlıklı kitabında, veya Yapay Zeka’nın tarihçesinin 1940’lı yıllarda başladığını yazan Ana Britanica’da da bulmak mümkündür.

Yapay zeka, insanın düşünme yapısını anlamak ve bunun benzerini ortaya çıkaracak bilgisayar işlemlerini geliştirmeye çalışmak olarak da tanımlanabilir. Yani programlanmış bir bilgisayarın düşünme girişimidir. Daha geniş bir tanıma göre ise, yapay zeka, bilgi edinme, algılama, görme, düşünme ve karar verme gibi insan zekasına özgü kapasitelerle donatılmış bilgisayarlardır.

Aşağıda çeşitli yapay zeka tanımları sunulmuştur:

Yapay Zeka, insanlar tarafından yapıldığında zeka gerektiren şeyleri gerçekleştiren makineler yapma bilimidir.

Minsky

Yapay Zeka, zeki davranışları taklit eden bilgisayar programlarının yapımı boyunca insan zekasının doğasını anlamayı amaç edinen disiplindir.

Bonnet





YAPAY ZEKANIN AMAÇLARI

          Genel olarak Yapay Zekâ' nın amacı üç ana başlık altında toplanabilir:
1.
Makinaları daha akıllı hale getirmek,
2.
Zekâ' nın ne olduğunu anlamak,
3.
Makinaları daha faydalı hale getirmek,

          Bu noktada "akıllı davranış" ın tanımını ortaya koymak gerekmektedir. Birçok davranış türü, zekânın işaretleri olarak kabul edilebilir.
          Bunlara aşağıdaki tipik örnekleri gösterebiliriz:
·        Tecrübelerden öğrenme ve anlama,
·        Karışık ve zıt mesajlardan anlam çıkarma,
·        Yeni bir duruma başarılı ve çabuk bir şekilde cevap verme,
·        Bilgiyi anlama ve kullanma,
·        Alışık olunmayan, şaşırtıcı durumlarla başedebilme,
Düşünme ve muhakeme etme

 YAPAY ZEKA GELİŞME SÜRECİ        


Yapay zeka konusundaki ilk çalışma McCulloch ve Pitts tarafından yapılmıştır. Bu araştırmacıların önerdiği, yapay sinir hücrelerini kullanan hesaplama modeli, önermeler mantığı, fizyoloji ve Turing’in hesaplama kuramına dayanıyordu. Herhangi bir fonksiyonun sinir hücrelerinden oluşan ağlarla hesaplanabileceğini ve mantıksal “ve” ve “veya” işlemlerinin gerçekleştirilebileceğini gösterdiler. Bu ağ yapılarının uygun şekilde tanımlanmaları halinde öğrenme becerisi kazanabileceğini de ileri sürdüler. Hebb, sinir hücreleri arasındaki bağlantıların şiddetlerini değiştirmek için basit bir kural önerince, öğrenebilen yapay sinir ağlarını gerçekleştirmek de mümkün hale gelmiştir.

1950’lerde Shannon ve Turing bilgisayarlar için satranç programları yazıyorlardı. İlk yapay sinir ağı temelli bilgisayar SNARC, MIT’de Minsky ve Edmonds tarafından 1951’de yapıldı. Çalışmalarını Princeton Üniversitesi’nde sürdüren Mc Carthy, Minsky, Shannon ve Rochester’le birlikte 1956 yılında Dartmouth’da iki aylık bir toplantı düzenledi. Toplantının en önemli özelliği Mc Carthy tarafından önerilen “Yapay Zeka” adının konmasıdır. İlk kuram ispatlayan programlardan Logic Theorist (Mantık Kuramcısı) burada Newell ve Simon tarafından tanıtılmıştır.

Daha sonra Newell ve Simon, “insan gibi düşünme” yaklaşımına göre üretilmiş ilk program olan General Problem Solver (Genel Sorun Çözücü)’ı geliştirmişlerdir. Simon, daha sonra fiziksel simge varsayımını ortaya atmış ve bu kuram, insandan bağımsız zeki sistemler yapma çalışmalarıyla uğraşanların hareket noktasını oluşturmuştur.

Bundan sonraki yıllarda mantık temelli çalışmalar egemen olmuş ve programların performanslarını sergilemek için bir takım yapay sorunlar ve dünyalar kullanılmıştır. Daha sonraları bu sorunlar gerçek yaşamı hiçbir şekilde temsil etmeyen “yapay dünyalar” olmakla suçlanmış ve yapay zekanın yalnızca bu alanlarda başarılı olabileceği ve gerçek yaşamdaki sorunların çözümünde kullanılamayacağı ileri sürülmüştür.

Geliştirilen programların gerçek sorunlarla karşılaşıldığında çok kötü bir performans göstermesinin ardındaki temel neden, bu programların yalnızca yapay bir şekilde çalışıp konu ile ilgili bilgileri kullanmamasıydı. Bu dönemin en ünlü programlarından Weizenbaum tarafından geliştirilen Eliza, karşısındaki ile sohbet edebiliyor gibi görünmesine karşın, yalnızca karşısındaki insanın cümleleri üzerinde bazı işlemler yapıyordu. İlk makine çevirisi çalışmaları sırasında benzeri yaklaşımlar kullanılıp çok gülünç çevirilerle karşılaşılınca bu çalışmaların desteklenmesi durdurulmuştur.
Her sorunu çözecek genel amaçlı program yerine belirli bir uzmanlık alanındaki bilgiyle donatılmış programlar kullanma fikri, yapay zeka alanında yeniden bir canlanmaya yol açtı. Kısa sürede “Uzman Sistemler” adı verilen bir metodoloji gelişti. Fakat burada çok sık rastlanan tipik bir durum, bir otomobilin tamiri için önerilerde bulunan uzman sistem programının otomobilin ne işe yaradığından haberi olmamasıydı.

İnsanların iletişimde kullandıkları Türkçe, İngilizce gibi doğal dilleri anlayan bilgisayarlar konusundaki çalışmalar bu sıralarda hızlanmaya başladı. Doğal dil anlayan programların dünya hakkında genel bilgiye sahip olması ve bu bilgiyi kullanabilmek için genel bir metodolojisi olması gerektiği belirtilmekteydi.

Bütün bu çalışmaların sonunda yapay zeka araştırmacıları iki gruba ayrıldılar. Bir grup, insan gibi düşünen sistemler yapmak için çalışırken, diğer grup ise rasyonel karar verebilen sistemler üretmeyi amaçlamaktaydı.


YAPAY ZEKA TÜRLERİ


Yapay zeka konusundaki araştırmalar şu gruplar altında toplanabilir.
·         Bilgi Tabanlı Yapay Zeka ve Uzman Sistemler
·         Doğal Diller (Bilgisayar ile Doğrudan İletişim)
·         Beşeri Algılama Yeteneklerinin Simülasyonu (Görme, Konuşma, İşitme, Koklama vs.)
·         Robotikler (Rutin, Kirli ve Tehlikeli İşler İçin Kullanılan Robotikler)
·         Sinirsel Ağlar
·         Bulanık Mantık
·         Sanal Gerçeklik

                         


                             YAPAY ZEKA' NIN KAPSAMI



Akıllı özelikler gösteren makinelerin gelişmesi birçok teknoloji ve bilimle ilgilidir. Bunlar arasında dilbilimi, psikoloji, felsefe, bilgisayar teçhizatı ve yazılımı, mekanik ve optik anılabilir. Psikoloji  Yapay Zekâ' nın kesiştiği alanlar algılama ve akıl-dil bilimi olarak adlandırılmaktadır. Felsefe  ve Yapay Zekâ; mantık, dil bilimi ve algılam alanlarında geniş ölçüde örtüşürler. Elektrik mühendisliği ile Yapay Zekâ arasında ortak noktalar; imaj işleme, kontrol teorisi, şekil tanımlama ve robotiktir. 
          Son zamanlarda yönetim, örgütlenme teorisi, karar verme, istatistik, matematik, yönetim bilimi ve yönetim bilgi sistemlerinden de Yapay Zekâ alanına katkılarda bulunulmaktadır.
          Yapay Zekâ alanına giren çeşitli disiplinler bazen kesişirler, bu yüzden Yapay Zekâ alanını bu disiplinlere göre sınıflandırmak oldukça zordur.
          Yapay Zekâ kendi başına bir ticari alan değildir; bu başlıbaşına bir bilim ve teknoloji alanıdır. Yapay Zekâ' nın temel uygulama alanları Uzman Sistemler, Robotik, Doğal-Dil İşleme, Konuşma Anlama, Bilgisayar Görüşü, Sahne Tanımlaması ve Zeki Bilgisayar Yardımlı Eğitimdir.
          Yapay Zekâ' nın kapsamı içindeki alanları kısaca tanımları aşağıda olduğu gibidir:
          5.1 Uzman Sistemler:
          Uzman Sistemler, bilgisayarlaştırılmış danışma programlarıdır. Bunlar belirli bir problemi çözmek için uzmanın muhakeme sürecini ve bilgisini kullanırlar. Yapay Zekâ teknolojisinin en fazla kullanılan uygulamalarından biridir. Bu sistemler özellikle organizasyonlar tarafından verimliliği artırmak ve uzman bulmanın gittikçe zorlaştığı yerlerde kullanılmak üzere talep edilmektedirler. Şimdiki uygulamalar kısmen zor olarak tanımlanan uzmanlık alanlarını kapsamaktadır.
İnsan- uzmanlar genellikle çok dar problem çözme alanlarında veya görevlerinde genellikle uzmanlaşma eğilimindedirler. Tipik olarak insan- uzmanlar şu karakterlere sahiptirler:
·        Problemleri çabuk ve doğru olarak çözerler ve nasıl yaptıklarını açıklarlar,
·        Kendi kararlarının güvenirliliğini sorgularlar,
·        Ne zaman işin içinden çıkamayacaklarını ve diğer uzmanlarla görüşmeleri gerektiğini bilirler,
·        İnsan-uzmanlar geçmiş tecrübelerden ders alırlar ve problemlere uygun olarak pozisyonlarını değiştirirler.
          Temel kaynak olan bilgiye sadece birkaç uzman sahip olabilir. Bu yüzden bilginin elde edilmesi önemlidir. Bilgi ancak bu yolla başkalarının da kullanımına sunulabilir. İnsan-uzmanın hastalık durumunda ondan yararlanılamaz. Kitaplara gelince; bunlar bilginin tamamına sahip olmakla birlikte, bu bilgilerin uygulanması ancak okunmaları ile mümkündür. Uzman Sistemler ise uzmanlığa başvurma şansını doğrudan temin ederler. Aynı zamanda uzmanın bilgisini ele geçirerek bilgisayarda saklarlar ve bilgiyi kullanmak isteyen herkesin istifadesine sunarlar.
          Uzman Sistemlerin amacı, insan-uzmanın yerine geçmek değil, onun bilgisini daha yaygın kullanıma sunmaktır. Özetle Uzman Sistemler, insan-uzmanın olmadığı yerde, diğer insanların verimliliklerini ve karlarının kalitesini arttırarak problemleri daha bir ehliyetle çözmeyi amaçlarlar. 
          5.2 Robotik ve Duyu Sistemleri:
          Görme ve dokunma gibi duyu sistemleri Yapay Zekâ ile birleştirildiğinde ortaya Robotik olarak adlandırılan sistemler çıkar. Basit anlamda robot, elişleri yapan elektro-mekanik bir araç olarak tanımlanabilir. Pek tabiki bütün robotlar Yapay Zekâ alanı içinde düşünülemezler. Örneğin bulaşık makinesi akıllı bir robot değildir. Akıllı robot mutlaka bir çeşit duyuyu kapsamalıdır. Robotun akıllı kısmı çevresindeki değişikliği algılar ve ona tepki verir ve/veya otomatik makineler ile akıllı robotlar arasındaki temel fark, robotların çevresini duyması ve davranışlarını, kazanılan bilgilerin bir sonucu olarak düzenlemeleridir.


          5.3 Doğal Dil İşleme:
          Doğal dil teknolojisi, bilgisayar kullanıcılarına bilgisayarlarla bilgisayar dilinde konuşma olanağı sağlar. Bu teknoloji karşılıklı konuşma ortamı sağlar. Bu alandaki başarı şimdilerde sınırlı olup ancak çok kısıtlı konularda yazılan cümleler tanımlanıp yorumlanabilir. Böylesi bir yeteneğin birçok uygulamaları olmasına karşın, genel bir doğal dil-işleme sistemi henüz tam olarak hayata geçirilememiştir.  
          5.4 Konuşma-Anlama:
          Bundan kasıt, bilgisayarın bir konuşmayı tanıması ve anlamasıdır. Bu işlemde bilgisayar ile haberleşme konuşma yolu ile olur. Konuşmayı anlama iki aşamalıdır. Birincisi konuşmayı tanıma, ikincisi anlamadır. Konuşmayı tanıma, konuşulan kelimenin anlamının ne olduğunu bakılmaksızın kelimenin tanınması, ikinci aşama ise kelimenin anlamının kavranmasıdır.



          5.5 Bilgisayar Görmesi ve Sahne Tanıması:
          Optik tanıma, bir çeşit bilgisayar aklının ve karar vermenin bir duyu düzeneği (makinası) yolu ile bilginin alınması olarak tanımlanır. Bu bilgi bir robotik hareketi yaratmak, üretim kalite kontrolü yapmak gibi faaliyetler için kullanılır. Bilgisayar görüşünün temel amacı resim yaratmaktan çok resim yorumlamaktır5.6 Akıllı Bilgisayar Yardımlı Eğitim:
          Bu değiş insanlara eğitim veren makinaları ifade etmektedir, bu makinalar bir Uzman Sistem olarak da kabul edilebilir. Bu tür eğitim sadece okullara mahsus olmayıp şirket faaliyetleri ve askeri uygulamalarda da kullanılabilmektedir. Örnek olarak, benzetme, keşif, öğrenme, çeşitli oyunlar ve test etme eylemleri gösterilebilir.
                             YAPAY ZEKA'NIN YARINI:
          Yapay Zekâ bundan sonrası için nasıl bir yol izlemeli? Bu sorunun yanıtı, genel olarak Yapay Zekâ' nın kendi tarihçesinde, en başarısız olduğu alanlarda neyin eksik kaldığının incelenmesinde yatıyor. Daha özel olarak ise şu söylenebilir: Yapay Zekâ' nın, yalnızca bir programlama ya da mühendislik projesi olarak görüldüğü müddetçe, Turing' in öngördüğü rotadan çıkıp giderek daha uygulamalı ticari kullanım alanlarına kayması ve dolayısıyla özgün bakış açısını yitirmesi kaçınılmaz gözüküyor. Bunu önlemekse ancak Yapay Zekâ' yı  tarihsel bağlamı içinde yeniden gözden geçirerek ve üstlenmiş olduğu projenin gerçek boyutlarını ortaya çıkartarak mümkün olabilir. Bu süreç içinde özelikle önem taşıyan iki alana kısaca dikkat çekmek istiyorum: Sibernetik ve Felsefe.
          Sibernetik, 1930'lu yıllarda, mühendislik alanında geliştirilmekte olan enformasyon ve kontrol kuramındaki ana fikirlerin, gerek elektronik/mekanik  karmaşık sistemlerin, gerekse canlıların, içinde bulundukları ortamla yaptıkları bilgi alış verişi çerçevesine uyarlanması ile doğmuş olan bir araştırma alanı. Sibernetik, temel olarak "geri-besleme" kavramı güdümünde pek çok değişik alandan araştırmacıyı bir araya getiren bir dizi konferans sonucu ortaya çıkıyor. Nedensel ve Geri- Besleme Mekanizmaları" başlığı altında düzenlenen bu konferanslar, matematikçilerden mühendislere, biyologlardan antropologlara kadar geniş bir akademik kitleyi bir araya getiriyor. Pek çok değişik sebep sonucu ilk yıllardaki ivmesini yitiren ve özellikle Yapay Zekâ' nın 1950'lerde ortaya çıkmasından sonra iyice çözülen Sibernetik uzun yıllardır (ilk ortaya çıktığı biçimiyle) iddialı ama yarım bırakılmış bir proje olarak durmakta.
          Yapay Zekâ' nın şimdiye dek (bir ölçüde siyasi sebeplerle) kayıtsız kaldığı, hatta düşmanca bir tavır takındığı Sibernetik' in, vakti zamanında, robotların çevreleri ya da içinde varoldukları ortamlarla bilgi alışverişi yapma süreçlerinin formüle edilmesinden çok önemli rol oynayabilecek olan "geri-besleme" kavramı üzerinde yapmış olduğu çalışmalar, günümüz robot bilimi için faydalı bir kaynak oluşturabilir. Bunun ötesinde, Sibernetik' in tarihinde, değişik alanlarda çok sayıda araştırmacıyı heyecan yaratacak bir ortam içinde bir süre de olsa barındırabilmiş olması yatıyor. Yapay Zekâ' nın, bu noktada Sibernetik' in tarihinden öğrenip yararlanacağı çok şey olduğu açık.
          Benzer şekilde, Yapay Zekâ' nın konusu olan insanla ve akılla ilgili, bilim-mühendislik-teknoloji üçgeni dışında kalan toplum ve insanlık bilimleri tarafından tarih boyunca araştırılagelmiş savlar, Yapay Zekâ için çok değerli referans noktaları haline dönüşebilir. Bu bağlamda Felsefe' nin özel bir yere sahip olduğunu söylemek de mümkün.
          Stanford Üniversitesi' ndeki  bir konuşmasında "Yapay Zekâ Felsefe' ye sırtını dönmeyi göze alamaz, çünkü o zaman kötü bir felsefe ile yola devam ediyor olacaktır" diyen John McCarthy, "Yapay Zekâ' nın Felsefe' yle Ortak Nesi Var?" başlıklı yazısında şöyle diyor:
Yapay Zekâ' nın, şimdiye kadar yalnızca felsefeciler tarafından araştırılmış olan pek çok fikre gereksinimi var. Çünkü bir robot insanlar kadar akıllı olabilmek ve deneyimlerinden bir şeyler öğrenebilmek için, birbirinden bağımsız olguları derletip toparlayacak genel bir dünya görüşüne gereksinim duyacaktır.
          Yapay Zekâ' nın isim babası olan McCarthy' nin, benzer bir tezi 1972' de basılmış olan kitabı "Bilgisayarlar Neler Yapamaz" dan bu yana savunmakta olan felsefeci Hubert Dreyfus ile uzun yıllar sonra ortak bir kuramsal noktada buluşmuş olmaları, belki de bu iki çalışma alanı arasında gelecek vaat eden bir işbirliğinin bir adımı olarak görülebilir.
          Carnegie-Mellon Üniversitesi' ndeki Hareketli Robot Laboratuvarı başkanı Hans Moravec, "Zihin Çocokları"başlıklı kitabında şöyle diyor:
          Bugün makinelerimiz "zeki" sıfatını hakedemeyecek kadar az gelişmiş, ve yeni doğmuş bebekler kadar anne-baba ilgisine muhtaç yaratıklardır. Fakat önümüzdeki yüzyılda biz insanlar kadar karmaşık sistemler haline gelecek, ve zamanla bizleri ve tahminlerimizi de aşan, ve bizleri ataları olarak gördükleri için gurur duyacağımız varlıklara dönüşeceklerdir.
          Yapay Zekâ' nın bize vaat ettiği gelecek, bu tür bir robotlar dünyasında yaşamak olabilir mi? Ben, gelecekte bir gün insanlar kadar zihinsel yetilere sahip robotların inşa edilmesi projesinin önünde duran, ilkesel olarak aşılması olanaksız, matematiksel, teknolojik, ya da metafiziksel bir engel görmüyorum. (Bu, ne indirgemeci bir tavırdan, ne de bilim-kurguya düşkünlükten kaynaklanan, ama temellendirmesi bir başka makaleye ancak sığacak bir görüş.) Öte yandan, Moravec' in iddiası bana kendisinin Yapay Zekâ' nın kısa ya da uzun tarihçesinden haberdar olmadığını, ya da bu kıssadan çıkartılması gereken hisseyi çıkartmadığını düşündürür. Sonuçta benimki de bir öngörü olmaktan öteye gidemese de, Yapay Zekâ projesinin gerçek boyutları ve tarihsel evrimi düşünülürse, bizlerden akıllı robotların at koşturduğu bir dünyanın gerçekleşmesi için, o da eğer bir gün gerçekleşirse, bir değil daha pek çok yüzyıla gereksinim olduğu açıkça görülebilir.    








Amacım sizleri şaşırtmak ya da şoka uğratmak değil... Ama anlattıklarımın en basit şekilde özetlemenin tek yolu, şu anda dünyada düşünen, öğrenebilen ve yaratabilen makinelerin varolduğunu söylemek olacak. Üstüne üstlük, bu makinelerin öğrenme yetileri gelecekte daha da hızla gelişecek, öyle ki, yakın bir gelecekte, çözebilecekleri problemler kümesi, insan zihninin uğraşmakta olduğu problemler kümesi ile özdeş hale gelecek.

                  GÜNÜMÜZDE ROBOT TEKNOLOJİSİ
Robot teknolojisi her geçen gün daha da gelişiyor. Teknolojik gelişmeler bu hızla giderse ileride birçok işimizi insan görünümlü robotlara yaptırabileceğiz. Öyle ki şu evrede bile robotların kullanıldığı alanlar sürekli artmakta. Örneğin Mitsubishi fabrikalarında üretilen Momoko ve Takeo isimli robotlar geçenlerde Dünya'nın ilk deneysel robot ve insan tiyatrosonda rol aldılar. Robot öğretmen okulda görev yapmaya başladı. Toyota robot orkestrasını kurdu. Güvenlik robotu bino3 adlı robot 4 adet geniş açılı kamerası sayesinde hareket eden herşeyi görebiliyor. Bir çiftçi, çöpten topladığı malzemelerden yaptığı robotu binek aracını çektirmekte kullanıyor (öküz misali) . T34 adlı robot evinize birisi girdiğinde üzerine ağ atarak onu etkisi hale getiriyor; Görüş açısındaki görüntüleri cep telefonunuza gönderiyor ve sizin ona vereceğiniz komutları bekliyor. Ve buna benzer birsürü şey...

İşte robotlardan birkaç görüntü