📐 Modül 4 · Matematik Cephanesi · Bölüm 4.3 · 12 dk okuma

Türev ve Gradient

Öğrenmenin yönünü veren kalkülüs — SIDRA neden eğitim için bunu önemser.

Bu bölümde öğreneceklerin

  • Tek-değişkenli türev ve çok-değişkenli gradient tanımlarını yaz
  • Gradient'ın en dik iniş yönü olduğunu göster
  • Zincir kuralının backprop'un matematik atomu olduğunu tekrarla
  • MVM'in Jacobian'ını hesapla ve SIDRA'da neden önemli olduğunu söyle
  • Gradient estimation'un analog donanımda zorluğunu ve SIDRA'nın pratik çözümlerini özetle

Açılış: Yön Bulma Matematiği

Bir tepenin üstündesin, aşağı inmek istiyorsun. Sis var, ama ayağının altındaki eğimi hissedebiliyorsun. Hangi yöne adım atarsın? En dik iniş yönü. Bu yön, her zaman negatif gradient’tır.

AI eğitiminin tamamı bu basit sezgiden ibarettir:

  1. Kayıp fonksiyonunun değerini bul (sis içindeki yükseklik).
  2. Kayıp’ın her ağırlığa göre gradient’ını bul (eğim).
  3. Negatif gradient yönüne küçük bir adım at (aşağı in).
  4. Tekrarla.

Milyarlarca ağırlık, trilyonlarca adım. Ama her adım bir kalkülüs işlemi — türev.

SIDRA için ilginç soru: gradient’ı fiziksel olarak hesaplayabilir miyiz? Ohm + KCL bize MVM veriyor (4.2). Gradient da matematiksel olarak bir MVM (Jacobian çarpımı). O zaman crossbar teoride backprop yapabilir. Pratik zorlukları var (3.6’da konuştuk), ama yön doğru.

Bu bölüm türev ve gradient’ı sıfırdan kurar, zincir kuralını tekrar hatırlatır, ve SIDRA’nın analog gradient hesaplama stratejisini özetler.

Sezgi: Türev = Yerel Eğim

Türev nedir?

Bir fonksiyon f(x)f(x) var. x0x_0 noktasında fonksiyonun ne kadar hızlı değiştiğini bilmek istiyoruz. Tanım:

f(x0)=limh0f(x0+h)f(x0)hf'(x_0) = \lim_{h \to 0} \frac{f(x_0 + h) - f(x_0)}{h}

Sezgi: xx‘i biraz oynatırsan (hh kadar), ff ne kadar oynar? Oran = türev.

Örnek: f(x)=x2f(x) = x^2. f(x)=2xf'(x) = 2x. x=3x = 3‘te türev = 6 → xx‘i 0.01 artırırsan ff yaklaşık 0.06 artar (f(3)=9,f(3.01)=9.0601f(3) = 9, f(3.01) = 9.0601).

Tek-değişkenli türevin kuralları:

  • (c)=0(c)' = 0 (sabit)
  • (xn)=nxn1(x^n)' = n x^{n-1}
  • (ex)=ex(e^x)' = e^x
  • (lnx)=1/x(\ln x)' = 1/x
  • (sinx)=cosx(\sin x)' = \cos x
  • Toplam: (f+g)=f+g(f + g)' = f' + g'
  • Çarpım: (fg)=fg+fg(fg)' = f'g + fg'
  • Zincir: f(g(x))=f(g(x))g(x)f(g(x))' = f'(g(x)) \cdot g'(x)

Gradient — çok-değişkenli türev:

f:RNRf: \mathbb{R}^N \to \mathbb{R} (bir vektörden bir sayıya). Her değişkene göre kısmi türev alınırsa:

f=(fx1,fx2,,fxN)\nabla f = \left( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \ldots, \frac{\partial f}{\partial x_N} \right)

Bu bir vektör: fonksiyonun en dik çıkış yönü. Negatifi: en dik iniş.

AI’da ne anlama gelir: Kayıp LL, ağırlık vektörü w\mathbf{w}‘nun fonksiyonu. Gradient wL\nabla_{\mathbf{w}} L hangi yönde ağırlıkları değiştirmek kayıpı artırır der. Tersi: kayıpı azaltır. Bu optimizasyonun tüm matematiğidir.

Formalizm: Kısmi Türev, Jacobian, Zincir Kuralı

L1 · Başlangıç

Kısmi türev:

Bir değişkeni tutup diğerlerini sabit farz et:

fxi=limh0f(,xi+h,)f(,xi,)h\frac{\partial f}{\partial x_i} = \lim_{h \to 0} \frac{f(\ldots, x_i + h, \ldots) - f(\ldots, x_i, \ldots)}{h}

Örnek: f(x,y)=x2y+3yf(x, y) = x^2 y + 3y. fx=2xy\frac{\partial f}{\partial x} = 2xy. fy=x2+3\frac{\partial f}{\partial y} = x^2 + 3.

Gradient (kompakt):

f(x)=\nabla f(\mathbf{x}) = tüm kısmi türevlerin vektörü. En dik yön.

Pratik hesap — AI’da:

Bir nöronun çıkışı a=f(wx)a = f(\mathbf{w}^\top \mathbf{x}). Kayıp L=(ay)2L = (a - y)^2.

Gradient ne w\mathbf{w}‘ye göre? Zincir kuralı:

wL=Laazzw\nabla_{\mathbf{w}} L = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial \mathbf{w}}
  • L/a=2(ay)\partial L / \partial a = 2(a - y)
  • a/z=f(z)\partial a / \partial z = f'(z) (aktivasyon türevi)
  • z/w=x\partial z / \partial \mathbf{w} = \mathbf{x}

Sonuç: wL=2(ay)f(z)x\nabla_{\mathbf{w}} L = 2(a - y) f'(z) \mathbf{x}.

Vektörel çarpım. SIDRA için: x\mathbf{x} zaten crossbar’ın girişinde; (ay)f(z)(a-y)f'(z) skalar → gradient vektörünün her bileşenini bu skalar ile çarpmak.

L2 · Tam

Jacobian matrisi:

f:RNRMf: \mathbb{R}^N \to \mathbb{R}^M vektör-to-vektör fonksiyonu. Her girişin her çıkışa etkisi:

Jij=fixj\mathbf{J}_{ij} = \frac{\partial f_i}{\partial x_j}

J\mathbf{J} M×NM \times N matrisidir. Gradient, Jacobian’ın skalar fonksiyona göre M=1M = 1 durumudur.

MVM’in Jacobian’ı:

y=Wx\mathbf{y} = \mathbf{W} \mathbf{x}. Girişe (x\mathbf{x}‘e) göre Jacobian:

J=yx=W\mathbf{J} = \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \mathbf{W}

Yani: MVM’in Jacobian’ı matrisin kendisi. Crossbar’da programlı, okunabilir. Bu, backward pass’in SIDRA’da doğal olarak çalışabileceğinin matematiksel temeli.

Backward pass = transpose MVM:

Kayıp LL‘nin bir katman çıkışına göre gradient Ly\frac{\partial L}{\partial \mathbf{y}} verilmiş. Girişe göre gradient’ı istiyoruz:

Lx=JLy=WLy\frac{\partial L}{\partial \mathbf{x}} = \mathbf{J}^\top \frac{\partial L}{\partial \mathbf{y}} = \mathbf{W}^\top \frac{\partial L}{\partial \mathbf{y}}

Bu da MVM, ama W\mathbf{W} yerine W\mathbf{W}^\top ile. SIDRA crossbar’ı row/column rollerini değiştirerek transpose MVM yapabilir → backward pass donanımda mümkün.

Ağırlık gradyanı:

LW=Lyx\frac{\partial L}{\partial \mathbf{W}} = \frac{\partial L}{\partial \mathbf{y}} \mathbf{x}^\top

Bu dış çarpım — iki vektörden bir matris. Boyutu M×NM \times N, ağırlık matrisi boyutu. Dış çarpım donanımda zor; özel circuit gerekir (5.9 compute engine).

L3 · Derin

Çok-katmanlı zincir kuralı:

LL kayıp, a(l)\mathbf{a}^{(l)} katman-ll çıkışı. Backprop:

δ(l)=Lz(l)=(W(l+1))δ(l+1)f(z(l))\delta^{(l)} = \frac{\partial L}{\partial \mathbf{z}^{(l)}} = (\mathbf{W}^{(l+1)})^\top \delta^{(l+1)} \odot f'(\mathbf{z}^{(l)})

Bu, 3.6’da gördük. Her katmanda bir transpose MVM + elementwise çarpma (Hadamard).

SIDRA’da backward pass:

Forward pass crossbar’da doğal:

  • Vi=ai(l1)V_i = a_i^{(l-1)} (satır girişi)
  • Ij=GijVi=zj(l)I_j = \sum G_{ij} V_i = z_j^{(l)} (sütun çıkışı)

Backward için transpose gerekiyor:

  • Vj=δj(l+1)V_j = \delta_j^{(l+1)} (sütunlara giriş)
  • Ii=GijVjI_i = \sum G_{ij} V_j (satırlardan çıkış)

Fiziksel olarak mümkün — crossbar simetrik. Ama pratik sorunlar:

  1. Aktivasyon türevi: f(z)f'(\mathbf{z}) elementwise çarpım gerektirir. Ek devre.
  2. Gürültü birikimi: her backward pass ~5% gürültü ekler. 10 katman derin ağda gradient bozulur.
  3. Dış çarpım: ağırlık gradyanı için gerekli. Doğrudan crossbar’la yapılamaz; iki MVM + dış çarpım hızlandırıcısı.

SIDRA stratejisi (realist):

  • Y1 (bugün): Backprop yok. Eğitim GPU’da.
  • Y3 (2027): Son katman + bias update için transpose MVM prototipi.
  • Y10 (2029): Son 2-3 katman hibrit eğitim (transfer learning). Gradyan gürültüsü tolere edilebilir.
  • Y100 (2031+): Tüm katmanlar analog backward; ek circuit dış çarpım için.

Gradient estimation teknikleri:

Tam gradient hesaplamak yerine tahmin (çok daha hesaplı):

  1. Finite difference: f(f(w+h)f(w))/h\nabla f \approx (f(w+h) - f(w))/h. Tek parametre için, kaba.
  2. Stokastik gradient (SPSA): Rastgele perturbasyon → iki inference → gradient tahmini. Paralelize edilebilir. SIDRA için ilgi çekici.
  3. Forward-mode AD: her ağırlığa paralel minik değişiklik → çıkış değişimi izler. Donanım-ucuz.
  4. Feedback alignment: rastgele backward matrix → backprop’un yaklaşımı. SNN’lerde kullanılır.
  5. Evolution strategies: gradient’siz tamamen — ağırlık mutasyonu + seçilim. SIDRA online learning için aday.

SIDRA Y100 vizyonu: SPSA + forward-forward kombinasyonu. Gradient’i crossbar’da hiç hesaplamadan, ama sonucu aynı (yerel, paralel, analog).

Deney: Bir Fonksiyonun Gradient'ını Elle Hesapla

f(x,y,z)=x2y+yz+z3f(x, y, z) = x^2 y + y z + z^3. f\nabla f‘yi bul ve (1,2,3)(1, 2, 3) noktasında değerlendir.

Kısmi türevler:

fx=2xy\frac{\partial f}{\partial x} = 2xy(1,2,3)(1,2,3)‘te: 212=42 \cdot 1 \cdot 2 = 4.

fy=x2+z\frac{\partial f}{\partial y} = x^2 + z1+3=41 + 3 = 4.

fz=y+3z2\frac{\partial f}{\partial z} = y + 3z^22+27=292 + 27 = 29.

Gradient:

f(1,2,3)=(4,4,29)\nabla f(1, 2, 3) = (4, 4, 29)

Yorumla: (1,2,3)(1, 2, 3)‘te en dik yükseliş yönü (4,4,29)(4, 4, 29). zz yönü çok baskın — z’yi oynatmak f’yi çok değiştirir. En dik iniş: (4,4,29)(-4, -4, -29) yönünde küçük adım.

Numerik test: f(1,2,3)=12+23+27=35f(1, 2, 3) = 1 \cdot 2 + 2 \cdot 3 + 27 = 35.

f(1.01,2,3)=1.02012+6+27=2.0402+33=35.0402f(1.01, 2, 3) = 1.0201 \cdot 2 + 6 + 27 = 2.0402 + 33 = 35.0402.

Değişim: 0.0402. Tahmin (gradient × delta): 40.01=0.044 \cdot 0.01 = 0.04. Tamamen tutarlı.

SIDRA paraleli:

Eğer x,y,zx, y, z SIDRA ağırlıklarıysa (iletkenlikler), ve ff kayıp fonksiyonuysa:

  • Her ağırlığa küçük bir pertürbasyon (ΔG\Delta G) uygula.
  • Yeni kayıpı ölç (küçük fark).
  • Gradient = (yeni kayıp − eski kayıp) / ΔG\Delta G.

Bu SPSA-tarzı gradient estimation. 256×256 crossbar’da tüm ağırlıklara farklı pertürbasyonlar aynı anda uygulanabilir → tek batched MVM ile tüm gradient vektörü tahmin edilir. SIDRA Y100 hedefi.

Kısa Sınav

1/6Türevin en basit tanımı nedir?

Laboratuvar Görevi

SIDRA crossbar’ında bir katmanın gradient’ını SPSA ile tahmin et.

Senaryo:

  • 256×256 crossbar, 65,536 ağırlık.
  • Kayıp fonksiyonu LL dış CMOS’ta hesaplanır (örn. cross-entropy).
  • Amaç: her ağırlığın gradyanı L/Gij\partial L / \partial G_{ij} tahmini.

SPSA algoritması:

  1. Rastgele ±1\pm 1 pertürbasyon matrisi Δ\Delta üret (256×256).
  2. Orijinal ağırlıklar: G\mathbf{G}.
  3. Pertürbe: G+=G+cΔ\mathbf{G}^+ = \mathbf{G} + c \Delta, G=GcΔ\mathbf{G}^- = \mathbf{G} - c \Delta (c küçük, örn. 0.01Gmax0.01 \cdot G_{\max}).
  4. İki ayrı MVM + kayıp: L+=L(G+),L=L(G)L^+ = L(\mathbf{G}^+), L^- = L(\mathbf{G}^-).
  5. Gradient tahmini: g^ij=L+L2cΔij\hat{g}_{ij} = \frac{L^+ - L^-}{2c \Delta_{ij}}.

Sorular:

(a) Bu algoritma kaç MVM gerektiriyor? (Klasik backprop kaçını ister?) (b) SIDRA Y1 MVM süresi 10 ns. SPSA bir iterasyon süresi? (c) 100 iterasyon için toplam süre ve enerji? (d) Klasik backprop (2 × forward = 20 ns MVM + backward overhead 50 ns) = ~70 ns/iterasyon. Karşılaştır. (e) SPSA gradient’ı doğrudan backprop’tan ne kadar gürültülü? Ne zaman kabul edilir?

Çözümler

(a) SPSA: 2 MVM/iterasyon (pertürbasyonlu iki forward). Klasik backprop: 1 forward + 1 backward = 2 MVM (yaklaşık aynı sayı, ama backward daha karmaşık).

(b) Tek iterasyon: 2 MVM × 10 ns + 100 ns kayıp hesabı + pertürbasyon yazma 100 ns = ~220 ns.

(c) 100 iterasyon: 22 µs. SIDRA Y1 3W TDP → enerji: 3 W × 22 µs = 66 µJ. Küçük değer.

(d) Backprop 70 ns/iterasyon × 100 = 7 µs. SPSA 22 µs (3× yavaş). Ama backprop donanımda karmaşık; SPSA basit. Trade-off: hız vs donanım karmaşıklığı.

(e) SPSA gürültüsü: tek iterasyonda O(1/N)O(1/\sqrt{N}) yaklaşım hatası. Ama 100 iterasyon ortalama hata düşer. Kabul edilir: online learning, edge fine-tuning, donanım karmaşıklığı düşük olsun istenirse. Kabul edilmez: ilk baştan eğitim (tam backprop daha verimli toplam FLOP’ta).

Sonuç: SIDRA Y10’da SPSA veya benzer gradient-free yöntem mantıklı prototip.

Özet Kart

  • Türev: yerel değişim oranı, f(x)=lim(f(x+h)f(x))/hf'(x) = \lim (f(x+h)-f(x))/h.
  • Gradient: çok değişkenli kısmi türevlerin vektörü, en dik yön.
  • Zincir kuralı: L/w=L/yy/zz/w\partial L/\partial w = \partial L/\partial y \cdot \partial y/\partial z \cdot \partial z/\partial w. Backprop’un matematik atomu.
  • Jacobian: vektör-to-vektör fonksiyonunun türev matrisi. MVM için J=W\mathbf{J} = \mathbf{W}.
  • Transpose MVM: L/x=WL/y\partial L/\partial x = \mathbf{W}^\top \partial L/\partial y. Backward pass bu.
  • SIDRA stratejisi: Y1 inference-only; Y10 hibrit; Y100 tam analog backward; ayrıca SPSA/forward-forward aday.

Vizyon: Analog Gradient Donanımı

Gradient hesaplama donanımda bugün dijital (GPU). Analog donanımda pratik hale gelirse, AI eğitim enerjisi binlerce kat düşer:

  • Y1 (bugün): Gradient sadece GPU’da. SIDRA inference.
  • Y3 (2027): Son-katman gradient prototipi + SPSA denemesi.
  • Y10 (2029): Hibrit gradient — son N katman analog, geri kalan dijital. Fine-tuning edge’de.
  • Y100 (2031+): Tüm-katman analog backward + forward-forward. Eğitim 100× daha ucuz.
  • Y1000 (uzun vade): Analog equilibrium propagation. Eğitim + inference aynı donanımda, kesintisiz.

Türkiye için anlam: GPU eğitim veri merkezi kurma yarışını ASIC + güç avantajı ile atlayabiliriz. Analog gradient + STDP + R-STDP kombinasyonu → beyin-budgeted AI. SIDRA bu kategorinin ilk büyük üreticisi olma potansiyelinde.

Beklenmedik gelecek: Gradient-native donanım dili. Gradient’ı ilk-sınıf vatandaş yapan programlama modeli. SIDRA yazılım yığını (Modül 6) bu yönde.

Daha İleri

  • Bir sonraki bölüm: 4.4 — Olasılık ve Gürültü
  • Önceki: 4.2 — Ohm + Kirchhoff = Analog MVM
  • Klasik kalkülüs: Stewart, Calculus: Early Transcendentals — standart.
  • Vektör kalkülüs: Marsden & Tromba, Vector Calculus.
  • Backprop matematik: Rumelhart, Hinton, Williams, Nature 1986.
  • SPSA orijinal: Spall, Multivariate stochastic approximation using a simultaneous perturbation gradient approximation, IEEE TAC 1992.
  • Donanımda analog gradient: Ambrogio et al., Equivalent-accuracy accelerated neural-network training using analog memory, Nature 2018.