Ana içeriğe geç

Orta8 dk

Türev: değişim hızı

Önkoşul:Fonksiyon ve grafik sezgisi

Kanca

  1. derste “iki nokta arasındaki ortalama hızı” hesapladık. Peki tek bir noktadaki anlık hızı nasıl bulursun — o noktada başka bir “ikinci nokta” bile yokken?

Sezgi

Türev, bir fonksiyonun bir noktadaki anlık değişim hızıdır — iki nokta arasındaki mesafe sıfıra yaklaştıkça, ortalama hızın yakınsadığı değer. Geometrik olarak, bu, o noktadaki teğet doğrunun eğimidir. Aşağıda bir fonksiyon seç, noktayı kaydır, ve teğetin canlı değiştiğini izle:

-3-2-1012302468xf(x)

f'(x) = 2x

x₀ = 2.00, f(x₀) = 4.00

f'(x₀) = 4.00 (teğetin eğimi)

Mekanizma

x0=2 noktasındaki anlık değişim hızını, iki nokta arasındaki mesafeyi (h) giderek küçülterek arayalım:

h küçüldükçe ortalama hız neye yakınsıyor?

# 8. derste "ortalama değişim hızını" gördük: iki nokta arasındaki eğim.
# Türev, bu iki nokta birbirine sonsuz yakınlaştıkça ortaya çıkan "anlık" hızdır.
def f(x):
    return x ** 2

x0 = 2.0
print(f"f(x) = x^2, x0 = {x0} noktasındaki anlık değişim hızını arıyoruz.\n")
print("h küçüldükçe (x0 ile x0+h arasındaki mesafe azaldıkça) ortalama hız:")
for h in [1.0, 0.1, 0.01, 0.0001]:
    sonlu_fark = (f(x0 + h) - f(x0)) / h
    print(f"  h={h:<8} -> (f({x0}+{h}) - f({x0})) / {h} = {sonlu_fark:.6f}")

print("\nh küçüldükçe, ortalama hız 4.0'a yaklaşıyor -- bu, x0=2 noktasındaki")
print("türevdir: f'(2) = 4.")
f(x) = x^2, x0 = 2.0 noktasındaki anlık değişim hızını arıyoruz.

h küçüldükçe (x0 ile x0+h arasındaki mesafe azaldıkça) ortalama hız:
  h=1.0      -> (f(2.0+1.0) - f(2.0)) / 1.0 = 5.000000
  h=0.1      -> (f(2.0+0.1) - f(2.0)) / 0.1 = 4.100000
  h=0.01     -> (f(2.0+0.01) - f(2.0)) / 0.01 = 4.010000
  h=0.0001   -> (f(2.0+0.0001) - f(2.0)) / 0.0001 = 4.000100

h küçüldükçe, ortalama hız 4.0'a yaklaşıyor -- bu, x0=2 noktasındaki
türevdir: f'(2) = 4.

Bu limitin analitik (formülle bulunan) karşılığına bakalım:

Analitik türev formülü: (x^n)' = n·x^(n-1)

# x^2'nin türevi, analitik olarak f'(x) = 2x formülüyle bulunur (kalkülüsün
# temel kuralı: x^n'in türevi n*x^(n-1)'dir).
def f_turev(x):
    return 2 * x

analitik_sonuc = f_turev(x0)
print(f"\nAnalitik formül: f'(x) = 2x  =>  f'({x0}) = {analitik_sonuc}")
print(f"Sonlu fark limiti (h->0) ile analitik formül aynı sonucu veriyor: {np.isclose(analitik_sonuc, 4.0)}")

Analitik formül: f'(x) = 2x  =>  f'(2.0) = 4.0
Sonlu fark limiti (h->0) ile analitik formül aynı sonucu veriyor: True

Matematik

Türevin tanımı
f′(x0)=lim⁡h→0f(x0+h)−f(x0)hf'(x_0) = \lim_{h \to 0} \frac{f(x_0 + h) - f(x_0)}{h}

Bu, 8. dersteki ortalama değişim hızı formülünün aynısıdır — sadece hh (iki nokta arasındaki mesafe) sıfıra yaklaşırken alınan limitidir.

Kod

Teğet doğru: türev = eğim

# Türev, x0 noktasındaki teğet doğrunun eğimidir. Teğet doğru, o noktada
# fonksiyona "dokunan" düz bir çizgidir.
egim = f_turev(x0)
sabit = f(x0) - egim * x0  # y = egim*x + sabit, y-f(x0) = egim*(x-x0)

def teget(x):
    return egim * x + sabit

print(f"\nTeğet doğru: y = {egim}x + ({sabit})")
print(f"x0={x0} noktasında: f({x0})={f(x0)}, teğet({x0})={teget(x0)}  (aynı nokta -- teğet, eğriye dokunuyor)")
print(f"Yakın bir noktada (x=2.1): f(2.1)={f(2.1):.4f}, teğet(2.1)={teget(2.1):.4f}  (çok yakın -- teğet, eğriyi yerel olarak iyi yaklaştırıyor)")
print(f"Uzak bir noktada (x=3.0): f(3.0)={f(3.0):.4f}, teğet(3.0)={teget(3.0):.4f}  (fark büyüyor -- teğet sadece yerel bir yaklaşımdır)")

Teğet doğru: y = 4.0x + (-4.0)
x0=2.0 noktasında: f(2.0)=4.0, teğet(2.0)=4.0  (aynı nokta -- teğet, eğriye dokunuyor)
Yakın bir noktada (x=2.1): f(2.1)=4.4100, teğet(2.1)=4.4000  (çok yakın -- teğet, eğriyi yerel olarak iyi yaklaştırıyor)
Uzak bir noktada (x=3.0): f(3.0)=9.0000, teğet(3.0)=8.0000  (fark büyüyor -- teğet sadece yerel bir yaklaşımdır)
f(x)=x karesi parabolü ve x0=2 noktasındaki teğet doğrusu, kesişim noktası işaretli.(grafiği tam boyutta, yeni sekmede aç)
x0=2 noktasında teğet doğrusu (kesikli), eğriye tam O noktada dokunuyor -- eğimi f'(2)=4. Noktadan uzaklaştıkça (x=3'te), teğet ile gerçek eğri arasındaki fark büyüyor.

Nerede işe yarar

Türev, ilerideki tüm derin öğrenme matematiğinin çekirdeğidir:

  • 10. derste (zincir kuralı), birden fazla fonksiyonun iç içe geçtiği durumlarda türev nasıl hesaplanır göreceğiz — bu, backpropagation’ın kalbidir.
  • 12. derste (gradyan inişi), bir modelin parametrelerini “en iyi” yöne doğru itmek için, kayıp fonksiyonunun türevini (gradyanını) kullanırız.
  • DL kategorilerinde, bir sinir ağının “öğrenmesi”, özünde, milyonlarca türev hesabının zincirleme uygulanmasıdır.

Bu 2 hatayı yaparsın:

  1. Türevi “karmaşık bir formül ezberlemek” sanmak — hayır, özünde, bu dersteki “h küçüldükçe ortalama hız neye yakınsıyor” sorusunun cevabıdır.
  2. Teğet doğrunun eğriyi her yerde iyi yaklaştırdığını düşünmek — hayır, teğet sadece o noktanın yakınında iyi bir yaklaşımdır (notebook’ta x=3’te fark büyüyor).

Kendini test et

1. sonlu-fark-tanimi bloğunda h=1.0 için ortalama hız 5.0 çıkarken, h=0.0001 için 4.0001 çıkıyor. Bu neyi gösteriyor?
  1. Bir hesaplama hatası
  2. h küçüldükçe, ortalama hızın gerçek türev değerine (4.0) yaklaştığını -- türev, tam olarak bu yakınsamanın limit değeridir (doğru cevap)
  3. h büyüdükçe sonucun daha doğru olduğunu
  4. Fonksiyonun her h değerinde farklı olduğunu

Neden: sonlu-fark-tanimi bloğunda bu açıkça belirtiliyor: 'h küçüldükçe, ortalama hız 4.0a yaklaşıyor -- bu, x0=2 noktasındaki türevdir'.

2. teget-dogrusu bloğunda x=2.1'de f(2.1)=4.41 ve teğet(2.1)=4.40 -- çok yakın. Ama x=3.0'da f(3.0)=9.0 ve teğet(3.0)=8.0 -- fark büyük. Bu neden?
  1. Bir hesaplama hatası
  2. Teğet doğru, sadece x0 noktasının yakınında iyi bir yaklaşımdır -- x0'dan uzaklaştıkça, düz bir çizgi (teğet) ile eğri (parabol) arasındaki fark büyür (doğru cevap)
  3. Teğet doğrusu her zaman yanlıştır
  4. x=3.0 fonksiyonun tanım kümesi dışındadır

Neden: notebook çıktısında bu açıkça belirtiliyor: 'Uzak bir noktada ... fark büyüyor -- teğet sadece yerel bir yaklaşımdır'.

3. Bir sinir ağının parametrelerini güncellerken (gradyan inişi), türev neden kullanılır?
  1. Rastgele bir sayı üretmek için
  2. Kayıp fonksiyonunun hangi yönde azaldığını (o noktadaki eğimi) bulmak için -- türev, parametreleri hangi yöne doğru itmemiz gerektiğini gösterir (doğru cevap)
  3. Sadece görselleştirme amaçlı
  4. Türev, gradyan inişiyle ilgisizdir

Neden: kullanım bölümünde bu açıkça bağlanıyor: 12. dersteki gradyan inişi, kayıp fonksiyonunun türevini (gradyanını) kullanarak parametreleri en iyi yöne iter.

Özet

Özet

  • Türev, bir noktadaki anlık değişim hızıdır -- h sıfıra yaklaşırken ortalama hızın yakınsadığı değer.
  • Geometrik olarak türev, o noktadaki teğet doğrunun eğimidir.
  • x^n fonksiyonunun türevi, analitik olarak n·x^(n-1) formülüyle bulunur.
  • Teğet doğru, sadece o noktanın yakınında iyi bir yaklaşımdır -- uzaklaştıkça fark büyür.
  • Türev, backpropagation ve gradyan inişinin (10-12. dersler) temel yapı taşıdır.
Sonraki adım: Zincir kuralı (backprop'un kalbi) →