YSA - Tek Bir Nöronun Kodlanması
Diyelim ki tek bir nöronumuz var ve bu nöronun üç girişi var. Çoğu durumda olduğu gibi, sinir ağlarında parametreleri başlattığınızda, ağımızda ağırlıklar rastgele başlatılacak ve önyargılar başlangıç için sıfır olarak ayarlanacaktır. Bunu neden yaptığımız daha sonra ortaya çıkacak. Girdi ya gerçek eğitim verileri ya da sinir ağındaki önceki katmandaki nöronların çıktıları olacaktır. Şimdilik giriş olarak başlamak üzere değerleri oluşturacağız:
inputs = [1, 2, 3]
Her girdinin kendisiyle ilişkilendirilmiş bir ağırlığa da ihtiyacı vardır. Girdiler, istenen çıktıları elde etmek için modele aktardığımız verilerdir; ağırlıklar ise daha sonra bu sonuçları elde etmek için ayarlayacağımız parametrelerdir. Ağırlıklar, eğitim sırasında değişen önyargıların yanı sıra, eğitim aşamasında modelin içinde değişen değer türlerinden biridir. Ağırlıklar ve önyargı değerleri "eğitimli" olanlardır ve bir modelin gerçekten çalışmasını (ya da çalışmamasını) sağlayan şeylerdir. Şimdilik ağırlıkları telafi ederek başlayacağız. Diyelim ki 0 endeksindeki 1 olan ilk girdinin ağırlığı 0,2, ikinci girdinin ağırlığı 0,8 ve üçüncü girdinin ağırlığı -0,5. Giriş ve ağırlık listelerimiz artık şöyle olmalıdır:
inputs = [1, 2, 3] weights = [0.2, 0.8, -0.5]
Daha sonra önyargıya ihtiyacımız var. Şu anda üç girişi olan tek bir nöronu modelliyoruz. Tek bir nöronu modellediğimiz için, nöron başına yalnızca bir önyargı değeri olduğundan yalnızca bir önyargıya sahibiz. Önyargı, ayarlanabilir ek bir değerdir ancak ağırlıkların aksine herhangi bir girdiyle ilişkili değildir. Bu örnekte önyargı olarak rastgele 2 değerini seçeceğiz:
inputs = [1, 2, 3] weights = [0.2, 0.8, -0.5] bias = 2
Bu nöron, her girdiyi o girdinin ağırlığıyla çarparak toplar ve ardından önyargıyı ekler. Nöronun yaptığı tek şey, girdilerin kesirlerini almaktır; burada bu kesirler (ağırlıklar) ayarlanabilir parametrelerdir ve başka bir ayarlanabilir parametre olan önyargıyı ekler ve ardından sonucu verir. Çıktımız bu noktaya kadar şu şekilde hesaplanacaktır:
output = (inputs[0]*weights[0] + inputs[1]*weights[1] + inputs[2]*weights[2] + bias) print(output) >>> 2.3
Az önce gösterdiğimiz 3 giriş yerine 4 girişimiz varsa neyi değiştirmemiz gerekebilir? Ek girdinin yanına, bu yeni girdinin çarpılacağı ilgili ağırlığı da eklememiz gerekiyor. Bu yeni ağırlığa da bir değer biçeceğiz. Bu verinin kodu şöyle olabilir:
inputs = [1.0, 2.0, 3.0, 2.5] weights = [0.2, 0.8, -0.5, 1.0] bias = 2.0
import numpy as np inputs = [1.0, 2.0, 3.0, 2.5] weights = [0.2, 0.8, -0.5, 1.0] bias = 2.0 output = np.dot(inputs,weights) + bias print(output)
4.8
Burada iki vektörü çarpımı kullanılmıştır. İlk örnekteki çarpım ve toplamları numpy dot fonksiyonu yapabilmektedir.
0 Comments
Recommended Comments
There are no comments to display.