Bulanık Mantık ile Risk Değerlendirme — Bulanık Sistem Tasarımı
Bu yazı dizisinde makinelerin insan gibi düşünebilme becerisini kazanmasında en önemli sıçrama noktalarından biri olan bulanık mantıktan bahsediyorum.
Dizinin ilk yazısında temel olarak bulanık mantığın ne olduğundan, klasik küme teorisinden farkından ve kullanım amacından bahsetmiştim.
İkinci yazının ilk kısmı ise risk kavramı hakkındaydı.
Bu yazıda ise bulanık sistem tasarımı için bilinmesi gereken temel kavramlardan söz ederek bulanık mantığı uygulamak için hemen hemen hazır hale geleceğiz.
Bulanık Mantığa ilişkin temel kavramlar
Bulanık Sonuç Çıkarma Sistemi (FIS)
“Bulanık Sonuç Çıkarım Sistemi — Fuzzy Inference System (FIS)” bulanık mantık kullanarak girdileri çıktıya dönüştürme sürecini gösteren bir çerçeve. Sistemin bir çıktı üretebilmesi için izlenmesi gereken adımları ifade ediyor. Temel bileşenleri ise şu şekilde:
Bulanık mantığı uygulamak için ilk yapmamız gereken Bulanık Çıkarım Sistemimizi oluşturmak. Bu sistem, izleyeceğimiz tüm adımları içeren bir tasarım.
Bulanık küme ve üyelik fonksiyonları
“Ya dışındasındır çemberin
Ya da içinde yer alacaksın
Kendin içindeyken kafan dışındaysa
Çaresi yok kardeşim
Her akşam böyle içip, kederlenip
Mutsuz olacaksın”
Çembere üyelik derecen 1 ise içinde, 0 ise dışındasındır. Ama bu iki değerin arasındaysa üyelik derecesi, işte burada bulanık küme teorisi devreye giriyor. Murathan Mungan’ın dizelerinin aksine, belirli bir üyelik derecesi ile çemberin içinde (dolayısıyla belirli bir derecede de dışında) olmak bizi -en azından bir bulanık sistem tasarlarken- mutsuz etmiyor.
Bulanık kümeler; tanımlanan bir kesin kümede, evrensel kümenin elemanlarına 0–1 kapalı aralığında değerlerin atanmasıyla, bu elemanların kesin kümenin elemanı olup olmadıklarının ve atanan değerlerle bu elemanların kümeye aitlik derecelerinin belirlendiği kümelerdir.
Klasik küme denilince akla hemen aşağıdaki gibi bir şekil geliyor. Bulanık kümeyi ise bu şekilde ifade etmek pek mümkün değil. Çünkü bulanık kümelerde kümeye “üyelik derecesi” kavramı söz konusu.
Klasik küme ile bulanık küme farkına buzlanma ile sıcaklık ilişkisine dair bir örnek üzerinden bakalım.
Uçak yüzeyinde buzlanma, donma noktasına yakın sıcaklıklarda daha çok meydana gelir. -25°C’nin altında ise çok nadirdir. Buzlanma için en ideal sıcaklık -10 ile -4°C’dir (bir uçağın ön kenar yüzeylerindeki sıkışmaya bağlı ısınma nedeniyle). Benzer biçimde 0°C ve üzerinde de buzlanma olasılığı düşüktür.
Oysa gerçek durumda olasılık değeri değişmekle birlikte, -10 ile -25°C arasında da buzlanma olabilir. Klasik küme teorisi yerine bunu bulanık kümeler ile aşağıdaki gibi ifade edebiliriz:
Bu grafikten, sıcaklık değerinin “düşük”, “uygun” ve “yüksek” bulanık kümelerine üyelik derecelerinin bulunmasında faydalanılır.
Önemli; bu bulanık kümelerin sınır değerlerini rastgele ya da sezgisel biçimde belirlemiyoruz. Eğer yukarıdaki gibi sıcaklık-buzlanma ilişkisine dair bir değerlendirme çalışması yapacaksak istatistiki verilerden, pilotların deneyiminden, ölçüm ve gözlemlerden elde ettiğimiz sonuçları kullanıyoruz.
Üyelik derecelerini bulmak için yapmamız gereken ise yukarıdaki grafiği fonksiyonlar biçiminde yazmak. Böylelikle, x
ekseninde yer alan girdi değerimizin karşılığını y
ekseninde bulacağız ve bulduğumuz bu değerler üyelik dereceleri olacak.
Yukarıdaki tabloda “koşul” sütunu grafiğimizin
x
, “üyelik derecesi” sütunu isey
eksenine denk geliyor. Sıcaklık eğer -4°C ise, bu fonksiyonlara göre;-5 < T (-4°C) < 0°C
olduğundan bu sıcaklık değeri %80 uygun kümesinin, %20 de yüksek kümesinin elemanıdır.
Bu fonksiyonları, hazırladığınız grafiklerden çıkarabilirsiniz. Üçgen ve yamuk biçimindeki fonksiyonlar için aşağıdaki fonksiyonları kullanabilirsiniz.
Bulanık kümeleri belirlerken de şunlara dikkat etmekte fayda var:
1. Bulanık kümeler “düşük”, “orta”, “yüksek” örneğinde olduğu gibi simetrik olarak dağıtılmalıdır. Risk için bir bulanık küme tanımlaması yapacaksak bunlar “düşük”, “orta”, “yüksek”, “çok yüksek” biçiminde olmamalıdır.
2. Bulanık küme (her değişken için) tek sayıda olmalıdır. Genellikle her sistem değişkeni için 3, 5 ya da 7 bulanık küme kullanılır. Örneğin, sıcaklık için 3 bulanık küme tanımlayacaksak bunlar “soğuk”, “ılık” ve “sıcak” biçiminde olmalıdır.
3. Bulanık kümelerin belirli bir yüzde ile üst üste binmesi sağlanmalıdır (Sıcaklık bulanık kümeleri için üyelik fonksiyonları grafiğinde verildiği gibi).
4. Hesaplama işlemlerinin daha kısa sürmesi ve çok karmaşık olmaması isteniyorsa üçgen ya da yamuk üyelik fonksiyonları seçilmelidir.
Örneğimize devam edersek, buzlanma için değerlendirdiğimiz tek faktör sıcaklık değil. Nemi de mutlaka dikkate almalıyız. Eğer nem oranı çok düşükse, sıcaklık ne kadar ideal olursa olsun buzlanma gerçekleşmez. Bu nedenle, yukarıda verdiğim örneği buzlanmaya etkisi olan her bir girdi için tekrarlıyoruz.
Bbulanık kümeler ve üyelik fonksiyonlarını girdiler için oluşturduğumuz gibi çıktı için de oluşturmamız gerekiyor. Yani; risk örneğinde, etki için (düşük, orta, yüksek), olasılık için (düşük, orta, yüksek) bulanık kümeler oluşturduktan sonra bir de çıktımız olan RİSK için bulanık kümeler (çok düşük, düşük, orta, yüksek, çok yüksek gibi) ve üyelik fonksiyonlarını oluşturacağız.
İlk adımda girdilerimizi, daha sonra bulanıklaştırma için bulanık kümeler ve üyelik fonksiyonlarını belirledik. Bu kısma kadar ilk iki adımı tamamlamış olduk. Üçüncü adımda ise artık hesaplamalara başlayacağız.
Eğer bu kısma kadar kafa karıştırıcı ve anlaşılmaz geldiyse hiç önemli değil, çünkü bu adımları bir kez daha, sayısal örnekler üzerinden tekrarlayacağız.
Mantıksal işlemler ve Eğer-İse kuralları
İlk yazımda da bahsettiğim gibi, bulanık mantıkta girdi ve çıktı bulanık kümeleri arasındaki ilişkiyi belirtmek için eğer-ise (if-then) kurallarını kullanıyoruz. Eğer-ise kuralları çok önemli.
Bu kuralları belirlemek için de geçmiş deneyim ya da insan öngörüsü çok kritik. Bu ne demek? Yine bir örnek üzerinden somutlaştıralım:
Atmosferin yüksek seviyelerinde buzlanma tahmini için dört temel parametreye bakılır. Bunlar, sıcaklık (T), nem (RH), bulut tepe sıcaklığı (CTT) ve dikey hızdır (VV - havanın yukarı veya aşağı yönlü hareket hızı). Buzlanma için en uygun koşullar sıcaklığın -10 ile -4°C arasında (uygun kümesi), bulut tepe sıcaklığının -10 ile 0 °C (uygun kümesi), nemin %95 ve üzerinde (uygun kümesi) ve dikey hızın da yukarı yönlü ve güçlü olduğu durumdur. Buna göre, kurallarımızdan biri — ideal buzlanma koşulunu tanımlayan kural — aşağıdaki gibi olacaktır:
IF (T uygun&CTT uygun&RH uygun&VV yukari guclu) THEN Buzlanma cok yuksek
Kuralın açılımı sıcaklığın, bulut tepe sıcaklığının ve nemin uygun, dikey hızın yukarı yönlü ve güçlü olması durumunda buzlanma olasılığının çok yüksek olduğudur. Bu kuralların tutarlılığı ve doğruluk derecesi ne kadar yüksek olursa bulanık mantık sistemimizin çıktısı da o kadar güvenilir olur.
Peki kaç kural yazmamız gerekiyor? Yazacağımız kural sayısı girdilerin ve bu girdilere ait bulanık kümelerin sayısına bağlı. Buzlanma için dört girdi (sıcaklık, nem, bulut tepe sıcaklığı ve dikey hız) her bir girdi için de üçer bulanık küme olduğunu düşünürsek, yazacağımız eğer-ise kural sayısı 81 (3x3x3x3) olacaktır.
Bu 81 kuralın “THEN” ya da “İSE”den sonraki kısmı çıktı bulanık kümelerimizden biri (risk için çok yüksek ile çok düşük aralığındaki beş seçenekten biri) olacak.
Bilgi ve deneyimlerimize göre bulanık kümelerimizi oluşturduk, bu kümeler arasındaki ilişkiyi eğer-ise kurallarıyla belirledik. Şimdi sırada “kural kuvveti” kavramı var.
Kural (Eğer-İse kuralları) kuvveti
Kural kuvveti klasik küme teorisindeki birleşim ve kesişime benzetebileceğimiz bir kavram.
Girdilerin birbirleri ve çıktı ile ilişkini ise “eğer-ise” kuralları ile ifade ederken girdiler arasında “ve” ya da “veya” ifadesini kullanıyoruz. Örneğin basit bir robotun (örneğin robot süpürge) hareketleri için bir bulanık sistem tasarladığımızı düşünelim. Aşağıdakine benzer birkaç basit kural yazabiliriz;
<<Eğer engele olan mesafe
çok az VE aradaki açı
çok küçükse keskin dönüş yap>>
Burada girdilerimiz “mesafe” ve “açı”dır. Bu girdilere ait bulanık kümeler mesafe için “çok az” ile “çok fazla” aralığında, açı için ise “çok küçük” ile “çok büyük” aralığında olabilir. Çıktımız ise robotumuzun hareket yönüdür. Buradaki kurallarımızı yazarken girdiler arasında “ve” ifadesini kullandık. “Ve” kullanmak klasik küme teorisine göre kesişime denk geliyor.
Böyle bir durumda, “Bir kuralın kuvveti, onun en düşük ya da en zayıf değeridir (minimum)”.
Bu ifadeyi örneğimiz üzerinden somutlaştıralım. Robotumuzun üzerindeki sensör en yakınındaki engel ile mesafesini 10 cm ve aradaki açıyı da 30° olarak ölçtü diyelim. Hazırlamış olduğumuz bulanık kümelere ve üyelik fonksiyonlarına göre ilk bakmamız gereken, mesafenin “çok az” kümesine üyelik derecesi ile açının “çok küçük” kümesine üyelik derecesi.
Mesafenin çok az kümesine üyelik derecesini 0,75 ya da %75, açının çok küçük kümesine üyelik derecesini ise 0,40 ya da %40 olarak hesapladığımızı varsayalım (bu hesaplamalar bulanık üyelik fonksiyonlarına dayanıyor). Bu durumda, bu kuralın kuvveti min(0,75; 0,40) = 0,40
olur.
Bulanık mantıktaki kesişim işlemi ve birleşim işlemi klasik küme işlemlerine benzer. Şimdilik not etmemiz gereken; kesişim (
ve
) için “min”, birleşim (veya) için ise “max” operatörlerini kullanacağız. “min"
ve “max
“ operatörlerinin ne anlama geldiğini aşağıdaki “kural kuvveti” başlığı altında ve örnek üzerinden işlem yaparken göreceğiz.
Bu aşamada, kural kuvvetini yazdığımız her kural için (aslında her kural yerine -sıfır değerli olmayan her kural- ama bunun açıklamasını örnek uygulama kısmına bırakıyorum) buluyoruz.
Kural kuvvetlerini de bulup bir tablo ile listeledikten sonra (aşağıdaki tabloda verilmiş olan örnekte, sıfır değerli olmayan kural sayısı 16) artık çıktımızı üretmeye yaklaştık. Aşağıdaki örnek tabloda 4 girdisi olan bir bulanık sistemin ölçülen ya da verilen girdi değerlerine göre kural kuvvetlerini görüyoruz. Tabloda iki, üç, dört ve beşinci sütunda görülen değerler “üyelik derecesi”. Bu üyelik derecelerini de girdi değerlerine göre, üyelik fonksiyonlarını kullanarak buluyoruz.
Çıktının üretilmesi
Çıktıyı, yani buraya kadar paylaştığım örneklerdeki buzlanma olasılığı ya da risk değerini hesaplamak için öncelikle bir önceki adımdaki kural kuvvetleri ve çıktı bulanık kümelerine ihtiyacımız var.
Yukarıdaki tabloda kural kuvvetleri ile birlikte linguistik olarak buzlanma olasılıklarını da (çok düşük, çok yüksek gibi) görüyoruz. Buzlanma olasılığını ifade eden beş duruma (düşük, orta gibi) karşılık 16 kural kuvveti değeri var. Yani, 0,163 değerinin karşılığı da “çok düşük”, 0,36 değerinin de. Bu durumda hangisini dikkate almalıyız?
Burada yapılması gereken çıktı değeri için “en gerçek” ya da “en güçlü” kuralı seçmek. Bu da “maksimum” değer anlamına geliyor. Yine örnekle görelim;
Buzlanma olasılığının “orta” olduğu satırlardaki (3, 7, 11, 12, 14. satırlar) kural kuvvetleri max{0,163; 0,163; 0,264; 0,264; 0,21}
biçiminde olup bu beş değerin en büyüğü 0,264'tür. Yani, “orta” çıktı bulanık kümesinin sınır değeri ya da üyelik derecesi 0,264'tür.
Benzer biçimde, yukarıdaki tablodaki buzlanma olasılığı bulanık kümeleri için maksimum değerleri seçtiğimizde aşağıdaki tek satırlık tabloyu elde ediyoruz:
Artık bundan sonra yapmamız gereken çıktı bulanık kümesi fonksiyonlarını kullanarak alan hesabı yapmak. Bu alan hesabını da çıktı bulanık kümelerinin fonksiyon grafiği üzerinde gösterirsek;
Bir ara not; yer verdiğim tüm grafik ve görseller kendime ait. Grafikleri kendi tezimdeki kısımlardan alıp üzerinde çalıştım. Bu sebeple bazı kısımlar silik görünüyor.
Buradaki alan hesabı bir sonraki aşama olan durulaştırmada kullanılıyor.
Durulaştırma
Çıktının elde edilmesi işlemi durulaştırma ya da defuzzification olarak adlandırılıyor. Çok sayıda farklı durulaştırma metodu var ancak ben burada Centroid olarak adlandırılan ağırlık merkezinin bulunması yöntemini kullanıyorum. Bu metot için her bir bulanık kümenin alanına (yukarıda kırmızı renkle gösterdiğim alanlar) ve Centroid olarak adlandırılan orta değere ihtiyacımız var. Orta değerler çok düşük kümesi için 15, düşük kümesi için 30, orta kümesi için 50, yüksek ve çok yüksek için de sırasıyla 70 ve 85 biçiminde. Grafikten de rahatça görülüyor.
Centroid, yani çıktı değerimiz her bir bulanık kümenin alanı ile centroid değerinin çarpılıp bunların birbirleri ile toplanması, daha sonra bu toplam değerin de alanların toplamına bölünmesi ile bulunuyor. Formül oldukça basit:
Alanları bulmak için geometri işlemleri yapıyoruz. Yamuğun taban ile tavan uzunluğunu (taban ve yüksekliği bildiğimizden hesaplayabiliyoruz) toplayıp yüksekliğin yarısı ile çarpıyoruz. Yukarıda verdiğim çıktı bulanık kümesi sınır değerlerine göre bu formülleri de paylaşayım;
Burada sonucu da vererek ilk örneği tamamlayalım;
İşte bu son adımda bulduğumuz nihai değer bize sonucu, bu örnek için buzlanma olasılığını (%44 olarak) veriyor.
“Bu kadar çaba sadece %44'ü bulmak için miydi yani” biçiminde hayal kırıklığına uğramadınız umarım. Bu hesaplamayı tüm Türkiye’yi kapsayacak biçimde, 34.830 nokta için yaptığınızı ve bulduğunuz sonucu bir harita ile gösterdiğinizi düşünün.
Konuyla ilk defa karşılaşanlar için biraz karmaşık olduğunun farkındayım. Buraya kadar aslında puzzle parçalarını tanıdık. Gözümüze çarpan bazılarını birleştirdik, ama henüz sistematik bir biçimde hesaplamaya geçmedik. Son adımda artık gerçek değerler üzerinden yukarıda parça parça bahsettiğim adımları kullanarak hesaplamalarımızı gerçekleştireceğiz.
Dizinin ikinci yazısı ile bir bulanık sistemin nasıl tasarlandığına ve tüm işlem adımlarına değindik. Son yazı ile parçaları birleştirerek bu adımları somutlaştıracağız.
Tasarlayacağımız sistem şu biçimde olacak:
Üçüncü ve en son yazı da aslında hazır ancak okunması daha kolay bir hale getirmek, konunun özünden uzaklaşmadan sadeleştirmek biraz zaman alıyor. Daha önceki yazıda olduğu gibi, yine bir haftalık bir süre istiyorum.
Eleştiri ve görüşlerinizi paylaşırsanız dizinin son yazısında özenle dikkate alınacağından emin olabilirsiniz.
Dizinin ilk yazısına aşağıdaki bağlantıdan erişebilirsiniz:
Dizinin ikinci yazısının ilk kısmına aşağıdaki bağlantıdan erişebilirsiniz:
Kaynaklar:
Bu çalışmada kısmen Yüksek Lisans tezimden, kısmen de IGI Global — Encyclopedia of Information Science and Technology, Fourth Edition (Chapter 588) için hazırladığımız Fuzzy Logic Approach in Risk Assessment başlıklı bölümden faydalandım:
1- Bulanık küme teorisi ile yüksek seviyede buzlanma potansiyelini tahmin eden program tasarımı / A software predicting upper-level icing potential by fuzzy set theory (212863)) YÖK’ün tez merkezinden erişilebilir.)
2- Fuzzy Logic Approach in Risk AssessmentFuzzy Logic Approach in Risk Assessment Encyclopedia of Information Science and Technology, Fourth Edition (Chapter 588) / IGI Global · 1 Ocak 2017