Einfache Vorhersage mit mehreren Eingaben
Es wird im Folgenden versucht, eine Vorhersage über die Siegchance einer Fußballmannschaft zu machen.
Eingabedaten sind dabei:
- Anzahl der durchschnittlichen Fußzehen pro Spieler " href="https://moodle.eick-at.de/mod/page/view.php?id=1099">
- Anzahl der bisher gewonnen Spiele in %
- Anzahl der Fans

Leeres künstliches neuronales Netz mit mehreren Eingaben
weights = [0.1, 0.2, 0] def neural_network(input, weights): pred = w_sum(input,weights) return pred

Einfügen eines Datenpunkts
# Datenmenge repräsentiert den aktuellen Status am Anfang # der ersten 4 Spiele einer Saison: toes = [8.5, 9.5, 9.9, 9.0] # aktuelle durchschnittliche Anzahl der Zehen pro Spieler wlrec = [0.65, 0.8, 0.8, 0.9] # bislang gewonnene Spiele in % nfans = [1.2, 1.3, 0.5, 1.0] # Zahl der Fans in Millionen input = [toes[0],wlrec[0],nfans[0]] # 1. Spiel der Saison pred = neural_network(input,weights) # Vorhersage (engl. prediction)

Bildung der gewichteten Summe
def w_sum(a,b): assert(len(a) == len(b)) # Exception, falls Listen nicht gleich lang sind output = 0 for i in range(len(a)): output += (a[i] * b[i]) return output
Eingaben Gewichte lokale Vorhersage
(8.5 · 0.1) = 0.85 (toes)
(0.65 · 0.2) = + 0.13 (wlrec)
(1.2 · 0.0) = + 0.0 (fans)
endgültige Vorhersage = 0.98
input = [toes[0],wlrec[0],nfans[0]] # Eingaben des 1. Spiels pred = neural_network(input,weights) # Vorhersage print(pred)
Dabei repräsentieren die Variablen input die Information und weight das Wissen.
Vektorrechnung
Die Variablen input und weight sind jeweils Listen, die Zahlen enthalten und sind damit sogenannte Vektoren:
input = [toes[0], wlrec[0], nfans[0]] = [8.5, 6.5, 1.2]
weights = [0.1, 0.2, 0]
Die gewichtete Summe der Eingaben des obigen neuronalen Netzes
8.5 · 0.1 + 0.65 · 0.2 + 1.2 · 0.0 = 0.98entspricht dem sogenannten Skalarprodukt zweier Vektoren.
NumPy
Für Vektorrechnung steht die Python-Bibliothek NiumPy (Numerical Python) zur Verfügung. Python-Listen werden in sehr viel effizientere NumPy-Array ersetzt. U.a. steht die Berechnung des Skalarprodukts durch die Methode dot() zur Verfügung. Die selbstprogrammierte Definition von w_sum(a,b) wird damit ersetzt:
import numpy as np weights = np.array([0.1, 0.2, 0]) def neural_network(input, weights): pred = input.dot(weights) # replaces w_sum(a,b) return pred toes = np.array([8.5, 9.5, 9.9, 9.0]) wlrec = np.array([0.65, 0.8, 0.8, 0.9]) nfans = np.array([1.2, 1.3, 0.5, 1.0]) # Input is the first game of the season. input = np.array([toes[0],wlrec[0],nfans[0]]) pred = neural_network(input,weights) print(pred)
Quellen:
Trask, Andrew W. (2020): Neuronale Netze und Deep Learning kapieren. Der einfache Praxiseinstieg mit Beispielen in Python. (1. Aufl.). mitp-Verlag.
https://www.grund-wissen.de/mathematik/lineare-algebra-und-analytische-geometrie/vektoren.html