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

Gradient und partielle Ableitungen

Nach dieser Lektion: Ich kann den Gradienten einer Funktion mit zwei Eingaben berechnen.

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

In welche Richtung wird der Fehler kleiner?

Der Gradient fasst die Steigungen einer Funktion mit zwei Eingaben in einem Pfeil zusammen. Er zeigt, in welche Richtung der Wert am steilsten wächst.

Ein Modell hat zwei Einstellungen, x und y, und einen Fehler, der von beiden abhängt. Sie wollen wissen, an welcher Einstellung Sie zuerst drehen, damit der Fehler schnell sinkt.

Am Ende dieser Lektion

Notiz

Ich kann den Gradienten einer Funktion mit zwei Eingaben berechnen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Partielle Ableitungdie Ableitung nach einer Eingabe, die andere bleibt fest
Gradientdie Liste aller partiellen Ableitungen
Vektoreine Liste von Zahlen, die einen Pfeil beschreibt[2, 12]
Steilster Anstiegdie Richtung, in der der Wert am schnellsten wächst
Höhenliniedie Punkte, an denen die Funktion denselben Wert hat

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

Eine partielle Ableitung hält die andere Eingabe fest

Bei f(x, y) = x ** 2 + 3 * y ** 2 fragen Sie zwei Dinge. Wie ändert sich f, wenn nur x wächst? Und wie, wenn nur y wächst?

Jede Antwort ist eine partielle Ableitung. Sie leiten nach einer Eingabe ab und behandeln die andere wie eine feste Zahl. Aus 3 * y ** 2 wird beim Ableiten nach x eine Konstante, also 0.

Beispiel: Steigungen im Punkt (1, 2)

GrößeRegelWert bei x = 1, y = 2
Wert von fx hoch 2 plus 3 mal y hoch 21 + 12 = 13
Ableitung nach x2 * x (der y-Teil fällt weg)2
Ableitung nach y6 * y (der x-Teil fällt weg)12

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

Beide Steigungen mit kleinen Schritten schätzen

Befehl
docker exec jupyter python3 -c "h = 0.0001; print(round(((1+h)**2 + 3*2**2 - (1**2 + 3*2**2)) / h, 2), round((1 + 3*(2+h)**2 - (1 + 3*2**2)) / h, 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.

Beide partiellen Ableitungen mit SymPy

Befehl
docker exec jupyter python3 -c "import sympy as sp; x, y = sp.symbols('x y'); f = x**2 + 3*y**2; print(sp.diff(f, x), sp.diff(f, y))"

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 bergauf, so steil wie möglich

Der Gradient ist die Liste der partiellen Ableitungen, hier [2, 12]. Als Pfeil gezeichnet zeigt er in die Richtung, in der f am schnellsten wächst.

Je länger der Pfeil, desto steiler ist der Hang. Dort, wo der Gradient [0, 0] ist, ist das Gelände flach, zum Beispiel am tiefsten Punkt einer Mulde.

Beispiel: der Gradient an drei Punkten

Punkt (x, y)Gradient [2 * x, 6 * y]Was das heißt
(1, 2)[2, 12]steil bergauf, vor allem in y-Richtung
(-1, 1)[-2, 6]bergauf, wenn x kleiner wird und y größer
(0, 0)[0, 0]flach: hier liegt der tiefste Punkt

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

Ein kleiner Schritt mit und gegen den Gradienten

Code: python
def f(x, y):
    return x ** 2 + 3 * y ** 2

print("vorher:", f(1, 2))
print("mit dem Gradienten:", round(f(1 + 0.01 * 2, 2 + 0.01 * 12), 4))
print("gegen den Gradienten:", round(f(1 - 0.01 * 2, 2 - 0.01 * 12), 4))
# Ändern Sie die 0.01 in 0.02. Wird der Unterschied größer?

Ein häufiger Fehler

Warnung

Viele denken, der Gradient zeige in Richtung des kleinsten Werts. Er zeigt bergauf. Wollen Sie den Wert senken, gehen Sie in die entgegengesetzte Richtung, also mit dem Minuszeichen vor dem Gradienten.

Kleine Schritte schätzen den Gradienten

Wenn Sie keine Regel zur Hand haben, schätzen Sie jede partielle Ableitung mit einem kleinen Schritt h. Sie gehen in der einen Eingabe nach vorn und nach hinten und halten die andere fest.

Der Quotient (f(x + h, y) - f(x - h, y)) / (2 * h) schätzt die Steigung nach x. Der Code unten rechnet beide.

Beide Steigungen in Python schätzen

Code: python
def f(x, y):
    return x ** 2 + 3 * y ** 2

x = 1
y = 2
h = 0.0001
fx = (f(x + h, y) - f(x - h, y)) / (2 * h)
fy = (f(x, y + h) - f(x, y - h)) / (2 * h)
print("nach x:", round(fx, 3))
print("nach y:", round(fy, 3))
# Ändern Sie y in 0. Wie ändert sich die zweite Zahl?

Ü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.