- Katılım
- 24 Tem 2025
- Mesajlar
- 27
- Tepkime puanı
- 1
Merhaba. Artık yapay zekalar hayatımızın kaçınılamaz bir aracı, kullanmayan insan neredeyse kalmadı ve bunun temel olarak 2 sebebi var. Neredeyse her alanda yardımcı olabiliyorlar ve... kullanımları çok kolay. Gerçekten çok kolay. Hiç bilgisi olmayan herhangi bir vatandaş ChatGPT'ye girip kendisine diyet ve spor listesi yazdırabilirken Teknofest'e hazırlanan üniversite öğrencisi bir kişi YOLO indirip objeleri tanıyan bir yapay zeka modeli geliştirebilir. Bu iki kişinin ortak bir yönü var, ikisi de yapay zekanın nasıl çalıştığını muhtemelen bilmiyor (birisi bildiğini zannetse de...). O yüzden bu rehberde nöral ağların nasıl sonuç verdiğini göstermeye çalışacağım. Biraz ağır ve uzun bir rehber olacak, okuyucuyu sıkmamak adına 2 part'a -en az 2 part'a- bölme kararı aldım. Bu partta
1 - Ağırlıklı toplam (weighted sum)
2 - İleri hesaplama (forward pass)
3 - Hata hesaplaması (Error calculation)
Başlıklarına değineceğim.
Ağırlıklı toplamın ne olduğunu ve neden kullanıldığını anlamadan önce, derin ağların en küçük birimi olan basit bir nöron hücresinin nasıl çalıştığına değinelim. Aslında bu ağı oluşturan hücrelerin her birisi, kendisine iletilen giriş değerini alıp, bir ağırlık değer ile çarpar; ardından bir aktivasyon fonksiyonundan geçirir -Türevlenebilir olması adına! Türevlenemeyen veya bir defa türevlenebilen (lineer) modeller geriye yönelik düzeltmelerde (backward propagation) 0 veya sabit sonuç vereceği için öğrenim sağlayamaz!- ve, elbette varsa, bir sapma değerini ekler. Bunu resmedecek olursak: (paintimin kusuruna bakmayın)
Bu işleme ağırlıklı toplam, weighted sum, denir. Aslında temel amacımız aynı giriş değerlerini farklı ağırlıklardan geçirip farklı nöronlara vererek bu giriş değerinin çıkış hatası üzerinde ne kadar etki ettiğini tahmin etmek, bu tahmine yönelik ağırlık değerini güncellemek ve günün sonunda en iyi çıktıyı tahmin etmemize olanak verecek ağırlık matrisini oluşturmak. Bunun için basit bir ağ yapısı tasarlayalım ve bir model inşa etmeye çalışalım.
Görseldeki nöral ağ modeli 2 giriş, 2 ara ve 2 çıkış katmanından oluşuyor. Ayrıca türevlenebilmesi çok kolay olduğu için aktivasyon fonksiyonu olarak sigmoid adı verilen bir fonksiyonu seçtim ve görselde fonksiyonun tanımına yer verdim. Şimdi daha kolay pratik yapmamızı sağlaması açısından hem giriş değerlerine, hem de ağırlık değerlerine rastgele değer verelim ve bunları matris halinde yazalım. Ayrıca hatamızı hesaplamak için 2 tane değeri tamamen uyduralım, bunlar t1 ve t2 değerleri olsun.
Burada bir detaya dikkat çekmek istiyorum, eğer giriş vektörünü alır buradaki ağırlık vektörü ile çarparsanız, alacağınız sonuç aşağıdaki gibi olacaktır.
Gördüğünüz gibi yukarıda belirttiğimiz formülden farklı. Bu durumda ağırlık vektörünü transpose işleminden geçirdikten sonra, yani satır ve sütunlarını yer değiştirdikten sonra çarpım uygulamalısınız. Şimdi kodumuza geçersek
Python:
Aslında dikkatinizi çekeceği üzere buraya kadar vektör çarpımından başka hiçbir işlemde bulunmadık. Çünkü işin sırrı burada değil, buradan geriye giderken başlıyor. Bu rehberde ona değinmeyeceğim ama çıktımızın ne olduğunu öğrenelim ve ardından ne kadar hata yaptığımıza bakalım.
Python:
Kodumuz ilk output değerini 0.75 (aslında 0.01 olmalıydı!), ikincisini ise 0.76 olarak tahmin etmiş (daha yakın, doğru değer 0.99). Şimdi hatayı hesaplamak için koda bir hata fonksiyonu ekliyorum.
Python:
Ağımızın toplam hatası 0.30 çıktı, yapay zeka modellerinin (en azından regresyon modellerinin) temel amacı bu hata değerini 0'a olabildiğince yakın tutmaktır. Bu hatayı nasıl azaltacağımızı da diğer rehberde anlatmaya çalışacağım. Buraya kadar okuduysanız teşekkür ederim. Kendinize iyi bakın
1 - Ağırlıklı toplam (weighted sum)
2 - İleri hesaplama (forward pass)
3 - Hata hesaplaması (Error calculation)
Başlıklarına değineceğim.
Ağırlıklı toplamın ne olduğunu ve neden kullanıldığını anlamadan önce, derin ağların en küçük birimi olan basit bir nöron hücresinin nasıl çalıştığına değinelim. Aslında bu ağı oluşturan hücrelerin her birisi, kendisine iletilen giriş değerini alıp, bir ağırlık değer ile çarpar; ardından bir aktivasyon fonksiyonundan geçirir -Türevlenebilir olması adına! Türevlenemeyen veya bir defa türevlenebilen (lineer) modeller geriye yönelik düzeltmelerde (backward propagation) 0 veya sabit sonuç vereceği için öğrenim sağlayamaz!- ve, elbette varsa, bir sapma değerini ekler. Bunu resmedecek olursak: (paintimin kusuruna bakmayın)
Ziyaretçiler için gizlenmiş link,görmek için
Giriş yap veya üye ol.
Bu işleme ağırlıklı toplam, weighted sum, denir. Aslında temel amacımız aynı giriş değerlerini farklı ağırlıklardan geçirip farklı nöronlara vererek bu giriş değerinin çıkış hatası üzerinde ne kadar etki ettiğini tahmin etmek, bu tahmine yönelik ağırlık değerini güncellemek ve günün sonunda en iyi çıktıyı tahmin etmemize olanak verecek ağırlık matrisini oluşturmak. Bunun için basit bir ağ yapısı tasarlayalım ve bir model inşa etmeye çalışalım.
Görseldeki nöral ağ modeli 2 giriş, 2 ara ve 2 çıkış katmanından oluşuyor. Ayrıca türevlenebilmesi çok kolay olduğu için aktivasyon fonksiyonu olarak sigmoid adı verilen bir fonksiyonu seçtim ve görselde fonksiyonun tanımına yer verdim. Şimdi daha kolay pratik yapmamızı sağlaması açısından hem giriş değerlerine, hem de ağırlık değerlerine rastgele değer verelim ve bunları matris halinde yazalım. Ayrıca hatamızı hesaplamak için 2 tane değeri tamamen uyduralım, bunlar t1 ve t2 değerleri olsun.
Ziyaretçiler için gizlenmiş link,görmek için
Giriş yap veya üye ol.
Burada bir detaya dikkat çekmek istiyorum, eğer giriş vektörünü alır buradaki ağırlık vektörü ile çarparsanız, alacağınız sonuç aşağıdaki gibi olacaktır.

Gördüğünüz gibi yukarıda belirttiğimiz formülden farklı. Bu durumda ağırlık vektörünü transpose işleminden geçirdikten sonra, yani satır ve sütunlarını yer değiştirdikten sonra çarpım uygulamalısınız. Şimdi kodumuza geçersek
Python:
Python:
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def forward_layer(input_vector, weight_matrix, bias_vector):
z = np.dot(weight_matrix, input_vector) + bias_vector
return sigmoid(z)
input_vector = np.array([0.05, 0.10], dtype=np.float32)
target_vector = np.array([0.01, 0.99], dtype=np.float32)
W_hidden = np.array([[0.15, 0.20],
[0.25, 0.30]], dtype=np.float32)
b_hidden = np.array([0.35, 0.35], dtype=np.float32)
W_output = np.array([[0.40, 0.45],
[0.50, 0.55]], dtype=np.float32)
b_output = np.array([0.60, 0.60], dtype=np.float32)
Python:
Python:
hidden_out = forward_layer(input_vector, np.transpose(W_hidden), b_hidden)
output_pred = forward_layer(hidden_out, np.transpose(W_output), b_output)
print("Ara katmandaki sonuclar:", hidden_out)
print("Ag Ciktilari:", output_pred)
Bash:
PS C:\Users\xs0n3r\ths> python .\deep_learning.py
Ara katmandaki sonuclar: [0.5944759 0.5962827]
Ag Ciktilari: [0.7569319 0.7677179]
Ziyaretçiler için gizlenmiş link,görmek için
Giriş yap veya üye ol.
Python:
Python:
def error_func(target, prediction):
return 0.5 * np.sum((target - prediction) ** 2)
.
.
print("Toplam hata (MSE):", error_func(target_vector, output_pred))
Bash:
PS C:\Users\xs0n3r\ths> python .\deep_learning.py
Ara katmandaki sonuclar: [0.5944759 0.5962827]
Ag Ciktilari: [0.7569319 0.7677179]
Toplam hata (MSE): 0.30365830659866333