Nöronal ağlar birçok AI ve Genai uygulamasının motorudur. Bu makale dizisi bireysel unsurlar hakkında bir fikir sunar. İlk bölüm yapay nöronu sunar.
Dr. Michael Stal, 1991 yılından bu yana Siemens teknolojisi üzerinde çalışmaktadır. Yazılım mimarisi sorunları hakkında iş alanları önermektedir ve Siemens'in kıdemli yazılım mimarlarının mimari oluşumundan sorumludur.
Yapay bir nöron, her nöronal ağın temel ablukasıdır. Tasarımı biyolojik nöronlardan esinlenmiştir, ancak matematiksel formu hesaplamalar için çok daha basit ve uygundur. Çekirdekte, yapay bir nöron bir veya daha fazla sayısal giriş alır, her bir girişi karşılık gelen bir ağırlık ile çarpar, sonuçları ekler, bir sapma terimi ekler ve bu nedenle toplamı bir aktivasyon fonksiyonu yoluyla yönlendirir. Serinin bu bölümünde, bu sürecin matematiksel temellerini inceleyeceğim ve doğrudan kodda nasıl uygulanabileceğini göstereceğim.
X₁, X₂, …, Xₙ girişi ve W₁, Wited, …, Wₙ (Ağırlıklar) ve B (ön yük) öğrenme parametreleri ile bir nöronu düşünüyoruz. Nöron boyutu hesaplar
Z = w₁ · x₁ + w₂ · x₂ +… + wₙ · xₙ + b
Bu ifade ayrıca,
Z = wᵀ · x + b
N boyutlu sütun vektörleri nerede. Skaler Z genellikle ön aktivasyon olarak adlandırılır, çünkü nöron, son baskısını oluşturmadan önce, Z bir aktivasyon fonksiyonuyla ne yapacağına yol açmalı σ
A = σ (Z)
Kurşunlar.
B sapma terimi, ağın başlangıç noktasında gerçekleştirilmeyen modeli uyarlayabilmesi için aktivasyon işlevini sola veya sağa taşımanıza izin verir. Ağırlıklar, her bir girişin çıkış üzerindeki etkisinin mukavemetini ve yönünü belirlemek ister. Formasyon sırasında ağ, belirli bir kayıp işlevini en aza indirmek için bu parametreleri uyarlar.
Uygulamada, Pytorch'ta aşağıdaki gibi tek bir nöron uyguluyoruz:
import torch
# Beispiel-Eingaben und Parameter definieren
x = torch.tensor([0.5, -1.2, 3.3], dtype=torch.float32)
w = torch.tensor([0.1, 0.4, -0.7], dtype=torch.float32)
b = torch.tensor(0.2, dtype=torch.float32)
# Berechne die gewichtete Summe z = w·x + b
z = torch.dot(w, x) + b
# Wende eine Aktivierungsfunktion an (vorerst die Identität)
a = z
Bu bölümdeki her satırın net bir etkinliği vardır. İlk satır, tensör hesaplamalarını hızlandıran ve gradyanı hesaplamak için otomatik olarak işlem gerçekleştiren bir kitaplık olan Pytorch'u içe aktarır. Sonraki üç çizgi, girişler, ağırlıklar ve bozulmalar için boyut tensörleri oluşturur. Belirtmek dtype=torch.float32
Tüm hesaplamaların, modern donanımdaki hassasiyeti ve performansı dengeleyen 32 -Bit slayt kombinasyonuyla gerçekleştirildiğinden emin oluyoruz.
İfade torch.dot(w, x)
Tensörlerin tırmanma ürününü hesaplayın w
VE x
Ve eleman tabanlı ürünlerin toplamını yönetir (w₁ · x₁ + zekâ · x₂ + w₃ · x₃). Ekleme b
Skaleri sonuca aktarırız, yani yapabiliriz z
aktivasyondan önce korunur. Bu noktada, nöron çıkışı basitçe Z'dir, ancak doğrusal olmayan bir aktivasyon fonksiyonu σ ekler ekler, a = z hattını a = σ (z) ile değiştiririz.
Arka planda, Pytorch bu tensörler üzerindeki işlemleri bir hesaplama tablosunda kaydeder. Daha sonra z.backward()
Çağrı, Pytorch bu grafikten geçer ve ∂z/∂wᵢ ve ∂z/∂b kısmi türevlerini otomatik olarak hesaplar. Bu otomatik farklılaşma, manuel türetme hesaplamaları olmadan milyonlarca parametreyi büyük ağlardaki optimize etmenizi sağlar.
Tek bir sinir hücresinin matematiksel sadeliği, birçok sinir hücresi bağlanır ve internette bağlandığında ifadesi için ezicidir. Ağırlıklarınızı ve ön yüklerinizi uyarlayarak, bir sinir hücresi seslerinizin doğrusal kombinasyonlarını tanımayı öğrenebilir. Düzinelerce veya yüzlerce sinir hücresini birleştirir ve yuvalamayı doğrusal olmayan aktivasyonlarla birleştirirsek, ağ tüm karmaşık işlevlere yaklaşabilir.
Serinin bir sonraki kısmı, birçok yapay nöronun nasıl bir araya getirileceğini, aranızdaki veri akışını ve Pytorch'ta eksiksiz bir ağın ileri yarışını uygulayacağını gösteriyor.
(RME)
Bir yanıt yazın