• Yapay zeka nedir aşağıdaki görüşler yapay zeka için bir tanım olarak kullanılabilir: • İnsanın dil anlama, mantık kurma, problem çözme gibi becerilerini ve davranışlarını sergileyecek akıllı bilgisayar sistemleri tasarlama ile ilgilenen bir bilgisayar bilimleri alt dalıdır. • Diğer bir deyişle yapay zeka insanın halihazırda çok iyi yaptığı işleri yapmak için bilgisayarları programlama ile uğraşır çünkü insan bu gibi yüksek derecede akıl gerektiren işleri algısal öğrenme, hafıza organizasyonu ve yargı yürütme ile gerçekleştirmektedir. • Karmaşık istatistiksel hesaplamalar yapan bir program yapay zeka aktivitesi gibi görülmezken hipotezlerin doğruluğunu deneylerle test eden bir program yapay zeka uygulaması olarak tanımlanabilir. Birçok insan elle uzun hesaplamaları yapmak konusunda çok iyi değildir fakat bilgisayarlar bu konuda çok başarılıdır diğer yandan hipotezleri test etmek için deneyler yapma becerisine sahip bilim adamları bu becerilerini genelde eğitimle bir kısmı ise deneyimleri ile elde etmişlerdir bu şekilde bir görevi bilgisayar ile yapmak çok kolay değildir. • Bu konuda bilim adamları arasında da farklı görüşler hakimdir bazıları yapay zeka uygulamalarının robotu tasarlamak ve inşa etmek ile alakalı olduğu için mühendislikle ilgili olduğunu söylerken diğer kısım ise bu konuyu tamamen insanların bilgi işlemesi ile alakalı olan kavramsal bilimde bilgisayarın kullanılmasına bağlar. Bununla birlikte bir üçüncü grup bilgiyi ve bilinci felsefe ile ilişkilendirme çalışmaktadır. • En alt seviyede yapay zeka insan davranışlarını taklit edecek hatta ötesine geçecek şekilde makinaları programlayabilmek için yapay zeka yöntemleri geliştirmeyle ilgilenmektedir. • Bu nedenledir ki bu disiplin bilgisayar bilimleri psikoloji dil bilimi gibi çok fazla diğer akademik alanlarla ilişkili olmak zorundadır. Bu kadar farklı alanlarla ilişkili olan bir disiplin bazen sürtüşme çoğu zaman ise yeni fikirler ortaya çıkmasına sebep olmaktadır. • Bu bölümde özetle yapay zekadan bahsedilecek ve uzman sistem inşa etmek için gerekli olan kısımlarının üzerinde durulacaktır. Ayrıca bilgi tabanlı programlamanın, • geleneksel programlamadan ve • yapay zeka araştırmalarının öne çıkan program çözme yöntemlerinden farkı vurgulanacaktır. • 1950 den bugüne yapay zeka tarihini üçe ayırmak mümkündür. Bu evreler içerdikleri araştırma konuları ve pratik sonuçları bakımından ele alınacaktır. 2.1. Klasik Dönem: Oyun oynama ve teorem ispatı • Yapay zeka bilgisayar biliminden çokta genç değildir. Yapay zeka ilk olarak ikinci dünya savaşından kısa bir süre sonra oyun oynama ve bulmaca çözme programlarıyla kendini göstermiştir. Her ne kadar oyun oynama ve bulmaca çözme uzman sistem tasarımından ve gerçek uygulamaların temelini oluşturması açısından ne kadar ciddiyetsiz gözükse de bilgisayar tabanlı program çözme temelleri bu programlara dayanır. 2.1.1. Durum uzayı araması • İlk araştırmaların temelindeki fikir durum uzayı araması olmuştur ve çok basit bir mantığa dayanmaktadır. Bu mantığa göre yazılmış birçok program şu üç içerikle formüle edilebilir:
1. Problemin başlangıç durumu örneğin bir bulmacanın ilk hali
2. Önerinin program için uygunluğunu test eden bir sonlandırma mekanizması. Örneğin bulmacanın tam olarak hangi durumda çözülmüş sayıldığını söyleyen bir kural. 3. Problemin şu anki durumunu değiştirecek işlemler. Örneğin problemi çözmek için tanımlanan hareketler veya adımlar. • Bu kavramsal uzayı daha iyi anlamak için durumları yapraklar ve işlemleri de yapraklara ulaşmamızı sağlayan dallar olarak düşünebilirsiniz. Verilen az bir miktar harf ile kelime bulma oyunu olan scrable’ı ele alalım. Bize verilen harflerin t, c ve a olduğunu düşünelim. Bu problemi bir ağaç gibi ele alacak olursak her seviyede yeni bir harf ekleyerek çizdiğimiz bir kelime ağacı oluşturmaya çalıştığımızı düşünebiliriz • Buradaki örneğimizde harflerin alfabetik sırada eklemeye karar verdik. Arama uzayı oluştururken bir süre sonra act veya cat kelimelerinden birine rastlayacağız bu noktada bir kelime bulduğumuz anda çıkacağımızı varsayalım. Yani uzun bir kelimeye veya puanı yüksek bir kelimeye bakmadığımızı düşünelim. Bu durum uzayının diğer uzaylarda olmayan iki güzel özelliği vardır: 1. Sonludur çünkü n tane harfi n faktöriyel farklı şekilde ayarlayabiliriz. 2. Yollar arasında tekrarlayan yapraklar içermemektedir • Bu şekilde harfleri yan yana koyarak artan bir şekilde numaralandırma metodu «oluştur ve test et algoritması» olarak adlandırılan metodun bir örneğidir. • 1. Bu örnekte yeni durumlara harflerin durumu değiştirilerek geçilebilir. • 2. Şu anki durumun çözüm olup olmadığını test etmek için harf diziliminin bir kelime teşkil edip etmediğine bakılabilir. • 2. adımdaki sonlandırma kriterini sağlayan durumlar bazı durumlarda çözüm uzayı olarak adlandırılır. Bazı durumlarda örneğin 8 vezir bulmacasında çözüm sayısı çok fazlayken 8 bulmacada çözüm tektir. • 8 Vezir Bulmacası, 8x8'lik bir satranç tahtasına 8 adet vezirin hiçbiri olağan vezir hamleleriyle birbirini alamayacak biçimde yerleştirmesi sorunudur. • 8-bulmacada problemi 1’den 8’e kadar sayılarla doldurulmuş ve bir karesi boş olan 3×3 boyutunda bir matrisin istenilen bir hedef duruma getirilmesinin amaçlandığı bir oyun olarak tanımlanabilir. Puzzle üzerindeki elemanların yalnızca boşluk ile yer değiştirdiği (kaydırıldığı) hareketler geçerli kabul edilmektedir. • Oluştur ve test et yaklaşımının iki temel çeşidi vardır ilki «deep first search» ve diğeri «breadth first search.» Bu ikisi arasındaki fark birinci adındaki mümkün olan tüm çözümlerin oluşturulma sırasıdır. • Bread first search: Bu arama şeklinde verilen N tane yaprakla öncelikle ana yapraklar daha sonra alt yapraklar oluşturulur • Deep first search: Bu aramada ise verilen N tane yaprağın her birinin öncelikle en alt yapraklara kadar yaprakları oluşturulur daha sonra üst yapraklara doğru oluşturma işlemi devam eder. • Bu iki aramadan breadth first search katman katman arama yaparken deep first search yol yol arama yapar. • Her iki örnekte de yolların üzerindeki numaralar muhtemel ziyaret sıralarını gösterir. Muhtemel diyoruz çünkü seçeceğimiz operatör bu sıranın değişmesine sebep olabilir. Buradaki ilerleme metodumuz, her seferinde kelimenin sonuna yeni bir harf eklemektir. Eğer çözüm bulamazsak bu işlemi tekrarlayarak devam ettirmekteyiz. Sonuç olarak burada bahsedilen her iki problemde «act» kelimesinde sona erecektir «cat» kelimesinde değil. Breadth first search bu aramada 5 yaprak ziyaret ederken deep first search 4 yaprak ziyaret edecektir. • Bununla birlikte bu 2 arama metodunun değişik özellikleri vardır. • 1. BFS eğer sadece bir çözüm varsa kökten uca en hızlı bulacak algoritmadır bu özelliğe sahip algoritmalara kabul edilebilir denir. • 2. DFS bir sonraki adımda hangi yolu izleyeceğini söyleyen iyi bir sezgisel yöntemle sonuca daha hızlı ulaşabilir. Diğer taraftan eğer durum uzayı sonsuzsa asla çözüme ulaşıp sonlanamaz. • Yaprakların üretim sırasına bakmaksızın her aşamada sayılarının üssel olarak arttığı açıktır. Bu fenomen «kombinasyonel patlama» olarak adlandırılır ve satranç gibi oyunları mümkün olan her hamleyi deneme anlamına gelen «kaba kuvvet» yöntemiyle oynamaya çalışan programları karşılaştığı bir problemdir. • Kombinasyonel patlama: Bir hesaplamanın izlenebilir olup olmadığıyla ilgilenen çalışma alanına hesaplama teorisi denir. Konunun yabancıları için; öyle problemler vardır ki problemin boyutu arttıkça çözümü için gerekli olan kaynak miktarı üssel olarak artmaktadır. Örneğin bir labirentte seçilebilecek yolların sayısı arttıkça labirentte üssel olarak büyür. Benzer olarak bir teorinin doğruluğunu hesaplamak için gerekli süre teorinin içindeki değişken sayısı ile üssel olarak artar. Bu tür problemlerin ne kadar kaynak gerektireceği genelde tahmin edilemez ve NP zorlukta problemler olarak adlandırılır diğer taraftan hesaplama süreleri içerdikleri parametrelere göre polinomal arten problemleri ise izlenebilir denir. Örneğin bir babirent için verilen yolun test edilmesi veya bir teorem için önerilen çözümün doğruluğunun test edilmesi izlenebilir problemlerdir. Malesef ki bizi yapay zeka konusunda ilgilendiren problemlerin çoğu NP (non-polynomal) zorlukta problemlerdir bu da sezgisel metotların önemini ortaya koymaktadır. • İnsanların bu gibi sayma görevlerinden daha yavaş ve daha az güvenli olduğu aşikardır fakat bir satranç ustasının oyunu tüm hamleleri kafasında canlandırarak oynamadığı aşikardır. Bunun yerine kendilerine başarıyı getirecek hamleleri, deneyimlerine hayal güçlerine ve analitik becerilerine dayanarak seçerler. Bu tür davranışlara hepiniz de biliyoruz ki zeka denir. • Oyun oynama programı da arama yaparak çalışır fakat onların stratejisi basit bir yarat ve test et mantığından daha karmaşıktır çünkü karşısında bir rakip vardır. Tavla, dama ve satranç için çok başarılı programlar yazılmıştır. Bu şekilde bir satranç programı bilgi tabanlı bir sistem değildir. Bunun yerine tahtadaki mümkün olan hamleleri seçici ve verimli şekilde arayan algoritmalar kullanan ve bu dersin konusu dışındaki uygulamalardır. Yapay zekanın 1950 de başlayan oyunlar ve bulmacalara ek olarak bir diğer ana ilgi alanı teorem ispatı idi. Teorem ispatı «aksiyom» adı verilen doğruluğu ispatlanmış ifadelerin teorem tarafından izlendiğini göstermek ve bu sayede teoreminde doğru olarak kabul edilmesini sağlamaya çalışmak olarak ifade edilir. • Örnek vermek gerekirse aşağıdaki 2 tane aksiyom a sahip olduğunuzu düşünelim • 1 eğer bir bilgisayar yanlış yapabiliyorsa yanlış yapacaktır. • 2 benim bilgisayarım yanlış yapabilir • Bu 2 aksiyon günlük konuşma dilinde ifade edilmiştir. bu durumda biz de cebirin çıkarım kuralından faydalanarak benim bilgisayarım yanlış yapacak teorisini ortaya atabiliriz. Benim bilgisayarım hata yapacak teoremi aksiyomları takip ettiği için eğer aksiyonlar doğru ise bu teorinin yanlış olması beklenemez. • Bulmacalarda da otomatik teoremi ispatı yapan bazı durumlarda, otomatik çıkarım adı da verilen teknik ve kavramların geliştirilmesi ile daha gerçekçi problemlerin çözebilmesi için başlangıç noktası olmuştur. Problemle ilgili bilgi, aksiyom kümesi ve teori olarak gösterilerek problem çözme işlemi teorem olarak ele alınabilir. Diğer bir deyişle teoremler arasında çözüm aramak durum uzayı oluşturmaya çok benzemekte ve bu şekilde ele alınabilmektedir. • Ne yazık ki bir aksiyom kümesinden teorem oluşturma işlemi kombinasyonel patlama şeklindedir. Çünkü birisi yeni bir teoremi aksiyoma çevirebilir. Bu yeni kümeyle daha fazla teorem oluşturabilir. Teorem ispatlayarak çözüm önerme günümüz bilgisayarlarının kapasitelerinin üzerinde kaynak gerektirebilmektedir hatta bazı durumlarda bu işlem hiç sonlanamamaktadır. • Bu tür otomatik çıkarım alanı daha çok matematiksel ispat gibi soyut alanlarda işe yaramaktadır fakat bu alan için geliştirilen metotların daha güncel alanlara transferi mümkün değildir. • Bunun yerine insanlar akla yatkın varsayımların araya serpiştirildiği çıkarımlar da bulunan ve çoğunlukla biçimsel olmayan hipotezlerin ortaya atılmasında daha iyidir. Bu şekildeki bir çıkarım uzman sistemin gerçek dünya alanında model çıkartırken başvurduğu yönteme benzemektedir. 2.1.2. Sezgisel arama • Detaylı arama sadece küçük uzaylarda işe yaramaktadır bunun anlamı aramaya rehberlik etmek gerekir. Durum uzayını oluştururken alanla ilgili bir veya birkaç bilgi kullanın arama yöntemine sezgisel arama denir. Sezgi, pratik düşünme olarak da tanımlanabilir öyle ki sezgisel olarak üretilen algoritmanın veya bu şekilde verilen bir kararın kesin sonuca ulaşması beklemez ama çoğu durumda yöntemler başarıya ulaşır. Sezgisel aramanın basit bir formu «tepe tırmanma»(hill climbing) algoritmasıdır. Bu algoritmada bir değerlendirme fonksiyonu vardır bu fonksiyon şu anki durumun iyi mi yoksa kötüye mi gittiğini test eder ve yine bu fonksiyon bir sonraki hareketli seçer. • Bir satranç oynama programını ele alacak olursak, bu tip bir program iki oyuncunun sahip olduğu taşları ele alacak sonrasında bir hareket seçerek bu hareket sonunda kalacak taşlara bakarak en iyi hareketi seçmeye çalışacaktır. • Bu problem tepe tırmanma şeklinde çözülecek olursa: 1.Şu anki durumu ve kuralları kullanarak yeni durumlar kümesi oluşturulur örneğin satrançta yapılabilecek tüm hamlelerin kümesi oluşturulur. 2. Eğer yeni kümedeki herhangi bir durum çözümse çık, değilse kümedeki en iyi duruma geç, yani şu anki durumu olarak en iyi durumu seç. • Bununla birlikte bu yaklaşımla ilgili bilindik problemler söz konusudur. örneğin değerlendirme fonksiyonu doğru hesaplamalar yapamayabilir ve durumların «iyiliğini» yanlış hesaplaya bilir. Yine satranç örneğin devam ettirecek olursak benden çok daha az taşı olan birinin benden çok daha iyi durumda olması muhtemeldir. Bu gibi materyallere bağlı hesaplamalar oyundaki avantajı ölçmek için yeterli değildir. • Bunun ötesinde değerlendirme fonksiyonları yeni hesaplamalar yapsa bile oynayabilecek çok fazla durum bir probleme sebep olabilir. Örneğin tam olarak şu hareket iyidir diyebileceğiniz bir durum olmayabilir çünkü bir sonraki hareketlerden çoğu aynı iyilikte veya kötülüktedir. Bu bir platonun içinde olmak gibidir öyle ki tepeye çıkmak için kesin doğru diyebileceğiniz açık bir yol yoktur. • Bir diğer sorun ise yerel maksimum giyeceğiniz değerlendirme fonksiyonları sizi bir tepe noktasına götürmesidir. Fakat sizin için bu tepe noktasını bir çözüm olamaz. Yine satrançtan örnek verecek olursak değerlendirme fonksiyonumuz karşı tarafın vezirini almanızı sağlayabilir fakat sonrasında oyunu kaybetmenize sebep olabilir. • Best first search (en iyi ilk arama) daha iyi özellikleri olan bir diğer sezgisel aramadı. Bu sezgisel aramada da yine değerlendirme fonksiyonumuz bulunmaktadır fakat bir sonraki adıma şu andaki durumundan türeyen durumlardan değil de şimdiye kadar ziyaret ettiğimiz tüm durumlar arasında seçilir. Bu tür bir algoritma kısmen daha karmaşıktır fakat bu algoritmanın arkasındaki düşünce eğer bir sonraki durumlar arasında daha iyi bir durum yoksa bir yerlerde yanlış yaptığımız ve bir şekilde geri dönmemiz gerektiğidir. En iyi ilk arama algoritması tepe tırmanma algoritmasının gelişmiş halidir çünkü tepe tırmanma algoritmasında anlık veriyi kullanarak geri dönme becerisi yoktur. Bununla birlikte hesaplaması daha pahalıya mal olmaktadır öyle ki geçmiş olduğumuz ve arkamızda bıraktığınız tüm çözümleri aklımızda tutmamız gerekir. • En iyi ilk arama algoritması için en iyi örnek A* arama algoritmasıdır. A*’ın arkasındaki fikir ürettiğimiz her durum n için aşağıdaki fonksiyonun değerini hesaplamaktır. • f(n) = g(n)+h(n) • Burada h(n) şu anki durumu başlangıç durumuna uzaklığını g(n) ise hedef sonuca uzaklığını gösterir. Bu yüzden g(n)’nin düşük değerde olması hedefe yakınlığı gösterdiği için iyidir. f(n) kullanım amacı başlangıçtan sona en kısa yolu bulmaktır. • Eğer h(n) düşük bir değere sahip ise algoritma h(n)’yi fazla hesaba katmaz ve en uygun yolu f(n)’yi kullanarak hesaplar. Bu tür algoritmalara kabul edilebilir denir. A* Algoritması Notasyon s başlangıç durumu g hedef durum OPEN ziyaret edilmemiş durumlar CLOSED ziyaret edilmiş durumlar. OPEN:={s} If OPEN={} then halt;//Hedefe giden bir yol yoktur n’nin ardıllarını üret. Döngü oluşturan n’leri sil. Ürettiğin tüm ardılların atası olarak n’yi ata. Eğer g, n’nin ardılların arasındaysa çık ve durumların atasına bakarak g’den s’ye olan yolu döndür. n’nin tüm kabul edilebilir ardılları n’ için: f(n’)’nü hesapla Eğer n’ OPEN veya CLOSED’da değilse, OPEN’a ekle, n’ ne f(n’)’nü ata, n’ ‘nün atası olarak n’yi ata Eğer n’ OPEN veya CLOSED’da ise yeni f(n’) değerini new’e, eski f(n’) değerini old’a ata. If old<new then n’ ardılını reddet. If old>new then eski n’ CLOSED’da ise OPEN’a taşıyarak n’ ‘nün yerine geçir. Algoritma Sonu • Bilgisayarın çözüm aramasında sıkı sıkıya aramadan veya bir değerlendirme fonksiyonu yardımıyla ile yapılması gerçek uygulamalar için daima uygun değildir. Konuşma anlama, bilgisayar sistemleri tasarlama ve bir dizi hareketin sıralanması gibi görevlerin durum uzaylarının yerel bir bilgi olmadan kabul edilebilir bir zamanda oluşturulması mümkün olmayan problemlerdir. Birçok bu şekilde problem büyüklüklerine göre üssel olarak kaynak talep ettikleri için tahmin edilemez olarak görünürler. • İlerde de göreceğiniz gibi uzman sistemler bu gibi problemlerin üstesinden gelmek için hem uzman bilgisini hem de bu bilgiden çıkarım yapacak strateji kullanılacaktır. 1950’de Shannon ile başlayip Feigenbaum ve Feldman ile biten klasik periyotun en önemli 2 gerçeği: 1. Her türlü program bir başlangıç durumu ve bir sonlandırma durumu olan ve bir küme işlemle bu iki durumu arasında arama problemine indirgenebilir fakat 2. Arama alanla ilgili bilgi tarafından yönlendirilmedir. • Çok az durumda aramanın o an ne durumda olduğunu belirten bir uygunluk fonksiyonu yeterli olmaktadır. Çoğu durumda genel problem çözme stratejisi belirlenmesi veya nesneler özellikler ve hareketler hakkındaki bilginin ayırt edici bir şekilde kodlanması veya her ikisi birden gereklidir. 2.2. Romantik periyot: bilgisayar anlaması • 1960’lardan 1975’lerin ortasına kadar geçen süre yapay zeka araştırmalarında romantik periyot olarak adlandırılır. Bu zamanda insanlar makinaları anlaması konusunda çok hevesliydiler öyle ki doğal konuşmanın anlaşılarak özellikle hikayelerin ve diyalogların anlaşılması konusu üzerinde duruyorlardı. Birkaç filozof ise bu çalışmaları küçümsüyor ve bir bilgisayar için «anladı» kelimesinin kullanılamayacağını söylüyorlardı. 2.2.1. SHRDLU • Wanograd’in (1972) geliştirdiği SHRDLU sistemi bu dönemin tepe noktası olarak sayılabilir öyle ki azımsanmayacak kadar İngilizce anlayabiliyor ve çok kısıtlı bir alanda çıkarımlar yapabiliyordu. Bunu yaparken çocukların oyuncak blokları gibi bir yapı kullanıyordu ve sorulan soruları bu blokları yapılandırarak veya blokların gerektirdiği aksiyonları gerçekleştirerek cevap veriyordu. Örnek vermek gerekirse kırmızı piramitin altındaki bloğun rengi nedir? Ya da mavi piramiti yeşilin üstüne koy komutunu gerçekleştirebilmek için gerekli olan planı yapabiliyordu. SHRDLU cümleleri anlayabildiği kabul ediyordu çünkü onlara uygun bir şekilde cevap verebiliyordu. • Anlamaya bu açıdan bakıldığında buna prosedürel semantik denir. Bir programın anladığını söyle bilmek için söylenen sorulara doğru cevap vermesi veya verilen komutları yerine getirmesi gerekir. Bu tür bir işlem anlamayı operasyonel bir açıdan ele alır ve anlamanın sonucunu davranışlara bağlar yani anlamayı bir akıl yürütme işlemi olarak ele almaz. • Anlamayı anlamak için girişilen daha az yapay zeka ve daha çok günlük içerik içeren doktora gitme veya restoranı gitme gibi denemeler de mevcuttur. Bilim adamları script dedikleri birçok elementin birleştiren gerçek dünyayı gerçek dünyayı taklit etmeye çalışan bir yapı geliştirdiler. Scriptler birçok hedefin, çözümün ve olaylarla ilgili adetlerin paketlenmesi olarak düşünülebilir. Bu yüzden bir restoran scripti "yemek yeme hedefi" buna karşılık bir "yemek çözümü" ve "oturma, menüler, hesaplar, ipuçları ve benzeri" orta derece bilginin birleştirilmesiyle oluşur. • Bu tür bir cihaz bazı davranışların neden bazı durumlarda normal karşılanırken diğer durumlarda normal karşılanmadığını açıklamaktadır. Örneğin sokakta yürürken telefonla konuşmak normal karşılanırken, bir toplantıda telefonla konuşmak normal karşılanmamaktadır. Bu tür bir cihaz herkes tarafından kabul gören varsayımların da açıklar örneğin "doktoru ziyaret etmek" scriptinde doktorun onun evine gitmek değil muayenehanesini ziyaret etmek anlamına gelmektedir. Ör: Restoran scripti: • Scriptler farklı notasyonlar da ifade edilebilirler, fakat içermeleri gereken temel şeyler scripti çalıştırmak için gerekli birincil önemli koşullar ve ikincil önemli koşullar sağlanmalıdır. Aşağıda örnek bir restoran scripti vardır: • Amaç yemek pişirmek zorunda kalmadan yemek yemek • Önceki durum: Aç olmak, parası olmak, restoranın açık olması • Sonraki durum: Tok olmak, daha az parası olmak • Hareket bir: Restorana gir, aksi bir durum veya garson yoksa bir yere otur, diğer durumda garsonun sana yer göstermesine izin ver. • Hareket iki: Menüye göz at, sipariş ver ve yemeğini ye. O güne özel bir yemek olabileceğini unutma. • Hereket üç: Hesabı iste, uygun bir şekilde garsona veya kasiyere hesabı öde, restorandan ayrıl. • Mekandan mekana oturma, günün menüsü ve ödeme gibi bazı değişimlerin olacağı ve buna göre hareket edilmesi gerektiği unutulmamalıdır. Bu scripte bazı varsayımlarda bulunulmuştur. Örneğin önce ye sonra öde, bu varsayım kafeteryada çalışmayacaktır. Bu yüzden ideal olan scriptin bu gibi varsayımlar tutmadığında devreye sokabileceği bir B planı olmasıdır. • Scriplerin, bilgi temsil probleminin, procedurel semantikten daha üst seviyede ele aldığı görülmektedir. Anlamın, cümleler seviyesinde ele alınması ve gereğinin buna göre yapılması bazı durumlarda anlamsızdır çünkü insanların bazen söylediği ile yaptıkları birbirini tutmamaktadır. Bazı araştırmacılar bilgisayar anlamasının önündeki bu "içerikten bağımsız anlam" engelini aşmak için değişik yolar izlemiştir. Bu yollar biçimsel, alandan bağımsız, düşünce ve dilden arındırılmış, alana özel desenleri ve mantığı olan yollardı. Bu uygulama geliştirmeye çalışan kurumları yapay zekada düzen ve karmaşa arasında bir seçim yapmasına sebep olacak ve Modern Peryota taşacak bir ikilem içinde bıraktı. • Diğer araştırmacılar insanın problem çözmesini bulmaca çözme, kelime oyunları ve hafıza testleri gibi tekil görevlerde modellemeye çalıştı. Hedef programın kullanacağı bilgi ve stratejiyi, insanın kullandığı bilgi ve stratejiye mümkün olduğunca çok benzetebilmekti. Deneysel sonuçlar bu tip programların ne kadar başarılı olduğunu ortaya koymuştur. • Bu tür karşılaştırmalı çalışmaların en büyük problemi yapay zeka programının insanla aynı şeyi aynı şekilde yapıp yapmadığının direkt kontrol edilememesidir. Bu yüzden bu durumun dolaylı olarak kontrol edilebilmesi için programın zor problemlerde veya kötü veride aynı hataları yaptığının veya aynı sürelerde aynı çözüm profillerini sergilediklerinin gösterilmesine çalışılmıştır. Basitçe aynı çözümü göstermeleri yeterli değildir çünkü bir problemin çözümü için çok farklı stratejiler ve bilgi kodlamaları mümkündür. 2.2.2. Bilgi temsil Şemaları: • Bu günlerdeki bilgi temsili kavramsal bilim için çok üretken iken bilgisayar bilimleri için çok fazla detay içeriyordu. Bu yüzden bilim adamları "üretim kuralları" adı verilen ve günümüz uzman sistemleri tarafından da ana dayanak noktası olarak kullanılan bir şema geliştirdiler. Ayrıca "protolol analizi" adı verilen ve insan uzmanların bir problemi çözerken sesli düşünmeye yönlendiren bir tekniğin önünü açtılar. Bu yöntem günümüzde mühendislerin kullandığı "sonuç çıkarma" tekniklerinin atasıdır. Bu psikolojik çalışmalar bilgi temsilinin ne kadar zor bir konu olduğunu fakat filozofi tartışmalarla değil de deneysel sorgulamalarla çözülmesi gerektiğini ortaya koymuştur. • Romantik periyotta araştırmacılar özel doğruların veya dünyaya ait genel gerçeklerin çok farklı şekilde temsil edilebileceğini ve bir bilgisayar programına amaca yönelik olarak uygulanabileceğini gördüler. Bu yöntemlerden birkaçı: • -Kurallar formu: "Eğer şu şartlar sağlanıyorsa şu işlemi yap" • -Ağ Çeşitleri: Yaprakların kavramlara ve dalların bu kavramlar arasındaki ilişkilere karşılık geldiği yapı, • -Mantıksal formüller: Hangi çıkarımın ne zaman yapılacağına dair doğruları, prensiplerin ve kontrol bilgilerinin mantık fonksiyonları formunda yazılması • Bu yapılar bazen birlikte kullanılır. Bununla birlikte bu devirde geliştirilen programların çoğu hala araştırma araçlarıydı. Sadece birkaçı gerçek uygulama alanları bulabildi. • Bununla birlikte günümüzde halen sorgulamadan kullanılan temsil şemalarının çoğu bu dönemde geliştirilmiştir. Örneğin gerçeklerin ve tanımlamaların biçimselleştirmesini grafiksel olarak ele alan asosyatif ağlar (associative nets) ve semantik ağlar gibi. Uzman sistemler sahip olduğu fonksiyon ve yapılara hep bu periyotta yaptığı hataları sayesinde ulaşmıştır. Ör:Yarasaların canını sıkmak ve penguenlerle problem yaşamak • Semantik ağlar dünyanın bilgisini ve kelime anlamlarını graf-teorisi biçiminde kodlamak anlamına gelmektedir. Önceki slaytta kuşlar, yarasalar ve hatta bazı tür uçan balıklar için sahip olduğumuz bilgi elde edilmeye çalışılmış. Bununla birlikte bir kuş için, uçan varlık derken ilk aklımıza gelen şeyken, yarasa ikinci balık ise aklımıza hiç gelmeyen bir türdür fakat ağaç şeklinde basit bir grafik bunu gösterememektedir. • Benzer olarak birçok kuş uçabildiği halde penguenler uçamaz ama görüldüğü gibi grafikte bu ayrım da söz konusu değildir. Herhangi birisi "kuşlar genelde uçarlar" diyebilir fakat biz bunu graf olarak nasıl ifade edeceğiz? • "Bilgisayar anlaması" notasyonu konusu tamamiyle karmaşıktır. Özellikle bir makinenin hangi koşullar altında herşeyi anladığının iddia edilebileceği belirsizdir. Hatta insan için bunun söylenebilmesinin zemini bile hazır değildir. Bununla birlikte tam olarak anlamayı açıklayamasa da bir şeyi anlaşmış olmak için gerekli olan bir kaç maddeyi alt alta sıralayabiliriz. • Bunlardan ilki dünyanın bilgisini temsil edebilme ve bu temsili kullanarak çıkarımlarda bulunabilme yeteneğidir. Uzman sistemlerin bazı alanlar için sahip olduğu bilgiyi özel temsillerle gösterebilmesi ve bu gösterimleri kullanarak gerçek dünya problemlerine çözüm bulabilmesi bu yeteneğe sahip olduğunu gösterir. Bununla birlikte kapasiteleri sınırlıdır, öyle ki alanın boyutu büyüdükçe güvenilirlikleri azalır. • Anlamanın bir diğer sinyali aynı durumların farklı temsillerdeki benzerliğini veya eşitliğinin algılanabilmesidir. Uzman sistem bu noktada çuvallamaktadır. Çünkü uzman sisteme girdi olarak gelen bilginin tamamen kaydettiği bilgiyle aynı olması gerekir. Desenlerden elde edilen farklı çıkarımlar uzman sistemin bozulmasına veya tahmin edilemez davranmasına sebep olacaktır. • Son olarak öğrenme alışılagelmiş ezberden öte gelen bilgi ile sahip olduğu bilgiyi birlikte değerlendirip gerekirse ikisini de değiştirebilecek yetenek de olmalıdır. Bu tür beceriyi de çok az uzman sistem gösterebilmektedir. • Günümüz uzman sistemleri bu kriterlerin çoğunda başarılı olamasa da bir alanda problem çözebilmeleri için bir insanın "anladığı" gibi anlamalarına gerek olmadığı açıktır. Birkaç iyi dökümante edilmiş uzman sistemin, Romantik Peryotun üstünde çalıştığı gibi bir "anlamaya" sahip olmasa da, insan uzman gibi davranabildiği görülmüştür. Yani bir uzman sistemden beklentimiz bir insan uzmanın vereceği cevaba yakın bir cevap vermesi veya insan uzmana doğru cevap verebilmesi için yardım etmesidir. Uzman sistemden beklentimiz bir insanın mantık yürütmesiyle aynı adımları yürüterek veya bir alanda sahip olduğu bilgiyi ayenen insanını ki gibi organize ederek davranması değildir. Bu gibi şeyler psikolojinin araştırma konusudur. • Bununla birlikte bu tür denemeler insanların ve makinelerin problem çözmesine yeni boyutlar getirmiştir. 2.3. Modern Peryot: Teknikler ve Uygulamalar: • Modern Peryot dediğimiz aralık 1970'lerden 1980'lerin sonuna uzanmaktadır. Bu dönem uzman sistemlerin yükseldiği bu yüzden de yapay zekanın kışı olarak tanımlandığı bir dönemdir. Bu dönem internetin ortaya çıkması ve tüm ilginin bu yöne kaymasıyla sona ermiştir. Bundan sonraki dönem daha çok bilgi toplamaya çalışan ve elektronik ticarette önerilerde bulunan akıllı ajanların, internet tabanlı uygulamaların olduğu post-modern peryot olmuştur. Bu dönemdeki yapay zekanın başarısı veya başarısızlığı araştırmacıların önceki dönemin karakteristik konularından vazgeçme ve yeni bilgi ortamında gerçek problemleri yoğunlaşmalarıyla bağlı olacaktır. 2.3.1. Bilgi güçtür: • Modern peryotta sezgisel problem çözücülerin gücünün, birbiriyle ilişkili bilginin temsilinde yattığına inanmaya başlanmıştı, sofistike çıkarım veya karmaşık değerlendirme fonksiyonlarında değil. Araştırmacılar insan bilgisini bir desenle aktif hale gelecek şekilde moduller halinde kodlayarak teknikler geliştirdiler. (Procedural vs declerative örneği)İnsan problem çözmesini taklit etmeye çalışan ilk metotlar bilgi kodlamasını tekdüze hale getirip sonuç çıkarım mekanizmasını basitleştirmeye çalışmıştır. Ör: Procedural vs Declerative • C gibi procedural bir dilde yazılan bir programda mantıksal çıkarım yapan kısımla, bilgiyi işleyen kısmın fiziksel bağlantısı yoktur. Örnek vermek gerekirse, verilen bir kuş türünün uçup uçamadığını kontrol eden kod parçası aşağıdaki gibi gözükecektir.
Char fly(char *s)
{ char answer =‘y’; if (strcmp(s, «penguin»)==0) {answer=‘n’;} return; } • Bu çalıştırılabilir bir koddur ve programın başka bir yerinden char c; c=fly(«penguin»); Şeklinde çağırılabilir. Bunun yerine iki kuralımız olduğunu düşünsek: Buradaki kurallar CLIPS notasyonunda yazılmıştır ve bir (defrule bildirim veya açıklama olmaya daha yakındır. (bird (type ?x)) Rastgele verilen bir kuşun uçabileceğini söyleriz. Ama eğer => kuşun penguen olduğunu bilirsek uçamadığını söyleriz. (assert(yes)) Elbette penguenler kuştur ve uzman sistemin diğer ) parçasının hangi kuralı kullanacağına karar vermesi gerekir. (defrule Uzman sistemin bu parçasına çıkarım motoru denir. Buna (bird (type penguin)) rağmen kuralların modülerliği ortadadır. => (assert(no)) ) • İnsan bilgisini geleneksel programları çözebileceği değil de direkt olarak desen yönlendirmeli modüllerle temsil edilmesinin bazı avantajları bu dönemde görülmüştür. İşte onlardan bazıları: • Bilgi elde etme uzmanların bilgi saklama ve uygulama yöntemi ile uyum içindedir bir uzmana işini nasıl yaptığını sorsanız sadece birkaçı başarıyı garantileyecek adımları uygun sırada size söylenebilecektir. Bunun yerine normal durumda ne yaptıkları ve olağanüstü durumda ne yaptıkları sorularak bilgi elde edilmeye çalışmalıdır. • Bu tür bir programlama da sistem tasarımcısı ve programcı işlerini düzgün yaparlarsa ortaya çıkan program kolaylıkla düzenlenebilir ve geliştirilebilir. Aksi taktirde yapılacak olan değişiklikler öngörülemeyen etkilere sebep olabilir. • Uzman sistemlerin pratik kullanıcıları uzman sistemlerin programın tamamı ile çözmelerini beklemektedir bunun yerine akıllı bir ajan gibi farklı çözümler seçip bunların daha doğrulandığını öne çıkabilir bu şekilde son kararı veya strateji seçimini kullanıcıya bırakır ama hala yararlı bir araçtır. • Bilgi tabanlı bir sistem tasarlaması gerçekten zor bir iştir çünkü bilgi arttıkça kurallar atmaktan ve bu kuralların birbirleri ile olan ilişkileri de karmaşıklaşmaktadır. Deneyler göstermiştir ki «sezgisel sınıflandırma», «hiyerarşik hipotezler» ve «test et, öner ve düzelt» gibi gizemli isimlere sahip metotlar bazı program tipleri için başarı sağlarken temsil ve kontrollerinde bazı sorunlar ortaya çıkmıştır. • Modern periyotta bazı sistemler zor problemler için yüksek performans göstermiştir. Örneğin bilgisayar sistemleri yapılandırması için tasarlanan R1/XCON gibi. Bu gibi sistemlerin geleneksel programlamadan ve yapay zekanın ilk çalışmalarından ayıracak bazı prensipler yine bu periyotta ortaya çıkmıştır işte bunlardan bazıları. • Önceki dersimizde de gördüğünüz gibi uzman sistem bilgi tabanını ve çıkarım motoru ayrı olarak sunmaktadır bu sayede modüller de bir değişiklik yapacak veya yeni bilgi ekleyecek birisini programın kodlarını sahip olmasına gerek yoktur. • Pratik kullanıcılar bilgi temsilinin tekdüze bir hale getirmeye çalışmaktadır bu sayede çıkarım motoru basitleştirilebilir ve bilginin kodlaması ve anlaşılması kolaylaştırılabilir . bununla birlikte basitleştirmek bazı tür programlar için bilginin aynı biçimde ifade edilmesine sebep olduğundan problemlere sebep olabilir. Bu durumu basitleştirme ile temsilin çeşitlendirilmesi arasında bir seçim yapmayı gerektirmektedir. • Geleneksel programlarının aksine uzman sistemlerden aldığı kararları açıklaması istenmektedir bunu bilgi temsilini basitleştirerek ve basit çıkarım motoru kullanarak gerçekleştirebilir, bu sayede karar verme adımlarının hangi bilgi modüllerini hangi sırada aktif hale getirildiği gösterilebilir. 2.3.2. Yapay zeka kışı yapay zeka baharı • Modern peryotun bir sonraki kısmı «düzgün ve dağınık» ve «sembolik ve alt sembolik» tartışmalarıyla geçmiştir. «Düzgün» araştırmalarını destekleyenler «inşa et ve test et» mantığını benimserken «dağınık» araştırmaları destekleyenler «adapte et kullan ve gerekli ise yeniden mühendislik yaparak gerçek uygulamalarda kullan» mantığını benimsemişlerdir. Bu arada birçok uzman geniş bir uygulama alanı bulurken yapay zeka şirketlerinin piyasayı eline geçirmesi sonucu; sadece belli bir donanımın üzerinde çalışan ve diğer ticari sistemleri adapte olamamış pahalı yazılım paketleri piyasayı kaplanmıştır. Bu gibi yapay zeka teknikleri her türlü program için sihirli bir çubuk değildi fakat iddia ettikleri şeyler çok büyüktü. • Sonuç yapay zeka kışı olarak tanımlanan durumdu. Bilgi ortamı büyüyor fakat yapay zekanın tekniklerinin; metin, görüntü gibi verilerden bilgi elde etmesi, analiz etmesi, sınıflandırması, yönlendirmesi, indekslenmesi, özetlemesi ve tercüme etmesi gibi şeyler yapabileceğine inanılmıyordu. Artık zaman sembolik hesaplama zamanıydı ve bilgi tabanlı sistemler artık devredeydi. Ama bu yaklaşımlar istatistik ve ihtimaller yaklaşımlarıyla birleştirilmediğinde internetteki ve ticari online sistemlerdeki devasa bilgiler baş etmesi mümkün değildi.