Neuronen und Aktivierungsfunktionen in Python
Ein künstliches Neuron ist eine winzige Funktion. Es multipliziert jede Eingabe mit einem Gewicht, addiert einen Bias und gibt das Ergebnis an eine Aktivierungsfunktion weiter, die entscheidet, wie stark es „feuert“.
Das Konzept in einfachen Worten
Ein künstliches Neuron ist eine winzige Funktion. Es multipliziert jede Eingabe mit einem Gewicht, addiert einen Bias und gibt das Ergebnis an eine Aktivierungsfunktion weiter, die entscheidet, wie stark es „feuert“.
Baue ein künstliches Neuron in reinem Python: eine gewichtete Summe der Eingaben plus Bias, die durch Sigmoid oder ReLU läuft.
Die wichtigsten Ideen
- Gewichte sagen, wie wichtig jede Eingabe ist; der Bias verschiebt das Ergebnis nach oben oder unten.
- Ohne Aktivierung ergeben gestapelte Neuronen trotzdem nur ein lineares Modell (eine Gerade).
- Sigmoid liefert einen Wert zwischen 0 und 1 und eignet sich daher für Wahrscheinlichkeiten.
- ReLU ist schnell und die übliche Wahl für die verborgenen Schichten moderner Netze.
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 mit den Schiebereglern Eingaben, Gewichte und Bias. Beobachte, wie die gewichtete Summe z über die Sigmoid- und ReLU-Kurven wandert.
Beispielcode
import math
# A neuron multiplies each input by a weight, adds them up and adds a bias.
def dot(a, b):
return sum(x * y for x, y in zip(a, b))
def sigmoid(z):
return 1 / (1 + math.exp(-z)) # squashes any number into (0, 1)
def relu(z):
return max(0.0, z) # keeps positives, turns negatives into 0
inputs = [0.5, -1.0, 2.0]
weights = [0.8, 0.2, -0.5]
bias = 0.1
z = dot(inputs, weights) + bias # weighted sum
print("weighted sum z =", round(z, 3))
print("sigmoid(z) =", round(sigmoid(z), 3))
print("relu(z) =", relu(z))
# The activation decides how strongly the neuron "fires".
for value in [-2, 0, 2]:
print(f"z={value:>2} sigmoid={sigmoid(value):.3f} relu={relu(value)}")
Erwartete Ausgabe
weighted sum z = -0.7
sigmoid(z) = 0.332
relu(z) = 0.0
z=-2 sigmoid=0.119 relu=0.0
z= 0 sigmoid=0.500 relu=0.0
z= 2 sigmoid=0.881 relu=2
So funktioniert es
dot() berechnet die gewichtete Summe z. Sigmoid presst z in einen Wert zwischen 0 und 1, während ReLU positive Werte behält und negative zu 0 macht. Die Schleife zeigt, wie jede Aktivierung auf eine negative, eine null und eine positive Eingabe reagiert.
Ä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.
- Skalarprodukt zweier Vektoren Multipliziere zwei Vektoren elementweise und addiere die Ergebnisse, die Kernoperation jedes Neurons. Einfach
- Aktivierungsfunktionen Wende Sigmoid, ReLU, Leaky ReLU oder tanh auf jeden Wert einer Liste an. Einfach
- Ein einzelnes künstliches Neuron Berechne die Ausgabe eines Neurons: gewichtete Summe der Eingaben plus Bias, durch Sigmoid geleitet. Einfach