You are on page 1of 65

Yapay Zekaya Giriş

Yrd. Doç. Dr. Barış Koçer


• 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.

You might also like