Ana içeriğe geç

Giriş7 dk

Matris çarpımı: dönüşüm olarak okumak

Önkoşul:Matris nedir

Kanca

Bir vektörü 90 derece döndürmek istesen, açı hesabı falan yapman mı gerekir? Yoksa bu, sadece dört sayıdan oluşan bir tabloyu çarpmak kadar basit bir iş midir?

Sezgi

Bir matrisi bir vektörle çarpmak, o vektörü uzayda dönüştürür — döndürür, ölçekler ya da eğer. Matris, sadece bir sayı tablosu değil, bir dönüşüm makinesidir. Aşağıda bir vektörü seç, farklı matrisleri dene, ve dönüşen vektörü canlı izle:

-6-4-20246-6-4-20246

v = (3.0, 0.0)

Mv = (0.0, 3.0)

Noktaları sürükle (ya da odaklayıp ok tuşlarını kullan).

Mekanizma

Matris-vektör çarpımını elle ve NumPy ile hesaplayalım — bir döndürme matrisi kullanarak:

Matris-vektör çarpımı: her satır ile nokta çarpım

# Bir matrisi bir vektörle çarpmak, o vektörü uzayda "dönüştürmek" demektir.
# Matris-vektör çarpımı, matrisin her satırıyla vektörün nokta çarpımını alır.
don90 = np.array([[0, -1], [1, 0]])  # 90 derece saat yönünün tersine döndürme matrisi
v = np.array([3, 0])

# Elle: her satır ile v'nin nokta çarpımı
satir_1_carpim = don90[0, 0] * v[0] + don90[0, 1] * v[1]
satir_2_carpim = don90[1, 0] * v[0] + don90[1, 1] * v[1]
elle_sonuc = np.array([satir_1_carpim, satir_2_carpim])

numpy_sonuc = don90 @ v

print(f"Döndürme matrisi:\n{don90}")
print(f"v = {v.tolist()}")
print(f"\nElle: satır 1 . v = {don90[0,0]}*{v[0]} + {don90[0,1]}*{v[1]} = {satir_1_carpim}")
print(f"      satır 2 . v = {don90[1,0]}*{v[0]} + {don90[1,1]}*{v[1]} = {satir_2_carpim}")
print(f"Elle sonuç: {elle_sonuc.tolist()}")
print(f"NumPy (don90 @ v): {numpy_sonuc.tolist()}")
print(f"\nİki yöntem aynı sonucu veriyor: {np.array_equal(elle_sonuc, numpy_sonuc)}")
print("\nv=[3,0] (doğuya bakan bir vektör) 90 derece döndürülünce [0,3] (kuzeye bakan) oldu --")
print("matris çarpımı, vektörü gerçekten uzayda döndürdü.")
Döndürme matrisi:
[[ 0 -1]
 [ 1  0]]
v = [3, 0]

Elle: satır 1 . v = 0*3 + -1*0 = 0
      satır 2 . v = 1*3 + 0*0 = 3
Elle sonuç: [0, 3]
NumPy (don90 @ v): [0, 3]

İki yöntem aynı sonucu veriyor: True

v=[3,0] (doğuya bakan bir vektör) 90 derece döndürülünce [0,3] (kuzeye bakan) oldu --
matris çarpımı, vektörü gerçekten uzayda döndürdü.

Matematik

Matris-vektör çarpımı
Mv=[abcd][v1v2]=[av1+bv2cv1+dv2]Mv = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} a v_1 + b v_2 \\ c v_1 + d v_2 \end{bmatrix}

Sonucun her bileşeni, matrisin ilgili satırı ile vektörün nokta çarpımıdır (4. ders). Matris çarpımı, özünde, tekrar tekrar uygulanan nokta çarpımdır.

Kod

Aynı vektör, farklı matrisler, farklı etkiler

# Farklı matrisler, farklı "dönüşüm türleri" temsil eder.
DONUSUMLER = {
    "kimlik (değişiklik yok)": np.array([[1, 0], [0, 1]]),
    "ölçekleme (x2)": np.array([[2, 0], [0, 2]]),
    "döndürme (90 derece)": np.array([[0, -1], [1, 0]]),
    "kesme (shear)": np.array([[1, 0.6], [0, 1]]),
}
ornek_v = np.array([3, 1])

print(f"\nAynı vektörü ({ornek_v.tolist()}) farklı matrislerle dönüştürelim:")
for isim, M in DONUSUMLER.items():
    sonuc = M @ ornek_v
    print(f"  {isim:28s}: M @ v = {sonuc.tolist()}")

print("\nHer matris, vektöre farklı bir 'etki' uyguluyor: kimlik hiçbir şeyi değiştirmiyor,")
print("ölçekleme büyütüyor, döndürme yönünü çeviriyor, kesme ise 'eğiyor'.")

Aynı vektörü ([3, 1]) farklı matrislerle dönüştürelim:
  kimlik (değişiklik yok)     : M @ v = [3, 1]
  ölçekleme (x2)              : M @ v = [6, 2]
  döndürme (90 derece)        : M @ v = [-1, 3]
  kesme (shear)               : M @ v = [3.6, 1.0]

Her matris, vektöre farklı bir 'etki' uyguluyor: kimlik hiçbir şeyi değiştirmiyor,
ölçekleme büyütüyor, döndürme yönünü çeviriyor, kesme ise 'eğiyor'.
Dört panelde aynı vektörün kimlik, ölçekleme, döndürme ve kesme matrisleriyle dönüştürülmüş hâlleri.(grafiği tam boyutta, yeni sekmede aç)
Aynı vektör v=(3,1), dört farklı matrisle çarpılınca dört farklı sonuç verir: kimlik değiştirmez, ölçekleme büyütür, döndürme yönünü çevirir, kesme eğer.

Nerede işe yarar

Matrisi “dönüşüm” olarak okumak, ilerideki kritik derslerin sezgisel temelidir:

  • DL Görüntü kategorisinde, bir sinir ağı katmanı, özünde, girdi vektörünü bir ağırlık matrisiyle çarpıp dönüştürmektir.
  • NLP kategorisinde, attention mekanizmasındaki Q/K/V matrisleri, girdi embedding’ini farklı “bakış açılarına” dönüştürür.
  • Özdeğer/özvektör dersinde (7. ders), “bir matrisin yönünü değiştirmediği özel vektörler” sorusu, bu dersteki dönüşüm fikrine doğrudan dayanır.

Bu 2 hatayı yaparsın:

  1. Matris çarpımını “sadece sayıları çarpmak” sanmak — hayır, her satırla vektörün nokta çarpımını almaktır (4. dersteki nokta çarpım burada tekrar karşına çıkıyor).
  2. Matris çarpımının sırasının önemli olmadığını düşünmek — M @ v ile v @ M (boyutlar uyuşsa bile) genelde farklı sonuç verir; matris çarpımı komütatif değildir.

Kendini test et

1. Notebook'ta don90 @ [3,0] = [0,3] çıkıyor. Bu neyi gösteriyor?
  1. Bir hesaplama hatası
  2. Matris çarpımının, vektörü gerçekten uzayda döndürdüğünü -- doğuya bakan [3,0] vektörü, 90 derece döndürülünce kuzeye bakan [0,3] oldu (doğru cevap)
  3. Matrisin vektörü büyüttüğünü
  4. Sonucun her zaman [0,3] olması gerektiğini

Neden: matris-vektor-carpimi bloğunda bu açıkça belirtiliyor: 'v=[3,0] ... 90 derece döndürülünce [0,3] ... oldu -- matris çarpımı, vektörü gerçekten uzayda döndürdü'.

2. farkli-donusumler bloğunda aynı v=[3,1] vektörü, kimlik matrisiyle [3,1] (değişmedi) ama ölçekleme matrisiyle [6,2] (büyüdü) veriyor. Bu fark neden?
  1. Bir hesaplama hatası
  2. Her matris farklı bir dönüşüm temsil eder -- kimlik matrisi ([[1,0],[0,1]]) hiçbir şeyi değiştirmez, ölçekleme matrisi ([[2,0],[0,2]]) her bileşeni 2 katına çıkarır (doğru cevap)
  3. v her zaman aynı kalmalıdır
  4. Ölçekleme matrisi sadece pozitif vektörlerde çalışır

Neden: farkli-donusumler bloğunun çıktısında dört farklı matrisin aynı v'ye uygulanışı ve farklı sonuçları gösteriliyor.

3. Matris çarpımının komütatif olmaması (M @ v ile v @ M'nin genelde farklı olması) ne anlama gelir?
  1. Matris çarpımının her zaman yanlış sonuç verdiği
  2. Dönüşümlerin uygulanma sırasının önemli olduğu -- önce döndürüp sonra ölçeklemek, önce ölçekleyip sonra döndürmekle aynı sonucu vermeyebilir (doğru cevap)
  3. Matris çarpımının sadece kare matrislerde tanımlı olduğu
  4. Bir NumPy kısıtlaması olduğu

Neden: kullanım bölümündeki 2. hatada bu açıkça belirtiliyor: matris çarpımı komütatif değildir, yani sıra önemlidir.

Özet

Özet

  • Bir matrisi bir vektörle çarpmak (Mv), o vektörü uzayda dönüştürür -- döndürür, ölçekler ya da eğer.
  • Sonucun her bileşeni, matrisin ilgili satırı ile vektörün nokta çarpımıdır -- 4. dersteki nokta çarpım burada tekrar karşına çıkar.
  • Farklı matrisler, farklı dönüşüm türlerini temsil eder: kimlik, ölçekleme, döndürme, kesme.
  • Matris çarpımı komütatif değildir -- dönüşümlerin uygulanma sırası sonucu değiştirir.
  • Bir sinir ağı katmanının "öğrendiği" şey, özünde, doğru dönüşüm matrisini bulmaktır.
Sonraki adım: Özdeğer ve özvektör (PCA'ya hazırlık) →