Erwartungswert, Varianz und Kovarianz -- Numerische Eigenschaften von Daten
Erwartungswert = Wo das Zentrum liegt. Varianz = Wie weit gestreut es ist. Kovarianz = Wie sich zwei Variablen gemeinsam bewegen.
Konzeptanalyse
Erwartungswert E[X]
Gewichteter Durchschnitt = "langfristiges durchschnittliches Ergebnis"
\( \mathbb{E}[X] = \sum x_i P(x_i) \)
Varianz Var(X)
Grad der Datenstreuung
\( \mathbb{E}[(X - \mu)^2] \)
Kovarianz Cov(X,Y)
Zusammenhang der gemeinsamen Bewegung zwischen zwei Variablen
\( \mathbb{E}[(X-\mu_X)(Y-\mu_Y)] \)
Kovarianzmatrix
Die Kovarianzmatrix eines d-dimensionalen Zufallsvektors ist eine d×d-symmetrische Matrix: \( \Sigma_{ij} = \text{Cov}(X_i, X_j) \).
- Diagonalelemente = Varianzen einzelner Merkmale
- Nichtdiagonalelemente = Kovarianzen zwischen Merkmalen
Beispiele aus der Praxis
Durchschnittliche Punktzahlen zweier Klassen
Sowohl Klasse A als auch Klasse B haben eine durchschnittliche Mathe-Punktzahl von 75. Aber in Klasse A erzielt jeder eine Punktzahl zwischen 70 und 80, während in Klasse B einige 30 und einige 100 erreichen.
Die Erwartungswerte sind gleich, aber die Varianzen sind völlig unterschiedlich – die Varianz offenbart Unterschiede in der "Stabilität".
Praktische Python-Übung
Beispiel
data = np.random.normal(5, 2, 10000)
print(f"Mittelwert={np.mean(data):.3f}, Varianz={np.var(data):.3f}, Std={np.std(data):.3f}")
# Kovarianz
x = np.random.randn(1000)
y1 = 0.8*x + np.random.randn(1000)*0.3 # Positive Korrelation
y2 = -0.8*x + np.random.randn(1000)*0.3 # Negative Korrelation
print(f"Cov(X, Y+): {np.cov(x,y1)[0,1]:.3f} (positiv)")
print(f"Cov(X, Y-): {np.cov(x,y2)[0,1]:.3f} (negativ)")
# Kovarianzmatrix
data_3d = np.random.randn(100, 3)
print("\nKovarianzmatrix:\n", np.round(np.cov(data_3d.T), 3))
print("Symmetrisch:", np.allclose(np.cov(data_3d.T), np.cov(data_3d.T).T))
Ausgabe:
均值=4.990, 方差=4.008, 标准差=2.002 Cov(X, Y+): 0.846 (正) Cov(X, Y-): -0.860 (负) 协方差矩阵: [[ 1.03 0.035 0.033] [ 0.035 0.89 -0.066] [ 0.033 -0.066 0.933]] 对称: True
Anwendungsszenarien in der KI
Die Mathematik der Batch-Normalisierung
Für jeden Mini-Batch berechne den Mittelwert μ_B und die Varianz σ²_B, dann normalisiere \( \hat{x} = (x - \mu_B) / \sqrt{\sigma^2_B + \epsilon} \). Dies verwendet zwei Statistiken: Erwartungswert (Mittelwert) und Varianz. \( \epsilon \) ist eine kleine Konstante, um Division durch null zu verhindern (üblicherweise 1e-5).
PCA-Dimensionsreduktion = Eigenzerlegung der Kovarianzmatrix
Der erste Schritt von PCA: Berechne die Kovarianzmatrix \( \Sigma \) (eine symmetrische d×d-Matrix) der Daten. Zweiter Schritt: Führe eine Eigenzerlegung auf \( \Sigma \) durch und nimm die Eigenvektoren, die den k größten Eigenwerten entsprechen, als Richtungen der Hauptkomponenten. Die Varianz entlang dieser Richtungen wird maximiert → wodurch die meisten Informationen erhalten bleiben.
Varianzkontrolle bei der Gewichtsinitialisierung
Kaiming-Initialisierung: \( Var(W) = 2/n_{in} \) (für ReLU-Netze) oder Xavier: \( Var(W) = 2/(n_{in}+n_{out}) \) (für tanh-Netze). Steuere die Varianz der Ausgabe jeder Schicht präzise, sodass die Varianz der Aktivierungen während der Vorwärtspropagation unverändert bleibt und die Varianz der Gradienten während der Rückwärtspropagation unverändert bleibt. Eine unsachgemäße Initialisierung kann selbst in der frühen Trainingsphase verschwindende/explodierende Gradienten verursachen.
Schätzung des zweiten Moments im Adam-Optimierer
Adam führt einen exponentiell gleitenden Durchschnitt der quadrierten Gradienten \( v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \). Dies ist im Wesentlichen eine Online-Schätzung der "Varianz des Gradienten in jeder Parameterrichtung". Richtungen mit großer Varianz (heftige Oszillation) erhalten eine kleinere Lernrate, während Richtungen mit kleiner Varianz (stabiler Abstieg) eine größere Lernrate erhalten.
Weitere Erweiterungen