Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie ein neuronales Netz aus Fehlern lernt

Nach dieser Lektion: Ich kann erklären, wie ein Netz mit Verlust, Gradient und Lernrate aus seinen Fehlern lernt.

Lektion, 60 Min.2 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Wie ein Netz seine Fehler verkleinert

Ein neuronales Netz lernt, indem es seine Gewichte in kleinen Schritten so verändert, dass sein Fehler sinkt. Das Verfahren heißt Gradientenabstieg.

Es ist die Grundlage fast jedes Trainings. Hier üben wir es an einem einzigen Gewicht: dem Preis, den ein Fahrradverleih je Stunde nimmt.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie ein Netz mit Verlust, Gradient und Lernrate aus seinen Fehlern lernt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Verlusteine Zahl, die misst, wie falsch das Netz liegt
Gradientzeigt, wie stark der Verlust bei einer Änderung des Gewichts steigt
Lernratewie groß jeder Schritt ist0.05
GradientenabstiegGewichte Schritt für Schritt gegen den Gradienten bewegen
Backpropagationder Fehler wird rückwärts durch die Schichten gereicht

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der Verlust misst, wie falsch das Netz liegt

Zuerst braucht das Netz eine Zahl für seinen Fehler. Sie heißt Verlust.

Ein häufiger Verlust ist der mittlere quadrierte Fehler. Für jede Zeile nehmen Sie die Vorhersage minus die richtige Antwort und quadrieren das. Dann bilden Sie den Mittelwert. Je kleiner der Verlust, desto besser das Netz.

Der Verlust für zwei Gewichte

Befehl
docker exec jupyter python3 -c "print(((0 - 2) ** 2 + (0 - 4) ** 2) / 2, ((0.5 - 2) ** 2 + (1.0 - 4) ** 2) / 2)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der Gradient zeigt die Richtung des Anstiegs

Stellen Sie sich den Verlust als Hügellandschaft vor. Das Gewicht ist Ihr Standort. Der Gradient sagt, wie steil es dort bergauf geht.

Das Netz geht darum entgegengesetzt, bergab. Ein Schritt lautet: neues Gewicht gleich altes Gewicht minus Lernrate mal Gradient. Bei mehreren Schichten reicht die Backpropagation den Fehler rückwärts durch das Netz, damit jedes Gewicht seinen Gradienten bekommt.

Beispiel: drei Schritte mit Lernrate 0,05

SchrittGewicht wVerlustGradientNeues Gewicht
1010-100 + 0,05 mal 10 = 0,5
20,55,625-7,50,5 + 0,375 = 0,875
30,8753,164-5,6250,875 + 0,281 = 1,156

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Gradientenabstieg in Python

Code: python
# Das Netz soll den Preis je Stunde lernen. Die Daten: 1 Stunde 2 Euro, 2 Stunden 4 Euro.
stunden = [1, 2]
preise = [2, 4]
w = 0.0
rate = 0.05
for schritt in range(3):
    gradient = 0.0
    verlust = 0.0
    for n in range(len(stunden)):
        fehler = w * stunden[n] - preise[n]
        gradient = gradient + 2 * fehler * stunden[n] / len(stunden)
        verlust = verlust + fehler * fehler / len(stunden)
    print("Schritt", schritt, "w =", w, "Verlust =", verlust)
    w = w - rate * gradient
# Setzen Sie rate auf 0.5 und beobachten Sie den Verlust.

Der erste Schritt von Hand

Befehl
docker exec jupyter python3 -c "print(0 - 0.05 * -10)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Lernrate: nicht zu klein, nicht zu groß

Die Lernrate bestimmt die Schrittgröße. Ist sie zu klein, braucht das Training sehr lange.

Ist sie zu groß, springt das Gewicht über das Ziel hinaus. Mit Rate 0,5 steht w nach dem ersten Schritt bei 5. Der Verlust steigt dort auf 22,5 statt zu sinken. Eine gute Rate verkleinert den Verlust in jedem Schritt.

Ein häufiger Fehler

Warnung

Viele addieren den Gradienten zum Gewicht. Der Gradient zeigt aber bergauf, der Verlust würde steigen. Ziehen Sie ihn darum ab: neues Gewicht gleich altes minus Lernrate mal Gradient.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.