Pod całą warstwą żargonu uczenie maszynowe jest matematyką, którą student zna już z algebry liniowej i analizy: rzutem ortogonalnym, rozkładem spektralnym macierzy symetrycznej, minimalizacją funkcji wypukłej i kompromisem obciążenie-wariancja. Ten moduł pokazuje cztery takie miejsca — i przy każdym stawia obok siebie wzór z wykładu i wynik algorytmu, żeby było widać, że to ta sama liczba.
Równania normalne kontra spadek gradientowy — i dlaczego uwarunkowanie decyduje o tempie uczenia
Funkcja straty wypukła, gradient sprawdzony różnicowo, Newton kontra spadek gradientowy
Rozkład spektralny kowariancji; błąd rekonstrukcji równy dokładnie sumie odrzuconych λ
Błąd na zbiorze uczącym maleje monotonicznie, testowy nie — grzbietowa kara to naprawia
Równania normalne z ręki, gradient entropii krzyżowej, PCA na macierzy 2×2
Zadanie. Dopasować prostą y = β₀ + β₁x do czterech punktów: (1; 2), (2; 3), (3; 5), (4; 6).
Krok 1 — macierz planu.
Krok 2 — XTX i XTy. Σx = 10, Σx² = 30, Σy = 16, Σxy = 2+6+15+24 = 47:
Krok 3 — rozwiązanie układu 2×2. Wyznacznik: 4·30 − 10² = 20.
Krok 4 — kontrola prostopadłości. Reszty: r = y − ŷ, gdzie ŷ = (1,9; 3,3; 4,7; 6,1), więc r = (0,1; −0,3; 0,3; −0,1).
Oba iloczyny skalarne znikają — reszta jest prostopadła do przestrzeni kolumn, dokładnie jak twierdzi twierdzenie o rzucie. To nie zbieg okoliczności, tylko definicja rozwiązania.
W aplikacji: zakładka MNK jako rzut, wiersz „max |XT(y − Xβ̂)|” liczy to samo dla d+1 kolumn i n obserwacji; wynik rzędu 10⁻¹² to sam błąd zaokrągleń.
Zadanie. Wyprowadzić ∇L dla regresji logistycznej i pokazać, że L jest wypukła.
Krok 1 — pochodna sigmoidy. Dla σ(z) = 1/(1+e−z):
Krok 2 — jeden składnik straty. Dla pojedynczej obserwacji ℓ = −[y log p + (1−y) log(1−p)], p = σ(z), z = xTβ:
Krok 3 — reguła łańcuchowa. Mnożymy przez ∂p/∂z = p(1−p) — i mianownik znika:
To zaskakująco czysty wynik: gradient to błąd predykcji razy cecha — dokładnie ta sama postać, co w regresji liniowej. Sumując po obserwacjach: ∇L = XT(p − y).
Krok 4 — hesjan i wypukłość. Różniczkując raz jeszcze, ∂p/∂β = p(1−p)x, więc
Dla dowolnego v: vTHv = Σ pᵢ(1−pᵢ)(xᵢTv)² ≥ 0, bo p ∈ (0,1). Zatem H ⪰ 0 i L jest wypukła — spadek gradientowy nie może utknąć w minimum lokalnym, bo takowych nie ma.
Uwaga o separowalności. Jeśli klasy dają się rozdzielić prostą idealnie, to skalowanie β → cβ przy c → ∞ obniża L do zera bez osiągania jej: minimum nie istnieje, a ‖β‖ ucieka do nieskończoności. Widać to, ustawiając w aplikacji duże rozdzielenie klas — wiersz „najmniejsza wartość własna hesjanu” spada wtedy do zera.
W aplikacji: zakładka Regresja logistyczna porównuje ∇L z kroku 3 z gradientem policzonym różnicowo; zgodność rzędu 10⁻⁷ to potwierdzenie wyprowadzenia, a nie jego powtórzenie.
Zadanie. Dane mają macierz kowariancji
Znaleźć główne składowe i błąd rekonstrukcji przy zachowaniu jednej.
Krok 1 — wielomian charakterystyczny.
Stąd λ₁ = 6, λ₂ = 1. Kontrola: λ₁ + λ₂ = 7 = tr C = 5 + 2 ✓, λ₁λ₂ = 6 = det C ✓.
Krok 2 — wektory własne. Dla λ₁ = 6: (5−6)v₁ + 2v₂ = 0, czyli v₁ = 2v₂:
Iloczyn skalarny: 2·(−1) + 1·2 = 0 — prostopadłe, jak dla każdej macierzy symetrycznej.
Krok 3 — wariancja wyjaśniona. Pierwsza składowa niesie λ₁/(λ₁+λ₂) = 6/7 ≈ 85,7% wariancji.
Krok 4 — błąd rekonstrukcji. Rzutując dane na v(1) i odtwarzając, traci się dokładnie składową wzdłuż v(2), której wariancja wynosi λ₂:
Dlaczego akurat tak. Dla dowolnego innego kierunku u (‖u‖=1) wariancja rzutu wynosi uTCu, a maksimum tej formy kwadratowej na sferze to λ₁, osiągane w v(1) — to iloraz Rayleigha. Zachowanie k składowych o największych λ jest więc optymalne, a nie tylko rozsądne (twierdzenie Eckarta-Younga).
W aplikacji: zakładka PCA robi to samo w wymiarze do 8 metodą Jacobiego; wiersz „błąd rekonstrukcji: zmierzony / Σi>kλᵢ” zestawia liczbę policzoną na danych z sumą odrzuconych wartości własnych.