İnsanlar olarak taklit ve çıkarım yeteneklerimizi kullanarak doğadan esinlenen yeni araçlar ya da fikirler bulmayı günümüze kadar başarmışız

“In all things of nature there is something of the marvelous.”

Aristotle

Örneğin enjektör iğnelerinin tasarımında sivrisineklerden, mayoları tasarlarken köpekbalığı derisinden, türbin bıçağı tasarlarken kambur balina yüzgeçlerinden faydalanmışız [1]. Doğadan öğrendikleri insanoğlunu ilerletmeye, hayatını kolaylaştırmaya yardımcı olmuş.

“Nature is a volume of which God is the author”

William Harvey

Doğanın harika bir kitap olduğu doğru ama harika olan diğer bir konu insanların bu kitabı okuyabilme; bu kitaptan öğrenebilme yeteneğidir.

Bir grup bilim insanı da bu yeteneğin kendisini araştırmış, bu yeteneği taklit etmeye çalışmışlar. McCulloch ve Pitts adlarında iki bilim insanı da bu yönde araştırmalar yapmış ve ilk formal nöron modelini sunmuşlar [2]. Bu çalışmaları gelecekteki YSA gelişmeleri için temel niteliğinde oldu [3].

Perceptron’lar da yapay sinir sistemleri için temel çalışmalardan bir diğeridir [4]. Perceptron adı verilen bu nöron benzeri elemanlar; 1958’de Frank Rosenblatt tarafından sunulmuştur [3][4]

Perceptron öğrenme yeteneğine sahipti ve bağlantıları düzenlenerek belirli örüntüleri sınıflandırmak için eğitilebilen bir sistemdi [3]. 

Perceptron fikri sonraki yıllarda geliştirildi ve bugün bile hala kullanılan bazı makine öğrenmesi yöntemleri için zemin oluşturdu[3].

Yapay sinir ağlarını anlamak için Perceptron algoritmasını incelemek, güzel bir yol.

Perceptron yöntemi nasıl çalışır?

Bu soruyu Zurada’nın Artificial Neural Systems kitabından [3] yanıtlayalım:

Tek Katmanlı Ayrık Perceptron Algoritması

Perceptron öğrenme yönteminde girişteki sinyalleri bağlantı ağırlıkları (w) ile ağırlıklandırılır. Ardından bir eşik değerinden geçirilir ve nöron çıkışı elde edilmektedir.

Perceptron algoritması kayıp fonksiyonuna benzer şekilde bir öğrenme sinyali içerir. Bu öğrenme sinyali sabit bir katsayı ve girişler ile işleme sokularak ağırlık farkları elde edilmektedir. Son olarak ağırlıklar bu ağırlık farkları ile toplanarak güncel bağlantı ağırlık değerleri elde edilmektedir.

Kısaca bu şekilde özetlediğimiz Perceptron algoritması adım adım inceleyelim.

Öncelikle eşitlikleri ifade ederken kullanacağımız değişkenleri tanımlayalım:

  • x : ağın giriş sinyalleridir. Ağa sıra ile verilecek verilerdir.
  • w       : bağlantıların ağırlık katsayılarını ifade edecektir.
  • △w   : ağırlık katsayıları farkıdır.
  • r        : öğrenme sinyalidir.
  • d        : beklenen çıkış değerleri.
  • o        : nöron çıkışında elde edilen çıkış değeri.
  • i         : örnek numarasıdır. (x1,x2,..)
  • j         : örneğin içerdiği parametrelerin numarasıdır.

İlk olarak giriş işaretlerinden çıkışı hesaplamak için giriş değerleri ile bağlantı ağırlıkları çarpılarak toplanır. Bu işlem giriş sinyal vektörü ile ağırlık vektörü arasında gerçekleştirilecek matris çarpması ile elde edilebilir.

NET=w_i^t*x

Elde edilen net değeri bir “Signum” fonksiyonuna giriş olarak verilmektedir. Signum fonksiyonu çıkışı nöron çıkışıdır.

o_i = sgn(NET) = sgn(w_i^t*x)

Tek katmanlı ve tek nöronlu sistemde nöronun çıkışı aynı zamanda ağın çıkışıdır.

Yeri gelmişken “Signum” bir aktivasyon fonksiyonudur ve parametre olarak aldığı değer 0’dan büyükse, 0’dan küçükse -1 değerini geri döndürür.

Öğrenme sinyalini hesaplamak için beklenen çıkış ile ağın çıkışının farkı alınır.

r=d_i-o_i

Öğrenme sinyali kullanılarak ağırlık katsayıları farkı hesaplanır.

\Delta{w_i}=crx = c[d_i-sgn(w_i^t*x)]x

Son olarak ağırlıklar ile ağırlık farkları toplanır ve güncel ağırlıklar elde edilir.

w = w+\Delta{w_i}

Bu işlemlere ağ hatası sıfır olana kadar devam edilir. Böylece örüntüyü doğru şekilde ayıran ağ değerleri bulunmuş olacaktır.

Perceptron Algoritması Kod

Perceptron algoritmasına ait örnek Python koduna şuradan erişebilirsiniz.

Tek katmanlı ve tek nöronlu olan bu yapıdan biraz daha ilerleyerek çok katmanlı ağların nasıl çalıştığına bakmak isterseniz Çok Katmanlı Sürekli Ağlar yazısını inceleyebilirsiniz.

KAYNAKLAR:

  • [1]. Technologies inspired by nature, online, https://www.aranca.com/knowledge-library/articles/ip-research/technologies-inspired-by-nature
  • [2]. McCulloch, W. S., & Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5(4), 115-133.
  • [3]. Zurada, J. M. (1995). Artificial Neural Systems. New Yrok: W est Publishing Co, 1, 992.
  • [4]. Rosenblatt, F. 1958. “The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain,” Psych. Rev.65: 386-408.