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 BASİT 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 SAYI tablosu DEĞİL, bir DÖNÜŞÜM MAKİNESİDİR. Aşağıda bir vektörü SEÇ, farklı matrisleri DENE, ve dönüşen vektörü CANLI 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 SATIRIYLA vektörün NOKTA ÇARPIMINI alır.
don90 = np.array([[0, -1], [1, 0]])  # 90 derece SAAT YÖNÜNÜN TERSİNE döndürme matrisi
v = np.array([3, 0])

# ELLE: her SATIR 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 AYNI 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 AYNI 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 İLGİLİ SATIRI ile vektörün NOKTA ÇARPIMIDIR (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()}) FARKLI 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 FARKLI 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]) FARKLI 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 FARKLI 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.
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 KRİTİK derslerin sezgisel temelidir:

  • DL Görüntü kategorisinde, bir sinir ağı KATMANI, ÖZÜNDE, girdi vektörünü bir AĞIRLIK matrisiyle çarpıp DÖNÜŞTÜRMEKTİR.
  • NLP kategorisinde, attention mekanizmasındaki Q/K/V matrisleri, girdi embedding’ini FARKLI “bakış açılarına” DÖNÜŞTÜRÜR.
  • Özdeğer/özvektör dersinde (7. ders), “bir matrisin YÖNÜNÜ DEĞİŞTİRMEDİĞİ Ö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 — HAYIR, HER satırla vektörün NOKTA ÇARPIMINI almaktır (4. dersteki nokta çarpım burada TEKRAR karşına çıkıyor).
  2. Matris çarpımının SIRASININ önemli OLMADIĞINI düşünmek — M @ v ile v @ M (boyutlar uyuşsa BİLE) GENELDE FARKLI sonuç verir; matris çarpımı KOMÜTATİF DEĞİLDİR.

Kendini test et

1. Notebook'ta don90 @ [3,0] = [0,3] çıkıyor. Bu NEYİ 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ÇIKÇ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ĞİŞMEDİ) ama ölçekleme matrisiyle [6,2] (BÜYÜDÜ) veriyor. Bu fark NEDEN?
  1. Bir hesaplama hatası
  2. Her matris FARKLI bir dönüşüm TEMSİL eder -- kimlik matrisi ([[1,0],[0,1]]) hiçbir şeyi değiştirmez, ölçekleme matrisi ([[2,0],[0,2]]) her bileşeni 2 KATINA çı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 AYNI v'ye uygulanışı ve FARKLI sonuçları gösteriliyor.

3. Matris çarpımının KOMÜTATİF OLMAMASI (M @ v ile v @ M'nin genelde FARKLI olması) NE anlama gelir?
  1. Matris çarpımının her zaman yanlış sonuç verdiği
  2. Dönüşümlerin UYGULANMA SIRASININ ÖNEMLİ olduğu -- önce döndürüp sonra ölçeklemek, önce ölçekleyip sonra döndürmekle AYNI 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ÇIKÇA belirtiliyor: matris çarpımı KOMÜTATİF DEĞİLDİR, yani SIRA ö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 İLGİLİ SATIRI ile vektörün NOKTA ÇARPIMIDIR -- 4. dersteki nokta çarpım burada TEKRAR karşına çıkar.
  • Farklı matrisler, farklı dönüşüm TÜRLERİNİ temsil eder: kimlik, ölçekleme, döndürme, kesme.
  • Matris çarpımı KOMÜTATİF DEĞİLDİR -- dönüşümlerin uygulanma SIRASI sonucu değiştirir.
  • Bir sinir ağı katmanının "öğrendiği" şey, ÖZÜNDE, doğru dönüşüm matrisini BULMAKTIR.
Sonraki adım: Özdeğer ve özvektör (PCA'ya hazırlık) →