Kann ein neuronales Netzwerk mehr als "Ja" oder "Nein" Antworten liefern?

11

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.)

Asteri
quelle

Antworten:

15

Um nur Ihren Titel zu beantworten, ja. Neuronale Netze können nicht-boolesche Antworten geben. Beispielsweise wurden neuronale Netze verwendet, um Börsenwerte vorherzusagen. Dies ist eine numerische Antwort und somit mehr als nur Ja / Nein. Neuronale Netze werden auch bei der Handschrifterkennung verwendet, bei der die Ausgabe aus einer ganzen Reihe von Zeichen bestehen kann - dem gesamten Alphabet, den Zahlen und der Interpunktion.

Um sich mehr auf Ihr Beispiel zu konzentrieren - Tiere zu erkennen - würde ich sagen, dass es möglich ist. Es ist meistens eine Erweiterung des Beispiels für die Handschrifterkennung. Sie erkennen Merkmale einer Form und vergleichen sie mit "idealen" Formen, um festzustellen, welche übereinstimmen. Die Probleme sind eher technischer als theoretischer Natur. Handschrift wird beim Durchlaufen einer Erkennungssoftware normalerweise auf eine Reihe von Linien und Kurven abgebildet - schön und einfach. Tiergesichter sind schwerer zu erkennen, daher benötigen Sie eine Bildverarbeitungslogik, um Merkmale wie Augen, Nase, Mund, grobe Schädelkonturen usw. zu extrahieren. Sie haben jedoch nur gefragt, ob dies möglich ist, nicht wie. Die Antwort lautet also Ja.

Ihre beste Wahl ist wahrscheinlich, sich Dinge wie die adaptive Resonanztheorie anzuschauen. Das allgemeine Prinzip ist, dass die sensorische Eingabe (in diesem Fall Metriken zur relativen Größe, Form und zum Abstand der verschiedenen Gesichtsmerkmale) mit einem "Prototyp" oder einer Vorlage verglichen wird, die diese Klasse von Dingen definiert. Wenn der Unterschied zwischen der sensorischen Eingabe und der gespeicherten Vorlage unter einem bestimmten Schwellenwert liegt (wie durch einen "Wachsamkeitsparameter" definiert), wird angenommen, dass das beobachtete Objekt ein Mitglied der durch die Vorlage dargestellten Gruppe ist. Wenn keine Übereinstimmung gefunden werden kann, deklariert das System, dass es sich um einen zuvor nicht sichtbaren Typ handelt. Das Schöne an dieser Art von Netz ist, dass es, wenn es erkennt, dass ein Objekt beispielsweise ein Pferd ist, mehr über das Erkennen von Pferden lernen kann, um den Unterschied zwischen z.

BEARBEITEN:

(Im Interesse einer vollständigen Offenlegung: Ich recherchiere dies immer noch selbst für ein Projekt, daher ist mein Wissen immer noch unvollständig und möglicherweise stellenweise etwas abweichend.)

Wie hängt dies mit der Backpropogation zusammen, bei der Gewichte für einen Ausgangsknoten festgelegt werden, wodurch die Gewichte für einen anderen, zuvor trainierten Knoten ruiniert werden?

Von dem, was ich bisher gelesen habe, unterscheidet sich das ART-Paradigma geringfügig. Es ist in zwei Abschnitte unterteilt - einen, der die Eingaben lernt, und einen, der die Ausgaben für sie lernt. Dies bedeutet, dass ein nicht festgeschriebenes Neuron aktiviert und an die Eingabe angepasst wird, wenn es auf einen nicht übereinstimmenden Eingabesatz stößt, sodass dieses Neuron beim nächsten Mal eine Übereinstimmung auslöst. Die Neuronen in dieser Schicht dienen nur zur Erkennung. Sobald diese Ebene eine Übereinstimmung gefunden hat, werden die Eingaben an die darunter liegende Ebene übergeben, die die Antwort berechnet. Für Ihre Situation wäre diese Ebene wahrscheinlich sehr einfach. Das System, das ich betrachte, lernt fahren. Dies sind eigentlich zwei Arten des Lernens; Der eine lernt, in verschiedenen Situationen zu fahren, und der andere lernt, die Situation zu erkennen. Beispielsweise,

Diese Idee, neue Inputs zu lernen, ohne zuvor erlernte Verhaltensweisen zu ruinieren, wird als Stabilitäts- / Plastizitätsdilemma bezeichnet. Ein Netz muss stabil genug sein, um das erlernte Verhalten aufrechtzuerhalten, aber plastisch genug, um neue Dinge zu lehren, wenn sich die Umstände ändern. Genau das sollen ART-Netze lösen.

Anaximander
quelle
Vielen Dank für Ihre tolle Antwort! Wie hängt dies mit der Backpropogation zusammen, bei der Gewichte für einen Ausgabeknoten festgelegt werden, wodurch die Gewichte für einen anderen, zuvor trainierten Knoten ruiniert werden? Oder denke ich falsch darüber nach?
Asteri
@ Jeff Ich habe ein wenig zu meiner Antwort hinzugefügt. Es ist leider nicht besonders detailliert - ich lerne das immer noch selbst. Ihre Frage bezieht sich jedoch auf das Stabilitäts- / Plastizitätsdilemma, indem Sie ein Netz trainieren möchten, um etwas Neues zu erkennen, ohne zu vergessen, wie es etwas erkennt, das es bereits kennt, und die Adaptive Resonanztheorie zielt genau darauf ab, dieses Problem zu lösen. Es lohnt sich also wahrscheinlich, einen Blick darauf zu werfen.
Anaximander
3

@ anaximanders Antwort ist ziemlich gut, ich dachte, ich würde diesen Teil Ihrer Frage kommentieren:

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.

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.

Daniel B.
quelle
Danke für deine Antwort. Ich wusste, dass ich so viele Ausgabeknoten haben könnte, wie ich wollte, aber ich befürchtete, dass das Lernen einer Klassifizierung aufgrund der Art der Rückübertragung des Fehleralgorithmus (Anpassen aller Gewichte an ein gewünschtes Ergebnis) eine andere verlernen würde.
Asteri
1

Kurze und nicht sehr starre Antwort: Ja, jeder NN kann mehr Informationen liefern als nur yesoder no. 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:

    0..threshold 
    threshold..1

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