Jedes beispielhafte neuronale Netzwerk zur Bilderkennung, über das ich gelesen habe, erzeugt eine einfache "Ja" - oder "Nein" -Antwort. Ein Ausgangsknoten entspricht "Ja, dies ist ein menschliches Gesicht" und einer entspricht "Nein, dies ist kein menschliches Gesicht".
Ich verstehe, dass dies zur Vereinfachung der Erklärung wahrscheinlich ist, aber ich frage mich, wie ein solches neuronales Netzwerk so programmiert werden könnte, dass es eine spezifischere Ausgabe liefert. Nehmen wir zum Beispiel an, ich habe Tiere klassifiziert. Anstatt "Tier" oder "Kein Tier" zu sagen, möchte ich Antworten wie "Hund", "Fisch", "Vogel", "Schlange" usw., wobei ein letzter Ausgangsknoten "Kein Tier / Ich" ist erkenne das nicht ".
Ich bin mir sicher, dass dies möglich sein muss, aber ich habe Probleme zu verstehen, wie. Es scheint, als ob aufgrund des Trainingsalgorithmus der Rückausbreitung von Fehlern, wenn Sie einen Ausgangsknoten trainieren (dh "Dies ist ein Hund") und die Gewichte der Neuronen geändert werden, dann der ideale Zustand für einen anderen Ausgangsknoten, den Sie zuvor hatten trainiert (dh "Dies ist ein Vogel") beginnt abzuweichen und umgekehrt. Das Training des Netzwerks zum Erkennen einer Kategorie würde also jedes Training sabotieren, das für eine andere Kategorie durchgeführt wird, und uns auf ein einfaches "Ja" - oder "Nein" -Design beschränken.
Macht dies einen solchen Erkenner unmöglich? Oder verstehe ich den Algorithmus falsch? Die einzigen zwei Dinge, an die ich denken kann, sind:
Entweder könnten wir ein neuronales Netzwerk für jede Sache trainieren, die wir klassifizieren möchten, und diese irgendwie verwenden, um ein größeres Supernetzwerk aufzubauen (zum Beispiel ein Netzwerk für "Hund", ein Netzwerk für "Vogel" usw., das wir irgendwie haben addieren, um das Supernetzwerk für "Tiere" zu schaffen); oder,
Erstellen Sie eine lächerlich komplizierte Trainingsmethode, die unglaublich fortgeschrittene Mathematik erfordert und irgendwie einen idealen Neuronengewichtszustand für alle möglichen Ausgaben erzeugt (mit anderen Worten
insert math magic here
).
(Randnotiz 1: Ich betrachte mehrschichtige Perzeptrone speziell als eine Art neuronales Netzwerk.)
(Randnotiz 2: Für die erste "mögliche Lösung" mit Aufzählungszeichen ist es nicht gut genug, jedes spezifische neuronale Netzwerk zu haben und es zu durchlaufen, bis wir eine "Ja" -Antwort erhalten. Ich weiß, dass dies ziemlich einfach gemacht werden kann, aber das ist einfach funktional Programmieren statt maschinelles Lernen. Ich möchte wissen, ob es möglich ist, ein neuronales Netzwerk zu haben, um die Informationen einzuspeisen und die entsprechende Antwort zu erhalten.)
@ anaximanders Antwort ist ziemlich gut, ich dachte, ich würde diesen Teil Ihrer Frage kommentieren:
Nun, ich denke, Ihre Annahme ist hier falsch; Wenn ich das richtig verstehe, haben Sie eine NN mit einer Ausgabe pro Kategorie, die Sie klassifizieren möchten. Idealerweise möchten Sie, dass sie fast unabhängig voneinander arbeiten, damit die Klassifizierung "Hund" und "Vogel" nicht gleichzeitig ausgelöst wird. Während des Trainings wird also passieren, dass beim Training des NN mit einem "Hund" -Ergebnis durch die Rückausbreitung versucht wird, sicherzustellen, dass der "Vogel" und andere Ausgangsneuronen keine falsch positiven Ergebnisse erzielen. Theoretisch wird es also gut funktionieren, entgegen Ihrem Kommentar. Die Verstärkung eines negativen Ergebnisses für "Vogel" ist richtig.
Ihr Problem wird jedoch die Skalierbarkeit dieses Ansatzes sein. Wenn Sie dem Netzwerk weitere Kategorien hinzufügen, wird das Training zumindest linear (aber wahrscheinlich weitaus schlechter) komplexer. Aus diesem Grund verwenden viele Menschen einen Ansatz, bei dem einzelne NNs für jede Kategorie geschult werden. Dies hält die Dinge einfach genug und relativ skalierbar. Die Meta-Ebene, wie diese kombiniert werden, liegt dann bei Ihnen. Sie könnten einfach alle NNs durchlaufen und sehen, welche positive Ergebnisse liefern, Sie könnten heuristische NNs auf mittlerer Ebene erstellen, die versuchen, die Art des Tieres für Sie einzugrenzen, oder Sie könnten sogar ein riesiges NN haben, das die einzelnen NNs als Neuronen kombiniert . Im Wesentlichen versuche ich zu sagen, dass Sie die Struktur des Problems im Voraus kennen - die einzelnen Klassifikationen unterscheiden sich höchstwahrscheinlich voneinander.
BEARBEITEN: Um die Titelfrage zu beantworten, können NNs natürlich mehr als Ja / Nein-Antworten geben. In den "Standard" -Modellen löst jedes Ausgangsneuron normalerweise Ja / Nein aus (obwohl dieses Verhalten geändert werden könnte, wenn Sie dazu geneigt wären) und repräsentiert ein Informationsbit. Aber genau wie bei Ihrem Computer können Bits kombiniert werden, um einen Bereich diskreter Werte bereitzustellen, die beliebig interpretiert werden können. Ein ziemlich visuelles Beispiel für nicht-binäre Ausgaben wäre eine selbstorganisierende Karte , die normalerweise eine 2D-Ausgabe hat.
quelle
Kurze und nicht sehr starre Antwort: Ja, jeder NN kann mehr Informationen liefern als nur
yes
oderno
. Es liegt an der Schwelle. Wenn die Gewichte höher als ein Schwellenwert sind, ist die Antwort eine der Klassifizierungsklassen. Wenn sie niedriger ist, ist die Antwort die zweite Klassifizierungsklasse. Grundsätzlich:Die Ausgabe von Neuron liegt im Intervall [0..1] (oder [-1,1] hängt davon ab), und Sie möchten keine Antwort erhalten, ob die Ausgabe niedriger oder höher als der Schwellenwert ist, sondern die Ausgabe (die Ausgabe, die Sie haben kann leicht in ein Intervall von 0..1 umgewandelt werden und das bedeutet%)
quelle