Malik

Was haben Ableitungen aus der Mathematik mit KI zu tun?

29. April 2025

Die Analysis spielt in der Mathematik eine grosse Rolle und am Gymnasium haben wir uns mehrere Jahre mit diesem Themengebiet auseinandergesetzt. Dieses Teilgebiet der Mathematik beschäftigt sich mit der Untersuchung von Funktionen. Man berechnet Steigungen, bestimmt Stammfunktionen und findet heraus wo Funktionen besonders gross oder klein werden. In diesem Blog möchte ich mich vorallem auf das Ableiten von Funktionen fokussieren.

Die Definition der Abtleitung

Im Unterricht haben wir damit begonnen die Ableitung zu definieren. Wir wollen bei einer Ableitung die Steigung einer Funktion an einem einzelnen Punkt bestimmen. Dafür schauen wir uns den Graphen einer Funktion an und bestimmen die Steigung von einem Punkt (x/f(x)) zu einem anderen Punkt (x + Δx/f(x + Δx)) an. So können wir die Steigung am Punkt (x/f(x)) annähern.

Je näher man diese Punkte zueinander bringt, desto näher ist die berechnete Steigung an der wirklichen Steigung der Funktion.

Wenn man die Distanz zwischen den x-Werten (Δx) verkleinert also zu 0 tendieren lässt, dann erhält man die genaue Steigung der Funktion am Punkt (x/f(x)). Da wir nicht durch 0 teilen dürfen, benutzen wir den Grenzwert und lassen Δx zu 0 streben (Δx→0).

Optimierung

Mit der Ableitung können wir Funktionen optimieren. Wir wissen in welche Richtung unsere Zielfunktion grösser oder kleiner wird. Im Unterricht haben wir Ableitungen benutzt, um beispielsweise das Volumen eines Kegels bei konstanter Oberfläche zu maximieren. Wenn wir eine Funktion für das Volumen des Kegels aufstellen können und diese Funktion ableiten, dann wissen wir in welche Richtung wir gehen müssen, um das Volumen zu vergrössern. Irgendwann kommen wir dann an einen sogennant kritischen Punkt. Die Steigung ist an diesem Punkt 0. Das bedeutet, dass wir ein lokales Maximum (oder einen Sattelpunkt - wird in diesem Blog aber ignoriert) gefunden haben.

Anwendung der Ableitung

Das Optimieren von Funktionen findet in weit mehr Bereichen Anwendung als nur beim Maximieren des Volumens eines Kegels. Angenommen wir haben ein Algorithmus mit einem verstellbaren Parameter, der die Pixel eines Bildes als Eingabe entgegen nimmt und eine Zahl zwischen 0 und 9 als Ausgabe zurückgibt. Mit nur einem Parameter wäre das wahrscheinlich der naivste Ziffernerkenner. Wir könnten versuchen eine Funktion aufzustellen, die ausrechnet wie gross der Fehler ist, der dieser Algorithmus macht. Wenn wir diese Funktion jetzt nach dem Parameter ableiten, dann erhalten wir die Steigung des Fehlers. Wir wissen also, ob wir den Parameter grösser oder kleienr machen müssen, um den Fehler zu minimieren. So könnten wir den Algorithmus "trainieren". Genau auf diesem Prinzip basiert ein Teilgebiet der KI: Neuronale Netzwerke.

Ein neuronales Netzwerk ist eigentlich nur ein Algorithmus oder eine Funktion, die beispielsweise Pixel als Eingabe entgegen nimmt, die Daten mit den Parametern verrechnet und eine Zahl von 0-9 als Ausgabe gibt. Anders als im vorherigen Beispiel, hat ein brauchbares neuronales Netz aber deutlich mehr Parameter. Diese werden Gewichte (englisch Weights) und Schwellwerte (englisch Biases) genannt. Wenn wir jetzt eine Fehlerfunktion (englisch Lossfunction) definieren wollen, dann hat diese mehr als nur ein Gewicht als Eingabe. Ein brauchbares neuronales Netzwerk für Ziffernerkennung hat über 100'000 Parameter. Wir müssen also einen Weg finden, wie wir herausfinden wie wir jeden einzelnen der Parameter anpassen müssen um den Fehler zu minimieren. Dafür brauchen wir den Gradient, denn der Gradient einer mehrdimensionalen Funktion ist ein Vektor der die Richtung des schnellsten Anstiegs zeigt. Gehen wir also genau in die andere Richtung, dann passen wir alle Parameter so an, dass wir den Fehler minimieren. Der Gradient besteht aus der partiellen Ableitung nach jeder Variabel der Funktion. Wir schauen also salopp gesagt welcher Parameter wieviel zum Fehler beiträgt und korrigieren diesen. Die Kettenregel spielt in neuronalen Netzwerken eine wichtige Rolle, weil beim Zurückrechnen des Fehlers durch das Netzwerk jede Schicht auf der vorherigen aufbaut und die Kettenregel diese Abhängigkeiten mathematisch korrekt verknüpft.

Wenn man dieses Konzept verstanden hat und ein wenig Python programmieren und mit Matrizen rechnen kann, dann ist man gar nicht mehr soweit davon entfernt sein eigenes neuronales Netzwerk ganz ohne ML-Bibliotheken  zu programmieren.