Kann 1 Hidden oder Output Neuron von z.b. 3 anderen Neuronen in der vorherigen Schicht, Werte mit der Sigmoid Funktion berechnen und nur 1 Wert wieder ausgeben?
1 Antwort
Ja, so funktioniert das... mehrere Inputs werden per Summenfunktion (das kann auch was anderes als ne Addition sein) zusammengefasst, darauf wird die Aktivierungsfunktion angewendet. Wenn diese einen bestimmten Grenzwert erreicht, feuert der Ausgang. Das Neuron speichert intern Parameter der Funktionen, die es beim Training/Lernen anpasst.
Typischerweise ist das eine gewichtete Summe, also für jeden Eingang jeweils Wichtung*Wert und davon die Summe. Aber prinzipiell kann das auch jede andere Funktion sein, also Produkt, logarithmische Summe, etc.
Ja. Die Gewichte gehören zu den Parametern, die beim Lernen geändert werden.
Ja. Wobei Schwellwert nen blöder Ausdruck ist, das muss nicht ein Wert (der Ausgang ist selten binär) sein, das können auch Parameter einer Funktion sein, z.B. der aufgeführten Sigmoid.
Ok, eine kurze Frage noch :)
Das Neuron speichert intern Parameter der Funktionen, die es beim Training/Lernen anpasst.
Können diese Parameter in einer Liste abgespeichert werden, oder was wäre ideal?
Das sind typischerweise Vektoren, moderne Prozessoren können dann direkt das Skalarprodukt aus dem Eingangsbelegungsvektor und den Gewichten rechnen.
Könntest du es mir vielleicht verständlicher erklären, danke! :)
https://www.youtube.com/watch?v=gzwfDNF26eA
a sind die Eingänge, b die Gewichte... neuere Prozessoren könnten das über spezielle Befehle relativ schnell in Hardware rechnen.
Das sind typischerweise Vektoren, moderne Prozessoren können dann direkt das Skalarprodukt aus dem Eingangsbelegungsvektor und den Gewichten rechnen.
Ok, wo werden die dann aber abgespeichert?
Jedes Neuron hat eigene Gewichte, die liegen dann halt in einem Array oder einer Liste. Array reicht meistens, da sich die Anzahl der Werte nicht dynamisch ändert.
So habe ich das auch programmiert, dass Gewichte in einer und Schwellwerte in einer Liste stehen :)
Wichtung*Wert und davon die Summe
Meinst du damit sum = sum + Input*Gewicht (abgekürzt sum += Input*Gewicht) oder wie meinst du es?
Nochmal zur Rekapitulation: Input, Hidden und Output Neurone haben alle 3 Gewichte und Schwellwerte. Bei Input Neuronen werden keine Funktionen wie Sigmoid angewendet sondern nur Input * Gewicht >= Schwellwert = feuern!, bei Hidden Neuronen und Output Neuronen werden aber z.b. Sigmoid angewendet stimmt das? Korrigiere mich bitte, wenn was falsch ist... :)
3 Gewichte muss nicht sein, die Anzahl hängt von der Anzahl der Eingänge ab, eher mehr. Wenn du Full Mesh hast, hast du für jedes Neuron der n-ten Ebene genau so viele Gewichte, wie die n-1-te Ebene an Neuronen hat. Wie sich die Funktionen da genau verteilen weiss ich nicht mehr, dafür ist das bei mir im Studium schon zu lange her ;)
Ok meinte nicht 3 Gewichte pro Neuron, sondern ich meinte, dass alle 3 Neuronen Typen (also Input, Hidden und Output Neurone) Gewichte und Schwellwerte haben :) Stimmt das?
Ein paar Ergänzungen:
- Einem standard Neuron hast du n+1 inputs, wobei n die Anzahl an Neuronen des vorherigen Layers sind
- Darauf berechnest du dann die pre-activation wie hier schon beschrieben. Anschließend wendest du (optional) eine Activationfunktion (zB Schwellwert oder Sigmoid). Beides anzuwenden macht keinen sinn (genau genommen ist Sigmoid eine differenzierbare approximation für die Schwellwert funktion)
Ok Frage: funktionieren Activationfunktions z.b. Schwellwert oder Sigmoid oder HyperbolicTangent bei Input Hidden und Output Neuronen?
Ok, danke was gibt es noch für Summenfunktionen?