GİRİŞ Uzman sistemlerde, bilgi tabanında mevcut kurallar ve gerçeklerin çeşitli şekillerde kullanılmasıyla yeni birtakım gerçeklere ulaşılması, bilginin kullanılmasının en yaygın hallerinden birisidir. Çıkarım yöntemleri olarak adlandırabileceğimiz bu yöntemlerden problem çözme veya yeni eklenen bir takım bilgilerin sonuçlarını elde etmek gibi amaçlarla yararlanılır. Forward (ileri doğru ) ve Backward (geriye doğru) reasoning en çok kullanılan çıkarım tekniklerindendir. Genelleştirilmiş Modus Ponen Kuralı iki şekilde uygulanabilir. Bilgi tabanlı (Knowledge base) sistemdeki kurallardan yola çıkarak bizi yeni sonuçlara ulaştıracak çıkarımlar yapabiliriz. Buna Forward reasoning veya chaining denir. Bu genellikle, veritabanına yeni bir gerçek eklendiğinde, bunun sonuçlarını elde etmek için kullanılır. Bunun bir alternatifi olarak, ispat etmek istediğimiz bir sonuçtan başlayabiliriz. Bu çıkarımın yapılabilmesi için gerçekleşmesi gereken dayanak noktalarını ve bunların doğru olup olmadığını tespit ederek ulaşmak istediğimiz sonuç çıkarımın doğru olup olmadığını tespit ederiz. Buna backward chaining veya backward reasoning denir. Backward reasoning, ispatlanması istenen bir amacımız olduğunda kullanılabilir. Burada Modus Ponen kuralını hatırlamamızda yarar var. Eğer bir A önermesi gerçekse, B nin de gerçek olması, bir kural olarak biliniyorsa, yani ( if A, then B) kuralı mevcutsa, bu durumda A nın doğru olduğu probleme aiat bir gerçek olarak ve ya bir çıkarım sonucu olarak biliniyorsa B nin de doğru olduğu söylenebilir. Bunu lojik bir ifade olarak şöyle ifade edebiliriz : (A ve (A B ) ) B Bu kurala Modus ponen kuralı denir. Forward ve Bacward Reasoning, Modus Ponen kuralını kullanırlar. Bunu bir örnekle şöyle açıklayabiliriz. A, B ve C gibi üç tane mantıksal değişkenimiz olsun. Ayrıca iki tane de kuralımız bulunsun : R1: if A, then B R2: if B then C Bilgi tabanında A nın doğru olduğu gerçeği yüklenmiş olsun. C nin doğru olup olmadığını anlamak istiyoruz. Forward reasoning veri çıkışlıdır. Yani elimizdeki A gerçeğinden yola çıkarak C ye ulaşmaya çalışırız. Burada kural 1 gereği, A doğru olduğundan, B nin de doğru olduğu sonucunu çıkarabiliriz. Daha sonra B den ( aslında A yı bir şart olarak kullanan tüm ifadelerin sonuçlarından ) hareket ederek, kural 2 gereği C nin doğru olduğu sonucuna varırız ki bu bizim varmak istediğimiz sonuçtur. Backward reasoninig amaç veya sonuç çıkışlıdır. Doğruluğunu ispatlamak istediğimiz C sonucunun gerçekleşmesinin ön koşullarından hareket ederiz. C nin sonuç olarak bulunduğu ifade kural 2 dir. Kural 2 nin şart kısmında B geçer. B aynı zamanda kural 1 in sonuç kısmında bulunmaktadır ve sistemimiz kural 1 in şart kısmı olan A nın gerçek olduğunu bildiği için B nin gerçek olduğunu sonucuna varır. Böylece C nin doğru olduğu, onun doğruluğu sonucuna ulaştıran B nin doğruluğunun ispatlanmasıyla, ispatlanmış olur. İLERİ ÇIKARSAMA (Forward Reasoning) Otomobil kullanırken, motorun aşırı ısındığını fark ederseniz ne yaparsınız. Böyle bir problem oluştuğunda bu yeni bir veridir ve bunun sonuçları üzerinde düşünmeye başlarız. Bu probleme genel bir şekilde bakarsak; bir durum var (aşırı ısınma ) ve biz bu durumun ne gibi sonuçları olabileceğini bilmek istiyoruz( araba stop edecek mi?). Durumu ve ya gerçeği tespit ettikten sonra bu konuyla ilgili bildiğimiz tüm genel kuralları gözden geçiririz. Bu kurallardan bazıları şunlardır: Kural 1: Eğer motor fazla ısınıyorsa, araba stop eder.
Kural 2: Eğer araba stop ederse, tamiri için para harcamam gerekir, ve eve geç kalırım. Eve geç kalacağım ve para harcamak zorunda kalacağım sonucuna nasıl ulaşırım? Olaylar zincirini başlatan gerçek arabanın ısınmasıdır. Bu birinci kuralın ilk bölümünü, şart kısmını doğru yapar. Bu kural 1 in sonuç kısmının doğru olmasını, yani arabanın durması sonucunu getirir. Zincir devam eder. Arabanın durması, kural 2 nin şart kısmını tetikler ve sonuçta bunun sonucuna ulaşırız. Bir durum oluştuğunda ( aşırı ısınma ), bu birşeyleri etkiler ( sonuç ). Durum yani bilgi karardan ve ya sonuçtan önce geldiği ve biz bilgiden yola çıktığımız için buna ileri doğru çıkarım ve ya forward reasoning deriz. İleri doğru çıkarım işlemi bilgisayarla gerçeklenirken, aslında insanın düşünce tarzının benzerinin uygulanması söz konusudur. Uzman sistemimizde konuyla ilgili bilgiler ( kurallar ) tutulmuştur ve sistem kullanıcıdan özel durumlara ilişkin bilgileri ister ve bunun sonuçları hakkında rapor verir ve ya tavsiyede bulunur. Biraz önceki araba örneğinde, uzman sisteme tüm kurallar daha önceden girilmiştir ve aşırı ısınma bilgisinin girilmesiyle forward reasoning işlemi başlar. Örneğin bir borsa uzman sistemimiz olsun ve aşağıdaki kuralları kullandığını varsayalım. 10 Eğer faiz oranları = azalma, borsa = artma 20 Eğer faiz oranları= artma, borsa = azalma 0 Eğer dolar kuru = azalma, faiz oranları =artma 40 Eğer dolar kuru = artma, faiz oranları = azalma Bu kuralları içeren bir uzman sistemimiz var ve yatırım danışmanlığı yapıyoruz. Bir müşterimiz bize, dolar kurunun rakip para birimleri karşısında düşmeye başladığını ve bu durumda ne yapması gerektiğini soruyor. Uzman sistemimize, dolar kuru = azalma bilgisini verdik ve forward reasoning işlemi başladı. İlk önce şart kısmında ( eğer li kısım ) dolar kuru nu değişken olarak bulunduran kurallar aranır. 0 ve 40 numaralı kurallarımız dolar kuru değişkenini içermektedir. 40 nolu kuralda şart kısmı yanlış çıkar ve buradan ileriye doğru bir çıkarım yapılmaz. 0 nolu kuralımızın şart kısmı doğrudur ve buradan bir sonuç elde ederiz: faiz oranları= artma Uzman sistem ileri doğru hareketine bu sonucu bir şart ve ya durum olarak kullanan kuralların tespitiyle devam eder. 10 ve 20 nolu kurallar şart kısmında faiz oranları değişkenini içeriyor. 10 nolu kuralın şart kısmı doğru değil. Zincir buradan devam etmez. 20 nolu kuralın şart kısmı doğru. Bunun sonucunda yeni bir çıkarım yapılır: borsa= azalma Zincirleme, ileri doğru harekete devam edilir. Fakat sistemimizde borsa değişkenini bir şart olarak kullanan herhangi bir kural bulunamaz. Burada çıkarım işlemi sona erer. Uzman sistemimiz, müşterimize aşağıdakine benzer bir rapor verir: Dolar kuru azaldığı zaman, faiz oranları yükselir ve borsa endeksi düşer. Bu örnekten yola çıkarak tipik bir Forward reasoning sisteminin çalışmasını şöyle maddeleştirebiliriz: 1. Sistem bir veya daha fazla durum bilgisiyle çalıştırılır. 2. Her durum için sistem, bilgi tabanında bu durumu şart kısmında bulunduran tüm kuralları arar.. Her bir kural, şart kısmının doğru çıkması durumunda yeni durumlar oluşturur. Bu yeni durumlar mevcut durumlara eklenir. 4. Eklenen her yeni durum için süreç yeniden başlar. Yani 2. maddeye dönülür. Eğer hiç yeni durum oluşmuyorsa oturum sona erer. TERSİNE ÇIKARSAMA (Backward Reasoning) Arabanızın çalışmadığını düşünün. Sebep, akünüzün zayıf olması mı? Arabanızın ayara mı ihtiyacı var? Yoksa marş mı bozuk? Problemi daha genel bir hale getirebiliriz;
Elimizde bir sonuç var(araba çalışmıyor.) ve problemi doğuran sebepleri tahmin etmek istiyoruz. Problemin bir önceki bölümde tanımlanan ileri çıkarsamadan farkına dikkat edelim. O örnekte, araba aşırı ısınmıştı ve biz bunun sonucunun ne olacağını bilmiyorduk. Amaç aşırı ısınmanın sonucunu tahmin etmekti. Burada ise sonuç belli. Amacımız ise bu sonucu ortaya çıkaran sebebi bulmak. Bu problemi çözmek için kurallara ihtiyacımız var; Kural 1: Eğer akü zayıfsa, yeterli akım marşa ulaşmaz. Kural 2: Eğer marşa yeterli akım ulaşmazsa, araba çalışmaz. Arabanın çalışmamasına neden olan sebeplere nasıl yaklaşabiliriz? Durumu ortaya koyarken 2 anahtar kelimeyi aklımızda tutmalıyız; tersine ve çıkarsama. Arabanın çalışmaması sizi harekete geçirerek, zaman içerisinde geri gidip probleme yol açan sebepleri düşünmenizi sağlar. Unutmayın ki, bir neden sonucundan daha önce ortaya çıkar. Bunun için tersine çıkarsama, sonuç araştırarak, bunların sebeplerini bularak ve bulunan sebeplerin daha önceki sonuçlarla bir bağlantısı olup olmadığını ortaya koyarak çalışır. Ta ki bu döngü bulunan sebebin herhangi bir kuralın sonucu olmaması durumuna kadar çalışır. Az önceki örneğimizi ele alırsak(arabamız çalışmıyor), kural 2 Öyleyse araba çalışmaz. Sonucunu içerdiğinden öncelikle buna sebep olan Marşa yeterli akım ulaşmazsa gerçeğini elde ederiz. Tersine çıkarsama zinciri Neden marşa yeterli akım ulaşmıyor sorusuyla devam eder. Bu sonucu üreten sebep ise kural 1 de bulunmaktadır. Kural 1 e göre bu sebep Akünün zayıf olması dır. Bu zincirleme işlem sona kadar devam edilerek ulaşılan sebep doğru olarak bulunursa, arabanın çalışmamasının sebebi bulunmuş olur. Eğer bu sebep yanlışsa, diğer uygun kurallar bulup sebeplere başka tersine çıkarsama zincirlerini takip ederek ulaşmamız gerekir. Eğer problemi ortaya çıkaran diğer sebepler kurallar arasında bulunmuyorsa, sizin(veya araba sahibinin) yada bir tamircinin sonuca ulaşmak için ekstra bilgiler koymanız gerekir. Yani kullandığınız uzman sistemin bilgi tabanına ek kural veya kurallar koymanız gerekir. Şimdi daha açıkça görebildiğimiz gibi, zincirleme(chaining) bir kurallar grubunu işaret etmektedir. Örneğimizdeki zincir Kural 2 ile başlayıp Kural1 ile bitmektedir. Peki Tersine kelimesi neyi ifade etmektedir. Sonuçtan yola çıkarak bu sonucu doğuran temel sebebe ulaşmayı ifade etmektedir. Tersine çıkarsama yöntemi, sonucun bilinip, sebeplerin arandığı problemlerde bize yardımcı olur. Bir bilgi tabanı kurarız ve tersine çıkarsama prensibinin yardımıyla sonuca ilişkin elimizdeki verileri kullanarak bu sonucu oluşturan temel sebebi bulabiliriz İleri çıkarsamayı da kullanarak verilen bir sebebin hangi sonuca veya sonuçlara yol açabileceğini bulabiliriz. Tabi bizim isteklerimizin genel olarak karşılanabileceği bir uzman sistem oluşturmak içinde sistemin iyi tasarlanmış ve bütün olasılıkların(en azından çoğunluğun) düşünülmüş olması gerekir. Özet: İleri Çıkarsama: X in A->C formuna sahip olduğu durumda, X i kanıtlayabilmek için, A->B formunda bir aksiyon veya teori bulunur ve kanıtlama problemi B->C ye dönüştürülür. Tabi bu olay zincir şeklinde sonucun bulunmasına kadar devam eder, sadece iki adım olmayabilir. Burada basitlik açısından böyle bir örnek verilmiştir. Tersine Çıkarsama : X in A->C formuna sahip olduğu durumda, X i kanıtnlayabilmek için, B->C formunda bir aksiyom veya teori bulunur ve kanıtlama problemi A->B ye dönüştürülür.
Karar Ağacı Örneği Bu örnekte basit bir bilgi tabanı oluşturulmasını, bilgi tabanının diyagram yapısının çizilerek, diyagram üzerindeki işlemlerin tanımlanması, ileriye ve geriye çıkarsamanın bu örnek üzerinde nasıl gerçekleneceği gösterilmiştir. Karar ağacı bir firmaya başvuran adayın hangi bölüme yerleştirileceğini veya yerleştirilemeyeceğini gösteren bir diyagramdır. Gerçekten eğer büyük bir mühendislik firmasının müdürü iseniz böyle bir kararı vermeniz bazen çok zor olabilir. Çünkü sizi etkilemeye çalışan ve sabırsız bir adayın karşısında doğru soruları sormak ve firmanın en uygun bölümüne almak zorundasınız. Eğer böyle bir uzman sistem tasarlarsanız fazlaca kafanızı yormaya gerek kalmadan bir tuşa basarak hangi pozisyona, hangi şartları sağlayan adayların alınabileceğini görebilirsiniz. Adaya bir yapılmaya cak. 2 < 2.0 No <.5 Kaç yıllık >=2 tecrübesi var 7 Adaya iş teklifi yok. 9 Adayın bir derecesi Var mı? 1 Adayın Okul ortalaması 5 >=.5 Adaya pazarlama mühendisliğinde 10 Önemli bir buluş yaptı mı? 4 Adaya AR-GE Bölümünde iş teklifi 6 Adaya Üretim Mühendisliğin de 8 Şekil 1. İş Teklifi Karar Ağacı. Ağaç yapımızda kullanılan yapılar ve manaları; <.5 Yol 1 Adayın Okul ortalaması 5 >=.5 Şekil. Diğer Sonuç Yol 2 Şekil 2. Karar düğümü
Şekil 4. Sonuç Adaya bir yapılmaya cak. 2 No Adayın bir derecesi Var mı? 1 Şekil 5. IF-THEN Yapısı Eğer böyle bir uzman sistem yapısı kulla nıyor iseniz bir adayın hangi bölüme yerleştirilmesi için hangi şartları sağlamasını gerektiğini bir tuşa basarak görebilirsiniz. Örneğin böyle bir firmaya AR-GE bölümüne bir eleman alınacaksa sistemimiz tersine çıkarsama yaparak Yolun 6,4,1 şeklinde olduğunu tesbit edecek ve kullanıcıya IF derece= And Buluş= Then Bölümü=AR-Ge şeklinde bir rapor verecektir.