- Je berekent een gewogen som met een bias.
- Je bouwt een neuron met een ReLU-activatie en legt de tussenstappen uit.
Een slim gietertje krijgt twee metingen: hoeveel licht een plant krijgt en hoe vochtig de grond is. Meer licht kan de waterscore verhogen, terwijl veel bodemvocht haar verlaagt. Een kunstmatig neuron combineert zulke getallen met instelbare gewichten en een eenvoudige omzetting van de uitkomst.
Dit is een rekenvoorbeeld: de getallen zijn gekozen om iedere stap zichtbaar te maken. In een lerend netwerk worden de instellingen uit voorbeelden geleerd. Nu kies je ze zelf en onderzoek je eerst wat ze doen.
1. Geef iedere invoer een eigen bijdrage
Neem licht x₁ = 0.8 en bodemvocht x₂ = 0.4 op afgesproken schalen. Kies gewichten w₁ = 0.5 en w₂ = −1. De bijdragen zijn 0.8 × 0.5 = 0.4 en 0.4 × (−1) = −0.4: ze heffen elkaar op.
Voeg een bias b = 0.2 toe. Dat is een verschuiving die ook blijft bestaan als de invoeren nul zijn. De gewogen som z wordt daardoor 0.2.
x benoemt de invoeren, w hun gewichten en z de score vóór omzetting. De som is het inproduct dat je al kent, met b als extra term.
x = [0.8, 0.4]
w = [0.5, -1.0]
bias = 0.2
z = 0.0
for i in range(len(x)):
bijdrage = x[i] * w[i]
print(bijdrage) # 0.4, daarna -0.4
z = z + bijdrage
z = z + bias
print(z) # 0.2
Maak gewogen_som(x,w,bias) voor even lange lijsten met eindige getallen. Loop over alle componenten; het gietertje heeft er twee, maar de functie moet ook met één of drie invoeren werken. Een negatieve bijdrage is gewoon tegenwerking binnen deze gekozen score.
Geef iedere invoer meer of minder invloed.
Zet in het diagram dezelfde gewichten en bias. Voorspel eerst wat er gebeurt als je alleen w₁ verhoogt: de lichtbijdrage groeit en de vochtbijdrage blijft gelijk. Bereken zelf de afzonderlijke bijdragen en controleer de getoonde som.
012. Geef de omzetting een knik
Een activatiefunctie zet z om in de uitvoer. ReLU, voluit rectified linear unit, laat positieve scores gelijk en vervangt negatieve scores door nul. Bij z = 0.2 krijg je dus 0.2; bij z = −0.5 krijg je nul.
De knik ligt bij nul. Daaronder verandert de som nog wel, maar de uitvoer blijft op nul staan. Een score boven één blijft mogelijk: ReLU begrenst de bovenkant niet en maakt geen kansverdeling.
def relu(z):
return max(0.0, z)
for z in [-0.5, 0.0, 0.2, 2.4]:
print(relu(z)) # 0, 0, 0.2, 2.4
Maak relu(z) en verlaag daarna de bias in het diagram tot de som negatief wordt. Houd gewicht en som apart in gedachten: een negatief gewicht kan met een negatieve invoer juist een positieve bijdrage geven.
Zonder zulke knikken blijven opeenvolgende gewogen sommen samen één gewogen som. Meer lagen zouden dan geen nieuw soort kromming toevoegen. Met activaties kunnen verschillende invoergebieden anders worden behandeld; later onderzoek je dat met meerdere neuronen.
023. Verbind beide stappen
Maak nu neuron(x,w,bias) door eerst jouw gewogen som te berekenen en daarna ReLU toe te passen. Dit samenstellen maakt zichtbaar waar een nuluitvoer vandaan komt. De activatie wist de tussenliggende negatieve score niet uit je berekening; zij bepaalt alleen wat wordt doorgegeven.
def gewogen_som(x, w, bias):
z = 0.0
for i in range(len(x)):
z = z + x[i] * w[i]
return z + bias
def neuron(x, w, bias):
z = gewogen_som(x, w, bias)
return relu(z)
print(neuron([.8, .4], [.5, -1], .2))
# 0.2
print(neuron([.8, .4], [.5, -1], -.5))
# 0.0
Veelgemaakte fout: iedere losse bijdrage al door ReLU halen. Dan zou de vochtbijdrage −0.4 verdwijnen voordat hij de lichtbijdrage kan tegenwerken. Onze bouwsteen past ReLU pas op de complete som inclusief bias toe.
Controleer je algemene functie ook buiten het plaatje:
print(neuron([1, 2, 3], [1, 1, 1], 1))
# som 1 + 2 + 3 + bias 1, dus 7
De dimensie komt uit de invoerlijsten en staat niet vast op twee. Verander de lijsten zelf niet tijdens het rekenen. Een grotere uitvoer betekent in dit speelgoedvoorbeeld een hogere score; de betekenis moet bij een echte toepassing worden geleerd en getoetst.
03Wat neem je mee?
- Gewichten bepalen bijdragen en de bias verschuift de volledige som.
- ReLU voegt een knik toe: negatief wordt nul, positief blijft gelijk.
- Een neuron combineert deze stappen in een algemene functie voor meerdere invoeren.
Hierna meet je fouten en onderzoek je hoe instellingen met gerichte stappen kunnen verbeteren.