1.48k likes | 2.72k Views
YAPAY ZEKA ve UZMAN SİSTEMLER. Ders Notu - 9 Uzman Sistemler. Konular. Bilgi Bilgi Edinme Uzman Sistemlerinin geliştirilmesi Kurallar ve Bilginin tasviri Kural Tabanlı Uzman Sistemleri Uzman Sistemlerinin nitelikleri. Bilgi Nedir?.
E N D
YAPAY ZEKA ve UZMAN SİSTEMLER Ders Notu - 9 Uzman Sistemler
Konular • Bilgi • Bilgi Edinme • Uzman Sistemlerinin geliştirilmesi • Kurallar ve Bilginin tasviri • Kural Tabanlı Uzman Sistemleri • Uzman Sistemlerinin nitelikleri
Bilgi Nedir? • Bilgi (Knowledge)özne veya alanın teori ve pratik anlaşılmasıdır. Bilgi aynı zamanda güncel bilinenlerin toplusudur • Bilgi güçtür • Alanında çok iyi bilgi ve deneyime sahip olan kişiye uzman (expert) denir • Her hangi bir alanda derin bilgisi (olgular ve kurallar) ve ciddi pratik deneğimi olan her kez alan uzmanı sayıla biler. Alanın kapsamı sınırlı ola bilir. • Genelde, uzman başka kişilerin düşüne bilmediklerini de düşüne bilme,anlaya bilme yeteneği bulunan bir insandır
Bilgi Edinme • Bilgi edinme bir yöntemdir ki, bununla bilgi mühendisi bilgileri alıyor,çıkarıyor (esasen uzmanlardan, ama kitaplardan , teknik talimatlardan ,araştırma makalelerinden ve diğer kayda değer kaynaklardan da ). Bu bilgiler makine ve insan tarafından anlaşıla bilen bilgi tabanına (dönüştürülerek) aktarılır. • Bilgi edinmesi ile meşgul olan kişi bilgi mühendisidir ve edinen bilgileri bilgisayarın kullana bileceği elektronik biçime dönüştürmelidir.
Bilgi edinme (devamı) Bilginin önemli özellikleri: • deneysellik;-tecrübe ile kazanılır • tanımsallık; - kesin tanımlana,belirlene bilmelidir • niteliksellik; - niteliği ve değeri ile farklıdır • Belgelendirilmelidir- diğerleri tarafından da kabul edilebilirliği için • Bazı alanlar için bu özelliklerin hepsi,bazıları için ise bir kaçı geçerlidir • Bilgi edinme çok emek ve zaman gerektiren süreçtir • Bilgi tabanlı sistemler için bilgiler elle oluşturulur ki, bu da sistemlerin hızla geliştirilmesini sınırlandırıyor Bilgi mühendisi bu bilgileri etkili ve yararlı biçimde çıkarmak ve belgelemek için özel yöntemler buluyor.
Uzman Sistemler • Belirli bir alandaki bir uzmanın kabiliyetlerini bilgisayarlara aktarma çalışmaları • Söz konusu kabiliyetler: • Problemi anlama • Bilgi tabanı • Çıkarım süreçleri • Açıklama süreçleri • Belirli bir alanda, bir uzmanın önerdiği çözümleri üretebilen, o alanın bilgileri ile donatılmış, gerekçeleme metotları ile olayları süzebilen programlardır. • Bilgi Tabanlı Sistemler (Knowledge Based Systems) olarak ta bilinirler. • Bizde uzmanlaşıyoruz. Her şeyi bilen insanlar yetiştirmek yerine, belli bir alanda uzman insanlar yetiştiriyoruz.
Uzman Sistemler • Bir üretim ya da bir kontrolü yapmak için geliştirilmiş otokontrole sahip mekanik yapı ya da yazılımların genel adıdır. • Sorulara cevap veren, açıklık getirmek için soru soran, tavsiyelerde bulunan ve karar verme sürecine yardımcı olan sistemdir.
Uzman Sistemlerin YapısınaGenel Bakış • Uzman Sistemler bünyelerinde var olan “bilgi” ile sonuca varırlar. • Problem çözümünde uzman bilgisini yani insan bilgisini kullanırlar. Bu sistemlerde uzman bilgisi, bilgi ya da kurallar kümesi olarak adlandırılır. Bu bilgi ve kurallar kümesi problem çözümünde ihtiyaç duyulursa kullanılır.
Uzman Sistemlerin YapısınaGenel Bakış • Uzman Sistemler, yordamsal programlardan çok farklıdır. • Yordamsal programlar, algoritmaya dayanan, kesin sonucu olan programlardır. • Bir uzman sistem sezgisel olarak davranabilir ama geleneksel bir program ise sadece algoritmada tanımlanan süreçleri gerçekleştirebilir. • Uzman sistemler belirsiz durumları ve belirsiz verileri analiz edebilirler ve belirsizlik durumunda çözüm üretebilirler. • Uzman Sistem elimizdeki bilgiyi kullanarak yorum yapar.
Tasarım Öncesi Kararlar • Tasarıma başlamadan önce, çözümü aranan problem için Uzman Sistemlerin en uygun yöntem olup olmadığına karar verilmelidir. • Geleneksel programlama ile çözüm bulunabilen bir problem için Uzman Sistemlere başvurmak gereksizdir.
Tasarım Öncesi Kararlar • Problem, yordamsal programlama ile çözülebilir mi? • “Evet” ise, bu durumda Uzman Sistemlerle uğraşmanın en iyi çözüm olmadığı barizdir. • Uzman Sistemler daha çok algoritmik çözümü olmayan, eldeki verileri kullanarak sonuç çıkarmak gereken problemler için uygun olur.
Tasarım Öncesi Kararlar • Uygulama yapılacak alanın sınırları kesin olarak belli mi? • Tasarlanacak Uzman Sistemin bilmesi gerekenler ve yeteneklerinin sınırları tam olarak belirli olmalıdır. • Uzman Sistemin alanının mutlaka bir şekilde sınırlandırılması gerekir. Aksi takdirde Uzman Sistem çok karmaşık hale gelir.
Tasarım Öncesi Kararlar • Uzman Sisteme ihtiyaç var mı? • Pek çok uzmanın bulunduğu, rahatlıkla bilgiye ulaşılabilecek bir alanda Uzman Sistem hazırlamak pek de mantıklı olmaz.
Tasarım Öncesi Kararlar • İşbirliği yapılabilecek en az bir uzman kişi mevcut mu? • Tasarlanan projeye ilgi duyan en az bir uzman kişinin bulunması gereklidir. • Bir projeye çok fazla sayıda uzman kişinin katılması da bazen sakıncalı olabilir. Bir problemin çözümü için iki uzman farklı testler ve çözümler önerebilir.
Uzman Sistem Tasarım Aşamaları • Uzman Sistemin tasarımına karar verildikten sonra, uygulanacak genel adımlar ; • Tasarım için bir araç seçilir. • Problemin tam olarak ne olduğu belirlenir. • Sistemin içermesi gereken bilgi analiz edilir. • Sistem dizayn edilir. • Belirlenen araç kullanılarak sistemin bir prototipi oluşturulur. • Sistem istediğimiz hale gelene kadar üzerinde genişletmeler ve testler yapılır.
Uzman Sistem Tasarım Aşamaları • Tasarım için bir araç seçilir. • Buna en başta karar vermek, Problem Analizi ve Dizayn aşamalarının uygulamaya geçirilmesi zamanı geldiğinde, kullanacağımız dille uyum sağlamakta zorluk yaşanmaması açısından önemlidir. • Kullanılacak aracın, sistemimizin karmaşıklığına uygun esneklikte ve güçte olmasına dikkat edilmelidir. • En çok tercih edilen Uzman Sistem Programlama araçları Prolog ve Lisp’tir…
Uzman Sistem Tasarım Aşamaları • Problemin tam olarak ne olduğu belirlenir. • Tasarlayacağımız Uzman Sistemin uğraşacağı problemler açık ve anlaşılır hale getirilmelidir, sistemin sınırları belirlenmelidir. • Problemimiz ne kadar anlaşılır olursa, tasarım sırasında uzman kişinin hangi bilgilerine ihtiyacımız olduğuna karar vermek o kadar kolay olacaktır.
Uzman Sistem Tasarım Aşamaları • Sistemin içermesi gereken bilgi analiz edilir. • Sistemin üzerinde analiz yapacağı ana sorgulamalar ve ilişkiler düzenlenir. • Uzman kişi tam olarak hangi kararları verir? • Kararların sonuçları nelerdir? • Hangi sonuçlar daha fazla düşünmeye, araştırmaya veya etkileşime ihtiyaç duyuyor? • Karara ulaşmak için hangi kaynaklar veya bilgi girişleri gerekiyor?
Uzman Sistem Tasarım Aşamaları • Sistemin içermesi gereken bilgi analiz edilir. • Varılan bir kararın sonucunun oluşması için hangi şartların oluşmasına ihtiyaç duyuluyor? • Bu şartların oluşup oluşmayacağı ne kadar önceden tahmin edilebiliyor? • Tahminin ulaşacağı sonucun doğruluğu üzerinde bütün uzman kişiler mutabakata varacak mıdır?
Uzman Sistem Tasarım Aşamaları • Sistem dizayn edilir. • Sistemin kağıt üzerinde tasvir edilmesini içerir. • Akış diyagramları ve matrisleri, sistemin kurallarının taslakları bu dizaynın içerisinde yer alır. • Programın lojik tasarımı ve sistemde kurduğumuz ilişkilerin hiyerarşik düzenlenmesi bu aşamada yapılır.
Uzman Sistem Tasarım Aşamaları • Sistemin prototipi oluşturulur. • İlk adımda belirlediğimiz araç kullanılarak, veri tabanının oluşmuş halini, test edilmesini ve birçok denemenin gerçekleştirilmesini içeren ilk örnek uygulama oluşturulur.
Uzman Sistem Tasarım Aşamaları • Sistem üzerinde genişletmeler ve testler yapılır. • Sistem istediğimiz hale gelene kadar üzerinde testler yapılarak sürekli gözden geçirilir. • Programlama dilindeki syntax hataları veya mantıksal hatalar zamanla düzeltilir ve sistem son halini almaya başlar. • Uzman sistemimizin tasarımdan sonra şekillenmeye başladığı aşama burasıdır. Ne kadar fazla test ve düzeltme yaparsak, sistem giderek o kadar fazla kararlı hale gelecektir.
Uzman sistemlerini geliştirme grubu • Alan uzmanı • Bilgi mühendisi • Programcı • Proje Yöneticisi • Son kullanıcı • Uzman sisteminin başarısı büyük ölçüde bu gruptaki üyelerin birlikte nasıl çalışacağına bağlıdır
Alan Uzmanı • Alan uzmanı özgül alanda sorunları çözme yeteneği bulunan bilgili ve başarılı insandır. • Uzmanın kendi alanında büyük deneyimi vardır. • Uzman aşağıdakileri yapa bilmelidir: • Bilgilerini aktara bilmelidir; • Uzman sistemi geliştirilmesinde istekli olmalıdır • Projeye önemli zaman ayırmalıdır. • Alan uzmanı, uzman sistemlerini geliştirme grubunda en önemli kişidir
Bilgi Mühendisi • Bilgi Mühendisi uzman sistemini tasarlaya,geliştire ve deneye bilen kişidir • Bilgi Mühendisinin görevleri: • Somut bir sorunun çözüm yolunun bulunması için alan uzmanı ile konuşmak • Uzmanın olguları ve kuralları kullandığı zaman hangi muhakeme yöntemlerine dayandığını anlamak ve bu muhakemelerin uzman sisteminde nasıl ifade edile bileceğine karar vermek • Yazılım geliştirmek veya uzman sistemi kabuğu (expert system shell) seçmek veya bilgileri ifade etmek için hangi programlama araçlarının kullanıla bileceğini araştırmak • uzman sisteminin denenmesi, gözden geçirilmesi ve iş ortamına bütünleşmesinde sorumluluk taşımak
Programcı • Programcı alan bilgilerinin, bilgisayarın anlayacağı dilde ifade etmek için programlar yazmakta sorumludur. • Programcı mantıksal programlama dillerinden birisini bilmelidir ve kabuk sistemlerin geliştirilmesinde belirli bir deneyimi bulunmalıdır. • Programcının yordamsal dilleri de bilmesi gereklidir
Proje Yöneticisi • Proje Yöneticisi uzman sistemi geliştirme grubunun başkanıdır ve projenin plan üzere geliştirilmesinde sorumludur. • Proje yöneticisi proje için gerekli olan tüm araçların alınmasında, sorunların giderilmesinde, uzmanla, bilgi mühendisi,programcı ve son kullanıcı ile etkileşimlerin gerçekleştirilmesinde sorumludur
Son Kullanıcı • Son kullanıcı (kısaca kullanıcı) uzman sistemini kullanan kişidir • Kullanıcı uzman sistemini kendinden emin biçimde kullana bilmelidir. Sistemin kullanışı onun için kolay olmalıdır. • Bu anlamda uzman sistemleri için kullanıcı ara yüzünün tasarımı da çok önemli etkendir. Bu yönde son kullanıcının proje geliştirmeye önemli katkısı olabilir.
Uzman sistemi kabuğu • Uzman sistemlerinin başlıca özelliklerinden birisi, dar alan bilgilerinin, genel çıkarım mekanizmalarından ve bilgileri ifade yöntemlerinden ayrı tutulmasıdır. Genel yapısı olan ve alan bilgileri bulunmayan sisteme uzman sistemi kabuğu (shell) denir. Kabukların kullanılması US geliştirilmesi sürecini kolaylaştırır. • Developertools,debugging utilities, APIs,arayüzve diğer araçları içerir. • Örnek: ExsysCorvid uzman sistem aracı (http://www.exsys.com/)
Kural Tabanlı Uzman Sistemleri • 70.ci yılların başlarında Carnegie-Mellon University Üniversitesinden Newell ve Simon üretim sistemi (production system) modelini önerdiler ki, bu da çağdaş kural tabanlı uzman sistemlerinin temelini oluşturuyor • Üretim modeli, insanın sorunları çözmek için uygun alandaki bilgileri eğer- o zaman biçiminde ifade etmesi düşüncesine dayanıyor • Üretim kuralları uzun süreli bellekte tutuluyor ve soruna özgü bilgiler veya olgular kısa bellekte yer alıyor
Bilgi ve Kurallar • İnsanın düşünme süreci çok karmaşıktır ve onu algoritmalarla ifade etmek zordur. Ama pek çok sorunun çözümü için bilgileri kurallarla ifade etmek mümkündür: IF “trafik ışığı” yeşil THEN harekete devam et IF “trafik ışığı”kırmızı THEN hareketi durdur IF “yağmur yağıyor” AND “şemsiye var” THEN dışarı çıkılabilir.
Kurallarla bilginin tasviri • Kurallar IF-THEN yapısı ile ifade edile bilir ve IF kısmında verilmiş bilgi ve olgular, THEN kısmında hareket (yapılması gereken) gösteriliyor • Kural sorunun nasıl çözüleceğini gösteriyor. Kuralların anlaşılması ve oluşturulması kolaydır. • Her bir kural 2 kısımdan oluşuyor: • IFkısmı (ön,sebep,koşul-(antecedent- (premise,condition) • THENkısmı (sonuç,hareket-consequent (conclusion,action).
Kurallarla bilginin tasviri (devamı) • Bir kuralın IF kısmında mantık işlemleri ile birleştirilmiş birkaç koşul ola biliyor. IF <koşul 1> IF <koşul1> AND <koşul 2> OR <koşul2> . . . . . . AND <koşuln> OR <koşuln> THEN <sonuçt> THEN <sonuç>
Kurallarla bilginin tasviri (devamı) • Kuralın solu iki kısımdan oluşuyor: nesne ve onun değeri. Nesne ve değeri işlemle ilişkilendiriliyorlar. • İşlem (operator) nesneye değer atıyor.işlemler dilsel ve matematiksel ifadeler ola bilir. NESNE İŞLEM DEĞER IF ‘müşterinin yaşı’ < 18 AND ‘çekilen para’ > 1000 THEN ‘ebeveynin imzası’ gerekiyor
Kurallarla Bilginin tasviri( devamı) • Kurallar ilişkileri, tavsiyeleri, yönergeleri,stratejileri ve sezgiselliyi … ifade etmek içindir: • ilişki IF “yakıt deposu” boştur THEN motor çalışmaz • Tavsiye IF güz mevsimidir AND hava bulutludur AND yağmur bekleniyor THEN ‘şemsiye almak’ tavsiye olunur • Yönerge IF motor çalışmıyor AND ‘yakıt deposu’ boştur THEN yakıt deposunu doldurmalı • Strateji IF motor çalışmıyor THEN ‘yakıt deposunu’ kontrol etmeli; adım1 tamamlandı IFadım 1 bitmiştir AND ‘yakıt deposu’ doludur THEN ‘akü’yü kontrol etmeli; adım2 tamamlandı
Kural Tabanlı Uzman Sistemlerinin yapısı • Bilgi tabanı(knowledge base) Problem çözümü için gerekli bilgileri içerir. Kural tabanlı uzman sistemlerde bilgiler kurallar halinde tutulur. Her kural bir ilişkiyi, bir emri, bir stratejiyi ya da bir sezgiyi ifade eder. IF (condition) THEN (action) yapısındadır.Kuralın ilk bölümü doğrulanırsa (kuralın ateşlendiği söylenir), ikinci kısmı uygulanır. • Veri Tabanı (database) bilgi tabanında yer alan kuralların ilk (condition) bölümleriyle eşleşen gerçekleri içerir.
Kural Tabanlı Uzman Sistemlerinin yapısı (devamı) • Çıkarım birimi (inference engine) Çıkarım işlemini yapan (gerçeklerle, kuralların ilk kısımlarını eşleştiren, ikinci kısımlarını uygulayan)bölümdür. • Açıklama birimi (The explanation facilitie) kullanıcının, her hangi sorunun çözümüne nasıl ulaştığı, bu veya diğer olguları,kuralları neden kullandığı hakkında uzman sisteminden bilgi almasını sağlar. Uzman sistemi karara nasıl vardığını açıklaya bilmeli, tavsiyelerini, çözümleme ve sonuçları savuna bilmelidir. • Kullanıcı ara yüzü (user interface) soruna çözüm arayan kullanıcı ve uzman sistemi arasında iletişim aracıdır.