Visualisierung des zentralen Grenzwertsatzes
Wiederholt aus einer Gleichverteilung, die völlig nicht normal ist, Stichproben ziehen, jedes Mal den Mittelwert berechnen und beobachten, wie sich die Verteilung der Mittelwerte einer Glockenform nähert.
Nach Abschluss dieses Fallbeispiels werden Sie verstehen:Warum die Gauß-Verteilung in der KI allgegenwärtig ist — sie ist das unvermeidliche Ergebnis der Überlagerung vieler unabhängiger Faktoren.
Einführung in den Alltag
Warum ist die durchschnittliche Körpergröße der Klasse immer glockenförmig?
Messen Sie die Körpergröße von 50 Personen in der Klasse. Die Körpergröße eines Individuums wird von Hunderten von Faktoren beeinflusst: Genetik, Ernährung, Bewegung, Schlaf... Jeder Faktor hat einen großen oder kleinen Einfluss, positiv oder negativ.
Wenn viele unabhängige kleine Faktoren zusammenkommen, ist die endgültige Verteilung glockenförmig — das ist ein mathematischer Satz, kein Zufall.Der zentrale Grenzwertsatz besagt: Die Summe (oder der Mittelwert) einer großen Anzahl unabhängiger Zufallsvariablen strebt gegen eine Normalverteilung.
Intuitive Vorstellung
Wir ziehen Stichproben aus einer Gleichverteilung U(0,1) — diese Verteilung ist völlig flach und hat nichts mit einer Glockenform zu tun. Wenn wir jedoch jedes Mal mehrere Stichproben (z. B. 30) ziehen, um einen Mittelwert zu berechnen, und diesen Vorgang 5.000 Mal wiederholen — beginnt das Histogramm dieser 5.000 Mittelwerte glockenförmig auszusehen. Je größer n ist, desto näher kommt es einer perfekten Normalverteilung.
Mathematische Definition
\[ \frac{\bar{X}_n - \mu}{\sigma / \sqrt{n}} \xrightarrow{d} \mathcal{N}(0, 1) \]Wobei \(\bar{X}_n = \frac{1}{n}\sum X_i\). Die Standardabweichung des Mittelwerts schrumpft mit einer Rate von \(1/\sqrt{n}\).
Praktische Python-Übung
Beispiel
np.random.seed(2)
def sample_raw(size):
return np.random.uniform(0, 1, size=size)
def clt_experiment(n, repeat=5000):
means = [sample_raw(n).mean() for _ in range(repeat)]
return np.array(means)
sample_sizes = [1, 2, 5, 30]
results = {n: clt_experiment(n) for n in sample_sizes}
print("BEISPIEL Überprüfung des zentralen Grenzwertsatzes:\n")
print("Originalverteilung: Uniform U(0,1) (völlig flach)")
print("Theorie: Standardabweichung des Mittelwerts = 1/sqrt(12n)\n")
print(f"{'n':<6} {'Mittelwert SD':<12} {'Theorie':<12} {'Passt'}")
print("-" * 42)
for n, means in results.items():
theo = 1 / np.sqrt(12 * n)
ok = "Ja" if abs(means.std() - theo) < 0.01 else "Nein"
print(f"{n:<6} {means.std():<12.4f} {theo:<12.4f} {ok}")
# Normalitätstest für n=30
m30 = results[30]
skew = np.mean(((m30-m30.mean())/m30.std())**3)
kurt = np.mean(((m30-m30.mean())/m30.std())**4) - 3
print(f"\nBEISPIEL n=30: Schiefe={skew:.3f} (sollte ~0 sein), Exzess-Kurtosis={kurt:.3f} (sollte ~0 sein)")
EXAMPLE 中心极限定理验证: 原始分布: 均匀分布 U(0,1)(完全平的) 理论: 均值的标准差 = 1/sqrt(12n) n 均值SD 理论值 匹配 ------------------------------------------ 1 0.2891 0.2887 Yes 2 0.2043 0.2041 Yes 5 0.1292 0.1291 Yes 30 0.0526 0.0527 Yes EXAMPLE n=30 时:偏度=-0.023 (应~0), 超峰度=-0.005 (应~0)
Anwendungsszenarien in der KI
| Szenario | Verbindung zum zentralen Grenzwertsatz |
|---|---|
| Batch-Normalisierung | Angenommen, die Aktivierungswerte innerhalb jedes Mini-Batches sind annähernd normalverteilt, dann subtrahiere den Mittelwert und dividiere durch die Standardabweichung. |
| Gewichtsinitialisierung | Xavier-/He-Initialisierung zieht Anfangsgewichte aus einer Normalverteilung |
| Fehlermodellierung | In Regressionsproblemen wird angenommen, dass Fehler einer Normalverteilung folgen – Fehler sind das Ergebnis der Überlagerung mehrerer nicht modellierter Faktoren. |