|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Sinir Ağlarına Giriş: Perceptron
Ders Öncesi Testi
Modern sinir ağına benzer bir şeyin ilk uygulama girişimlerinden biri, 1957 yılında Cornell Havacılık Laboratuvarı'ndan Frank Rosenblatt tarafından gerçekleştirildi. Bu, "Mark-1" adı verilen ve üçgen, kare ve daire gibi basit geometrik şekilleri tanımak için tasarlanmış bir donanım uygulamasıydı.
![]() |
![]() |
Görseller Wikipedia'dan
Giriş görüntüsü, 20x20 fotohücre dizisiyle temsil ediliyordu, bu nedenle sinir ağının 400 girişi ve bir ikili çıkışı vardı. Basit bir ağ, eşik mantık birimi olarak da adlandırılan bir nöron içeriyordu. Sinir ağı ağırlıkları, eğitim aşamasında manuel ayar gerektiren potansiyometreler gibi çalışıyordu.
✅ Potansiyometre, kullanıcıya bir devrenin direncini ayarlama imkanı veren bir cihazdır.
New York Times o dönemde perceptron hakkında şöyle yazmıştı: [Donanma'nın] yürüyebilen, konuşabilen, görebilen, yazabilen, kendini çoğaltabilen ve varlığının farkında olabilen bir elektronik bilgisayar embriyosu.
Perceptron Modeli
Modelimizde N özellik olduğunu varsayalım, bu durumda giriş vektörü N boyutunda bir vektör olacaktır. Bir perceptron, ikili sınıflandırma modeli olup, giriş verilerini iki sınıf arasında ayırt edebilir. Her bir giriş vektörü x için perceptron çıkışının sınıfa bağlı olarak ya +1 ya da -1 olacağını varsayacağız. Çıkış şu formülle hesaplanır:
y(x) = f(wTx)
burada f bir adım aktivasyon fonksiyonudur.
Perceptron Eğitimi
Bir perceptron eğitmek için, çoğu değeri doğru bir şekilde sınıflandıran, yani en küçük hatayı veren bir ağırlık vektörü w bulmamız gerekir. Bu hata E, perceptron kriteri ile şu şekilde tanımlanır:
E(w) = -∑wTxiti
burada:
- toplam, yanlış sınıflandırmaya neden olan eğitim veri noktaları i üzerinde alınır
- xi giriş verisi, ti ise negatif ve pozitif örnekler için sırasıyla -1 veya +1'dir.
Bu kriter, ağırlıklar w'nin bir fonksiyonu olarak kabul edilir ve bunu minimize etmemiz gerekir. Genellikle, gradyan inişi adı verilen bir yöntem kullanılır. Bu yöntemde, başlangıçta bir ağırlık w(0) seçilir ve her adımda ağırlıklar şu formüle göre güncellenir:
w(t+1) = w(t) - η∇E(w)
Burada η öğrenme oranı olarak adlandırılır ve ∇E(w) ise E'nin gradyanıdır. Gradyanı hesapladıktan sonra şu sonuca ulaşırız:
w(t+1) = w(t) + ∑ηxiti
Python'daki algoritma şu şekildedir:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weights
Sonuç
Bu derste, ikili sınıflandırma modeli olan perceptron hakkında bilgi edindiniz ve ağırlık vektörü kullanarak nasıl eğitileceğini öğrendiniz.
🚀 Meydan Okuma
Kendi perceptronunuzu oluşturmayı denemek isterseniz, Microsoft Learn'deki bu laboratuvarı deneyebilirsiniz. Bu laboratuvar, Azure ML tasarımcısını kullanır.
Ders Sonrası Testi
Gözden Geçirme ve Kendi Kendine Çalışma
Perceptronun bir oyuncak problemi ve gerçek hayat problemlerini nasıl çözebileceğini görmek ve öğrenmeye devam etmek için Perceptron not defterine göz atabilirsiniz.
İlginç bir perceptron makalesi de mevcut.
Ödev
Bu derste, ikili sınıflandırma görevi için bir perceptron uyguladık ve bunu iki el yazısı rakamı arasında sınıflandırma yapmak için kullandık. Bu laboratuvarda, rakam sınıflandırma problemini tamamen çözmeniz isteniyor, yani verilen bir görüntünün en olası rakamını belirlemeniz gerekiyor.

