7  Kolon Uzayı ve Sıfır Uzayı

C(A) ve N(A) — bir matrisin iki yüzü

NotBölüm bilgisi

7.1 Bu Derste Ne Var?

Ders 5’te vektör uzayı, alt-uzay ve kolon uzayını tanıttık. Ders 6 bir matristen doğan iki temel alt-uzayı yan yana koyuyor.

  1. Kolon uzayı \(C(A)\): kolonların tüm kombinasyonları → \(A\mathbf{x} = \mathbf{b}\) hangi \(\mathbf{b}\)’ler için çözülebilir?
  2. Sıfır uzayı \(N(A)\): \(A\mathbf{x} = \mathbf{0}\)’ı çözen tüm \(\mathbf{x}\)’ler → girdideki fazlalık yönleri.
flowchart LR
    A["A (m × n)"] --> CA["C(A) ⊂ R^m<br/>kolonların kombinasyonu"]
    A --> NA["N(A) ⊂ R^n<br/>Ax = 0 çözümleri"]

    CA --> Q1["💡 Ax = b çözülebilir<br/>⇔ b ∈ C(A)"]
    NA --> Q2["💡 Girdideki<br/>'kör' yönler"]

    Q1 --> LS["Least squares<br/>(b ∉ C(A) ise projeksiyon)"]
    Q2 --> REG["LoRA / weight decay<br/>(null yönleri kontrol)"]

    style CA fill:#fff3e0,stroke:#e67e22,stroke-width:2px
    style NA fill:#fdf6f7,stroke:#8a1538,stroke-width:2px
    style LS fill:#fce4ec,stroke:#c2185b,stroke-width:2px
    style REG fill:#fce4ec,stroke:#c2185b,stroke-width:2px
flowchart LR
    A["A (m × n)"] --> CA["C(A) ⊂ R^m<br/>kolonların kombinasyonu"]
    A --> NA["N(A) ⊂ R^n<br/>Ax = 0 çözümleri"]

    CA --> Q1["💡 Ax = b çözülebilir<br/>⇔ b ∈ C(A)"]
    NA --> Q2["💡 Girdideki<br/>'kör' yönler"]

    Q1 --> LS["Least squares<br/>(b ∉ C(A) ise projeksiyon)"]
    Q2 --> REG["LoRA / weight decay<br/>(null yönleri kontrol)"]

    style CA fill:#fff3e0,stroke:#e67e22,stroke-width:2px
    style NA fill:#fdf6f7,stroke:#8a1538,stroke-width:2px
    style LS fill:#fce4ec,stroke:#c2185b,stroke-width:2px
    style REG fill:#fce4ec,stroke:#c2185b,stroke-width:2px
Şekil 7.1: Bir matrisin iki yüzü: çıktı tarafı C(A) (erişilebilirlik) ve girdi tarafı N(A) (fazlalık).

“Two subspaces that we’re specially interested in: the column space and the null space.” — Strang, 0:47

İpucuBuilder Notu — C(W) ve N(W)
  • \(C(W)\) = erişilebilirlik / ifade gücü. Lineer katman \(\mathbf{y} = W\mathbf{x}\)’in üretebileceği tüm çıktılar \(C(W)\)’de. Hedef bunun dışındaysa tam çözüm yok → least squares projeksiyonu.
  • \(N(W)\) = fazlalık / serbestlik. \(W\mathbf{v} = \mathbf{0}\) olan yön → girdideki o sinyal yok oluyor. Modern derin ağlar genelde aşırı parametrize: \(N(W) \neq \{\mathbf{0}\}\). Weight decay / LoRA bu null yönlerini kontrol eder.
  • “Kernel” kelimesi ML’de bu null uzayından gelir.

7.2 Alt-Uzaylar Üzerinde İşlemler

Birleşim (\(P \cup L\)) — alt-uzay DEĞİL:

Düzlem \(P\) ve doğru \(L\)’nin vektörlerini bir araya topla. Düzlemden bir vektör + doğrudan bir vektör = ikisinde de olmayan üçüncü bir vektör → kapalılık ihlali.

Kesişim (\(S \cap T\)) — her zaman alt-uzay:

\(\mathbf{v}, \mathbf{w} \in S \cap T\) → ikisi de hem \(S\) hem \(T\)’de. \(\mathbf{v} + \mathbf{w}\) hem \(S\)’de hem \(T\)’de (her ikisi alt-uzay) → kesişimde. ✓

Builder Notu: Kısıtların kesişimi lineer kalır; “ya/ya” tipi birleşim lineer-olmayan zorluk üretir.

7.3 Kolon Uzayı C(A) — Tanım

Strang’in örneği:

\[ A = \begin{pmatrix} 1 & 1 & 2 \\ 2 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 1 & 5 \end{pmatrix} \]

Her kolon \(\mathbb{R}^4\)’te. \(C(A)\), \(\mathbb{R}^4\)’ün alt-uzayı. İçinde: üç kolon ve tüm kombinasyonları.

Genel kural: \(m \times n\) matris için \(C(A) \subset \mathbb{R}^m\).

7.4 Ax = b Ne Zaman Çözülebilir?

\(A\mathbf{x} = x_1 \mathbf{c}_1 + x_2 \mathbf{c}_2 + x_3 \mathbf{c}_3\) — kolonların kombinasyonu (Ders 1!).

ÖnemliÇözülebilirlik kuralı

\(A\mathbf{x} = \mathbf{b}\) çözülebilir \(\iff\) \(\mathbf{b} \in C(A)\).

“I can solve Ax = b exactly when b is in the column space.” — Strang, 23:39

Hemen çözülebilen \(\mathbf{b}\)’ler: \(\mathbf{b} = \mathbf{0}\) (\(\mathbf{x} = \mathbf{0}\)), \(\mathbf{b}\) = bir kolonun kendisi.

Builder Notu — Least Squares: Gerçek hayatta \(\mathbf{b}\) genelde \(C(A)\)’da değildir (gürültülü, fazla denklem). Tam çözüm yoktur; \(\mathbf{b}\)’nin \(C(A)\) üzerine izdüşümünü alıp en yakın çözümü buluruz (Ders 15-16). Bir nöral ağın hedefi tam üretememesi de aynı durumdur.

7.5 Pivot Kolonlar — Bağımlı Kolonu At

Strang’in örneğinde:

\[ \mathbf{c}_1 + \mathbf{c}_2 = \mathbf{c}_3 \quad ((1,2,3,4) + (1,1,1,1) = (2,3,4,5)) \]

Üçüncü kolon bağımlı. Atılabilir, \(C(A)\) değişmez. İlk iki = pivot kolon. Sonuç: \(C(A)\), \(\mathbb{R}^4\) içinde 2 boyutlu alt-uzay (düzlem).

Bu “bağımsız kolon sayısı” = rank (Ders 7).

7.6 Sıfır Uzayı N(A) — Tanım

Tamamen farklı bir alt-uzay. \(C(A)\) sağ tarafla ilgiliydi; \(N(A)\) çözümlerle ilgili.

\[ N(A) = \{\mathbf{x} : A\mathbf{x} = \mathbf{0}\} \]

Strang’in örneğinde (\(4 \times 3\)): \(\mathbf{x}\)’ler \(\mathbb{R}^3\)’te → \(N(A) \subset \mathbb{R}^3\).

Genel kural: \(m \times n\) matris için \(N(A) \subset \mathbb{R}^n\). (\(C(A)\) ile farklı uzaylarda!)

7.7 Null Uzayını Bulmak

\(\mathbf{c}_3 = \mathbf{c}_1 + \mathbf{c}_2\) olduğundan:

\[ 1 \cdot \mathbf{c}_1 + 1 \cdot \mathbf{c}_2 - 1 \cdot \mathbf{c}_3 = \mathbf{0} \implies \mathbf{x} = (1, 1, -1)^T \in N(A) \]

Tüm katları da çözüm:

\[ N(A) = \left\{ c \begin{pmatrix} 1 \\ 1 \\ -1 \end{pmatrix} : c \in \mathbb{R} \right\} = \text{R}^3\text{'te orijinden geçen bir doğru} \]

import numpy as np
from scipy.linalg import null_space

A = np.array([[1, 1, 2], [2, 1, 3], [3, 1, 4], [4, 1, 5]], dtype=float)
print("rank(A) =", np.linalg.matrix_rank(A))      # 2 (pivot kolon sayisi)

N = null_space(A)
print("N(A) baz vektoru =\n", N)                   # (1, 1, -1)'e oranli
print("A @ N =\n", np.round(A @ N, 10))            # ~ 0

7.8 N(A) Gerçekten Alt-Uzay mı? — İki Satırlık İspat

Toplama: \(A\mathbf{v} = \mathbf{0}\), \(A\mathbf{w} = \mathbf{0}\)

\[ A(\mathbf{v} + \mathbf{w}) = A\mathbf{v} + A\mathbf{w} = \mathbf{0} + \mathbf{0} = \mathbf{0} \checkmark \]

Skalerle çarpma: \(A(c\mathbf{v}) = c(A\mathbf{v}) = c \cdot \mathbf{0} = \mathbf{0}\)

Dağılma özelliği yetiyor. \(N(A)\) bir alt-uzay.

İpucuBuilder Notu — Kernel = Null = Bilgi Kaybı

Bir nöral ağda, kayba (loss) hiç etki etmeyen parametre yönleri = \(N\). Optimizasyon bu yönlerde kör. Weight decay bu null yönleri sıfıra çeker. LoRA düşük-rank zorlaması da \(N\)’i kasıtlı genişletir (parametre sayısı azaltma).

7.9 Ax = b’nin Çözümleri Niye Alt-Uzay Değil?

\(\mathbf{b} \neq \mathbf{0}\) için: \(A \cdot \mathbf{0} = \mathbf{0} \neq \mathbf{b}\)sıfır vektörü çözüm değil → alt-uzay olamaz.

“The zero vector is not a solution, so I never even got started.” — Strang, 42:38

Yapı: Bir özel çözüm \(\mathbf{x}_p\) + \(N(A)\) → orijinden geçmeyen, \(N(A)\)’ya paralel kaymış doğru/düzlem (afin). Bu Ders 7’nin “tam çözüm = özel çözüm + null uzayı” temasının habercisi.

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(12, 5))

# Sol: C(A) - R^4 icinde 2D duzlem (3D goster)
ax1 = fig.add_subplot(121, projection='3d')
c1 = np.array([1, 2, 3])     # 3D'e indirgenmis temsili
c2 = np.array([1, 1, 1])
ax1.quiver(0,0,0, *c1, color='#8a1538', arrow_length_ratio=0.1, lw=2.5)
ax1.quiver(0,0,0, *c2, color='#1f4e79', arrow_length_ratio=0.1, lw=2.5)
# duzlem mesh
uu, vv = np.meshgrid(np.linspace(-1.5, 1.5, 10), np.linspace(-1.5, 1.5, 10))
P = uu[..., None]*c1 + vv[..., None]*c2
ax1.plot_surface(P[..., 0], P[..., 1], P[..., 2], color='#fed7aa', alpha=0.3)
ax1.text(*c1*1.15, r'$\mathbf{c}_1$', color='#8a1538', fontsize=13, fontweight='bold')
ax1.text(*c2*1.2, r'$\mathbf{c}_2$', color='#1f4e79', fontsize=13, fontweight='bold')
ax1.set_title(r'$C(A)$$\mathbb{R}^m$  (kolonların düzlemi)', fontsize=11)
ax1.set_xticks([]); ax1.set_yticks([]); ax1.set_zticks([])

# Sag: N(A) - R^3 icinde 1D dogru
ax2 = fig.add_subplot(122, projection='3d')
v = np.array([1, 1, -1])
ts = np.linspace(-2, 2, 50)
xs, ys, zs = v[0]*ts, v[1]*ts, v[2]*ts
ax2.plot(xs, ys, zs, color='#e67e22', lw=3)
ax2.quiver(0,0,0, *v, color='#e67e22', arrow_length_ratio=0.1, lw=2.5)
ax2.scatter([0],[0],[0], color='#8a1538', s=80, zorder=5)
ax2.text(*v*1.2, r'$(1, 1, -1)$', color='#e67e22', fontsize=12, fontweight='bold')
ax2.set_title(r'$N(A)$$\mathbb{R}^n$  ($Ax = 0$ doğrusu)', fontsize=11)
ax2.set_xticks([]); ax2.set_yticks([]); ax2.set_zticks([])

plt.tight_layout()
plt.show()
Şekil 7.2

7.10 Bir Alt-Uzayı Tanımlamanın İki Yolu

  1. Kolon uzayı tarzı — vektör ver, kombinasyon al. Birkaç vektör, tüm kombinasyonları → uzayı içeriden inşa et.
  2. Null uzayı tarzı — denklem ver, sağlayanları bul. \(A\mathbf{x} = \mathbf{0}\) → uzayı kısıtlarla tarif et.

Lineer cebrin büyük kısmı bu iki bakış arasında gidip gelmektir.

7.11 Bu Dersin Özeti

  1. Birleşim alt-uzay değil, kesişim her zaman alt-uzay.
  2. \(C(A) \subset \mathbb{R}^m\) — kolonların kombinasyonları.
  3. \(A\mathbf{x} = \mathbf{b}\) çözülebilir \(\iff\) \(\mathbf{b} \in C(A)\).
  4. Pivot kolonlar = bağımsız kolonlar; bağımlılar uzaya katkı yok.
  5. \(N(A) \subset \mathbb{R}^n\)\(A\mathbf{x} = \mathbf{0}\) çözümleri.
  6. \(N(A)\) alt-uzaydır — dağılma ispatı.
  7. \(A\mathbf{x} = \mathbf{b}\) (\(\mathbf{b} \neq \mathbf{0}\)) çözümleri alt-uzay değil (orijini içermez).
  8. İki tanımlama yolu: kombinasyon / denklem.
ÖnemliTek bir cümle

\(C(A)\), \(A\mathbf{x} = \mathbf{b}\)’nin hangi \(\mathbf{b}\)’ler için çözülebileceğini söyler (\(\mathbf{b} \in C(A)\)). \(N(A)\), \(A\mathbf{x} = \mathbf{0}\)’ın tüm çözümlerini toplar. Biri çıktı tarafında erişilebilirliği, diğeri girdi tarafında serbestliği ölçer.

7.12 Kontrol Soruları

Kolonlar 3 bileşenli → \(C(A) \subset \mathbb{R}^3\). \(\mathbf{c}_2 = 2\mathbf{c}_1\) → bağımlı. 1 boyutlu: \(\mathbb{R}^3\)’te orijinden geçen doğru.

\(C(A)\), \((1, 2, 1)\) yönündeki doğru.

  • \(\mathbf{b} = (3, 6, 3)^T = 3 \cdot (1, 2, 1)\)çözülebilir, \(\mathbf{x} = (3, 0)\).
  • \(\mathbf{b} = (1, 0, 0)^T\)\((1, 2, 1)\)’in katı değil → \(C(A)\) dışı → çözüm yok.

\(\mathbf{x}\) 3 bileşenli → \(N(A) \subset \mathbb{R}^3\). İki satır birbirinin katı → tek bağımsız denklem: \(x_1 + 2x_2 + 3x_3 = 0\). \(\mathbb{R}^3\)’te orijinden geçen düzlem (2 serbest yön):

\[ N(A) = \left\{ c_1 \begin{pmatrix} -2 \\ 1 \\ 0 \end{pmatrix} + c_2 \begin{pmatrix} -3 \\ 0 \\ 1 \end{pmatrix} \right\} \]

\(N(W) \neq \{\mathbf{0}\}\)\(\mathbf{v} \neq \mathbf{0}\) var ki \(W\mathbf{v} = \mathbf{0}\). Yani \(W(\mathbf{x} + c\mathbf{v}) = W\mathbf{x}\) — girdideki \(\mathbf{v}\) yönü kör.

  • Boyut indirgemede istenir (sıkıştırma).
  • Gereksizse aşırı parametrize; weight decay / LoRA budar.
  • \(\dim N(W)\) = “kaç serbestlik derecesi boşa harcanmış”.

7.13 Egzersizler

Egzersiz 1. \(A = \begin{pmatrix} 1 & 2 & 3 \\ 0 & 1 & 1 \\ 1 & 1 & 2 \end{pmatrix}\). Pivot kolonlar? \(C(A)\) kaç boyutlu? (İpucu: üçüncü = ilk + ikinci?)

Egzersiz 2. Aynı \(A\) için \(\mathbf{b} = (6, 2, 4)^T\) kolon uzayında mı? Bir \(\mathbf{x}\) bul.

Egzersiz 3. \(A = \begin{pmatrix} 1 & 1 & 1 \\ 1 & 2 & 3 \end{pmatrix}\) için \(N(A)\) — geometrik şekil?

Egzersiz 4. (Python) scipy.linalg.null_space ile doğrula.

import numpy as np
from scipy.linalg import null_space

A = np.array([[1, 1, 2], [2, 1, 3], [3, 1, 4], [4, 1, 5]], dtype=float)
print("rank =", np.linalg.matrix_rank(A))
N = null_space(A)
print("N(A) bazı =\n", N)
print("A @ N ~ 0?\n", np.round(A @ N, 10))

Egzersiz 5. Bu dersin matrisi: \(C(A) = 2\) boyut, \(N(A) = 1\) boyut. Kolon sayısı = 3. \(2 + 1 = 3\) tesadüf mü? (Bu rank-nullity teoremi’nin habercisi — Ders 7-10.)

7.14 Sonraki Ders İçin Hazırlık

Ders 7: \(A\mathbf{x} = \mathbf{0}\) Çözme — Pivot Değişkenler ve Özel Çözümler

  • Dikdörtgen matrislerde eliminasyon (echelon form \(U\)).
  • Rank = pivot sayısı.
  • Pivot vs serbest değişkenler (\(n - r\) tane serbest).
  • Özel çözümler (her serbest değişken için).
  • İndirgenmiş satır echelon formu \(R\).
UyarıDers 7 öncesi
  • Egzersiz 5 (rank-nullity sezgisi) kritik.
  • null_space ile birkaç matris dene.
  • Ana cümleyi içselleştir.

7.15 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Strang’da
Birleşim \(P \cup L\) genelde alt-uzay DEĞİL 6m47
Kesişim \(S \cap T\) her zaman alt-uzay 11m05
\(C(A)\) Kolonların kombinasyonları; \(\mathbb{R}^m\) 11m46
Çözülebilirlik \(A\mathbf{x} = \mathbf{b}\) \(\iff\) \(\mathbf{b} \in C(A)\) 23m39
Pivot kolon Bağımsız; bağımlı kolon uzaya katkı yok 27m02
\(N(A)\) \(A\mathbf{x} = \mathbf{0}\) çözümleri; \(\mathbb{R}^n\) 29m16
\(N(A)\) ispat Dağılmadan iki satır 38m47
\(\mathbf{b} \neq \mathbf{0}\) çözümleri Alt-uzay değil (orijini içermez) 42m38
İki tanım Kombinasyon / denklem 44m53

7.16 ML Bağlantıları Özeti

İpucu7 köprü
  1. \(C(W)\) = erişilebilirlik → Lineer katmanın üretebileceği çıktılar.
  2. \(N(W)\) = kernel / fazlalık → Bilgi kaybı yönleri; weight decay / LoRA bunları kontrol.
  3. Pivot sayısı = rank → Modelin gerçek temsil boyutu.
  4. \(\mathbf{b} \in C(A)\) testi → least squares → Gürültülü/aşırı belirli sistemlerde projeksiyon.
  5. Birleşim vs kesişim → Kısıtların kesişimi lineer; “ya/ya” lineer-olmayan zorluk.
  6. Rank + null = kolon sayısı → Rank-nullity (Ders 7-10); parametre sayma.
  7. \(N(W) \neq \{\mathbf{0}\}\) = aşırı parametrizasyon → Modern derin ağların kaderi; genelleme gizemi.
ÖnemliTek bir şey alıp gideceksen

Her matris iki alt-uzay doğurur. \(C(A)\) “hangi \(\mathbf{b}\)’leri üretebilirim” sorusu; \(N(A)\)\(A\mathbf{x} = \mathbf{0}\)’ı hangi \(\mathbf{x}\)’ler çözer” sorusu. Biri çıktı erişilebilirliği, diğeri girdi serbestliği — ikisi de gerçek alt-uzaylar.