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
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.
- Ändere Eingaben oder Gewichte und sage die Ausgabe vor dem Ausführen voraus.
- Gib die Zwischenwerte aus, um jeden Rechenschritt zu verfolgen.
- Löse die verlinkten Challenges unten, um die Idee selbst umzusetzen.
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.
- Vorwärtsdurchlauf einer Dense-Schicht Berechne die Ausgaben einer vollständig verbundenen Schicht mit wählbarer Aktivierung. Mittel
- Vorwärtsdurchlauf in einem zweischichtigen Netz Leite Eingaben durch eine verborgene ReLU-Schicht und eine Sigmoid-Ausgabeschicht. Mittel
- Verlustfunktionen: MSE, MAE und Kreuzentropie Miss, wie falsch die Vorhersagen eines Modells sind, mit mittlerem quadratischem Fehler, mittlerem absolutem Fehler oder binärer Kreuzentropie. Einfach