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.

Cetin Karahan
DataBulls
10 min readFeb 20, 2022

--

Photo by Possessed Photography on Unsplash

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 Çıkarım Sistemi (FIS) adımları

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:

Sıcaklık bulanık kümeleri için üyelik fonksiyonları (Örneğin, mavi renkle gösterilmiş doğru sıcaklığın -17,5°C olduğu noktanın üyelik derecelerini (düşük ve uygun bulanık kümelerine %50 üyelik) göstermektedir)

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.

“Bulanıklaştırma” için sıcaklık-üyelik fonksiyonları

Yukarıdaki tabloda “koşul” sütunu grafiğimizin x, “üyelik derecesi” sütunu ise y 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.

Burada, x değerinin ilgili bulanık kümeye üyelik derecesini bulmak için kullanılan formüller verilmiştir. a, b, c ve d üçgen ve yamuk için köşelere denk gelen değerlerdir. Örneğin, bir yamuk üyelik fonksiyonunda, yamuğun üst kenarını ifade eden |bc| için ilgili üyelik derecesi her zaman 1'dir.

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.

Buzlanma için girdi bulanık kümeleri

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.

Buzlanma için çıktı bulanık kümeleri

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.

Buzlanma olasılığı örneği için hesaplanmış kural kuvvetleri

Çı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:

Çıktı bulanık kümesi sınır değerleri

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;

Çıktı bulanık kümeleri fonksiyonu. Bu grafik 0–100 skalasında çok düşük ile çok yüksek aralığında beş bulanık kümeyi ifade etmektedir. Örneğin, “Çok yüksek” bulanık kümesi için alt sınır değer 70, üst sınır ise 100 olarak belirlenmiştir. Bu belirleme tamamen kullanıcının inisiyatifindedir.

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;

Çıktı bulanık kümesi alan değerleri. Alan formülündeki “x” çıktı kümelerinin değerlerini ifade etmektedir. Yani, “Çok düşük” kümesinin sınır değeri olan 0,36 bu kümenin alan hesabı için kullanılmaktadır.

Burada sonucu da vererek ilk örneği tamamlayalım;

Verilen T, CTT, RH ve VV değerlerine göre buzlanma olasılığı %44'tür.

İş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.

Bulanık mantıkla buzlanma tahmin haritası (% olasılık)

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:

FIS (Fuzzy Inference System — Bulanık sonuç çıkarma sistemi)

Üçü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

--

--

Cetin Karahan
DataBulls

CISA, Internal Auditor, Industrial Engineer MSc., MIS PhD candidate -/- I only write about something that I really have competence -/-