KI-Konzepte in Python

Vorwärtsdurchlauf und Verlustfunktionen in Python

Ein neuronales Netz besteht aus Schichten von Neuronen. Beim Vorwärtsdurchlauf fließt die Eingabe durch jede Schicht und erzeugt eine Vorhersage; eine Verlustfunktion bewertet, wie weit diese Vorhersage von der richtigen Antwort entfernt ist.

Das Konzept in einfachen Worten

Ein neuronales Netz besteht aus Schichten von Neuronen. Beim Vorwärtsdurchlauf fließt die Eingabe durch jede Schicht und erzeugt eine Vorhersage; eine Verlustfunktion bewertet, wie weit diese Vorhersage von der richtigen Antwort entfernt ist.

Schicke Eingaben Schicht für Schicht durch ein kleines neuronales Netz und miss den Fehler mit quadratischem Fehler und Kreuzentropie.

Die wichtigsten Ideen

  • Eine Dense-Schicht verbindet jede Eingabe mit jedem Neuron der Schicht.
  • Die Ausgabe einer Schicht ist die Eingabe der nächsten.
  • Der Verlust ist eine einzige Zahl; niedriger bedeutet bessere Vorhersagen.
  • Nutze den quadratischen Fehler für Zahlen und die Kreuzentropie für Wahrscheinlichkeiten und Klassen.

Wann wird dieser Ansatz verwendet?

  • Verstehen, was in neuronalen Netzen und KI-Bibliotheken passiert.
  • Die Idee lernen, bevor du sie in den passenden Challenges umsetzt.
  • Dich auf Kurse zu maschinellem Lernen, Vorstellungsgespräche und Projekte vorbereiten.

Selbst ausprobieren

Ändere die Eingaben und das Ziel. Verfolge die Werte durch die verborgene Schicht und sieh, wie beide Verluste auf die Vorhersage reagieren.

Beispielcode

Code ausführen →
main.py
import math

def dense(inputs, weights, biases, activation):
    # Each row of weights belongs to one neuron in the layer.
    return [activation(sum(x * w for x, w in zip(inputs, row)) + b) for row, b in zip(weights, biases)]

relu = lambda z: max(0.0, z)
sigmoid = lambda z: 1 / (1 + math.exp(-z))

x = [1.0, 2.0]
hidden = dense(x, [[0.5, -0.2], [0.3, 0.8]], [0.0, -0.5], relu)
output = dense(hidden, [[1.0, -1.0]], [0.2], sigmoid)
print("hidden layer:", [round(h, 3) for h in hidden])
print("prediction:", round(output[0], 3))

# A loss function measures how wrong the prediction is.
target = 1.0
mse = (output[0] - target) ** 2
bce = -(target * math.log(output[0]) + (1 - target) * math.log(1 - output[0]))
print("squared error:", round(mse, 3))
print("cross-entropy:", round(bce, 3))

Erwartete Ausgabe

hidden layer: [0.1, 1.4]
prediction: 0.25
squared error: 0.563
cross-entropy: 1.387

So funktioniert es

dense() berechnet eine Schicht, wobei jede Zeile der Gewichte ein Neuron ist. Die verborgene Schicht nutzt ReLU, die Ausgabeschicht Sigmoid, um eine Wahrscheinlichkeit zu liefern. Quadratischer Fehler und Kreuzentropie messen beide den Abstand zwischen der Vorhersage 0.25 und dem Ziel 1.0; das Training versucht, sie zu verkleinern.

Ändere die Werte und führe das Programm im CodeUtility Python Online-Compiler aus, ohne Python lokal zu installieren.

Übungsaufgaben

Verändere Eingaben und Randfälle, bevor du die Lösung mit größeren Datenmengen testest.

  1. Ändere Eingaben oder Gewichte und sage die Ausgabe vor dem Ausführen voraus.
  2. Gib die Zwischenwerte aus, um jeden Rechenschritt zu verfolgen.
  3. Löse die verlinkten Challenges unten, um die Idee selbst umzusetzen.
In der Python-IDE ausführen →

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges