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:
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ı
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'.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:
- 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).
- Matris çarpımının SIRASININ önemli OLMADIĞINI düşünmek —
M @ vilev @ 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?
- Bir hesaplama hatası
- 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)
- Matrisin vektörü büyüttüğünü
- 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?
- Bir hesaplama hatası
- 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)
- v her zaman aynı kalmalıdır
- Ö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?
- Matris çarpımının her zaman yanlış sonuç verdiği
- 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)
- Matris çarpımının sadece kare matrislerde tanımlı olduğu
- 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.