Bulanık Mantık #2: Üyelik Fonksiyonları

Image for post
Image for post
illüstrasyon: kaynak

Bulanık Mantık yazı serisine üyelik fonksiyonları konusuyla devam ediyoruz. Önceki yazıya buradan ulaşabilirsiniz.

Sözel Değişkenler

Bugün hava 27 santigrat derece.

önermesinde geçen havanın sıcaklığı, önermeyi ortaya kişiden bağımsız olarak ölçülüp test edilebilir. Bunun sonucunda sıcaklık ya 27 santigrat derece olarak görülür ya da görülmez. Önermemiz, iki gerçeklikten ancak birine işaret ettiği için klasik mantık sınırları içinde anlaşılabilir bir önerme olarak kendine yer bulur.

Ancak önermemiz şu şekilde, somut verilerden yoksun olsaydı:

Bugün hava biraz sıcak.

klasik mantığın keskin gerçeklik ilkesine uymayan bir önerme olurdu. Zira havanın ‘biraz’ sıcak olmasının, tam olarak hangi sıcaklık değerini ifade ettiği belirsizdir (bulanıktır). Bu gibi bulanık değerler de, her ne kadar gözlemci bir için bir anlam ifade etse de, klasik mantık perspektifiyle yorumlanamıyor. Fakat bulanık mantığın kapsamına burada dahil oluyoruz.

Önermede de geçen ‘biraz’ ifadesinde olduğu gibi; görünürde anlamsız fakat önermeyi ortaya atanlar için yine de bir anlam ifade eden “az, fazla, biraz, çok, daha” gibi değerlere sözel değişkenler veya dilsel değerler denir. Yine de bir anlamı vardır diyoruz fakat bu anlamın neye göre; ne kadar ve nasıl bir ilişki içinde olduğunu belirlemek gerekiyor. Sonuç olarak bu bilgilerin bilgisayar ve makinelerce işlenebilmesi için sayısal bir zemine oturtulması gerekli.

Sözel değişkenleri ifade ederken, önceki konuda bahsettiğimiz bulanık kümeleri kullanıyoruz. Herhangi bir değer aralığı için; sözel değişkenin karşılığı olan sayısal ifade, o değişken için oluşturulmuş üyelik fonksiyonu ile kolayca hesaplanabiliyor. Fakat burada dikkat çekmek istediğim nokta; sözel değişkenlerin üyelik fonksiyonlarının ne şekilde olacağı, tamamen bulanık sistemi tasarlayan uzmanın bilgilerine ve sistem hakkındaki tespitlerine bağlıdır. Nihayetinde sözel değişkenlerin göreceli olması dolayısıyla, ‘biraz’ gibi bir ifadenin de kişiden kişiye değişiklik gösterdiği; herkesteki ‘biraz’ algısının farklı olabildiği bir gerçek.

Örnek olarak herhangi bir gruptaki insanları boylarına göre sınıflandıran basit bir bulanık sistem tasarlayalım. Boyları ifade etmek için kullanılacak dilsel değerlerimiz şu şekilde olsun:

kısa, orta, uzun

Bu durumda tanım kümemiz; ölçülen boy değerlerinin metre biriminden karşılıklarını tutacaktır. Bunun için [0, 2.5] aralığını belirleyebiliriz.

Dilsel değerlerin tanım kümesiyle olan ilişkisinin üyelik fonksiyonlarıyla kurulacağından bahsetmiştik. Şimdilik, buradaki detayların üzerinde durmadan, aşağıdaki şekilde (Şekil 1) olduğu gibi dilsel değerleri basitçe üyelik fonksiyonlarıyla eşleştirelim:

Image for post
Image for post
Şekil 1. Buradaki yatay eksen {0, 2.5] aralığındaki tanım kümesini, dikey eksen ise [0, 1] aralığındaki üyelik değerlerini temsil etmektedir.
  • [0 m, 1.65 m] aralığında ölçülen bir boya sahip insanlar ‘kısa’ dilsel değeriyle,
  • [1.6 m, 1.7 m] aralığında ölçülen boya sahip insanlar ‘orta’ dilsel değeriyle,
  • [1.65 m, 2.5 m] aralığında ölçülen boya sahip insanlar da ‘uzun’ dilsel değeriyle, şekildeki üçgen üyelik fonksiyonları kullanılarak eşleştirilmiş olsun.

Artık buradaki grafik üzerinden, bu sistemi tasarlayan kişi için kısa-orta-uzun boylu insanların aslında tam olarak hangi aralıkta boylara sahip olabileceği yorumlanabilir. Aynı şekilde, örneğin boyu 1.62 m olan biri için, ne kadar kısa ve ne kadar orta boylu olduğu yine bu grafik üzerinden ölçülebilir. Fakat buradan sonrası, önümüzdeki konuların detayları olduğu için şimdilik değinmiyorum.

Yine belirtmekte fayda var: buradaki dilsel değerlerin söz konusu aralıklara hizalanması tamamen öznel bir yorumdur. Herkes için buradaki değerlerin aynı şekilde belirlenmesi tabi ki mümkün olmayacaktır. Zaten bulanık mantığın özü de burada saklıdır: öznel yorumlardan bile somut veriler çıkarabilir. Dolayısıyla, sizin bu noktada getirdiğiniz yorum bambaşka olacaktır. Basit bir deney olarak siz de; buradaki örnek üzerinden giderek, kendi algılarınız ve tecrübelerinize göre kısa-orta-uzun boylu insanların (sizin açınızdan) hangi aralıklardaki uzunlukları ifade ettiğinin grafiğini çizmeyi deneyebilirsiniz.

Üyelik Fonksiyonları

Önceki yazıda da bu kavrama kısaca değinmiştik. Herhangi bir tanım aralığında bulunan bir değerin, sözel değişkenlerle oluşturulan bulanık kümelere olan aidiyetini bu fonksiyonlarla belirliyorduk. Örneğin yukarıdaki örnekte; boyu 1.62 m olan biri için, kısa ve orta bulanık kümelerine aynı anda dahil olduğunu söyledik. Her bir boy değeri için, dahil olduğu bulanık kümeye ‘ne kadar ait’ olduğunu ifade eden başka bir değerin olması gerekir. Bu değere üyelik derecesi deniyor ve bu değer, [0, 1] kapalı aralığındaki bir reel sayıya eşit oluyor. İşte üyelik fonksiyonları tam olarak: üyelik derecesinin, hangi reel sayıya eşit olduğunu söyleyen fonksiyonlardır.

Üyelik fonksiyonunun tanım kümesi, bütün reel sayılar kümesidir. Değer kümesi ise yukarı da da bahsettiğimiz gibi [0, 1] aralığındaki reel sayılar kümesidir. Üyelik fonksiyonlarını ifade etmek için pek farklı fonksiyon türlerinden biri kullanılabilir. Genellikle karşımıza çıkan üçgen, yamuk, gausyen, polinomal vb. fonksiyonlar, üyelik fonksiyonlarını ifade etmede çok defa kullanılmış fonksiyonlardır. (Şekil 2)

Image for post
Image for post
Şekil 2. Çeşitli üyelik fonksiyonları. kaynak

Tabi yazımız boyunca sık sık tekrar ettiğimiz gibi; bir problemin çözümünde kullanılacak fonksiyonun seçilmesi, sorunun özüne ve elimizdeki bilgilere/tecrübelere bağlıdır. Örneğin; piyasaya yeni sürülecek bir ürünün potansiyel müşterilerini belirlemek amacıyla bir araştırma yaptığınızı düşünün. Bunun için elinizde önceden yapılan satışlar ve alıcıların belirli kriterlerini tutan (kalite ve fiyat beklentisi, gelir durumu gibi) bir veri tabanınız olsun. Aslında bu noktada da bulanık mantığın dışında kullanabileceğimiz pek çok makine öğrenmesi ya da istatistiksel analiz yöntemi bulunuyor. Fakat bu örneği bulanık mantığa daha yatkın hale getirebilmek adına elimizdeki verilerin: az kaliteli, çok kaliteli, orta fiyatlı, yüksek fiyatlı, az kazanan, çok kazanan gibi sayısal verilerden ziyade sözel değişkenlerden oluştuğunu düşünelim. Verileri piyasa konusunda uzman pazarlamacılar veya yöneticilerle değerlendirdiğinizde; bu verilerin nasıl bir ilişki içerisinde olabileceğinin genel hatları ortaya çıkacaktır. Bunlar; ürün fiyatının artması durumunda kalite beklentisinin de aynı şekilde artacağı (1), ürün fiyatının artması durumunda gelir düzeyi görece azalan kitle tarafından daha az erişilebilir bir ürün olacağı (2) yönünde tespitler olabilir. Burada, ürünün fiyatıyla sözel değişkenler arasındaki ilişki sezgisel anlamda ortaya çıkmış durumda. Yapılması gereken üyelik fonksiyonlarını oluşturarak, sistemi artık sayısal bir hale getirmek. 1 no’lu öngörüde belirtilen durumda; kalite beklentisiyle fiyat arasında doğrusal bir ilişkiden bahsedilebilir. Fakat 2 no’lu öngörüde, doğrusal yerine polinomal bir ilişki söz konusu olabilir. Zira gelir durumu nispeten daha az olan insanlar bile, ürün için kayda değer bir talep içerisinde olabilirler.

Örnekte de bahsetmek istediğim gibi: üyelik fonksiyonlarının oluşturulması, sistemle ilgili verilere ve sistemi tasarlayan uzmanların öngörülerine göre değişiklik gösterir.

Günümüzde, gelişen yapay zeka araçları sayesinde, üyelik fonksiyonlarını belirlemede çeşitli optimizasyon algoritmalarını kullanabiliyoruz. Bu şekilde, sistemle ilgili öngörülerin dışarıdan hazır olarak dahil edilmesi yerine; verilerin bu algoritmalarla işlenmesi sonucu üyelik fonksiyonları en iyi değerlere ulaşabileceğimiz şekilde optimize edilebiliyor. Bu şekilde, sistem hakkında uzman kişilerle çalışma yükümlülüğü de bilfiil kalkmış oluyor. Bu konu de epey ilgi çekici. Şimdilik burada virgül koyalım. İlerleyen yazılarda değineceğiz.

Üyelik fonksiyonlarını oluşturmada genel olarak kullanılan yöntemler şu şekildedir:

  1. Sezgisel
  2. Çıkarımsal
  3. Sıralama
  4. Optimizasyon Yöntemleri

1. Sezgisel

Image for post
Image for post
Şekil 3. soğuk, serin, sıcak, hafif sıcak, sıcak gibi dilsel değerlerin üçgen fonksiyonlarla ifade edilmesi.

2. Çıkarımsal

Örneğin, iç açıları (A, B ve C) arasındaki bağıntı şu şekilde olan bir üçgen tanımlanmış olsun:

A ≥ B ≥ C

Bu üçgenin ait olabileceği üçgen sınıfları şöyledir:

  • Dik üçgen
  • İkizkenar üçgen
  • Eşkenar üçgen
  • Diğer üçgenler

Bu sınıfları bulanık kümeler olarak düşünürsek; yukarıda tanımladığımız üçgenin, her bir üçgen kümesine üyeliğini belirten üyelik fonksiyonunu kolaylıkla oluşturabiliriz. Burada bir uzman görüşü yerine, geometri hakkında yeteri kadar temel bilgilere sahip olmamız dolayısıyla; ortaya atılan önermelerin sistemi tanımlamada herhangi hata ya da eksiklik taşımadığını biliyoruz. (İç açılarının 180 derece olması gibi olmazsa olmaz kıstaslara riayet ediyoruz zira)

Eğer:

A = B veya B = C

gibi bir durum söz konusuysa, bu üçgenin ikizkenar üçgen kümesine olan üyelik fonksiyonunu şu şekilde (Şekil 4) oluşturabiliriz:

Image for post
Image for post
Şekil 4. Üçgenimizin ikizkenar üçgen kümesine ait üyelik fonksiyonu. min fonksiyonu: aldığı parametreler arasından en küçük olanı geri döndürür.

A = 75°, B = 75° ve C = 30 olması durumunda, değerlerini yerine yazdığımızda çıkan sonucun 1 olduğu görülür. Hatırlayacağınız gibi 1 değeri de en yüksek üyelik derecesiydi. Yani bu durumda üçgenin, tam olarak bir ikizkenar üçgen olduğu söylenebilir. Bu şekilde farklı değerleri yerine yazarak, o üçgenin ne kadar ikizkenar üçgen olduğuna dair çıkarımlar yapılabilir.

3. Sıralama

Image for post
Image for post
Şekil 5. anket sonuçları
Image for post
Image for post
Şekil 6. üyelik fonksiyonu

Bu şekilde en çok belirtilen değerleri sıralayarak üyelik fonksiyonları oluşturulabilir.

4. Optimizasyon Yöntemleri

Bu gibi durumlarda üyelik fonksiyonlarını olabildiğince en iyi şekilde belirlemek için optimizasyon yöntemleri kullanılır. Genel olarak kullanılan yöntemler:

  • Popülasyon tabanlı stratejiler
  • Ajan tabanlı sistemler
  • Yapay Sinir Ağları

şeklindedir. Özellikle popülasyon tabanlı stratejilerden Genetik algoritmalar, üyelik fonksiyonlarının optimizasyonunda sıkça tercih edilen algoritmalardan birisidir. Genetik algoritmalara yalın bir bakış için şu yazımı inceleyebilirsiniz.

Bu konu bulanık mantığın yapay zeka ve otonom sistem projelerine dahil edilmesiyle de ilişkili, aynı zamanda. Çünkü bulanık sistemi tasarlayabilmek için elimizde yalnızca salt verilerin olduğu durumlarda, iyi sonuçlar elde edebilmek için bu yöntemler oldukça iş görmektedir. İlerleyen yazılarda bu konuya daha fazla değineceğiz.

Okuduğunuz için teşekkür ederim.

Referans

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store