Nöronlar ya da perceptron, unit veya node, bir sinir ağında en basit temel yapı taşıdır. Insan beyninde bulunan biyolojik nöronlardan esinlenmiştir.
Yapay sinir ağları, biyolojik nöronlardan etkilenmiştir.
Yapay bir nöronu, biyolojik bir nörondan ilham alan matematiksel bir model olarak düşünebilirsiniz. Bu yazıda, perceptron’un biyolojik nörondan nasıl esinlendiğini göreceğiz, perceptron’un yapısını çizeceğiz, perceptron içindeki iki matematik fonksiyonunu tartışacağız, perceptron içinde bazı hesaplamalar icra edeceğiz.
Perceptron’lar biyolojik nöronlardan nasıl esinlendi ?
Yapay nöronların (algılayıcıların) biyolojik nöronlardan nasıl esinlendiğini tartışmaya değer. Yapay bir nöronu, biyolojik bir nörondan ilham alan matematiksel bir model olarak düşünebilirsiniz.
Bir biyolojik nöron giriş sinyallerini diğer nöronlardan dendritler(küçük fiberler) aracılığı ile alır. Benzer şekilde, bir perceptron, verilerini diğer perceptron’lardan sayıları alan giriş nöronları aracılığıyla alır.
Dendritler ve nöronlar arasındaki bağlantı noktaları sinaps olarak adlandırılır. Benzer şekilde, girdiler ve perceptron arasındaki bağlantı ağırlık olarak adlandırılır. Ağırlıklar ile her bir girdinin önem seviyesi ölçülür.
Biyolojik bir nöronda, nucleus dendritler tarafından sağlanan sinyaller ile çıkış sinyalini üretir. Benzer şekilde, perceptron’da nucleus (mavi alan) girdi değerleri bazında bazı hesaplamalar yapar ve çıktı üretir.
Biyolojik bir nöronda, çıktı sinyali axon’lar aracılığıyla taşınır. Benzer şekilde, bir perceptron’da axon çıktı değeridir. Bu çıktı nihai çıktı olabileceği gibi aynı zamanda bir sonraki perceptron’un da giriş değeri olabilir.
Bir perceptron’un Yapısı :
Aşağıdaki resim bir perceptron’un yapısını detaylıca gösterir. Bu bağlamda, bias, w0 ile ifade edilir. X0 girdisi her zaman 1 değerini alır. b*1=b
Bir perceptron, x1,x2,…,xn girdilerini alır, bunları w1,w2,,…..wn ağırlıklarıyla çarpar ve (b) bias ile toplar, aktivasyon fonksiyonunu uygular ve y çıktısını elde eder.
Bir perceptron çizilirken, genellikle bias göz ardı edilir ve x1 ,w1 ile başlar.
Perceptron’un içi:
Bir perceptron genellikle 2 matematik fonksiyonundan oluşur.
Perceptron’un lineer fonksiyonu :
Perceptron’un Lineer bileşeni olarak da bilinir. z ile gösterilir. Çıktı değeri, girdilerin ve ağırlıkların çarpılarak toplanması ve üzerine bias değerinin eklenmesi ile bulunur.
x1, x2, …. ,xn nümerik değer alan girdilerdir. Bir nöron için birkaç girdi olabileceği gibi çok sayıda girdi de olabilir. Raw giriş verisi olabileceği gibi, diğer bir perceptron’un çıktısı da olabilir.
w1,w2,….,wn nümerik değer alan ve her bir girdinin önem seviyesini kontrol eden nümerik değerdir. Değer büyükse, girdinin önemi de büyüktür.
w1*x1+w2*x2+……+wn*xn girdilerin ağırlıklı toplamıdır.
b, bias değeri olarak adlandırılır. Ve nümerik bir değer alır. girdilerin ağırlıklı toplamlarına eklenir. Bias değeri eklemenin amacı, her perceptron’un aktivasyon fonksiyonunu 0 (sıfır) değeri almayacak şekilde kaydırmaktır. Diğer bir deyişle, eğer tüm x1,x2, …, xn girdileri sıfırsa, z = bias sonucu çıkar.
Ağırlıklar ve bias, bir sinir ağı modelinde parametreler olarak adlandırılır. Bu parametreler için, optimal değerler, sinir ağının eğitim / öğrenme esnasında bulunur.
Farklı bir bağlamda, bu terminolojiyi tanımlayalım. z fonksiyonu , lineer regresyon modeli olarak düşünülebilir. ağırlıklar katsayılar (coeeficient) olarak bilinir. b (bias) kesen olarak bilinir.
Perceptron’un non-lineer (Aktivasyon) fonksiyonu :
Doğrusal olmayan fonksiyon. Perceptron’un doğrusal olmayan bileşenidir. f ile gösterilir. z’ye uygulanır. y çıktısı elde edilir.
Kullandığımız aktivasyon fonksiyonunun türüne göre y çıktısını almak için z’ye uygulanır.
f fonksiyonu, farklı tip aktivasyon fonksiyonları olabilir.
Birçok farklı aktivasyon fonksiyonu bulunur. Bunları ayrı bir makalede ele alacağız. Şu an için, aktivasyon fonksiyonunun amacının, ağa doğrusal olmayanlık getirmek olduğunu bilmek yeterlidir.
Aktivasyon fonksiyonu olmazsa, sinir ağı yalnızca doğrusal ilişkiyi (lineer relation) modelleyebilir ve verideki doğrusal olmayan ilişkileri modelleyemez.
Gerçek dünya verisinde, veriler arası ilişki non-lineerdir. Bu yüzden, sinir ağları aktivasyon fonksiyonu olmazsa kullanışsızdır / anlamsızdır.
Bir nöronu ateşlemek / aktive etmek ne anlama gelir ?
“Threshold activation fonksiyonu” olarak da bilinen “binary step” aktivasyon fonksiyonunda, herhangi bir değeri eşik değeri (threshold) olarak ayarlayabiliriz. Eşik değerini 0 olarak düşünelim.
Bir nöron ya da perceptron z eşik değeri geçerse aktive olur ya da ateşlenir. Diğer bir deyişle, bir nöron çıktısı örneğin 1’se ya da sıfırdan büyükse, z eşik değerini geçmiştir ve ateşlenir, aktive olur. Yoksa, çıktı sıfırdır.
Bu yüzden, aktivasyon fonksiyonunun tipi nöronun ateşlenip/aktive olup olmayacağını belirler ve bias (b) değeri ateşlemenin kolaylığını kontrol eder. Şimdi doğrusal fonksiyona, z’ye bakalım.
z = (w1.x1 + w2.x2 + … + wn.xn) + b
z = (girdilerin ağırlık toplamı) + bias
bias değerinin -2 olduğunu varsayalım. “Binary step” aktivasyon fonksiyonunu düşünelim. Bu yüzden, girdilerin ağırlıklı toplamları +2’yi aşarsa, nöron aktive olur. Matematiksel olarak ifade edelim.
Nöronu aktive etmek için, “binary step” aktivasyon fonksiyonuna göre 1 çıktısı alınmalıdır.
z>0
(girdilerin ağırlık toplamı) + bias > 0
(girdilerin ağırlık toplamı) > -(bias)
Eğer bias değeri -2 olursa,
(girdilerin ağırlık toplamı) > -(-2)
(girdilerin ağırlık toplamı) > 2
Bu durumda, nöronun ateşlenmesi/aktive olmsı için girdilerin ağırlıklı toplamı +2’yi geçmelidir.
Bir Perceptron içinde hesaplama :
3 girdi değerimiz olduğunu varsayalım. Perceptron içinde basit bir hesaplama yapalım.
x1=2, x2=3 ve x3=1
her bir girdinin önemini kontrol etmek için 3 ağırlığımız olmalı. Aşağıdaki ağırlıkların olduğunu varsayalım.
w1=0.5 w2=0.2 w3=10
bias için b=2
doğrusal fonksiyon hesabını yapalım.,z .
z=(2*0.5+3*0.2+1*10) + 2
z=13.6
Aktivasyon fonksiyonu çıktı değerini (z) (13.6) olarak alır. aktivasyon fonksiyonu kullanarak, y çıktısını hesaplar. Şu an için, sigmoid aktivasyon fonksiyonunu kullanalım.
Python’da hesaplamak için:
from scipy.special import expit
#calculate sigmoid function for x = 13.6
expit(13.6)
f(x) = 1 / (1 + e-z)
f(x) = 1 / (1 + e-13.6)
f(x) = 0.99
Tebrikler. Şu anda bir perceptron’da başarılı bir şekilde hesaplama yaptınız.
Özet :
Bir perceptron, verilen girdilere göre, girdilerin ağırlıklı toplamını yapan (lineer fonksiyon) ve değeri (z) non-lineer fonksiyon uygulayan, bunların bir arada çalıştığı, matematiksel bir modeldir.
Bir perceptron’da aktivasyon fonksiyonunu kullanma sebepleri :
- Ağa doğrusal olmayanlık getirir. Sinir ağlarının, genellikle gerçek dünya verilerinde bulunan doğrusal olmayan ilişkileri modellemesini sağlar.
- Kullanılan aktivasyon fonksiyonu, nöronun ateşlenmesini/aktivasyonunu belirler.
- z’nin çıkış değerini belirli bir aralıkta tutar. Örneğin, sigmoid etkinleştirme işlevi, z’nin değerini 0 ve 1 (dahil) aralığında tutar. Z’nin değeri ne kadar büyük veya küçük olursa olsun.
Aslında, aktivasyon fonksiyonsuz bir sinir ağı yalnızca lineer regresyondur.
Bir perceptron’un parametreleri ağırlıklar ve bias’tır. Ağırlık her bir girdinin önem seviyesini kontrol eder. bias terimi aşağıdaki fonksiyonlara sahiptir.
- Bir nöronun ne kadar kolay ateşleneceği veya aktive olacağını belirler.
- Perceptron’un sıfır değerini almayacak şekilde kaydırır.
Bir sinir ağında, perceptron sayısı arttıkça binlerce parametre (ağırlıklar ve bias’lar) olabilir. Bu parametrelerin (ağırlık ve bias) optimal değerleri eğitim fazında bulunur. Parametreler (ağırlık ve bias) sağlanan verilerden en optimal değerleri öğrenir.